diff --git a/software/cinit/archives.html b/software/cinit/archives.html new file mode 100644 index 00000000..40e830f1 --- /dev/null +++ b/software/cinit/archives.html @@ -0,0 +1,276 @@ + + + +unix.schottelius.org + + + +

Nico Schottelius +
unix.schottelius.org +
cinit

+
+

Archives

+

Source

+

Latest development

+You can view the latest source in +gitweb +or clone it with git. +

Current

+ + +

Old

+ + +

Debian packages

+

Warning: It looks like the Debian packages are not up-to-date +currently. Please use the source instead. +

Marcus Wagner makes cinit available as Debian packages. +
To get cinit insert the following line into your /etc/apt/sources.list: +

+deb http://deb.notestc.de/ clinux/
+
+Than do +
apt-get update && apt-get install cinit
+

+ + + diff --git a/software/cinit/archives/cinit-0.0.4.tar.bz2 b/software/cinit/archives/cinit-0.0.4.tar.bz2 new file mode 100644 index 00000000..bfbb2ffe Binary files /dev/null and b/software/cinit/archives/cinit-0.0.4.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.0.5.tar.bz2 b/software/cinit/archives/cinit-0.0.5.tar.bz2 new file mode 100644 index 00000000..3c17cf53 Binary files /dev/null and b/software/cinit/archives/cinit-0.0.5.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.0.6.tar.bz2 b/software/cinit/archives/cinit-0.0.6.tar.bz2 new file mode 100644 index 00000000..b94d60b3 Binary files /dev/null and b/software/cinit/archives/cinit-0.0.6.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.0.7.tar.bz2 b/software/cinit/archives/cinit-0.0.7.tar.bz2 new file mode 100644 index 00000000..6fc175ec Binary files /dev/null and b/software/cinit/archives/cinit-0.0.7.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.0.8.tar.bz2 b/software/cinit/archives/cinit-0.0.8.tar.bz2 new file mode 100644 index 00000000..3ec8a8be Binary files /dev/null and b/software/cinit/archives/cinit-0.0.8.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.1.tar.bz2 b/software/cinit/archives/cinit-0.1.tar.bz2 new file mode 100644 index 00000000..7f5ea6a0 Binary files /dev/null and b/software/cinit/archives/cinit-0.1.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.2.1.tar.bz2 b/software/cinit/archives/cinit-0.2.1.tar.bz2 new file mode 100644 index 00000000..e2ee3f0a Binary files /dev/null and b/software/cinit/archives/cinit-0.2.1.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.2.tar.bz2 b/software/cinit/archives/cinit-0.2.tar.bz2 new file mode 100644 index 00000000..128ec24c Binary files /dev/null and b/software/cinit/archives/cinit-0.2.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.3pre1.tar.bz2 b/software/cinit/archives/cinit-0.3pre1.tar.bz2 new file mode 100644 index 00000000..b643c8f2 Binary files /dev/null and b/software/cinit/archives/cinit-0.3pre1.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.3pre10.tar.bz2 b/software/cinit/archives/cinit-0.3pre10.tar.bz2 new file mode 100644 index 00000000..6147c67a Binary files /dev/null and b/software/cinit/archives/cinit-0.3pre10.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.3pre11.tar.bz2 b/software/cinit/archives/cinit-0.3pre11.tar.bz2 new file mode 100644 index 00000000..c71d80b7 Binary files /dev/null and b/software/cinit/archives/cinit-0.3pre11.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.3pre12.tar.bz2 b/software/cinit/archives/cinit-0.3pre12.tar.bz2 new file mode 100644 index 00000000..0b1b1221 Binary files /dev/null and b/software/cinit/archives/cinit-0.3pre12.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.3pre13.tar.bz2 b/software/cinit/archives/cinit-0.3pre13.tar.bz2 new file mode 100644 index 00000000..680fa9c6 Binary files /dev/null and b/software/cinit/archives/cinit-0.3pre13.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.3pre14.tar.bz2 b/software/cinit/archives/cinit-0.3pre14.tar.bz2 new file mode 100644 index 00000000..34293ea7 Binary files /dev/null and b/software/cinit/archives/cinit-0.3pre14.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.3pre2.tar.bz2 b/software/cinit/archives/cinit-0.3pre2.tar.bz2 new file mode 100644 index 00000000..4dacbb25 Binary files /dev/null and b/software/cinit/archives/cinit-0.3pre2.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.3pre3.tar.bz2 b/software/cinit/archives/cinit-0.3pre3.tar.bz2 new file mode 100644 index 00000000..016ed57d Binary files /dev/null and b/software/cinit/archives/cinit-0.3pre3.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.3pre4.tar.bz2 b/software/cinit/archives/cinit-0.3pre4.tar.bz2 new file mode 100644 index 00000000..83309598 Binary files /dev/null and b/software/cinit/archives/cinit-0.3pre4.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.3pre5.tar.bz2 b/software/cinit/archives/cinit-0.3pre5.tar.bz2 new file mode 100644 index 00000000..86480d7e Binary files /dev/null and b/software/cinit/archives/cinit-0.3pre5.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.3pre6.tar.bz2 b/software/cinit/archives/cinit-0.3pre6.tar.bz2 new file mode 100644 index 00000000..fdcb5ae1 Binary files /dev/null and b/software/cinit/archives/cinit-0.3pre6.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.3pre7.tar.bz2 b/software/cinit/archives/cinit-0.3pre7.tar.bz2 new file mode 100644 index 00000000..873d47d9 Binary files /dev/null and b/software/cinit/archives/cinit-0.3pre7.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.3pre8.tar.bz2 b/software/cinit/archives/cinit-0.3pre8.tar.bz2 new file mode 100644 index 00000000..1de2bdf9 Binary files /dev/null and b/software/cinit/archives/cinit-0.3pre8.tar.bz2 differ diff --git a/software/cinit/archives/cinit-0.3pre9.tar.bz2 b/software/cinit/archives/cinit-0.3pre9.tar.bz2 new file mode 100644 index 00000000..d98a0a90 Binary files /dev/null and b/software/cinit/archives/cinit-0.3pre9.tar.bz2 differ diff --git a/software/cinit/archives/cinit-snapshot.tar.bz2 b/software/cinit/archives/cinit-snapshot.tar.bz2 new file mode 100644 index 00000000..5b4b97eb Binary files /dev/null and b/software/cinit/archives/cinit-snapshot.tar.bz2 differ diff --git a/software/cinit/browse_source/cinit-0.0.4/BUGS b/software/cinit/browse_source/cinit-0.0.4/BUGS new file mode 100644 index 00000000..dde5ba14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/BUGS @@ -0,0 +1,4 @@ +To be done before 0.1 (dirty release): +- replace cerr-strings with #defines, so doubled strings are elimenated +- remove all printf()s, as they are debug only +- perhaps remove MAX_DEPS? diff --git a/software/cinit/browse_source/cinit-0.0.4/COPYING b/software/cinit/browse_source/cinit-0.0.4/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.0.4/CREDITS b/software/cinit/browse_source/cinit-0.0.4/CREDITS new file mode 100644 index 00000000..fd3d6ff3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/CREDITS @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete diff --git a/software/cinit/browse_source/cinit-0.0.4/Changelog b/software/cinit/browse_source/cinit-0.0.4/Changelog new file mode 100644 index 00000000..47142a97 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/Changelog @@ -0,0 +1,8 @@ +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.0.4/MT/debug b/software/cinit/browse_source/cinit-0.0.4/MT/debug new file mode 100644 index 00000000..c92ba837 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/MT/debug @@ -0,0 +1,213 @@ +started up on Linux 2.6.11.10 #2 Tue May 17 11:58:45 CEST 2005 ppc +command line: 'monotone-0.18', 'rename', 'conf/c_shd', 'conf/c_halt' +set locale: LC_CTYPE=C, LC_MESSAGES=C +initial path is /home/user/nico/cinit-0.0.4 +converting 13 bytes from ANSI_X3.4-1968 to UTF-8 +converting 6 bytes from ANSI_X3.4-1968 to UTF-8 +converting 10 bytes from ANSI_X3.4-1968 to UTF-8 +converting 11 bytes from ANSI_X3.4-1968 to UTF-8 +searching for 'MT' directory with root '/' +search for 'MT' ended at '/home/user/nico/cinit-0.0.4' with '' removed +initializing from directory /home/user/nico/cinit-0.0.4 +found working copy directory /home/user/nico/cinit-0.0.4 +options path is MT/options +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 7 bytes from UTF-8 to ANSI_X3.4-1968 +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 7 bytes from UTF-8 to ANSI_X3.4-1968 +local dump path is MT/debug +setting dump path to MT/debug +opening rcfile '/home/user/nico/.monotonerc' ... +'/home/user/nico/.monotonerc' is ok +skipping nonexistent rcfile 'MT/monotonerc' +executing rename command +options path is MT/options +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 7 bytes from UTF-8 to ANSI_X3.4-1968 +revision path is MT/revision +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 8 bytes from UTF-8 to ANSI_X3.4-1968 +loading revision id from MT/revision +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 8 bytes from UTF-8 to ANSI_X3.4-1968 +db.fetch("SELECT id FROM 'revisions' WHERE id = '1f5c45fa438bfd4f2c0f851e985d51e983cffaaa'") +db.fetch("SELECT data FROM revisions WHERE id = '1f5c45fa438bfd4f2c0f851e985d51e983cffaaa'") +old manifest is c6e5abc9fa52a464b3984cae46232bfd43feaabd +db.fetch("SELECT id FROM 'manifest_deltas' WHERE id = 'c6e5abc9fa52a464b3984cae46232bfd43feaabd'") +db.fetch("SELECT id FROM 'manifests' WHERE id = 'c6e5abc9fa52a464b3984cae46232bfd43feaabd'") +db.fetch("SELECT id FROM 'manifests' WHERE id = 'c6e5abc9fa52a464b3984cae46232bfd43feaabd'") +db.fetch("SELECT data FROM 'manifests' WHERE id = 'c6e5abc9fa52a464b3984cae46232bfd43feaabd'") +old manifest has 139 entries +work path is MT/work +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 4 bytes from UTF-8 to ANSI_X3.4-1968 +checking for un-committed work file MT/work +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 4 bytes from UTF-8 to ANSI_X3.4-1968 +read rearrangement from MT/work +'conf/c_shd' prefixed to 'conf/c_shd' +'conf/c_halt' prefixed to 'conf/c_halt' +analyzing file 1 : '' -> 'BUGS' +analyzing file 2 : '' -> 'CREDITS' +analyzing file 3 : '' -> 'Changelog' +analyzing file 4 : '' -> 'Makefile' +analyzing file 5 : '' -> 'README' +analyzing file 6 : '' -> 'TODO' +analyzing file 8 : '' -> 'bin/cinit.add.dependency' +analyzing file 9 : '' -> 'bin/cinit.add.getty' +analyzing file 10 : '' -> 'bin/cinit.create.cinit_dir' +analyzing file 11 : '' -> 'bin/cinit.create.empty.service' +analyzing file 12 : '' -> 'bin/cinit.do.not.respawn.service' +analyzing file 13 : '' -> 'bin/cinit.mkheader' +analyzing file 14 : '' -> 'bin/cinit.remove.getty' +analyzing file 15 : '' -> 'bin/cinit.respawn.service' +analyzing file 16 : '' -> 'bin/cinit.shutdown' +analyzing file 17 : '' -> 'bin/cinit.read-conf' +analyzing file 18 : '' -> 'cinit.h' +analyzing file 20 : '' -> 'client/begin_msg.c' +analyzing file 21 : '' -> 'client/connect_sock.c' +analyzing file 22 : '' -> 'client/exec_svc.c' +analyzing file 23 : '' -> 'client/kill_svc.c' +analyzing file 24 : '' -> 'client/msg_change_status.c' +analyzing file 25 : '' -> 'client/msg_start_svc.c' +analyzing file 26 : '' -> 'client/respawn_svc.c' +analyzing file 27 : '' -> 'client/run_run_svc.c' +analyzing file 28 : '' -> 'client/run_svc.c' +analyzing file 30 : '' -> 'comm/do_change_status.c' +analyzing file 31 : '' -> 'comm/do_result.c' +analyzing file 32 : '' -> 'comm/do_start_svc.c' +analyzing file 34 : '' -> 'conf/c_env' +analyzing file 35 : '' -> 'conf/c_init' +analyzing file 36 : '' -> 'conf/c_needs' +analyzing file 37 : '' -> 'conf/c_off' +analyzing file 38 : '' -> 'conf/c_on' +analyzing file 39 : '' -> 'conf/c_params' +analyzing file 40 : '' -> 'conf/c_reboot' +analyzing file 41 : '' -> 'conf/c_respawn' +analyzing file 42 : '' -> 'conf/c_shd' +analyzing file 43 : '' -> 'conf/c_sock' +analyzing file 44 : '' -> 'conf/c_tmp' +analyzing file 45 : '' -> 'conf/c_tmpfs' +analyzing file 46 : '' -> 'conf/c_tmpmount' +analyzing file 47 : '' -> 'conf/c_wants' +analyzing file 48 : '' -> 'conf/cinit_dir' +analyzing file 49 : '' -> 'conf/destdir' +analyzing file 50 : '' -> 'conf/getty_dir' +analyzing file 51 : '' -> 'conf/sleep_svc' +analyzing file 52 : '' -> 'conf/sock_group' +analyzing file 53 : '' -> 'conf/sock_mode' +analyzing file 54 : '' -> 'conf/sock_queue' +analyzing file 55 : '' -> 'conf/sock_user' +skipping preserved file 57 : '' +analyzing file 58 : '' -> 'doc/caveats' +analyzing file 59 : '' -> 'doc/cinit.commands' +analyzing file 61 : '' -> 'doc/fun/testing01' +analyzing file 62 : '' -> 'doc/how_it_works_internally' +analyzing file 63 : '' -> 'doc/ipc.thoughts' +analyzing file 64 : '' -> 'doc/ipc.usenet.posting' +analyzing file 65 : '' -> 'doc/posix.aardvark.bug.report' +analyzing file 66 : '' -> 'doc/shutting.down' +analyzing file 67 : '' -> 'doc/thoughts.closed' +analyzing file 68 : '' -> 'doc/thoughts.open' +analyzing file 70 : '' -> 'generic/mini_printf.c' +analyzing file 71 : '' -> 'generic/set_signals.c' +analyzing file 73 : '' -> 'old/cerr.c' +analyzing file 74 : '' -> 'old/cinit.c01' +analyzing file 75 : '' -> 'old/cinit.c02' +analyzing file 76 : '' -> 'old/cinit.c03' +analyzing file 77 : '' -> 'old/cinit.c04' +analyzing file 78 : '' -> 'old/cinit.c05' +analyzing file 79 : '' -> 'old/cinit.c06' +analyzing file 80 : '' -> 'old/cinit.commands.v01' +analyzing file 81 : '' -> 'old/cinit.h01' +analyzing file 82 : '' -> 'old/cnt_digits.c' +analyzing file 83 : '' -> 'old/do_change_status.c01' +analyzing file 84 : '' -> 'old/idea01' +analyzing file 85 : '' -> 'old/idea02' +analyzing file 86 : '' -> 'old/msg_change_status.c01' +analyzing file 87 : '' -> 'old/msg_start_svc.c' +analyzing file 88 : '' -> 'old/run_init_svc.c01' +analyzing file 89 : '' -> 'old/run_svc.c00' +analyzing file 90 : '' -> 'old/run_svc.c01' +analyzing file 91 : '' -> 'old/run_svc.c02' +analyzing file 92 : '' -> 'old/run_svc.c03' +analyzing file 93 : '' -> 'old/run_svc.c04' +analyzing file 94 : '' -> 'old/run_svc.c05' +analyzing file 95 : '' -> 'old/run_svc.c05.2' +analyzing file 96 : '' -> 'old/run_svc.c06' +analyzing file 97 : '' -> 'old/run_svc.c07' +analyzing file 98 : '' -> 'old/run_svc.c08' +analyzing file 99 : '' -> 'old/run_svc.c09' +analyzing file 100 : '' -> 'old/sig_chld.c' +analyzing file 101 : '' -> 'old/sigio.c01' +analyzing file 103 : '' -> 'sbin/cinit' +analyzing file 105 : '' -> 'serv/add_mod_svc.c' +analyzing file 106 : '' -> 'serv/chk_svc.c' +analyzing file 107 : '' -> 'serv/cinit.c' +analyzing file 108 : '' -> 'serv/list.c' +analyzing file 109 : '' -> 'serv/panic.c' +analyzing file 110 : '' -> 'serv/run_init_svc.c' +analyzing file 111 : '' -> 'serv/sig_reboot.c' +analyzing file 112 : '' -> 'serv/sigio.c' +analyzing file 114 : '' -> 'size/2005-04-26-14:54:44' +analyzing file 115 : '' -> 'size/2005-04-26-16:47:50' +analyzing file 116 : '' -> 'size/2005-04-26-16:48:48' +analyzing file 117 : '' -> 'size/2005-04-26-16:50:45' +analyzing file 118 : '' -> 'size/2005-04-26-17:12:48' +analyzing file 119 : '' -> 'size/2005-04-26-17:13:43' +analyzing file 120 : '' -> 'size/2005-04-26-23:05:33' +analyzing file 121 : '' -> 'size/2005-04-27-00:39:24' +analyzing file 122 : '' -> 'size/2005-04-30-15:18:22' +analyzing file 123 : '' -> 'size/2005-04-30-15:20:40' +analyzing file 124 : '' -> 'size/2005-04-30-15:23:25' +analyzing file 125 : '' -> 'size/2005-04-30-15:25:44' +analyzing file 126 : '' -> 'size/2005-04-30-15:32:43' +analyzing file 127 : '' -> 'size/2005-04-30-15:33:37' +analyzing file 128 : '' -> 'size/2005-04-30-15:41:08' +analyzing file 129 : '' -> 'size/2005-04-30-15:41:18' +analyzing file 130 : '' -> 'size/2005-04-30-15:46:09' +analyzing file 131 : '' -> 'size/2005-04-30-16:48:16' +analyzing file 132 : '' -> 'size/2005-04-30-16:50:05' +analyzing file 133 : '' -> 'size/2005-04-30-17:02:27' +analyzing file 134 : '' -> 'size/2005-04-30-17:03:00' +analyzing file 135 : '' -> 'size/2005-04-30-17:05:11' +analyzing file 136 : '' -> 'size/2005-04-30-17:06:15' +analyzing file 137 : '' -> 'size/2005-04-30-17:11:59' +analyzing file 138 : '' -> 'size/2005-04-30-17:13:43' +analyzing file 139 : '' -> 'size/2005-04-30-22:28:13' +analyzing file 140 : '' -> 'size/2005-04-30-22:34:23' +analyzing file 141 : '' -> 'size/2005-05-02-13:27:51' +analyzing file 142 : '' -> 'size/2005-05-02-13:46:31' +analyzing file 143 : '' -> 'size/2005-05-02-13:49:29' +analyzing file 144 : '' -> 'size/2005-05-02-13:49:58' +analyzing file 145 : '' -> 'size/2005-05-02-13:52:20' +analyzing file 146 : '' -> 'size/2005-05-02-13:55:50' +analyzing file 147 : '' -> 'size/2005-05-02-13:58:14' +analyzing file 148 : '' -> 'size/2005-05-02-13:59:53' +analyzing file 149 : '' -> 'size/2005-05-02-14:00:26' +analyzing file 150 : '' -> 'size/2005-05-02-14:04:19' +skipping preserved directory 151 : 'bin' +skipping preserved directory 152 : 'client' +skipping preserved directory 153 : 'comm' +skipping preserved directory 154 : 'conf' +skipping preserved directory 155 : 'doc' +skipping preserved directory 156 : 'doc/fun' +skipping preserved directory 157 : 'generic' +skipping preserved directory 158 : 'old' +skipping preserved directory 159 : 'sbin' +skipping preserved directory 160 : 'serv' +skipping preserved directory 161 : 'size' +analyzing file 168 : '' -> 'bin/cinit.add.shutdown.reboot.poweroff' +analyzing file 169 : '' -> 'bin/cinit.get-confdir' +analyzing file 171 : '' -> 'bin/not-working/cinit.create.service' +analyzing file 173 : '' -> 'conf/.README' +analyzing file 174 : '' -> 'conf/c_halt' +analyzing file 175 : '' -> 'conf/c_poweroff' +analyzing file 176 : '' -> 'conf/sleep_kill' +analyzing file 178 : '' -> 'doc/.buildwarn' +analyzing file 179 : '' -> 'doc/meta.dependencies' +skipping preserved directory 180 : 'bin/not-working' +adding conf/c_shd -> conf/c_halt to working copy rename set +skipping preserved directory 1 : 'conf' +analyzing file 2 : 'conf/c_shd' -> 'conf/c_halt' +change_set.cc:565: invariant 'I(entries.find(p) == entries.end())' violated diff --git a/software/cinit/browse_source/cinit-0.0.4/MT/log b/software/cinit/browse_source/cinit-0.0.4/MT/log new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.4/MT/options b/software/cinit/browse_source/cinit-0.0.4/MT/options new file mode 100644 index 00000000..33960254 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/MT/options @@ -0,0 +1,3 @@ + branch "info.clinux.cinit" +database "/home/user/nico/monotone.db" + key "" diff --git a/software/cinit/browse_source/cinit-0.0.4/MT/revision b/software/cinit/browse_source/cinit-0.0.4/MT/revision new file mode 100644 index 00000000..9b3e32e6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/MT/revision @@ -0,0 +1 @@ +81778a4d16c2b27a8e686600dde41795fc5ed6b8 diff --git a/software/cinit/browse_source/cinit-0.0.4/Makefile b/software/cinit/browse_source/cinit-0.0.4/Makefile new file mode 100644 index 00000000..6726f177 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/Makefile @@ -0,0 +1,83 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefile, use conf/*. +# + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-g -DDEBUG +OPTIMIZE=-Os +LDFLAGS=-static # init should be static per default! + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) +CFLAGS=-pipe -Wall -I. +LD=gcc +STRIP=strip + +# monotone +MT=monotone-0.18 + +# directories and files +DIRS=client bin conf comm generic doc sbin serv +FILES=BUGS Changelog Makefile README TODO cinit.h + +# objects +SERV=serv/sigio.o serv/cinit.o serv/list.o \ + serv/run_init_svc.o serv/panic.o serv/sig_reboot.o + +CLIENT=client/msg_start_svc.o client/msg_change_status.o client/run_svc.o \ + client/exec_svc.o client/respawn_svc.o client/run_run_svc.o \ + client/connect_sock.o client/begin_msg.o + +COMMUNICATION=comm/do_change_status.o comm/do_result.o comm/do_start_svc.o + +BOTH=generic/set_signals.o generic/mini_printf.o + +OBJ=$(SERV) $(CLIENT) $(BOTH) $(COMMUNICATION) + +# DO NOT CHANGE THIS. +SBIN=sbin +CINIT_BIN=$(SBIN)/cinit + +# targets +warn: + @cat doc/.buildwarn + +all: $(CINIT_BIN) sizecheck + +$(CINIT_BIN): $(SBIN) config.h $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ +$(SBIN): + mkdir $(SBIN) +sizecheck: + FILE="size/`date +%Y-%m-%d-%T`"; ls -l sbin/cinit > $$FILE; cat $$FILE +clean: + rm -f *.o */*.o sbin/cinit config.h +config.h: conf/* + ./bin/cinit.mkheader > config.h + +mt-update: + $(MT) add $(DIRS) $(FILES) 2>/dev/null +mt-commit: + $(MT) commit +mt-sync: + $(MT) sync linux.schottelius.org info.clinux.cinit + +install: + chmod 0700 ./scripts/install + ./bin/cinit.install.binary +# rm /sbin/cinit +# cp sbin/cinit /sbin/cinit + +install-conf: + @echo *** Creating very basic configuration. *** + ./bin/cinit.install.conf +install-test: + @echo *** Copying testing configuration. *** + ./bin/cinit.install.test diff --git a/software/cinit/browse_source/cinit-0.0.4/README b/software/cinit/browse_source/cinit-0.0.4/README new file mode 100644 index 00000000..54da5376 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/README @@ -0,0 +1,92 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ + +cinit is a fast init system with dependency features. +It is orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every POSIX compatible system. +- true dependencies +- parallel execution +- highly customisable (see conf/*) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via monotone. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +If it's the first time you operate with cinit, also do: +# make install-example + +This will populate /etc/cinit with some default services for Linux +(mounting root r/w, starting gettys, setting hostname). + +This should work on most Linux systems, still you should have a +look at /etc/cinit and see whether services are correct. + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. + +sampleconfig.tar is the tar-ball I used for testing, beware if you use it: +It loads dvorak at startup! + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit.html diff --git a/software/cinit/browse_source/cinit-0.0.4/TODO b/software/cinit/browse_source/cinit-0.0.4/TODO new file mode 100644 index 00000000..049a0bbc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/TODO @@ -0,0 +1,66 @@ +- check return values of most functions! +- check errno! +- check whether headers are ok +- remove printfs! +- write manpages (use doc/* as base for that) +- eventually split cinit code to csvc to minimize binary of cinit? +- cleanup comments +- cleanup headers! +- respawn_svc and exec_svc must return pid_t of executed service / watcher +- exec_svc.c: should we also change environment? +- write install-example for non-Linux systems (think of merge also) +- move messages to cinit.h or message.h or conf/msg-*! +- remove MAX_SVC +- change exec_svc to be much more dumb! + *svc, *svc_param_file, *svc_env_file +- remove stat from exec_svc, do before! +- check for possibilies to save ram, free things +- stat() in run_svc -> don't call exec_svc, respawn_svc, run_run_svc +- close(*>2) before forking / executing +- get CTR-ALT-DEL +- check if we caught every signal, which could kill us +- create coala-socket with correct permissions! (550, root:cinit) + +- run_svc_new: + o we have many strcat()s, perhaps save length of pathbuf and strncat at + pathtmp[strlen(pathbuf)] ? + o should we check strcat and strcpy return values or do we expect them to work? + +-------------------------------------------------------------------------------- + +- script merge sysVinit to cinit? +- circulaere abhaengigkeiten? + - script vorher? + +-------------------------------------------------------------------------------- + +- create conversion table: + djbdns <-> name_server + dnscache <-> name_caching + qmail,postfix,... <-> MTA + +-------------------------------------------------------------------------------- +create_mini_cinit + -> create something which should be runnable + -> mount, fsck, getty + --> for dev in `read /etc/fstab` ... + fsck $dev + --> mount -a + --> mount -n -o remount,rw / + --> getty from /etc/inittab or /sbin/*getty + -> find out, which gettys with which params + -> use it on 'make install' +-------------------------------------------------------------------------------- + +signal handlers: +sa.sa_handler=sigint; sigaction(SIGINT,&sa,0); /* ctrl-alt-del */ +sa.sa_handler=sigwinch; sigaction(SIGWINCH,&sa,0); /* keyboard request */ + +-------------------------------------------------------------------------------- + +Add support for 'cinit' group, which may shutdown/reboot/halt with +SO_PASSCRED in sockets + +-------------------------------------------------------------------------------- +Done +- include '/' in C_RUNS? make double strings? -> no. diff --git a/software/cinit/browse_source/cinit-0.0.4/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.add.dependency new file mode 100644 index 00000000..17683dcc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.add.dependency @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or needs Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +case $DEP in + wants) DEP=$C_WANTS ;; + needs) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could some PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEST="${BASEDIR}/${SVC_A}/${DEP}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.0.4/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.add.getty new file mode 100644 index 00000000..2c97d607 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.add.getty @@ -0,0 +1,60 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && echo * | sed 's/.* //') +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +if [ ! "$mygetty" ]; then + echo "No useable getty found, existing." + exit 1 +fi + +echo -n "Using $mygetty $params ... " +mkdir -p "$DDIR" +ln -s $mygetty "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.0.4/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.create.empty.service new file mode 100644 index 00000000..9fe748d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.create.empty.service @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR +BASEDIR=./testcinit + + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.4/bin/cinit.do.not.respawn.service b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.do.not.respawn.service new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.do.not.respawn.service @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.4/bin/cinit.get-confdir b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.get-confdir new file mode 100644 index 00000000..a36c52f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.get-confdir @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# 2005-05-24 + +# try environment first +if [ "$CINIT_DIR" ]; then + CONFDIR=$CINIT_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +elif [ -d /etc/cinit ]; then + CONFDIR=/etc/cinit +else + echo Did not find cinit configuration 1>&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.0.4/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.install.binary new file mode 100644 index 00000000..4d447257 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.install.binary @@ -0,0 +1,10 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# + + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" "$INSTALL_DIRECTORY" $DESTDIR/$PREFIX/$CINIT_DIR diff --git a/software/cinit/browse_source/cinit-0.0.4/bin/cinit.mkheader b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.mkheader new file mode 100644 index 00000000..e1f35d07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.mkheader @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric - no I didn't see an easier way + numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + + [ "$numeric" ] || value="\"$value\"" + + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.0.4/bin/cinit.read-conf b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.read-conf new file mode 100644 index 00000000..4263129c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.read-conf @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + eval $NAME="$(head -n 1 $conf)" + eval export $NAME +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.0.4/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.remove.getty new file mode 100644 index 00000000..5a885725 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.remove.getty @@ -0,0 +1,22 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR; echo * | sed 's/.* //') + +[ ! "$NUMBER" ] && exit 1 + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r $DDIR +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.0.4/bin/cinit.respawn.service b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.respawn.service new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.respawn.service @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.4/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.shutdown new file mode 100644 index 00000000..49b1dabd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/bin/cinit.shutdown @@ -0,0 +1,27 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# 2005-05-24 + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -o|--off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -o|--off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.0.4/bin/not-working/cinit.create.service b/software/cinit/browse_source/cinit-0.0.4/bin/not-working/cinit.create.service new file mode 100644 index 00000000..df092275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/bin/not-working/cinit.create.service @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name (including category)" + echo " I do create a service for you" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +# read input (from gentoo-bug.sh, http://linux.schottelius.org/scripts/#gentoo-bug +reread() +{ + _tmp="" + name="$1" + + while [ ! "$_tmp" ]; do + read -p "$1 [$_tmp]: " _tmp + done + + echo $_tmp +} + + +for svc in $@; do + echo -n "Creating $svc ..." + mkdir -p "${BASEDIR}/${svc}" + cd ${BASEDIR}/${svc} + mkdir -p "${C_WANTS}" "${C_NEEDS}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.4/cinit.h b/software/cinit/browse_source/cinit-0.0.4/cinit.h new file mode 100644 index 00000000..353071be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/cinit.h @@ -0,0 +1,129 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * header of cinit + */ + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* limits: will be obsolete in cinit-1.0 */ +#define MAX_SVC 510 /* maximum services - defines size of array - may later be obsoleted */ +#define MAX_DEPS 32 /* maximum direct dependencies of a service */ +#define BUFSIZE 4096 + +/* paths */ +#define C_ONARG C_ON C_PARAMS +#define C_OFFARG C_OFF C_PARAMS +#define C_ONENV C_ON C_ENV +#define C_OFFENV C_OFF C_ENV + +#define SLASH "/" + +#define CINIT_INIT CINIT_DIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK + +/* commands (maximum: 2^8 = 256)*/ +#define CMD_START_SVC 0 +#define CMD_CHG_STATUS 1 +#define CMD_STOP_SVC 2 +#define CMD_KILL_SVC 3 + +#define CMD_RESCUE 251 +#define CMD_INIT 252 + +#define CMD_HALT 253 +#define CMD_REBOOT 254 +#define CMD_POWEROFF 255 + +/* status of a service */ +#define ST_TMP 1 /* currently working on it */ +#define ST_ONCE 2 /* executed once */ +#define ST_RESPAWN 3 /* running and respawning */ +#define ST_FAIL 4 /* failed to start service */ + +/* actions for i/o handlers (see comm/do_*) */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* Messages to the outside */ + +#define MSG_ERR_FORK "fork" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_TERMKILL "sigterm" +#define MSG_KILLBILL "sigkill" + +/* array of svc - not needed anymore +struct svc { + char *abs_path; * service identifier * + char status; * tmp, respawn, ran once * + pid_t pid; * pid of the process * +}; + +struct svcl { + struct svc svca[MAX_SVC]; + int process; +}; +*/ + +// extern struct svcl svc_list; +struct listitem { + char *abs_path; + int status; + pid_t pid; + struct listitem *before; + struct listitem *after; +}; + + +/* variables */ +extern struct listitem *list; +extern int sock, logfd; + +/* functions (used by server and client) */ +void cerr(char *string, int status); +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +#define LOG(s) mini_printf(s,logfd) + +int do_start_svc(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* server functions */ +/* int chk_svc(char *svc); +int add_mod_svc(char *svc, char status, pid_t pid); */ +int list_insert(char *path, int status); +struct listitem *list_search(char *path); +int list_delete(char *path); +int run_init_svc(void); +void sigio(int signal); +void sig_reboot(int signal); +void panic(void); + +/* client / message functions */ +int msg_start_svc(char *svc); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +int run_run_svcs(char *abspath); +pid_t exec_svc(char *abspath, int on); +pid_t respawn_svc(char *abspath); +int connect_sock(int socke); +char **read_file(char *file); + + +/* DEBUG */ +#ifdef DEBUG +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) +#endif + +/* Messages to the outside */ diff --git a/software/cinit/browse_source/cinit-0.0.4/client/README b/software/cinit/browse_source/cinit-0.0.4/client/README new file mode 100644 index 00000000..0a5b8d0c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/client/README @@ -0,0 +1,2 @@ +client/ + These sources are used by the children which are spawned by cinit. diff --git a/software/cinit/browse_source/cinit-0.0.4/client/begin_msg.c b/software/cinit/browse_source/cinit-0.0.4/client/begin_msg.c new file mode 100644 index 00000000..9b569543 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/client/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror("i/o: command"); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/client/connect_sock.c b/software/cinit/browse_source/cinit-0.0.4/client/connect_sock.c new file mode 100644 index 00000000..831121b7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/client/connect_sock.c @@ -0,0 +1,41 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + D_PRINTF("socket verbinden"); + + /******************* begin socket *********************/ + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror("socket"); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + perror("connect"); + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/client/exec_svc.c b/software/cinit/browse_source/cinit-0.0.4/client/exec_svc.c new file mode 100644 index 00000000..bdbe53f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/client/exec_svc.c @@ -0,0 +1,246 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +pid_t exec_svc(char *abspath, int on) +{ + pid_t pid; + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + pid = fork(); + if( pid == -1 ) { + perror("fork"); + return 0; + } + + /***** PARENT ******/ + if(pid > 0) { + waitpid(pid,&tmp,0); + if( WIFEXITED(tmp) ) { + D_PRINTF("EXEC SVC ERFOLGREICH"); + return pid; + } else { + D_PRINTF("EXEC SVC FEHLGESCHLAGEN"); + return 0; + } + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + + if(on) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + D_PRINTF(pathtmp); + + /* readlink retrieves real name, if it is a symlink */ + if ( (tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror("readlink"); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + + if(on) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + tmp++; /* add memory for \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + + if(on) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror("open"); + _exit(1); + } + + argc = 0; + + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror("read"); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG("realloc failed"); + _exit(1); + } + + nargv[argc] = sbuf; + *p = '\0'; + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + argc++; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG("realloc failed"); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(on) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* if a file exists, failing to open it is an error */ + if(fd == -1) { + perror("open"); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror("read"); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG("realloc failed"); + _exit(1); + } + + nenv[argc] = sbuf; + *p = '\0'; + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + argc++; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + perror(MSG_ERR_EXECVE); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.0.4/client/kill_svc.c b/software/cinit/browse_source/cinit-0.0.4/client/kill_svc.c new file mode 100644 index 00000000..d9ce3a8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/client/kill_svc.c @@ -0,0 +1,104 @@ +KOPIE VON RUN_SVC + +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and beforeo all dependencies + */ +void kill_svc(char *rpath, pid_t pid) +{ + int tmp; + char svc[PATH_MAX], svcparams[PATH_MAX]; + struct stat buf; + + D_PRINTF("starte kill_svc"); + D_PRINTF(rpath); + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror("getcwd"); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror("chdir"); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + if( ! run_run_svcs(pathtmp) ) { + /* FIXME: add log + service name here */ + D_PRINTF("some NEEDED services failed)"); + msg_change_status(abspath, ST_FAIL, 0); + return 0; + } + + D_PRINTF("Starte wants"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawning"); + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + D_PRINTF("exec_unce"); + pid = exec_svc(abspath); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return 0; + } + + D_PRINTF("Melde status"); + if(!msg_change_status(abspath, tmp, pid) ) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/client/msg_change_status.c b/software/cinit/browse_source/cinit-0.0.4/client/msg_change_status.c new file mode 100644 index 00000000..837d87b6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/client/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +int msg_change_status(char *svc, char status, pid_t pid) +{ + D_PRINTF(svc); + + if(!begin_msg(CMD_CHG_STATUS)) return 0; + + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/client/msg_start_svc.c b/software/cinit/browse_source/cinit-0.0.4/client/msg_start_svc.c new file mode 100644 index 00000000..d7e8867c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/client/msg_start_svc.c @@ -0,0 +1,26 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +int msg_start_svc(char *svc) +{ + D_PRINTF(svc); + + D_PRINTF("writing message begin"); + if(!begin_msg(CMD_START_SVC)) return 0; + D_PRINTF("writing service infos"); + if(!do_start_svc(sock,svc,ACT_CLIENT)) return 0; + D_PRINTF("reading result"); + if(!do_result(sock,NULL)) return 0; + D_PRINTF("gutes ende"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/client/respawn_svc.c b/software/cinit/browse_source/cinit-0.0.4/client/respawn_svc.c new file mode 100644 index 00000000..e5c5d4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/client/respawn_svc.c @@ -0,0 +1,68 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int status; + int pipefd[2]; + + if(pipe(pipefd) == -1) { + perror("pope"); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror("forke"); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&status,sizeof(status)) == -1) { + perror("read pope"); + return 0; + } + return pid; /* return watchers pid */ + } + + /******************** CHILD ********************/ + /* FIXME: add signal handler for shut down */ + + status = 1; + if( write(pipefd[1],&status,sizeof(status)) == -1) { + perror("read pope"); + _exit(1); + } + + while( status ) { + D_PRINTF(abspath); + pid = exec_svc(abspath, status); + + waitpid(pid,&status,0); + + if( ! WIFEXITED(status) ) { + if( WEXITSTATUS(status) ) { + /* sleep conf/c_sleep seconds on error exit */ + sleep(SLEEP_SVC); + D_PRINTF("schlecht gestorben"); + } + } + } + + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.0.4/client/run_run_svc.c b/software/cinit/browse_source/cinit-0.0.4/client/run_run_svc.c new file mode 100644 index 00000000..9cea0f33 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/client/run_run_svc.c @@ -0,0 +1,77 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX]; + pid_t pids[MAX_DEPS]; + int status, i=0, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + i++; + } else { + LOG("to many dependencies"); + break; + } + + if(pids[i-1] == -1) { /* err */ + LOG("fork failed"); + return 0; + } + + if(pids[i-1] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,"/"); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } + } + + closedir(d_tmp); + + /* wait for pids */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + if( ! WIFEXITED(status)) { + ret = 0; + } + i--; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/client/run_svc.c b/software/cinit/browse_source/cinit-0.0.4/client/run_svc.c new file mode 100644 index 00000000..9c765cc0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/client/run_svc.c @@ -0,0 +1,111 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and beforeo all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror("getcwd"); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror("chdir"); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + /* FIXME: add log + service name here */ + D_PRINTF("some NEEDED services failed"); + msg_change_status(abspath, ST_FAIL, 0); + return 0; + } + } + + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + D_PRINTF("Starte wants"); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + /*FIXME: check for C_ON, otherwise we are done! */ + + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + tmp = 1; + pid = exec_svc(abspath, tmp); + tmp = ST_ONCE; + } + + D_PRINTF("Melde status"); + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return 0; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/comm/README b/software/cinit/browse_source/cinit-0.0.4/comm/README new file mode 100644 index 00000000..840c9742 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/comm/README @@ -0,0 +1,3 @@ +comm/ + The communication part of cinit. + The functions are used in client and in server code. diff --git a/software/cinit/browse_source/cinit-0.0.4/comm/do_change_status.c b/software/cinit/browse_source/cinit-0.0.4/comm/do_change_status.c new file mode 100644 index 00000000..5e43654b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/comm/do_change_status.c @@ -0,0 +1,69 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror("i/o: length"); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror("i/o: service name"); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror("i/o: status"); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror("i/o: PID"); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/comm/do_result.c b/software/cinit/browse_source/cinit-0.0.4/comm/do_result.c new file mode 100644 index 00000000..3bf78718 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/comm/do_result.c @@ -0,0 +1,32 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int sock2, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(sock2,value,1) == -1) { /* result */ + perror("i/o: result"); + return 0; + } + + return *value; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/comm/do_start_svc.c b/software/cinit/browse_source/cinit-0.0.4/comm/do_start_svc.c new file mode 100644 index 00000000..959a0001 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/comm/do_start_svc.c @@ -0,0 +1,49 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_start_svc(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror("i/o: len"); + return 0; + } + + if(tmp > PATH_MAX) return 0; + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror("i/o: service name"); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/.README b/software/cinit/browse_source/cinit-0.0.4/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/c_env b/software/cinit/browse_source/cinit-0.0.4/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/c_halt b/software/cinit/browse_source/cinit-0.0.4/conf/c_halt new file mode 100644 index 00000000..bc062a2c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/c_halt @@ -0,0 +1,4 @@ +halt + +Name of the service we should start when 'halting' (system stop, but no +power off). diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/c_init b/software/cinit/browse_source/cinit-0.0.4/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/c_needs b/software/cinit/browse_source/cinit-0.0.4/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/c_off b/software/cinit/browse_source/cinit-0.0.4/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/c_on b/software/cinit/browse_source/cinit-0.0.4/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/c_params b/software/cinit/browse_source/cinit-0.0.4/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/c_poweroff b/software/cinit/browse_source/cinit-0.0.4/conf/c_poweroff new file mode 100644 index 00000000..273d4bec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/c_poweroff @@ -0,0 +1,3 @@ +poweroff + +Name of the service we should start, when system power-off is called. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/c_reboot b/software/cinit/browse_source/cinit-0.0.4/conf/c_reboot new file mode 100644 index 00000000..17937b4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/c_reboot @@ -0,0 +1,3 @@ +reboot + +Name of the service we should start on reboot. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/c_respawn b/software/cinit/browse_source/cinit-0.0.4/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/c_sock b/software/cinit/browse_source/cinit-0.0.4/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/c_tmp b/software/cinit/browse_source/cinit-0.0.4/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.0.4/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.0.4/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/c_wants b/software/cinit/browse_source/cinit-0.0.4/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/cinit_dir b/software/cinit/browse_source/cinit-0.0.4/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/destdir b/software/cinit/browse_source/cinit-0.0.4/conf/destdir new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/destdir @@ -0,0 +1 @@ + diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/getty_dir b/software/cinit/browse_source/cinit-0.0.4/conf/getty_dir new file mode 100644 index 00000000..75d31cb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-example'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/install_directory b/software/cinit/browse_source/cinit-0.0.4/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/install_prog b/software/cinit/browse_source/cinit-0.0.4/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/prefix b/software/cinit/browse_source/cinit-0.0.4/conf/prefix new file mode 100644 index 00000000..580ae0cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/prefix @@ -0,0 +1,4 @@ +/ + +Where to install cinit. Normally this will be /, but you can put in anywhere. +The subdirectory 'sbin' under this prefix must be reabable by the kernel. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/sleep_kill b/software/cinit/browse_source/cinit-0.0.4/conf/sleep_kill new file mode 100644 index 00000000..de1fd006 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/sleep_kill @@ -0,0 +1,5 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/sleep_svc b/software/cinit/browse_source/cinit-0.0.4/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/sock_group b/software/cinit/browse_source/cinit-0.0.4/conf/sock_group new file mode 100644 index 00000000..d4c1adda --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/sock_group @@ -0,0 +1,3 @@ +root + +The group, which should own the communication socket. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/sock_mode b/software/cinit/browse_source/cinit-0.0.4/conf/sock_mode new file mode 100644 index 00000000..b2a727b0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/sock_mode @@ -0,0 +1,3 @@ +0770 + +Octal mode of socket. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/sock_queue b/software/cinit/browse_source/cinit-0.0.4/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.0.4/conf/sock_user b/software/cinit/browse_source/cinit-0.0.4/conf/sock_user new file mode 100644 index 00000000..34274f4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/conf/sock_user @@ -0,0 +1,3 @@ +root + +The one who should own the communication socket. diff --git a/software/cinit/browse_source/cinit-0.0.4/doc/.buildwarn b/software/cinit/browse_source/cinit-0.0.4/doc/.buildwarn new file mode 100644 index 00000000..43c26832 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/doc/.buildwarn @@ -0,0 +1,20 @@ + +------------- +W A R N I N G +------------- + +**************************************************************************** +THIS IS A PRE-RELEASE, NOT YET THOUGHT TO BE USED IN PRODUCTIVE ENVIRONMENT! +**************************************************************************** + +First of all configure cinit through the configuration files found in conf/. +Especially look at conf/*tmp*. + +The documentation can be found in doc/. + +After reading and configuring use: + + "make all" - to build cinit + "make install" - to install cinit + "make install-example" - to install cinit configuration example + -> WARNING: the last two make targets do not honour $DESTDIR yet! diff --git a/software/cinit/browse_source/cinit-0.0.4/doc/caveats b/software/cinit/browse_source/cinit-0.0.4/doc/caveats new file mode 100644 index 00000000..3eac4a92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/doc/caveats @@ -0,0 +1,14 @@ +'Geheimnisse' in German + + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporary disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster, if you omit non needed + 'wants' and 'needs' dirs, as they need to be scanned, if they + exist diff --git a/software/cinit/browse_source/cinit-0.0.4/doc/cinit.commands b/software/cinit/browse_source/cinit-0.0.4/doc/cinit.commands new file mode 100644 index 00000000..3614b3c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/doc/cinit.commands @@ -0,0 +1,89 @@ +-------------------------------------------------------------------------------- +cinit commands, Nico Schottelius 2005-04-28 +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (uses SO_PEERCRED as +socketoption). + +The communication-protocol is binary. + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service and its dependencies. + CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_INIT: Start all services (again possibly). + + CMD_HALT: Halt the system*) + CMD_REBOOT: Reboot the system*) + CMD_POWEROFF: Power-off the system*) + + *) The commands are not and maybe will never be implemented, + as they are realized as signals. + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) ok, a SID, a service ID: int svc_id; [ really need int? ] + b) fail, [currently only fail is returned] + a) already running + b) svc_name too long / not allowed + + [ A service identification is used for faster searching in cinit. + It is also a hint for developers of external software, that they should not + be able to use CMD_CHG_STATUS, if they didn't start a service. + They should use CMD_STOP_SVC to stop a service. + Starting a service is currently done via exec() in the external program or + a cinit-fork(). ] + +CMD1CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_INIT: Start all services (again possibly). + cinit returns: ready... + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. diff --git a/software/cinit/browse_source/cinit-0.0.4/doc/configuring.cinit b/software/cinit/browse_source/cinit-0.0.4/doc/configuring.cinit new file mode 100644 index 00000000..61880098 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/doc/configuring.cinit @@ -0,0 +1,12 @@ +-------------------------------------------------------------------------------- +configuring cinit, Nico Schottelius 2005-05-28 +-------------------------------------------------------------------------------- + +Services +mostly no shell scripts +linking to system configuration +adding services with cinit.add.service? -> later, meta-deps? +pidfilehack - from fefe/minit? + +meta-deps + diff --git a/software/cinit/browse_source/cinit-0.0.4/doc/fun/testing01 b/software/cinit/browse_source/cinit-0.0.4/doc/fun/testing01 new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/doc/fun/testing01 @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.0.4/doc/how_it_works_internally b/software/cinit/browse_source/cinit-0.0.4/doc/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/doc/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.0.4/doc/ipc.thoughts b/software/cinit/browse_source/cinit-0.0.4/doc/ipc.thoughts new file mode 100644 index 00000000..d7352559 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/doc/ipc.thoughts @@ -0,0 +1,74 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, Nico Schottelius 2005-04-28 +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2), +1024=max fds, -3=already opened (stderr/stdin/stdout), /2= +two fds needed per clients). + +Pipes cannot be use easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR. + +That way, we are forced to mount a temporary filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt and + - poweroff. + +Simple send cinit a signal, what todo: + SIGUSR1: reboot + SIGUSR2: poweroff + TERM: halt + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.0.4/doc/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.0.4/doc/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/doc/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.0.4/doc/meta.dependencies b/software/cinit/browse_source/cinit-0.0.4/doc/meta.dependencies new file mode 100644 index 00000000..02f05bef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/doc/meta.dependencies @@ -0,0 +1,55 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycach, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger, bloatig and much slower. + +On the other hand, on would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation. + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +it does not need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ diff --git a/software/cinit/browse_source/cinit-0.0.4/doc/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.0.4/doc/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/doc/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.0.4/doc/shutting.down b/software/cinit/browse_source/cinit-0.0.4/doc/shutting.down new file mode 100644 index 00000000..d5b0b2f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/doc/shutting.down @@ -0,0 +1,60 @@ +-------------------------------------------------------------------------------- +Shutting down the system +Nico Schotteilus, 2005-05-24 +-------------------------------------------------------------------------------- + +cinit wird normalerweise alles herunterfahren und $etwas tun. + +1. What to do to allow a system to shutdown? + +Create /etc/cinit/reboot, /etc/cinit/power-off and /etc/cinit/halt. + +It's in most scenarios also enough to create only one of those +service directories and link all others against the first one: + +[21:38] ei:cinit# mkdir /etc/cinit/power-off +[21:38] ei:cinit# ln -s power-off /etc/cinit/reboot +[21:38] ei:cinit# ln -s power-off /etc/cinit/halt + +Then create the needed services, which are almost always: + + - swapoff: disable swap + - sync: sync buffers to disk + - umount: umount everything + - remount: remount root read-only + + +on oder off????? + +Add dependencies to + +You can also use +What todo when shutting down (reboot, halt, poweroff) the system: + +1. Cycle through service list and +while(processes--) { + Stop_current_processs +} + + - Stop_current_processs + \ if(status = respawn) + | -> kill -TERM pid + | exec_svc(svc/off, svc/off.params) + +kill remaining processes with SIGTERM +sleep(WAIT_KILL) +kill remaining processes with SIGKILL +sync; +umount(*) + +reboot + + +- cycle through running services, kill them the other way round +- stop respawing processes + +- start off-process of running services +- don't shutdown failed services + +kill_svc(struct stat svc); + diff --git a/software/cinit/browse_source/cinit-0.0.4/doc/thoughts.closed b/software/cinit/browse_source/cinit-0.0.4/doc/thoughts.closed new file mode 100644 index 00000000..1da4bebe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/doc/thoughts.closed @@ -0,0 +1,24 @@ +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporary fs before. + diff --git a/software/cinit/browse_source/cinit-0.0.4/doc/thoughts.open b/software/cinit/browse_source/cinit-0.0.4/doc/thoughts.open new file mode 100644 index 00000000..5e0a054c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/doc/thoughts.open @@ -0,0 +1,14 @@ +- Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. + +- Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. diff --git a/software/cinit/browse_source/cinit-0.0.4/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.0.4/generic/mini_printf.c new file mode 100644 index 00000000..d384e717 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/generic/mini_printf.c @@ -0,0 +1,20 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * print string + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + p = str; + while ( *p != '\0') { + write(fd,p,1); + p++; + } + + write(fd,"\n",1); /* FIXME: only when console */ +} diff --git a/software/cinit/browse_source/cinit-0.0.4/generic/set_signals.c b/software/cinit/browse_source/cinit-0.0.4/generic/set_signals.c new file mode 100644 index 00000000..aa3233b6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/generic/set_signals.c @@ -0,0 +1,45 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +#include +#include +#include "cinit.h" + +void set_signals(int action) +{ + struct sigaction sa; + + if(action == ACT_SERV) { + sa.sa_handler=SIG_IGN; + } else { + sa.sa_handler=SIG_DFL; + } + sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + sigaction(SIGUSR2,&sa,NULL); /* USR2 */ + sigaction(SIGQUIT,&sa,NULL); /* QUIT... */ + sigaction(SIGTTIN,&sa,NULL); + sigaction(SIGTTOU,&sa,NULL); + + /* sigio is called to act on the socket */ + if(action == ACT_SERV) { + sa.sa_handler=sigio; + } + sigaction(SIGIO,&sa,NULL); + + /* signal handlers to do special things with: reboot */ + if(action == ACT_SERV) { + sa.sa_handler=sig_reboot; + } +// sigaction(SIGINT,&sa,NULL); /* FIXME: Testing only: ctr+c = REBOOT!!! */ + sigaction(SIGUSR1,&sa,NULL); + sigaction(SIGTERM,&sa,NULL); + sigaction(SIGHUP,&sa,NULL); + + /* sigstop can't be ignored, do the manpages say */ + /* sigaction(SIGSTOP,&sa,NULL); */ +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/add_mod_svc.c b/software/cinit/browse_source/cinit-0.0.4/old/add_mod_svc.c new file mode 100644 index 00000000..c74778d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/add_mod_svc.c @@ -0,0 +1,42 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * add_svc + * part of cinit + */ + +#include + +#include "cinit.h" + +/* we return the service id or -1 on error*/ +int add_mod_svc(char *svc, char status, pid_t pid) +{ + int tmp = 0; + + /* check if service exists, if so, set new status, return sid */ + tmp = chk_svc(svc); + if( tmp != -1 ) { + svc_list.svca[tmp].status = status; + return tmp; + } + + /* still here? than there is no such service */ + if(svc_list.process < MAX_SVC) { + printf("[%d]: %s (%d)\n",svc_list.process,svc,pid); + svc_list.svca[svc_list.process].abs_path = strdup(svc); + + if(svc_list.svca[svc_list.process].abs_path == NULL) { + LOG("strdup failed!"); + return -1; + } + svc_list.svca[svc_list.process].pid = pid; + /* inkrement later, as we count argv[0..n] */ + (svc_list.process)++; + } else { + LOG("too many services"); + return -1; + } + + /* return _our_ service id */ + return (svc_list.process -1); +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/cerr.c b/software/cinit/browse_source/cinit-0.0.4/old/cerr.c new file mode 100644 index 00000000..b9dec472 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/cerr.c @@ -0,0 +1,36 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * print error to stderr and exist + */ + +#include +#include "cinit.h" + +void cerr(char *string, int status) +{ + char *p; + + p = string; + while ( *p != '\0') { + write(2,p,1); + p++; + } + write(2,"\n",1); + + switch(status) { + case RT_CHLD_FAIL: + case RT_CHLD_OK: + _exit(status); + ;; + case RT_PAR_FAIL: /* FIXME: if status is RT_PAR_FAIL, start sulogin */ + _exit(23); + ;; + case RT_PAR_OK: + return; + ;; + } + +/* FIXME: return if in cinit, _exit on fork() */ +// if(...) +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/cinit.add.shutdown.reboot.poweroff b/software/cinit/browse_source/cinit-0.0.4/old/cinit.add.shutdown.reboot.poweroff new file mode 100644 index 00000000..23cae705 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/cinit.add.shutdown.reboot.poweroff @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add shutdown/reboot/poweroff service + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +# create halt, link reboot and poweroff to it +mkdir "$BASEDIR/$C_HALT" +ln -s "$C_HALT" "$BASEDIR/$C_REBOOT" +ln -s "$C_HALT" "$BASEDIR/$C_POWEROFF" diff --git a/software/cinit/browse_source/cinit-0.0.4/old/cinit.c01 b/software/cinit/browse_source/cinit-0.0.4/old/cinit.c01 new file mode 100644 index 00000000..e3890013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/cinit.c01 @@ -0,0 +1,105 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +#define CINIT_DIR "/etc/cinit" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "needs" +#define C_WANTS "wants" + +/* opendir() */ +#include +#include + +/* *stat() */ +#include +#include + + +#include + +#define EKEL "/etc/cinit/init/wants" + +void cerr(char *msg) +{ + printf("%s\n", msg); +} + +/* + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + + /* check if already running / ran / currently starting */ + + /* check for needs -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es, %s\n", pathbuf); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) printf("dir gibt es, %s\n", pathbuf); + + d_tmp = opendir(path); + + if(d_tmp == NULL) { + cerr("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} + +int main() +{ + + char buf[256]; + int tmp; + + strcpy(buf,CINIT_DIR); + tmp = strlen(CINIT_DIR); + buf[tmp] = '/'; + strcpy(&buf[tmp+1],C_INIT); + + printf("path: %s\n",buf); + + run_svc("/etc/cinit/init"); + + run_svc("/etc/cinit2/init"); + + run_svc("/NOT_THERE"); + +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/cinit.c02 b/software/cinit/browse_source/cinit-0.0.4/old/cinit.c02 new file mode 100644 index 00000000..7e5432b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/cinit.c02 @@ -0,0 +1,198 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +#define CINIT_DIR "/etc/cinit" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "needs" +#define C_WANTS "wants" +#define C_RUN "run" + +/* opendir() */ +#include +#include + +/* *stat() */ +#include +#include + +/* wait() */ +#include + +/* strlen */ +#include + +#include + +#define EKEL "/etc/cinit/init/wants" + +void cerr(char *msg) +{ + printf("%s\n", msg); +} + +/*********************************************************************** + * parallel run forked() run_svc() + */ +#define MAX_PAR 32 + +int run_run_svcs(char *rpath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + pid_t pids[MAX_PAR]; + int tmp,i=0; + + printf("run_run_svcs on: %s\n",rpath); + + d_tmp = opendir(rpath); + + if(d_tmp == NULL) { + printf("Failed to open dir: %s", rpath); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 + || strcmp(tdirent->d_name, "..") == 0) + continue; + + if(i < MAX_PAR) { + pids[i] = fork(); + i++; + } else { + cerr("to many dependencies"); + return 1; + } + + if(pids[i-1] == -1) { /* err */ + cerr("fork failed\n"); + return 0; + } else if(pids[i-1] == 0) { /* child */ + printf("Service zu starten nun: %s\n", tdirent->d_name); + run_svc(tdirent->d_name); + _exit(0); + } else /* the parent simply goes the loop again */ + printf("run_svcs_PARENT\n"); + } + + closedir(d_tmp); + + /* wait for pids */ + while(i >= 0) { +// printf("waiting for %d ... \n",i); + waitpid(pids[i], &tmp, 0); + i--; + } +} + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check if already running / ran / currently starting */ + + /* check for service dir */ + if( stat(path,&buf) ) { + printf("no such service: %s\n", path); + return 1; + } + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + cerr("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + + char buf[256]; + int tmp; + + strcpy(buf,CINIT_DIR); + tmp = strlen(CINIT_DIR); + buf[tmp] = '/'; + strcpy(&buf[tmp+1],C_INIT); + + printf("path: %s\n",buf); + + run_svc("/etc/cinit/init"); + + run_svc("/NOT_THERE"); + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/cinit.c03 b/software/cinit/browse_source/cinit-0.0.4/old/cinit.c03 new file mode 100644 index 00000000..c1b5eb42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/cinit.c03 @@ -0,0 +1,241 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +#define CINIT_DIR "/etc/cinit" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "needs" +#define C_WANTS "wants" +#define C_RUN "run" + +/* opendir() */ +#include +#include + +/* *stat() */ +#include +#include + +/* wait() */ +#include + +/* strlen */ +#include + +#include + +#include "cinit.h" + +#define EKEL "/etc/cinit/init/wants" + +/* status of a service */ +#define ST_TMP 1 /* currently working on it */ +#define ST_ONCE 2 /* executed once */ +#define ST_RESPAWN 3 /* running and respawning */ + +/* array of svc */ +/* linked list of services */ +/* balanced trees */ +struct svc { + char *abs_path; +// struct svc *next; + int status; /* tmp, respawn, ran once */ + /* evtl: */ +}; + +struct svcl { + struct svc svc_list[1000]; + int process; +} svc_list; + +void cerr(char *msg) +{ + printf("%s\n", msg); +} + +/*********************************************************************** + * parallel run forked() run_svc() + */ +#define MAX_PAR 32 + +int run_run_svcs(char *rpath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + pid_t pids[MAX_PAR]; + int tmp,i=0; + + printf("run_run_svcs on: %s\n",rpath); + + d_tmp = opendir(rpath); + + if(d_tmp == NULL) { + printf("Failed to open dir: %s", rpath); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 + || strcmp(tdirent->d_name, "..") == 0) + continue; + + if(i < MAX_PAR) { + pids[i] = fork(); + i++; + } else { + cerr("to many dependencies"); + return 1; + } + + if(pids[i-1] == -1) { /* err */ + cerr("fork failed\n"); + return 0; + } else if(pids[i-1] == 0) { /* child */ + printf("Service zu starten nun: %s\n", tdirent->d_name); + run_svc(tdirent->d_name); + _exit(0); + } else /* the parent simply goes the loop again */ + printf("run_svcs_PARENT\n"); + } + + closedir(d_tmp); + + /* wait for pids */ + while(i >= 0) { +// printf("waiting for %d ... \n",i); + waitpid(pids[i], &tmp, 0); + i--; + } +} + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check if already running / ran / currently starting */ + + /* debug */ + getcwd(pathbuf,1024); + + printf("dir: %s\n",pathbuf); + + /* check for service dir */ + if( stat(path,&buf) ) { + printf("no such service: %s\n", path); + return 1; + } + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + cerr("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + char pathbuf[MAXPATH]; + struct stat buf; + + strcpy(pathbuf,CINIT_DIR); + strcat(pathbuf,"/"); + strcat(pathbuf,C_INIT); + + printf("path: %s\n",pathbuf); + + svc_list.process = 0; + + /* stat, checkdir */ + if( stat(pathbuf,&buf) ) { + printf("PANIC ACTION: init dir missing\n"); + return 1; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("PANIC ACTION: init is not a dir\n"); + return 1; + } + + if( chdir(pathbuf) == -1) { + printf("PANIC ACTION: chdir(%s) failed!\n",pathbuf); + return 1; + } + run_svc("/etc/cinit/init"); +// run_svc(""); + +// run_svc("/NOT_THERE"); + +// execl("/bin/zsh","zsh", "-l"); + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/cinit.c04 b/software/cinit/browse_source/cinit-0.0.4/old/cinit.c04 new file mode 100644 index 00000000..983c03eb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/cinit.c04 @@ -0,0 +1,130 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* printf() */ +//#include + +/* str* */ +#include + +#include "cinit.h" + +/* global variable */ +struct svcl svc_list; +int f_in, f_out; + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + char pathbuf[PATH_MAX]; + char buf[1223]; + struct stat sbuf; + int i; + + struct sigaction sa; + + /* signal handlers to ignore */ + sa.sa_handler=SIG_IGN; +// sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGSTP,&sa,NULL); /* ignore ctr+z, stop */ + + D_PRINTF(CINIT_INIT); + + /* count of started processes */ + svc_list.process = 0; + + /* begin to handle signals */ + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + cerr("PANIC ACTION: init dir missing", RT_PAR_FAIL); + } else if( ! S_ISDIR(sbuf.st_mode) ) { + cerr("PANIC ACTION: init is not a dir", RT_PAR_FAIL); + } + + if( chdir(CINIT_INIT) == -1) + cerr("PANIC ACTION: chdir to /etc/cinit/init failed!",RT_PAR_FAIL); + + /* open communication fifos */ + f_in = open(CINIT_DIR SLASH F_IN, O_RDWR); + f_out = open(CINIT_DIR SLASH F_OUT, O_RDWR); + if(f_in == -1 || f_out == -1) cerr("opening fifo failed\n",RT_PAR_FAIL); + + /* initial run, only if we are 'real' init' */ +// if( getpid() == 1) { + i = run_init_svc(); + printf("Initialer Start rueckgabe: %d\n", i); +// } + + /* signal handlers to do special things with */ + // something else sa.sa_handler=SIG_IGN; + sigaction(SIGUSR1,&sa,NULL); /* reboot on sigusr1 */ + sigaction(SIGUSR1,&sa,NULL); /* power-off on sigusr2 */ + sigaction(SIGTERM,&sa,NULL); /* halt on sigterm */ + + /* important signal handlers: pipe, child */ +// sa.sa_handler=sig_pipe; +// sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + +// sa.sa_handler=sig_child; +// sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + + + /* big TODO: */ + + /* some while/for loop to hang forever, remember, we are init! */ + while(1) { + i=0; + /* read path */ + do { + read(f_in,&buf,1); +// buf1[i] = buf; i++; + } while(buf != '\0'); +// + // printf("Read path: %s\n",buf1); + + i=0; + /* read status */ + do { + read(f_in,&buf,1); + // buf2[i] = buf; i++; + } while(buf != '\0'); + + // status = atoi(buf2); + // printf("Read status: %d\n",status); + + i=0; + /* read pid */ + do { + read(f_in,&buf,1); + // buf3[i] = buf; i++; + } while(buf != '\0'); + + // pid = atoi(buf3); + + + + } + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/cinit.c05 b/software/cinit/browse_source/cinit-0.0.4/old/cinit.c05 new file mode 100644 index 00000000..8dec1f46 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/cinit.c05 @@ -0,0 +1,137 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* printf() */ +//#include + +/* str* */ +#include + +#include "cinit.h" + +/* global variable */ +struct svcl svc_list; + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + char buf[1223]; + struct stat sbuf; + int i; + + struct sigaction sa; + + /* signal handlers to ignore */ + sa.sa_handler=SIG_IGN; +// sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGSTOP,&sa,NULL); /* ignore ctr+z, stop */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + + D_PRINTF(CINIT_INIT); + + /* begin to handle signals */ + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + cerr("PANIC ACTION: init dir missing", RT_PAR_FAIL); + } else if( ! S_ISDIR(sbuf.st_mode) ) { + cerr("PANIC ACTION: init is not a dir", RT_PAR_FAIL); + } + + if( chdir(CINIT_INIT) == -1) + cerr("PANIC ACTION: chdir to /etc/cinit/init failed!",RT_PAR_FAIL); + + /* get shared memory */ + + shmfd = shm_open(CINIT_SHM,O_RDWR|O_CREAT,0600); + + if(shmfd == -1) { + perror("Shared memory"); + cerr("shared memory",RT_PAR_FAIL); + } + + /* count of started processes */ + svc_list.process = 0; + + /* open communication fifos */ + f_in = open(CINIT_DIR SLASH F_IN, O_RDWR); + f_out = open(CINIT_DIR SLASH F_OUT, O_RDWR); + if(f_in == -1 || f_out == -1) cerr("opening fifo failed",RT_PAR_FAIL); + + /* initial run, only if we are 'real' init' */ +// if( getpid() == 1) { + i = run_init_svc(); + printf("Initialer Start rueckgabe: %d\n", i); +// } + + /* signal handlers to do special things with */ + // something else sa.sa_handler=SIG_IGN; + sigaction(SIGUSR1,&sa,NULL); /* reboot on sigusr1 */ + sigaction(SIGUSR1,&sa,NULL); /* power-off on sigusr2 */ + sigaction(SIGTERM,&sa,NULL); /* halt on sigterm */ + + /* important signal handlers: pipe, child */ +// sa.sa_handler=sig_pipe; + +// sa.sa_handler=sig_child; +// sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + + + /* big TODO: */ + + /* some while/for loop to hang forever, remember, we are init! */ + while(1) { + i=0; + /* read path */ + do { + read(f_in,&buf,1); +// buf1[i] = buf; i++; + } while(buf != '\0'); +// + // printf("Read path: %s\n",buf1); + + i=0; + /* read status */ + do { + read(f_in,&buf,1); + // buf2[i] = buf; i++; + } while(buf != '\0'); + + // status = atoi(buf2); + // printf("Read status: %d\n",status); + + i=0; + /* read pid */ + do { + read(f_in,&buf,1); + // buf3[i] = buf; i++; + } while(buf != '\0'); + + // pid = atoi(buf3); + + + + } + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/cinit.c06 b/software/cinit/browse_source/cinit-0.0.4/old/cinit.c06 new file mode 100644 index 00000000..c48de22c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/cinit.c06 @@ -0,0 +1,158 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* printf() */ +//#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* global variable */ +struct svcl svc_list; +int sock; + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int signal) +{ + struct ucred suck; + int len = sizeof(suck), lens; + int nsock; + struct sockaddr_un sun; + char buf; + + lens=sizeof(sun); + memset(&sun,0,lens); + +/* this is always us! */ +// getsockopt(sock, SOL_SOCKET, SO_PEERCRED, &suck, &len); +// printf("orig angreifer: pid: %d uid: %d gid: %d\n",suck.pid,suck.uid,suck.gid); + + do { + //s_tmp[s_idx] = accept(sock,(struct sockaddr *) &sun, (socklen_t *) &lens); + nsock = accept(sock,(struct sockaddr *) NULL, (socklen_t *) NULL); + + // nsock = accept(sock,(struct sockaddr *) &sun, (socklen_t *) &lens); +// if( s_tmp[s_idx] == -1) { + if( nsock == -1) { + if (errno != EAGAIN) { + perror("accept"); + _exit(1); + } else { + break; + } + } + + //getsockopt(s_tmp[s_idx], SOL_SOCKET, SO_PEERCRED, &suck, &len); + getsockopt(nsock, SOL_SOCKET, SO_PEERCRED, &suck, &len); + printf("angreifer: pid: %d uid: %d gid: %d\n",suck.pid,suck.uid,suck.gid); + + + read(nsock,&buf,1); + + printf("command: %d\n",buf); + + while ( (len = read(nsock,&buf,1)) ) { +// printf("laenge: %d\n",len); + if(len == -1) { +// if(errno != EINVAL && errno != EAGAIN) { + perror("read"); + return; +// _exit(1); +// } + } + if(buf == 0) break; + write(1,&buf,1); + } + printf("Fertig mit lesen\n"); + + write(nsock,"ok\n",4); + printf("fertig mit schreiben\n"); + } while ( 1 ); + + printf("keine sockets mehr da..., sigio beendet sich jetzt.\n"); +} + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + struct stat sbuf; + int i; + + struct sigaction sa; + + /* signal handlers to ignore */ + sa.sa_handler=SIG_IGN; +// sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGSTOP,&sa,NULL); /* ignore ctr+z, stop */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + + sa.sa_handler=sigio; + sigaction(SIGIO,&sa,NULL); /* what todo when data arrived on socket */ + + D_PRINTF(CINIT_INIT); + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + cerr("PANIC ACTION: init dir missing", RT_PAR_FAIL); + } else if( ! S_ISDIR(sbuf.st_mode) ) { + cerr("PANIC ACTION: init is not a dir", RT_PAR_FAIL); + } + + if( chdir(CINIT_INIT) == -1) + cerr("PANIC ACTION: chdir to /etc/cinit/init failed!",RT_PAR_FAIL); + + /* count of started processes */ + svc_list.process = 0; + + /* initial run, only if we are 'real' init' */ +// if( getpid() == 1) { + i = run_init_svc(); + printf("Initialer Start rueckgabe: %d\n", i); +// } + + /* signal handlers to do special things with */ + // something else sa.sa_handler=SIG_IGN; +// sigaction(SIGUSR1,&sa,NULL); /* reboot on sigusr1 */ +// sigaction(SIGUSR1,&sa,NULL); /* power-off on sigusr2 */ +// sigaction(SIGTERM,&sa,NULL); /* halt on sigterm */ + + /* the main loop */ + while(1) ; + +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/cinit.commands.v01 b/software/cinit/browse_source/cinit-0.0.4/old/cinit.commands.v01 new file mode 100644 index 00000000..dfdb67c5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/cinit.commands.v01 @@ -0,0 +1,85 @@ +-------------------------------------------------------------------------------- +cinit commands, Nico Schottelius 2005-04-28 +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (uses SO_PEERCRED as +socketoption). + +The communication-protocol is binary. + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service and its dependencies. + CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_INIT: Start all services (again possibly). + + CMD_HALT: Halt the system. + CMD_REBOOT: Reboot the system. + CMD_POWEROFF: Power-off the system. + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) ok, a SID, a service ID: int svc_id; [ really need int? ] + b) fail, [currently only fail is returned] + a) already running + b) svc_name too long / not allowed + + [ A service identification is used for faster searching in cinit. + It is also a hint for developers of external software, that they should not + be able to use CMD_CHG_STATUS, if they didn't start a service. + They should use CMD_STOP_SVC to stop a service. + Starting a service is currently done via exec() in the external program or + a cinit-fork(). ] + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int svc_id; /* service ID to change */ + 1. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit uncgrafully + UNUSED! respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_INIT: Start all services (again possibly). + cinit returns: ready... + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. diff --git a/software/cinit/browse_source/cinit-0.0.4/old/cinit.create.cinit_dir b/software/cinit/browse_source/cinit-0.0.4/old/cinit.create.cinit_dir new file mode 100644 index 00000000..6fd58adb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/cinit.create.cinit_dir @@ -0,0 +1,11 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create our initial directory +# 2005-05-24 + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +mkdir -p $BASEDIR diff --git a/software/cinit/browse_source/cinit-0.0.4/old/cinit.h01 b/software/cinit/browse_source/cinit-0.0.4/old/cinit.h01 new file mode 100644 index 00000000..e07fa2c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/cinit.h01 @@ -0,0 +1,80 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * header of cinit + */ + +/* includes */ +#include /* pid_t */ + +/* limits */ +#define MAX_SVC 1024 /* maximum services */ +#define MAX_DEPS 32 /* maximum direct dependencies of a service */ + +/* paths */ +#define CINIT_DIR "/etc/cinit" + +#define F_IN "in" +#define F_OUT "out" +#define SLASH "/" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "./needs" +#define C_WANTS "./wants" +#define C_RUN "./run" +#define C_RESPAWN "respawn" +#define C_PARAMS "params" + +/* return values */ +#define RT_FAIL 0 +#define RT_OK 1 + +#define RT_CHLD_FAIL 1 /* child failed */ +#define RT_CHLD_OK 2 /* child succeded */ +#define RT_PAR_FAIL 3 /* parent failed */ +#define RT_PAR_OK 4 /* parent succeded */ + +/* status of a service-starter (run_run_svc) */ +#define RT_ONE_FAILED 5 /* one ore more failed */ +#define RT_ALL_STARTED 6 /* everything ok */ +#define RT_DEPS_MAX 7 /* too many dependencies */ + +/* status of a service */ +#define ST_NO 0 /* process not existing */ +#define ST_TMP 1 /* currently working on it */ +#define ST_ONCE 2 /* executed once */ +#define ST_RESPAWN 3 /* running and respawning */ +#define ST_FAIL 4 /* failed to start service */ + + + +/* variables */ + +/* array of svc */ +/* linked list of services */ +/* balanced trees */ + +struct svc { + char *abs_path; /* service identifier */ + int status; /* tmp, respawn, ran once */ + pid_t pid; /* pid of the process */ +}; + +struct svcl { + struct svc svca[MAX_SVC]; + int process; +}; + +extern struct svcl svc_list; + +/* functions */ + +void cerr(char *string, int status); +int chk_svc(char *svc); +int run_svc(char *rpath); +int add_mod_svc(char *svc, int status); +int run_run_svcs(char *rpath); + diff --git a/software/cinit/browse_source/cinit-0.0.4/old/cnt_digits.c b/software/cinit/browse_source/cinit-0.0.4/old/cnt_digits.c new file mode 100644 index 00000000..a692fa5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/cnt_digits.c @@ -0,0 +1,42 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* this code is stolen from gpm */ + +/* what's the english name for potenz ? */ +int x_high_y(int base, int pot_y) +{ + int val = 1; + + if(pot_y == 0) val = 1; + else if(pot_y < 0) val = 0; /* ugly hack ;) */ + else while(pot_y > 0) { + val = val * base; + pot_y--; + } + return val; +} + +/* return characters needed to display int */ +int cnt_digits(int number) +{ + /* 0-9 = 1 10^0 <-> (10^1)-1 + * 10 - 99 = 2 10^1 <-> (10^2)-1 + * 100 - 999 = 3 10^2 <-> (10^3)-1 + * 1000 - 9999 = 4 ... */ + + int ret = 0, num = 0; + + /* non negative, please */ + if(number < 0) number *= -1; + else if(number == 0) ret = 1; + else while(number > num) { + ret++; + num = (x_high_y(10,ret) - 1); + } + + return(ret); +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/do_change_status.c01 b/software/cinit/browse_source/cinit-0.0.4/old/do_change_status.c01 new file mode 100644 index 00000000..74bb9c1e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/do_change_status.c01 @@ -0,0 +1,65 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + char buf = CMD_CHG_STATUS; + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + D_PRINTF("VERSUCHE STATUS ZU AENDERN"); + printf("socket: %d (cmd=%d)\n",sock2, buf); + + if(action == ACT_READ) { + D_PRINTF("Leeeese"); + fpoint = read; + } else { + D_PRINTF("schreibe"); + fpoint = write; /* don't care about warnings! */ + } + + if(action == ACT_WRITE) { + D_PRINTF("schreibe kommando"); + if(fpoint(sock2,&buf,1) == -1) { /* COMMAND */ + perror("command i/o"); + return 0; + } + tmp = strlen(svc); + sock2 = connect_sock(sock2); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror("i/o: length"); + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror("i/o: service name"); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror("i/o: status"); + printf("Status: %d, *status=%d, sizeof=%d\n",status,*status,sizeof(*status)); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror("i/o: PID"); + return 0; + } + + D_PRINTF("fertig mit statuswechsel lesen"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/idea01 b/software/cinit/browse_source/cinit-0.0.4/old/idea01 new file mode 100644 index 00000000..cf0df9d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/idea01 @@ -0,0 +1,121 @@ +-------------------------------------------------------------------------------- +/etc/cinit + -> init/ + -> shutdown/ + -> reboot/ + + + needs/ -> we wait until all parallel processes are finished _and_ we + don't start if one fails + wants/ -> we start all of them parallel and wait for them? + hold/ + wait -> wait until process finished + run -> program to execute + params -> \n seperated argument list + respawn -> respawn it + +services may only be under /etc/cinit? +-------------------------------------------------------------------------------- +Service-Status: + +- abs_path +- status (respawn,tmp,once) +-------------------------------------------------------------------------------- + +starting services: + +run_svc("/etc/cinit/service/") + -> exec run $params +Later: + -> check if service already running -> return OK + -> check needs/ -> check wants/ + -> run_svc($cur) + + When run_svc returns, the service is started and all service it needs, too. + + +-------------------------------------------------------------------------------- + -> check needs/ + -> exists -> fork( run_run_svcs() ) and continue + (fork) -> fork() run_svc(needs/*); + -> check wants/ + -> exists -> run_svc(wants/*); + -> waitfor(need_run_svc) +-------------------------------------------------------------------------------- +run_run_svcs() + -> start parallel (forked) run_svc() for every service +-------------------------------------------------------------------------------- + +main() + - run_svc /etc/cinit/init/ + - sleep()? -> simply do nothing -> do we need to fork ourselves? No, we are init. +spaeter: + - open /dev/console W_ONLY + - make stdin == /etc/cinit/in + - make stdout, stderr /dev/console + +-------------------------------------------------------------------------------- +eof + +Things, which are clear + +- we need to fork before execl(), as excel() replaces us. +- chdir() _after_ fork() + + +profiles support: profile=$profile + + start + "service.$profile" if exists, instead of + "service" + +starting services: + +cinit: + pipe() + set_status_tmp() + fork() --> failure --> clear_service + cinit_process_watcher(): + fork() + execve(process,args,env) + waitpid() -> for once? PROCESS MUST RETURN! + write_pipe() + rmpipe() + +-------------------------------------------------------------------------------- + +What to send over to cinit and read back? + + - first you need two pipes for every process: read+write (on both sides) + - cinit wants + o command + - service temporary - trying to start in right now. + - service executed once - fine + - service executed once and that failed - :-( + - service respawing + o an identifier for the service (i from service list ;-) + + --> makes 2 bytes to read +-------------------------------------------------------------------------------- +How cinit works: + +cinit says: I want to start service xyz. (/etc/cinit/init on bootup) +cinit calls run_svc(). +-------------------------------------------------------------------------------- + +run_svc(char *relative_path): + - check if service is alr + - fork() + - write cinit: check service, I want to start it + -> returns status of service (see ST_* in cinit.h) + - cinit returns: ok, you are temporary + - [that checked] check if service + o is already started + o is beeing started + x check if rpath S_ISDIR + x chdir(dir) + - check needs - check wants + - for every needs/* start run_svc + - check respawn -> respawn = true + - check run + diff --git a/software/cinit/browse_source/cinit-0.0.4/old/idea02 b/software/cinit/browse_source/cinit-0.0.4/old/idea02 new file mode 100644 index 00000000..38af8965 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/idea02 @@ -0,0 +1,200 @@ +-------------------------------------------------------------------------------- +/etc/cinit + -> init/ + -> shutdown/ + -> reboot/ + + + needs/ -> we wait until all parallel processes are finished _and_ we + don't start if one fails + wants/ -> we start all of them parallel and wait for them? + hold/ + wait -> wait until process finished + run -> program to execute + params -> \n seperated argument list + respawn -> respawn it + +services may only be under /etc/cinit? +-------------------------------------------------------------------------------- +Service-Status: (see struct svc, cinit.h) + +- abs_path +- status (respawn,tmp,once) +- pid + +abs_path\0status\0pid\0 + +-------------------------------------------------------------------------------- + +starting services: + +run_svc("/etc/cinit/service/") + -> exec run $params +Later: + -> check if service already running -> return OK + -> check needs/ -> check wants/ + -> run_svc($cur) + + When run_svc returns, the service is started and all service it needs, too. + + +-------------------------------------------------------------------------------- + -> check needs/ + -> exists -> fork( run_run_svcs() ) and continue + (fork) -> fork() run_svc(needs/*); + -> check wants/ + -> exists -> run_svc(wants/*); + -> waitfor(need_run_svc) +-------------------------------------------------------------------------------- +run_run_svcs() + -> start parallel (forked) run_svc() for every service +-------------------------------------------------------------------------------- + +main() + - run_svc /etc/cinit/init/ + - sleep()? -> simply do nothing -> do we need to fork ourselves? No, we are init. +spaeter: + - open /dev/console W_ONLY + - make stdin == /etc/cinit/in + - make stdout, stderr /dev/console + +-------------------------------------------------------------------------------- +eof + +Things, which are clear + +- we need to fork before execl(), as excel() replaces us. +- chdir() _after_ fork() + + +profiles support: profile=$profile + + start + "service.$profile" if exists, instead of + "service" + +starting services: + +cinit: + pipe() + set_status_tmp() + fork() --> failure --> clear_service + cinit_process_watcher(): + fork() + execve(process,args,env) + waitpid() -> for once? PROCESS MUST RETURN! + write_pipe() + rmpipe() + +-------------------------------------------------------------------------------- + +What to send over to cinit and read back? + + - first you need two pipes for every process: read+write (on both sides) + - cinit wants + o command + - service temporary - trying to start in right now. + - service executed once - fine + - service executed once and that failed - :-( + - service respawing + o an identifier for the service (i from service list ;-) + + --> makes 2 bytes to read +-------------------------------------------------------------------------------- +How cinit works: + +cinit says: I want to start service xyz. (/etc/cinit/init on bootup) +cinit calls run_svc(). +-------------------------------------------------------------------------------- + +int run_svc(char *relative_path): + - check if service is already running or temporary (task list!) + -> yes: return RT_PAR_OK + -> no: continue. + - set service to be temporary (ST_TMP) and retrieve SID (service ID) + - walk through dependency tree and call run_svc + - fork() -> so cinit can continue. + - write cinit: check service, I want to start it + -> returns status of service (see ST_* in cinit.h) + - cinit returns: ok, you are temporary + - [that checked] check if service + o is already started + o is beeing started + x check if rpath S_ISDIR + x chdir(dir) + - check needs - check wants + - for every needs/* start run_svc + - check respawn -> respawn = true + - check run + +-------------------------------------------------------------------------------- + +add_mod_svc(char *svc, int status) + -> add or modify status of a service + + - check whether service exists, reset status + - if not exists, insert if maximum of services is not reached +-------------------------------------------------------------------------------- + +cinit communications proto +-------------------------------------------------------------------------------- + +cinit: + -> signal_handler on SIGCHLD + run_init() + -> run_svc(init) + -> fork() -> do the work + +signal_handler_child + waitpid(.*) + -> returns pid + + oder waitpid() in dem run_svc, wenn need/once? + + need: + for i in need/*; do + ( $service & ); + done + wait(.*); + +-------------------------------------------------------------------------------- + +cinit: + +run_svc: + checks what it needs (need/*) + need/* + fork() + fork(), fork() + +-------------------------------------------------------------------------------- +Kommunikationsproblem: + + -> 1024 ist maximale anzahl offener sockets -> 510 von fifos,pipes + - mehrere FIFOs? + --> kommunikation gesichert, extrem viele fifos... + --> etwas unsauber, aber geregelte kommunikation + - mehrere PIPEs? + --> viele PIPEs (HRHR) + --> programme koennen nur von cinit gefork()ed werden. + + --> eine datei mit prozessen? + --> einen RAM Bereich? +-------------------------------------------------------------------------------- + +cinit[1] <-> fifo <-> forker + +forker? +-------------------------------------------------------------------------------- + +pfad vorher aufloesen? + +-------------------------------------------------------------------------------- +Kommunikation: ::Test:: + + Test mit nur 2 FIFOs! + +-------------------------------------------------------------------------------- + +sig_fifo() +read(..) als hauptaufgabe? diff --git a/software/cinit/browse_source/cinit-0.0.4/old/msg_change_status.c01 b/software/cinit/browse_source/cinit-0.0.4/old/msg_change_status.c01 new file mode 100644 index 00000000..cfd66ae3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/msg_change_status.c01 @@ -0,0 +1,49 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include + +#include "cinit.h" + +int do_change_status(char *svc, char status, pid_t pid, int action) +{ + char buf = CMD_CHG_STATUS; + int tmp = strlen(svc); + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_READ) + fpoint = read; + else + fpoint = write; + + D_PRINTF("versuche status zu aendern"); + + if(write(sock,&buf,1) == -1) { /* write COMMAND */ + perror("write"); + return 0; + } + if(write(sock,&tmp,sizeof(tmp)) == -1) { /* write length */ + perror("write"); + return 0; + } + if(write(sock,svc,tmp) == -1) { /* write service name */ + perror("write"); + return 0; + } + if(write(sock,&buf,1) == -1) { /* write PID */ + perror("write"); + return 0; + } + write(sock,&status,sizeof(status)); /* write status */ + + D_PRINTF("fertig mit schreiben"); + + read(sock,&buf,sizeof(buf)); /* read SID or -1 if error */ + + return buf; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/msg_start_svc.c b/software/cinit/browse_source/cinit-0.0.4/old/msg_start_svc.c new file mode 100644 index 00000000..c6a78bf8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/msg_start_svc.c @@ -0,0 +1,23 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit we start a service + */ + +#include + +/* return status */ +int msg_start_svc(char *string, int respawn) +{ + char *p; + + p = string; + while ( *p != '\0') { + write(2,p,1); + p++; + } + +/* FIXME: return if in cinit, _exit on fork() */ +// if(...) + _exit(status); +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/read_file.c b/software/cinit/browse_source/cinit-0.0.4/old/read_file.c new file mode 100644 index 00000000..43a5854b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/read_file.c @@ -0,0 +1,100 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + +#include "cinit.h" + +/*********************************************************************** + * read_file: return file content, each line a char* + */ + +char **read_file(char *file) +{ + int tmp; + int fd, argc; + + char buf[BUFSIZE]; + char *p, *sbuf = NULL; + char **nargv = NULL; + + struct stat stbuf; + + D_PRINTF("Lese Datei"); + D_PRINTF(file); + + if( !stat(file,&stbuf) ) { + fd = open(file,O_RDONLY); + + if(fd == -1) { + LOG("params exists, but open params failed"); + return NULL; + } + + D_PRINTF("open ist ok"); + + argc = 0; + + /* most likely one round */ + while ( (tmp = read(fd,buf,BUFSIZE) ) != 0 ) { + if(tmp == -1) { + perror("read"); + return NULL; + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],buf,tmp); + argc += tmp; + } + close(fd); + } + + sbuf[argc] = '\0'; + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() */ + + argc = 0; + + while( (p = strchr(sbuf,'\n')) ) { + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG("realloc failed"); + return NULL; + } + + nargv[argc] = sbuf; + *p = '\0'; + sbuf = p+1; /* is ok, as behind the last \n is a \0 */ + argc++; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + if(nargv == NULL) { + LOG("realloc failed"); + return NULL; + } + + nargv[argc] = NULL; /* terminate argv list */ + + return nargv; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/run_init_svc.c01 b/software/cinit/browse_source/cinit-0.0.4/old/run_init_svc.c01 new file mode 100644 index 00000000..61467f44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/run_init_svc.c01 @@ -0,0 +1,50 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run initial service + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * start the first service + */ + +int run_init_svc() +{ + pid_t pid; + + D_PRINTF("Starte initialen starter"); + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + perror("fork failed\n"); + return RT_PAR_FAIL; + } else if(pid == 0) { /* child */ + /* close fifo */ + close(f_in); close(f_out); + + /* open the other way round */ + f_in = open(CINIT_DIR SLASH F_OUT, O_RDWR); + f_out = open(CINIT_DIR SLASH F_IN, O_RDWR); + if(f_in == -1 || f_out == -1) cerr("opening fifo failed\n",RT_CHLD_FAIL); + + /* open stderr, stdin, stdout to files? */ + if ( run_svc(CINIT_INIT) == RT_CHLD_OK) + _exit(EX_OK); + else + _exit(EX_FAIL); + } else + return RT_PAR_OK; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c00 b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c00 new file mode 100644 index 00000000..ff3bb989 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c00 @@ -0,0 +1,140 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp, sid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + close(sock); /* close old socket connection, we are a fork()! */ + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + return 0; + } + tmp = sizeof(addr); + memset(&addr,0,tmp); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + /* FIXME: why do we need tmp????? ... tmp == 1 is wrong!*/ +/* tmp = 1; + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + return 0; + } */ + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + return 0; + } + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror("getcwd"); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror("chdir"); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + if( ! run_run_svcs(pathtmp) ) { + D_PRINTF("some NEEDED services failed)"); + return 0; + } + + D_PRINTF("Starte wants"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + tmp = ST_ONCE; + sid = 20; + D_PRINTF("Melde status"); + if(!do_change_status(abspath,&tmp,&sid,sock,ACT_WRITE)) { + D_PRINTF("Status nicht gemeldet :((((((((((("); + return 0; + } + D_PRINTF("Status abgesetzt"); + +/* if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + if(respawn_svc(abspath)) { + msg_change_status(sid,ST_RESPAWN); + } else { + D_PRINTF("error in respawn"); + msg_change_status(sid,ST_FAIL); + } + } else { + D_PRINTF("einmal ausfuehren"); + if(exec_svc(abspath)) { + msg_change_status(sid,ST_ONCE); + } else { + D_PRINTF("error einmalig"); + msg_change_status(sid,ST_FAIL); + } + } */ +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c01 b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c01 new file mode 100644 index 00000000..e7457af0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c01 @@ -0,0 +1,292 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* perhaps move this code to cinit-static, so it's constant */ + while(tmp < svc_list.process) { + printf("%d\n",tmp); + + if( ! strcmp(rpath,svc_list.svca[tmp].abs_path) ) { + printf("Service im Array\n"); + return 0; + } + tmp++; + } + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* check for respawn? */ + + /* fork before chdir */ + pid = fork(); + + if(pid == -1) { + printf("ERORERER\n"); + return 0; + } else if(pid > 0) { /* parent gets child's PID */ + + /* NOT IF RESPAWN */ + if(!respawn) { + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) + return RT_PAR_OK; + else + return RT_PAR_FAIL; + } /* else */ /* Was tun, wenn respawn? nochmal forken als beobachter, + oder signal? */ + } + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + /* THis saVES US THE OTHER STRCMP!!!!! */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check, whether we should respawn fixme: much earlier! */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( !stat(pathtmp,&buf) ) respawn = 1; + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check if already running / ran / currently starting */ + + /* debug */ + getcwd(pathbuf,1024); + + printf("dir: %s\n",pathbuf); + + /* check for service dir */ + if( stat(path,&buf) ) { + printf("no such service: %s\n", path); + return 1; + } + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c02 b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c02 new file mode 100644 index 00000000..7fb329b6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c02 @@ -0,0 +1,282 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* perhaps move this code to cinit-static, so it's constant */ + while(tmp < svc_list.process) { + printf("%d\n",tmp); + + if( ! strcmp(rpath,svc_list.svca[tmp].abs_path) ) { + printf("Service im Array\n"); + return 0; + } + tmp++; + } + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* check for respawn? */ + + /* fork before chdir */ + pid = fork(); + + if(pid == -1) { + printf("ERORERER\n"); + return 0; + } else if(pid > 0) { /* parent gets child's PID */ + + /* NOT IF RESPAWN */ + if(!respawn) { + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) + return RT_PAR_OK; + else + return RT_PAR_FAIL; + } /* else */ /* Was tun, wenn respawn? nochmal forken als beobachter, + oder signal? */ + } + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + /* THis saVES US THE OTHER STRCMP!!!!! */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check, whether we should respawn fixme: much earlier! */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( !stat(pathtmp,&buf) ) respawn = 1; + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c03 b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c03 new file mode 100644 index 00000000..9422a7c9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c03 @@ -0,0 +1,283 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_in[2], p_out[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* create communication pipe */ + if ( pipe(p_in) == -1 || pipe(p_out) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + + /* check for respawn? yes, sometime... */ + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* fork before chdir */ + pid = fork(); + + if(pid == -1) { + printf("ERORERER\n"); + return 0; + } else if(pid > 0) { /* parent gets child's PID */ + + /* NOT IF RESPAWN */ + if(!respawn) { + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) + return RT_PAR_OK; + else + return RT_PAR_FAIL; + } /* else */ /* Was tun, wenn respawn? nochmal forken als beobachter, + oder signal? */ + } + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + /* THis saVES US THE OTHER STRCMP!!!!! */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check, whether we should respawn fixme: much earlier! */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( !stat(pathtmp,&buf) ) respawn = 1; + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + +beof + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c04 b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c04 new file mode 100644 index 00000000..727aa71f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c04 @@ -0,0 +1,297 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) respawn = 1; + + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + } + + /* fork at the beginning and before chdir */ + pid = fork(); + + if( pid == -1 ) cerr("fork failed",RT_PAR_FAIL); + + if(pid == -1) { + cerr("fork failed\n", RT_PAR_FAIL); + } else if(pid > 0) { /* parent gets child's PID */ + + if(respawn) { + /* read the final byte from child */ + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == ST_RESPAWN) { + printf("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + } + } else { /* execute once */ + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + + /* check for needs */ + + /* do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcat(pathtmp,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + pid = fork(); + if(tmp == -1) { + cerr("error ...\n", RT_PAR_FAIL); + } else if(tmp == 0) { + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,rpath); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c05 b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c05 new file mode 100644 index 00000000..927a9261 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c05 @@ -0,0 +1,294 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) respawn = 1; + + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + } + + /* fork at the beginning and before chdir */ + pid = fork(); + + if( pid == -1 ) cerr("fork failed",RT_PAR_FAIL); + + if(pid == -1) { + cerr("fork failed\n", RT_PAR_FAIL); + } else if(pid > 0) { /* parent gets child's PID */ + + if(respawn) { + /* read the final byte from child */ + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == ST_RESPAWN) { + printf("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + } + } else { /* execute once */ + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c05.2 b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c05.2 new file mode 100644 index 00000000..90d94b65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c05.2 @@ -0,0 +1,320 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; /* talk to respawnig watcher */ + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + return 0; + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + return 0; + } + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + return 0; + } + + /******************* end socket *********************/ + + sid = msg_start_svc(rpath); /* now we are temporary */ + if(sid == -1) { + cerr("cinit returned start error",RT_CHLD_FAIL); + return 0; + } + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + msg_change_status(sid,ST_FAIL); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + msg_change_status(sid,ST_FAIL); + return 0; + } + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + respawn = 1; + } + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) { + perror("pipe"); + cerr("pipe failed",RT_PAR_FAIL); + } + } + + /* clone */ + pid = fork(); + if( pid == -1 ) { + perror("fork"); + cerr("fork failed",RT_CHLD_FAIL); + return 0; + } + + _exit(0); + + /* the following block handles parent situation */ + + if(pid > 0) { /* parent gets child's PID */ + + /*************** THIS BLOCK IS CRAP ******************/ + + /* FIXME: when respawing, we'll watch our child */ + if(respawn) { + tmp = MSG_FAIL; + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == MSG_OK) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + msg_change_status(sid,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + msg_change_status(sid,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + /* FIXME: MISSING: + - signal handling (stop respawing) + - waitpid() in while(1) + */ + _exit(0); /* FIXME !!! */ + + /*************** END THIS BLOCK IS CRAP ******************/ + + } else /* don't RESPAWN */ { /* execute only once */ + D_PRINTF("Warte EINMAL auf mein Kind..."); + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + + /*********** CHILD EXECUTION HERE ***********/ + do { + + + } while(respawn); + + + + /* change to service dir */ + if( chdir(rpath) == -1) { + /* FIXME: errno! */ + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c06 b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c06 new file mode 100644 index 00000000..7dd265fc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c06 @@ -0,0 +1,293 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("Fehler"); + _exit(1); + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + cerr("Does your OS not support SO_PASSCRED (man 7 socket)?",RT_PAR_FAIL); + } + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + _exit(1); + } + + /******************* end socket *********************/ + + msg_start_svc(rpath); + D_PRINTF("in runsvc"); + _exit(0); + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc_client(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return ; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) respawn = 1; + + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + } + + /* fork at the beginning and before chdir */ + pid = fork(); + + /* FIXME: pay attention: we are possibly also a fork()! */ + + if( pid == -1 ) cerr("fork failed",RT_PAR_FAIL); + + if(pid > 0) { /* parent gets child's PID */ + if(respawn) { + /* read the final byte from child */ + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == ST_RESPAWN) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } else { /* execute once */ + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c07 b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c07 new file mode 100644 index 00000000..e62eff54 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c07 @@ -0,0 +1,304 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; /* talk to respawnig watcher */ + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + _exit(1); + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + cerr("Does your OS not support SO_PASSCRED (man 7 socket)?",RT_PAR_FAIL); + } + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + _exit(1); + } + + /******************* end socket *********************/ + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + _exit(1); + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + _exit(1); + } + + tmp = msg_start_svc(rpath); /* now we are temporary */ + + D_PRINTF("in runsvc"); + + if(tmp == -1) { + cerr("cinit returned start error",RT_CHLD_FAIL); + _exit(1); + } + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + respawn = 1; + } + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) { + perror("pipe"); + cerr("pipe failed",RT_PAR_FAIL); + } + } + + pid = fork(); + /* pay attention: we are also a fork()! */ + if( pid == -1 ) { + perror("fork"); + cerr("fork failed",RT_CHLD_FAIL); + _exit(1); + } + + _exit(0); + + /* the following block handles parent situation */ + + if(pid > 0) { /* parent gets child's PID */ + + /* FIXME: when respawing, we'll watch our child */ + if(respawn) { + tmp = MSG_FAIL; + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == MSG_OK) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } else /* don't RESPAWN */ { /* execute only once */ + D_PRINTF("Warte EINMAL auf mein Kind..."); + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c08 b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c08 new file mode 100644 index 00000000..587e13e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c08 @@ -0,0 +1,316 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; /* talk to respawnig watcher */ + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + _exit(1); + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + cerr("Does your OS not support SO_PASSCRED (man 7 socket)?",RT_PAR_FAIL); + /* FIXME: cerr */ + } + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + _exit(1); + } + + /******************* end socket *********************/ + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + _exit(1); + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + _exit(1); + } + + sid = msg_start_svc(rpath); /* now we are temporary */ + + D_PRINTF("in runsvc"); + + if(sid == -1) { + cerr("cinit returned start error",RT_CHLD_FAIL); + _exit(1); + } + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + respawn = 1; + } + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) { + perror("pipe"); + cerr("pipe failed",RT_PAR_FAIL); + } + } + + pid = fork(); + /* pay attention: we are also a fork()! */ + if( pid == -1 ) { + perror("fork"); + cerr("fork failed",RT_CHLD_FAIL); + _exit(1); + } + + _exit(0); + + /* the following block handles parent situation */ + + if(pid > 0) { /* parent gets child's PID */ + + /*************** THIS BLOCK IS CRAP ******************/ + + /* FIXME: when respawing, we'll watch our child */ + if(respawn) { + tmp = MSG_FAIL; + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == MSG_OK) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + msg_change_status(sid,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + msg_change_status(sid,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + /* FIXME: MISSING: + - signal handling (stop respawing) + - waitpid() in while(1) + */ + _exit(0); /* FIXME !!! */ + + /*************** END THIS BLOCK IS CRAP ******************/ + + } else /* don't RESPAWN */ { /* execute only once */ + D_PRINTF("Warte EINMAL auf mein Kind..."); + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + /* FIXME: errno! */ + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c09 b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c09 new file mode 100644 index 00000000..ff3bb989 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/run_svc.c09 @@ -0,0 +1,140 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp, sid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + close(sock); /* close old socket connection, we are a fork()! */ + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + return 0; + } + tmp = sizeof(addr); + memset(&addr,0,tmp); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + /* FIXME: why do we need tmp????? ... tmp == 1 is wrong!*/ +/* tmp = 1; + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + return 0; + } */ + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + return 0; + } + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror("getcwd"); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror("chdir"); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + if( ! run_run_svcs(pathtmp) ) { + D_PRINTF("some NEEDED services failed)"); + return 0; + } + + D_PRINTF("Starte wants"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + tmp = ST_ONCE; + sid = 20; + D_PRINTF("Melde status"); + if(!do_change_status(abspath,&tmp,&sid,sock,ACT_WRITE)) { + D_PRINTF("Status nicht gemeldet :((((((((((("); + return 0; + } + D_PRINTF("Status abgesetzt"); + +/* if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + if(respawn_svc(abspath)) { + msg_change_status(sid,ST_RESPAWN); + } else { + D_PRINTF("error in respawn"); + msg_change_status(sid,ST_FAIL); + } + } else { + D_PRINTF("einmal ausfuehren"); + if(exec_svc(abspath)) { + msg_change_status(sid,ST_ONCE); + } else { + D_PRINTF("error einmalig"); + msg_change_status(sid,ST_FAIL); + } + } */ +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/sig_chld.c b/software/cinit/browse_source/cinit-0.0.4/old/sig_chld.c new file mode 100644 index 00000000..e452f570 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/sig_chld.c @@ -0,0 +1,31 @@ +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* we are called, when a child exited */ +void sig_chld(int status) +{ + int pstat, i = 0; + pid_t pid; + + /* get pid of child and its status */ + pid = waitpid(chpid,&pstat,0); + + /* the child was either a respawed or once running process */ + + while(i < svc_list.process) { + if(pid == svc_list.svca[i].pid) { /* found service */ + + } + i++; + } + + if( WIFEXITED(pstat) ) printf("Kind gut gestorben\n"); + + printf("kind tot %d ...\n", status); +} diff --git a/software/cinit/browse_source/cinit-0.0.4/old/sigio.c01 b/software/cinit/browse_source/cinit-0.0.4/old/sigio.c01 new file mode 100644 index 00000000..4e1ee482 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/old/sigio.c01 @@ -0,0 +1,73 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int signal) +{ + struct ucred suck; + int len, lens, nsock; + struct sockaddr_un sun; + char buf; + + D_PRINTF("sigio() startet"); + + do { + nsock = accept(sock,(struct sockaddr *) NULL, (socklen_t *) NULL); + + if( nsock == -1) { + if (errno != EAGAIN) { + perror("accept"); + _exit(1); + } else { + break; + } + } + + //getsockopt(s_tmp[s_idx], SOL_SOCKET, SO_PEERCRED, &suck, &len); + getsockopt(nsock, SOL_SOCKET, SO_PEERCRED, &suck, &len); + printf("angreifer: pid: %d uid: %d gid: %d\n",suck.pid,suck.uid,suck.gid); + + + read(nsock,&buf,1); + + printf("command: %d\n",buf); + + while ( (len = read(nsock,&buf,1)) ) { +// printf("laenge: %d\n",len); + if(len == -1) { +// if(errno != EINVAL && errno != EAGAIN) { + perror("read"); + return; +// _exit(1); +// } + } + if(buf == 0) break; + write(1,&buf,1); + } + printf("Fertig mit lesen\n"); + + write(nsock,"ok\n",4); + printf("fertig mit schreiben\n"); + } while ( 1 ); + + printf("keine sockets mehr da..., sigio beendet sich jetzt.\n"); +} + + diff --git a/software/cinit/browse_source/cinit-0.0.4/sampleconfig.tar b/software/cinit/browse_source/cinit-0.0.4/sampleconfig.tar new file mode 100644 index 00000000..a2118f37 Binary files /dev/null and b/software/cinit/browse_source/cinit-0.0.4/sampleconfig.tar differ diff --git a/software/cinit/browse_source/cinit-0.0.4/serv/chk_svc.c b/software/cinit/browse_source/cinit-0.0.4/serv/chk_svc.c new file mode 100644 index 00000000..bdc73c31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/serv/chk_svc.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * chk_svc: check whether service exists + * part of cinit + */ + +#include +#include "cinit.h" + +/* we are called from sigio */ +/* return SID, if service exists, else -1 */ +int chk_svc(char *svc) +{ + int tmp = 0; + + while(tmp < svc_list.process) { + if( ! strcmp(svc,svc_list.svca[tmp].abs_path) ) { + return tmp; + } + tmp++; + } + return -1; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/serv/cinit.c b/software/cinit/browse_source/cinit-0.0.4/serv/cinit.c new file mode 100644 index 00000000..189c2aef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/serv/cinit.c @@ -0,0 +1,145 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* printf() */ +//#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +/* mount */ +#include + +#include +#include + +#include /* nanosleep */ + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock, logfd; + +/*********************************************************************** + * the main procedure + */ + +time_t start; + +int main() +{ + struct stat sbuf; + unsigned long tmp; + pid_t pid; + struct sockaddr_un addr; + struct timespec ts; + + start = time(NULL); + + set_signals(ACT_SERV); /* set signal handlers */ + logfd = 1; /* write to stdout */ + list = NULL; /* list of services is empty currently */ + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + perror("PANIC ACTION"); + panic(); + } + if( ! S_ISDIR(sbuf.st_mode) ) { + LOG("PANIC ACTION: init is not a dir"); + panic(); + } + if( chdir(CINIT_INIT) == -1) { + perror("PANIC ACTION"); + panic(); + } + + /* count of started processes */ + // svc_list.process = 0; + + /******************** TMPDIR **********************/ + tmp = 0; + if(mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,tmp,NULL) == -1) { + perror("mount"); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror("socket"); + panic(); + } + + /* tell the socket, _we_ want to get SIGIO! */ + pid = getpid(); + if(fcntl(sock,F_SETOWN,pid) == -1) { + perror("fcntl"); + panic(); + } + + /* O_SYNC: SIGIO will be called, O_NONBLOCK: don't block cinit */ + if ( fcntl(sock,F_SETFL,O_ASYNC|O_NONBLOCK) == -1) { + perror("fcntl"); + panic(); + } + + tmp = 1; + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + LOG("Does your OS not support SO_PASSCRED (man 7 socket)?"); + panic(); + } + + memset(&addr,0,sizeof(addr)); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(bind(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("bind"); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror("listen"); + panic(); + } + /******************** end socket **********************/ + + /* initial run, only if we are 'real' init' */ +// if( pid == 1) { + run_init_svc(); +// } + + D_PRINTF("fertig gestartet"); + + ts.tv_sec = (1 << ( (sizeof(ts.tv_sec)* 8) -1 )) -1; + /* the main loop: sleep until a signal comes in */ + while(1) { + nanosleep(&ts,NULL); + } +} diff --git a/software/cinit/browse_source/cinit-0.0.4/serv/list.c b/software/cinit/browse_source/cinit-0.0.4/serv/list.c new file mode 100644 index 00000000..480cf469 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/serv/list.c @@ -0,0 +1,101 @@ +/* (c) 2005 by Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * list handling: the processes cinit will execute/executed + * part of cinit + * changed some formatting, Nico Schottelius + */ + +#include +#include +#include "cinit.h" + + +int list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc( sizeof(struct listitem) ); + + if( tmp == NULL ) { + return 0; + } + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members, add this one */ + tmp->after = list; /* after the new element comes the begin */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first element has us as previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if( list == NULL ) { /* think positive */ + return NULL; + } else { + tmp = list->before; + } + D_PRINTF(path); + + do { +#ifdef DEBUG + D_PRINTF(tmp->abs_path); + printf("Listdebug: %s: %d (%d)\n",tmp->abs_path,tmp->status,tmp->pid); +#endif + if(!strcmp(path, tmp->abs_path)) + return tmp; + tmp = tmp->before; + } while(tmp != list); + + return NULL; +} + +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if( tmp == NULL ) { + return 0; + } + + tmp->after->before = tmp->before; + tmp->before->after = tmp->after; + free(tmp->abs_path); + free(tmp); + return 1; +} + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + + tmp = list_search(path); + if( tmp == NULL ) { + return 0; + } + tmp->status = new_status; + tmp->pid = new_pid; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.4/serv/panic.c b/software/cinit/browse_source/cinit-0.0.4/serv/panic.c new file mode 100644 index 00000000..be44219b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/serv/panic.c @@ -0,0 +1,13 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * panic: if cinit fails. + * part of cinit + */ + +#include "cinit.h" +#include + +void panic(void) +{ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.0.4/serv/run_init_svc.c b/software/cinit/browse_source/cinit-0.0.4/serv/run_init_svc.c new file mode 100644 index 00000000..1a382969 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/serv/run_init_svc.c @@ -0,0 +1,49 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run initial service + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +extern time_t start; + +int run_init_svc() +{ + pid_t pid; + int status; + time_t stop; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + logfd = 1; /* FIXME: shouldn't this be some kind of log, like /dev/log? */ + set_signals(ACT_CLIENT); + /* FIXME: open stderr, stdin, stdout to files / syslog / logable */ + if ( run_svc(CINIT_INIT) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + waitpid(pid, &status,0); + stop = time(NULL); + printf("*** cinit needed %d seconds to start ****\n",(int) stop-start); + return WIFEXITED(status); + } +} diff --git a/software/cinit/browse_source/cinit-0.0.4/serv/sig_reboot.c b/software/cinit/browse_source/cinit-0.0.4/serv/sig_reboot.c new file mode 100644 index 00000000..d430c3a6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/serv/sig_reboot.c @@ -0,0 +1,134 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * We are called by signal to reboot + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void sig_reboot(int signal) +{ + struct listitem *tmp; + struct timespec ts; + char **cmd; + int i; + + D_PRINTF("sig_reboot() startet"); + + tmp = list->before; + do { + /* kill service watcher, which will kill processes itself */ + if( tmp->status == ST_RESPAWN) { + D_PRINTF("Bringing down respawn watcher"); + kill(tmp->pid,SIGTERM); + } + + /* execute shutdown service */ + D_PRINTF("Executing off-service"); + exec_svc(tmp->abs_path,0); + tmp = tmp->before; + } while( tmp != list ); + + /* Let's disappear */ + close(sock); + if(umount(CINIT_TMNT) == -1) { + perror("umount"); + } + + /* now: all services are down, lets kill all other processes */ + if( kill(-1,SIGTERM) == -1) { + perror(MSG_TERMKILL); + } + D_PRINTF("SIGTERM GESENDET"); + + ts.tv_sec = SLEEP_KILL; /* defined in conf/ */ + nanosleep(&ts,NULL); + + + if( kill(-1,SIGKILL) == -1) { + perror(MSG_KILLBILL); + } + D_PRINTF("SIGKILL GESENDET"); + /* now: we are completly alone. umount everything, go to bed */ + +/* THIS IS FUCKING UNCLEAN AND SHOULD BE CLEANED UP VERY MUCH!!! */ + +#define CMD_CNT 5 +#define SWAP_OFF_CMD "/sbin/swapoff" +#define SWAP_OFF_ARG1 "-a" + +#define UMOUNT_CMD "/bin/umount" +#define UMOUNT_ARG1 "-a" + +#define MOUNT_CMD "/bin/mount" +#define MOUNT_ARG1 "-o" +#define MOUNT_ARG2 "remount,ro" +#define MOUNT_ARG3 "/" + + cmd = (char **) malloc( (CMD_CNT+1) * ( sizeof (char*) ) ); + if(cmd) { +// cmd[0] = (char *) malloc(strlen(SWAP_OFF_CMD) +1); +// cmd[1] = (char *) malloc(strlen(SWAP_OFF_CMD) +1); + /* /sbin/swapoff -a */ + cmd[0] = SWAP_OFF_CMD; + cmd[1] = SWAP_OFF_ARG1; + cmd[2] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + /* /bin/umount -a */ + cmd[0] = UMOUNT_CMD; + cmd[1] = UMOUNT_ARG1; + cmd[2] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + + /* /bin/mount -o remount,ro / */ + cmd[0] = MOUNT_CMD; + cmd[1] = MOUNT_ARG1; + cmd[2] = MOUNT_ARG1; + cmd[3] = MOUNT_ARG1; + cmd[4] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + } + + switch(signal) { + case SIGUSR1: /* halt */ + reboot(RB_HALT_SYSTEM); + break; + case SIGTERM: /* power off */ + reboot(RB_POWER_OFF); + break; + case SIGHUP: /* reboot */ + reboot(RB_AUTOBOOT); + break; + } + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.0.4/serv/sigio.c b/software/cinit/browse_source/cinit-0.0.4/serv/sigio.c new file mode 100644 index 00000000..d6842753 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/serv/sigio.c @@ -0,0 +1,106 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int signal) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + + D_PRINTF("sigio() startet"); + + do { + /* create new socket */ + nsock = accept(sock,(struct sockaddr *) NULL, (socklen_t *) NULL); + + if( nsock == -1) { + if (errno != EAGAIN) { /* report, but don't panic */ + perror("accept"); + } + + return; + } + + if( read(nsock,&buf[0],1) == -1) { + perror("read-command"); + close(nsock); + continue; + } +#ifdef DEBUG + printf("DEEEEEBUG: command: %d\n",buf[0]); +#endif + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_start_svc(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists */ + buf[0] = 0; + do_result(nsock,&buf[0]); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG("Adding service failed!"); + buf[0] = 0; + do_result(nsock,&buf[0]); + } + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + + if(!tmp) break; + + buf[tmp] = 0; /* terminate buf */ + +#ifdef DEBUG + printf("DEBUG: %s (%d) = %d\n",buf,pid,status); +#endif + + if(!list_modify(buf,status,pid)) { + D_PRINTF("MOD.ERR"); + buf[0] = 0; + } else { + buf[0] = 1; + } + do_result(nsock,buf); + break; + + default: + LOG("Unknown command!"); + break; + } + close(nsock); + } while ( 1 ); + + D_PRINTF("ENDE:SIGIO"); +} diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:41:08 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:41:08 new file mode 100644 index 00000000..d29de765 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:41:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586640 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:46:09 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:46:09 new file mode 100644 index 00000000..7ecb58be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-15:46:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586368 Apr 30 15:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-16:50:05 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-16:50:05 new file mode 100644 index 00000000..d87323e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-16:50:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587818 Apr 30 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-17:03:00 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-17:03:00 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:39:08 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:39:08 new file mode 100644 index 00000000..0c2bb0af --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:39:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586194 May 6 20:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:54:00 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:54:00 new file mode 100644 index 00000000..fe51f37f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:54:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590108 May 6 22:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:55:07 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:55:07 new file mode 100644 index 00000000..4d2854b5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:55:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590108 May 6 22:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-23:00:07 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-23:00:07 new file mode 100644 index 00000000..c0db4814 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-23:00:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 23:00 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:31:01 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:31:01 new file mode 100644 index 00000000..4ad1fccf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:31:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:31 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:39:02 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:39:02 new file mode 100644 index 00000000..16613354 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:39:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:43:08 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:43:08 new file mode 100644 index 00000000..29e5ab44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:43:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:54:04 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:54:04 new file mode 100644 index 00000000..474189e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:54:04 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:18:00 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:18:00 new file mode 100644 index 00000000..960ca358 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:18:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:18 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:14:00 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:14:00 new file mode 100644 index 00000000..7de2bc3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:14:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:14 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:43:08 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:43:08 new file mode 100644 index 00000000..11a18f12 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:43:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597245 May 7 14:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:48:01 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:48:01 new file mode 100644 index 00000000..28b127b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:48:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597405 May 7 14:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:55:05 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:55:05 new file mode 100644 index 00000000..5d0fa0e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:55:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:01:01 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:01:01 new file mode 100644 index 00000000..7c8b202b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:01:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 15:01 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:27:00 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:27:00 new file mode 100644 index 00000000..a2d19633 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:27:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:27 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:20:02 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:20:02 new file mode 100644 index 00000000..23608225 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:20:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602184 May 7 16:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:31:09 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:31:09 new file mode 100644 index 00000000..40f890cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:31:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:31 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-17:08:09 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-17:08:09 new file mode 100644 index 00000000..22b48319 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-17:08:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-10:44:00 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-10:44:00 new file mode 100644 index 00000000..4dad0f2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-10:44:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 64935 May 8 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-12:42:08 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-12:42:08 new file mode 100644 index 00000000..a356e57e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-12:42:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 23195 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-19:25:05 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-19:25:05 new file mode 100644 index 00000000..0b5026c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-19:25:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:30:03 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:30:03 new file mode 100644 index 00000000..7377ee59 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:30:03 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-21:54:00 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-21:54:00 new file mode 100644 index 00000000..41ed8e4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-21:54:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604637 May 10 21:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-22:07:06 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-22:07:06 new file mode 100644 index 00000000..9579bf3d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-22:07:06 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95212 May 10 22:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-00:14:02 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-00:14:02 new file mode 100644 index 00000000..86483ada --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-00:14:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-15-22:32:07 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-15-22:32:07 new file mode 100644 index 00000000..59557c4b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-15-22:32:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 15 22:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-15-23:52:06 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-15-23:52:06 new file mode 100644 index 00000000..757e6dc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-15-23:52:06 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579305 May 15 23:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-15-23:56:00 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-15-23:56:00 new file mode 100644 index 00000000..24c85104 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-15-23:56:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605145 May 15 23:56 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:16:09 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:16:09 new file mode 100644 index 00000000..27254aa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:16:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605205 May 16 00:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-09:58:08 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-09:58:08 new file mode 100644 index 00000000..90a5b698 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-09:58:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605567 May 16 09:58 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:09:00 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:09:00 new file mode 100644 index 00000000..4c34f810 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:09:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605583 May 16 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:13:07 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:13:07 new file mode 100644 index 00000000..b6a851e6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:13:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605619 May 16 10:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:23:05 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:23:05 new file mode 100644 index 00000000..2c4fc649 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:23:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-14:56:01 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-14:56:01 new file mode 100644 index 00000000..c5e08e25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-14:56:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95794 May 21 14:56 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:35:00 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:35:00 new file mode 100644 index 00000000..0f2d5463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:35:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:35 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.4/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.4/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/BUGS b/software/cinit/browse_source/cinit-0.0.5/BUGS new file mode 100644 index 00000000..235a8853 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/BUGS @@ -0,0 +1,2 @@ +To be done before 0.1 (dirty release): +- replace cerr-strings with #defines, so doubled strings are elimenated diff --git a/software/cinit/browse_source/cinit-0.0.5/COPYING b/software/cinit/browse_source/cinit-0.0.5/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.0.5/CREDITS b/software/cinit/browse_source/cinit-0.0.5/CREDITS new file mode 100644 index 00000000..fd3d6ff3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/CREDITS @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete diff --git a/software/cinit/browse_source/cinit-0.0.5/Changelog b/software/cinit/browse_source/cinit-0.0.5/Changelog new file mode 100644 index 00000000..47142a97 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/Changelog @@ -0,0 +1,8 @@ +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.0.5/MT/debug b/software/cinit/browse_source/cinit-0.0.5/MT/debug new file mode 100644 index 00000000..52dab24b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/MT/debug @@ -0,0 +1,31 @@ +started up on Linux 2.6.11.10 #2 Tue May 17 11:58:45 CEST 2005 ppc +command line: 'monotone-0.18', 'sync', 'linux.schottelius.org', 'info.clinux.cinit' +set locale: LC_CTYPE=C, LC_MESSAGES=C +initial path is /home/user/nico/cinit-0.0.5 +converting 13 bytes from ANSI_X3.4-1968 to UTF-8 +converting 4 bytes from ANSI_X3.4-1968 to UTF-8 +converting 21 bytes from ANSI_X3.4-1968 to UTF-8 +converting 17 bytes from ANSI_X3.4-1968 to UTF-8 +searching for 'MT' directory with root '/' +search for 'MT' ended at '/home/user/nico/cinit-0.0.5' with '' removed +initializing from directory /home/user/nico/cinit-0.0.5 +found working copy directory /home/user/nico/cinit-0.0.5 +options path is MT/options +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 7 bytes from UTF-8 to ANSI_X3.4-1968 +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 7 bytes from UTF-8 to ANSI_X3.4-1968 +local dump path is MT/debug +setting dump path to MT/debug +opening rcfile '/home/user/nico/.monotonerc' ... +'/home/user/nico/.monotonerc' is ok +skipping nonexistent rcfile 'MT/monotonerc' +executing sync command +db.fetch("SELECT domain, name, value FROM db_vars") +db.fetch("SELECT domain, name, value FROM db_vars") +lua isfunction() failed in get_fn +db.fetch("SELECT id from 'private_keys'") +db.fetch("SELECT id, name, value, keypair, signature FROM 'revision_certs' WHERE name = 'branch'") +db.execute("BEGIN") +connecting to linux.schottelius.org +db.execute("ROLLBACK") diff --git a/software/cinit/browse_source/cinit-0.0.5/MT/log b/software/cinit/browse_source/cinit-0.0.5/MT/log new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.5/MT/options b/software/cinit/browse_source/cinit-0.0.5/MT/options new file mode 100644 index 00000000..33960254 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/MT/options @@ -0,0 +1,3 @@ + branch "info.clinux.cinit" +database "/home/user/nico/monotone.db" + key "" diff --git a/software/cinit/browse_source/cinit-0.0.5/MT/revision b/software/cinit/browse_source/cinit-0.0.5/MT/revision new file mode 100644 index 00000000..ab48024b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/MT/revision @@ -0,0 +1 @@ +f44d3b5ff20c704e893aa0bb8a0061bad8bdd7aa diff --git a/software/cinit/browse_source/cinit-0.0.5/Makefile b/software/cinit/browse_source/cinit-0.0.5/Makefile new file mode 100644 index 00000000..a92698ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/Makefile @@ -0,0 +1,90 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-g -DDEBUG +OPTIMIZE=-Os + +# if cinit should display how long it needed to start +TIMEME=-DTIME_ME + +# init should be static per default! +LDFLAGS=-static + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-pipe -Wall -Werror -I. +LD=gcc +STRIP=strip + +# monotone +MT=monotone-0.18 + +# directories and files +DIRS=client bin conf comm generic doc sbin serv +FILES=BUGS Changelog Makefile README TODO cinit.h + +# objects +SERV=serv/sigio.o serv/cinit.o serv/list.o \ + serv/run_init_svc.o serv/panic.o serv/sig_reboot.o + +CLIENT=client/msg_start_svc.o client/msg_change_status.o client/run_svc.o \ + client/exec_svc.o client/respawn_svc.o client/run_run_svc.o \ + client/connect_sock.o client/begin_msg.o + +COMMUNICATION=comm/do_change_status.o comm/do_result.o comm/do_start_svc.o + +BOTH=generic/set_signals.o generic/mini_printf.o + +OBJ=$(SERV) $(CLIENT) $(BOTH) $(COMMUNICATION) + +# DO NOT CHANGE THIS. +SBIN=sbin +CINIT_BIN=$(SBIN)/cinit + +# targets +warn: + @cat doc/.buildwarn + +all: $(CINIT_BIN) sizecheck + +$(CINIT_BIN): $(SBIN) config.h $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ +$(SBIN): + mkdir $(SBIN) +sizecheck: + FILE="size/`date +%Y-%m-%d-%T`"; ls -l sbin/cinit > $$FILE; cat $$FILE +clean: + rm -f *.o */*.o sbin/cinit config.h +config.h: conf/* + ./bin/cinit.mkheader > config.h + +mt-update: + $(MT) add $(DIRS) $(FILES) 2>/dev/null +mt-commit: + $(MT) commit +mt-sync: + $(MT) sync linux.schottelius.org info.clinux.cinit + +install: install-dir + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-dir: + ./bin/cinit.install.dir + +install-conf: install-dir + @echo '*** Creating very basic configuration ***' + ./bin/cinit.install.conf + +install-test: install-dir + @echo '***> Copying testing configuration' + ./bin/cinit.install.test diff --git a/software/cinit/browse_source/cinit-0.0.5/README b/software/cinit/browse_source/cinit-0.0.5/README new file mode 100644 index 00000000..c3523e11 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/README @@ -0,0 +1,92 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ + +cinit is a fast init system with dependency features. +It is orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every POSIX compatible system. +- true dependencies +- parallel execution +- highly customisable (see conf/*) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via monotone. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +If it's the first time you operate with cinit, also do: +# make install-conf + +This will populate /etc/cinit with some default services for Linux +(mounting root r/w, starting gettys, setting hostname). + +This should work on most Linux systems, still you should have a +look at /etc/cinit and see whether services are correct. + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. + +sampleconfig.tar is the tar-ball I used for testing, beware if you use it: +It loads dvorak at startup! + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit.html diff --git a/software/cinit/browse_source/cinit-0.0.5/TODO b/software/cinit/browse_source/cinit-0.0.5/TODO new file mode 100644 index 00000000..e73d5ca7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/TODO @@ -0,0 +1,62 @@ +- Recheck sources: + - check errno! + - check whether headers are ok -> cleanup headers! + - eventually split cinit code to csvc to minimize binary of cinit? + - cleanup comments + - move messages to cinit.h or message.h or conf/msg-*! + - close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + - panic() should call sulogin + - remove FIXME entries (and what should be fixed, too) + +- Source Logic issues + - Add sulogin possibility + - stat() in run_svc -> don't call exec_svc, respawn_svc, run_run_svc + - remove stat from exec_svc, do before! + - respawn_svc and exec_svc must return pid_t of executed service / watcher + - handle CTR-ALT-DEL / keyboard request? (see caveats) + - check for possibilies to save ram, free things + - create coala-socket with correct permissions! (550, root:cinit) + -> is that really our problem or should a service do that? + - check if we caught every signal, which could kill us + - logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? + - check for other possibilities to create a smaller binary + - strip options + - gcc options + - ld options + - alternative libc (uclibc works fine!) + - perhaps remove MAX_DEPS? + - run_svc_new: + o we have many strcat()s, perhaps save length of pathbuf and strncat at + pathtmp[strlen(pathbuf)] ? + +- Documentation + - write manpages (use doc/* as base for that) + +- Porting + - add porting code to other unices? + - like openssh guys do? + - polling/signalling is different everywhere + a) use standars poll/select + b) use accelerated os-specfic + -> add the name of the function/the file to use + into conf/poll_func? + - using Linux 2.6 epoll mechanism? + +-------------------------------------------------------------------------------- +create_mini_cinit + -> use a tarball? (samples/*) + -> create something which should be runnable + -> mount, fsck, getty + --> for dev in `read /etc/fstab` ... + fsck $dev + --> mount -a + --> mount -n -o remount,rw / + --> getty from /etc/inittab or /sbin/*getty + -> find out, which gettys with which params + -> use it on 'make install' +-------------------------------------------------------------------------------- +- Check Spell and Grammar in documentation diff --git a/software/cinit/browse_source/cinit-0.0.5/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.add.dependency new file mode 100644 index 00000000..17683dcc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.add.dependency @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or needs Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +case $DEP in + wants) DEP=$C_WANTS ;; + needs) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could some PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEST="${BASEDIR}/${SVC_A}/${DEP}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.0.5/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.add.getty new file mode 100644 index 00000000..baa74462 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.add.getty @@ -0,0 +1,66 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && echo * | sed 's/.* //') +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +read -p "Getty to use [$mygetty]: " rgetty +read -p "Parameters to pass [$params]: " rparams + +[ "$rgetty" ] && mygetty=$rgetty +[ "$rparams" ] && params=$rparams + +if [ ! "$mygetty" -o ! "$params" ]; then + echo "No useable getty and parameters found, exiting." + exit 1 +fi + +echo -n "Putting $mygetty $params into $DDIR ... " +mkdir -p "$DDIR" +ln -s $mygetty "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.0.5/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.create.empty.service new file mode 100644 index 00000000..9fe748d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.create.empty.service @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR +BASEDIR=./testcinit + + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.5/bin/cinit.get-confdir b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.get-confdir new file mode 100644 index 00000000..a36c52f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.get-confdir @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# 2005-05-24 + +# try environment first +if [ "$CINIT_DIR" ]; then + CONFDIR=$CINIT_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +elif [ -d /etc/cinit ]; then + CONFDIR=/etc/cinit +else + echo Did not find cinit configuration 1>&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.0.5/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.install.binary new file mode 100644 index 00000000..08004ac7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.install.binary @@ -0,0 +1,9 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# + + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/bin/cinit.install.conf b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.install.conf new file mode 100644 index 00000000..bd6fadc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.install.conf @@ -0,0 +1,11 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# + + +. $(dirname $0)/cinit.read-conf + +echo "*** > Currently missing, sorry." + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.0.5/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.install.dir new file mode 100644 index 00000000..a94a9b9b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.install.dir @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install configuration directory +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" $DESTDIR/$PREFIX/$CINIT_DIR diff --git a/software/cinit/browse_source/cinit-0.0.5/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.0.5/bin/cinit.mkheader b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.mkheader new file mode 100644 index 00000000..e1f35d07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.mkheader @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric - no I didn't see an easier way + numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + + [ "$numeric" ] || value="\"$value\"" + + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.0.5/bin/cinit.read-conf b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.read-conf new file mode 100644 index 00000000..4263129c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.read-conf @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + eval $NAME="$(head -n 1 $conf)" + eval export $NAME +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.0.5/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.remove.getty new file mode 100644 index 00000000..5a885725 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.remove.getty @@ -0,0 +1,22 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR; echo * | sed 's/.* //') + +[ ! "$NUMBER" ] && exit 1 + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r $DDIR +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.0.5/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.5/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.5/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.shutdown new file mode 100644 index 00000000..49b1dabd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/bin/cinit.shutdown @@ -0,0 +1,27 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# 2005-05-24 + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -o|--off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -o|--off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.0.5/bin/not-working/cinit.create.service b/software/cinit/browse_source/cinit-0.0.5/bin/not-working/cinit.create.service new file mode 100644 index 00000000..df092275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/bin/not-working/cinit.create.service @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name (including category)" + echo " I do create a service for you" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +# read input (from gentoo-bug.sh, http://linux.schottelius.org/scripts/#gentoo-bug +reread() +{ + _tmp="" + name="$1" + + while [ ! "$_tmp" ]; do + read -p "$1 [$_tmp]: " _tmp + done + + echo $_tmp +} + + +for svc in $@; do + echo -n "Creating $svc ..." + mkdir -p "${BASEDIR}/${svc}" + cd ${BASEDIR}/${svc} + mkdir -p "${C_WANTS}" "${C_NEEDS}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.5/cinit.h b/software/cinit/browse_source/cinit-0.0.5/cinit.h new file mode 100644 index 00000000..cc9af1b0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/cinit.h @@ -0,0 +1,136 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * header of cinit + */ + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* limits: will be obsolete in cinit-1.0 */ +#define MAX_SVC 510 /* maximum services - defines size of array - may later be obsoleted */ +#define MAX_DEPS 32 /* maximum direct dependencies of a service */ +#define BUFSIZE 4096 + +/* paths */ +#define C_ONARG C_ON C_PARAMS +#define C_OFFARG C_OFF C_PARAMS +#define C_ONENV C_ON C_ENV +#define C_OFFENV C_OFF C_ENV + +#define SLASH "/" + +#define CINIT_INIT CINIT_DIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK + +/* commands (maximum: 2^8 = 256)*/ +#define CMD_START_SVC 0 +#define CMD_CHG_STATUS 1 +#define CMD_STOP_SVC 2 +#define CMD_KILL_SVC 3 + +#define CMD_RESCUE 251 +#define CMD_INIT 252 + +#define CMD_HALT 253 +#define CMD_REBOOT 254 +#define CMD_POWEROFF 255 + +/* status of a service */ +#define ST_TMP 1 /* currently working on it */ +#define ST_ONCE 2 /* executed once */ +#define ST_RESPAWN 3 /* running and respawning */ +#define ST_FAIL 4 /* failed to start service */ + +/* actions for i/o handlers (see comm/do_*) */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* Messages to the outside */ + +#define MSG_ERR_FORK "fork" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_TERMKILL "sigterm" +#define MSG_KILLBILL "sigkill" + +/* array of svc - not needed anymore +struct svc { + char *abs_path; * service identifier * + char status; * tmp, respawn, ran once * + pid_t pid; * pid of the process * +}; + +struct svcl { + struct svc svca[MAX_SVC]; + int process; +}; +*/ + +// extern struct svcl svc_list; +struct listitem { + char *abs_path; + int status; + pid_t pid; + struct listitem *before; + struct listitem *after; +}; + + +/* variables */ +extern struct listitem *list; +extern int sock, logfd; + +/* functions (used by server and client) */ +void cerr(char *string, int status); +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +#define LOG(s) mini_printf(s,logfd) + +int do_start_svc(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* server functions */ +/* int chk_svc(char *svc); +int add_mod_svc(char *svc, char status, pid_t pid); */ +int list_insert(char *path, int status); +struct listitem *list_search(char *path); +int list_delete(char *path); +int run_init_svc(void); +void sigio(int signal); +void sig_reboot(int signal); +void panic(void); + +/* client / message functions */ +int msg_start_svc(char *svc); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +int run_run_svcs(char *abspath); +pid_t exec_svc(char *abspath, int on); +pid_t respawn_svc(char *abspath); +int connect_sock(int socke); +char **read_file(char *file); + +/* listing functions (server only) */ + +int list_insert(char *path, int status); +struct listitem *list_search(char *path); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); + + +/* DEBUG */ +#ifdef DEBUG +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) +#endif + +/* Messages to the outside */ diff --git a/software/cinit/browse_source/cinit-0.0.5/client/README b/software/cinit/browse_source/cinit-0.0.5/client/README new file mode 100644 index 00000000..0a5b8d0c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/client/README @@ -0,0 +1,2 @@ +client/ + These sources are used by the children which are spawned by cinit. diff --git a/software/cinit/browse_source/cinit-0.0.5/client/begin_msg.c b/software/cinit/browse_source/cinit-0.0.5/client/begin_msg.c new file mode 100644 index 00000000..9b569543 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/client/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror("i/o: command"); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/client/connect_sock.c b/software/cinit/browse_source/cinit-0.0.5/client/connect_sock.c new file mode 100644 index 00000000..831121b7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/client/connect_sock.c @@ -0,0 +1,41 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + D_PRINTF("socket verbinden"); + + /******************* begin socket *********************/ + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror("socket"); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + perror("connect"); + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/client/exec_svc.c b/software/cinit/browse_source/cinit-0.0.5/client/exec_svc.c new file mode 100644 index 00000000..bdbe53f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/client/exec_svc.c @@ -0,0 +1,246 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +pid_t exec_svc(char *abspath, int on) +{ + pid_t pid; + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + pid = fork(); + if( pid == -1 ) { + perror("fork"); + return 0; + } + + /***** PARENT ******/ + if(pid > 0) { + waitpid(pid,&tmp,0); + if( WIFEXITED(tmp) ) { + D_PRINTF("EXEC SVC ERFOLGREICH"); + return pid; + } else { + D_PRINTF("EXEC SVC FEHLGESCHLAGEN"); + return 0; + } + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + + if(on) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + D_PRINTF(pathtmp); + + /* readlink retrieves real name, if it is a symlink */ + if ( (tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror("readlink"); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + + if(on) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + tmp++; /* add memory for \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + + if(on) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror("open"); + _exit(1); + } + + argc = 0; + + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror("read"); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG("realloc failed"); + _exit(1); + } + + nargv[argc] = sbuf; + *p = '\0'; + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + argc++; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG("realloc failed"); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(on) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* if a file exists, failing to open it is an error */ + if(fd == -1) { + perror("open"); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror("read"); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG("realloc failed"); + _exit(1); + } + + nenv[argc] = sbuf; + *p = '\0'; + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + argc++; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + perror(MSG_ERR_EXECVE); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.0.5/client/kill_svc.c b/software/cinit/browse_source/cinit-0.0.5/client/kill_svc.c new file mode 100644 index 00000000..d9ce3a8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/client/kill_svc.c @@ -0,0 +1,104 @@ +KOPIE VON RUN_SVC + +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and beforeo all dependencies + */ +void kill_svc(char *rpath, pid_t pid) +{ + int tmp; + char svc[PATH_MAX], svcparams[PATH_MAX]; + struct stat buf; + + D_PRINTF("starte kill_svc"); + D_PRINTF(rpath); + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror("getcwd"); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror("chdir"); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + if( ! run_run_svcs(pathtmp) ) { + /* FIXME: add log + service name here */ + D_PRINTF("some NEEDED services failed)"); + msg_change_status(abspath, ST_FAIL, 0); + return 0; + } + + D_PRINTF("Starte wants"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawning"); + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + D_PRINTF("exec_unce"); + pid = exec_svc(abspath); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return 0; + } + + D_PRINTF("Melde status"); + if(!msg_change_status(abspath, tmp, pid) ) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/client/msg_change_status.c b/software/cinit/browse_source/cinit-0.0.5/client/msg_change_status.c new file mode 100644 index 00000000..837d87b6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/client/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +int msg_change_status(char *svc, char status, pid_t pid) +{ + D_PRINTF(svc); + + if(!begin_msg(CMD_CHG_STATUS)) return 0; + + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/client/msg_start_svc.c b/software/cinit/browse_source/cinit-0.0.5/client/msg_start_svc.c new file mode 100644 index 00000000..d7e8867c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/client/msg_start_svc.c @@ -0,0 +1,26 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +int msg_start_svc(char *svc) +{ + D_PRINTF(svc); + + D_PRINTF("writing message begin"); + if(!begin_msg(CMD_START_SVC)) return 0; + D_PRINTF("writing service infos"); + if(!do_start_svc(sock,svc,ACT_CLIENT)) return 0; + D_PRINTF("reading result"); + if(!do_result(sock,NULL)) return 0; + D_PRINTF("gutes ende"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/client/respawn_svc.c b/software/cinit/browse_source/cinit-0.0.5/client/respawn_svc.c new file mode 100644 index 00000000..e5c5d4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/client/respawn_svc.c @@ -0,0 +1,68 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int status; + int pipefd[2]; + + if(pipe(pipefd) == -1) { + perror("pope"); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror("forke"); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&status,sizeof(status)) == -1) { + perror("read pope"); + return 0; + } + return pid; /* return watchers pid */ + } + + /******************** CHILD ********************/ + /* FIXME: add signal handler for shut down */ + + status = 1; + if( write(pipefd[1],&status,sizeof(status)) == -1) { + perror("read pope"); + _exit(1); + } + + while( status ) { + D_PRINTF(abspath); + pid = exec_svc(abspath, status); + + waitpid(pid,&status,0); + + if( ! WIFEXITED(status) ) { + if( WEXITSTATUS(status) ) { + /* sleep conf/c_sleep seconds on error exit */ + sleep(SLEEP_SVC); + D_PRINTF("schlecht gestorben"); + } + } + } + + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.0.5/client/run_run_svc.c b/software/cinit/browse_source/cinit-0.0.5/client/run_run_svc.c new file mode 100644 index 00000000..9cea0f33 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/client/run_run_svc.c @@ -0,0 +1,77 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX]; + pid_t pids[MAX_DEPS]; + int status, i=0, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + i++; + } else { + LOG("to many dependencies"); + break; + } + + if(pids[i-1] == -1) { /* err */ + LOG("fork failed"); + return 0; + } + + if(pids[i-1] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,"/"); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } + } + + closedir(d_tmp); + + /* wait for pids */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + if( ! WIFEXITED(status)) { + ret = 0; + } + i--; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/client/run_svc.c b/software/cinit/browse_source/cinit-0.0.5/client/run_svc.c new file mode 100644 index 00000000..9c765cc0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/client/run_svc.c @@ -0,0 +1,111 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and beforeo all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror("getcwd"); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror("chdir"); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + /* FIXME: add log + service name here */ + D_PRINTF("some NEEDED services failed"); + msg_change_status(abspath, ST_FAIL, 0); + return 0; + } + } + + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + D_PRINTF("Starte wants"); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + /*FIXME: check for C_ON, otherwise we are done! */ + + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + tmp = 1; + pid = exec_svc(abspath, tmp); + tmp = ST_ONCE; + } + + D_PRINTF("Melde status"); + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return 0; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/comm/README b/software/cinit/browse_source/cinit-0.0.5/comm/README new file mode 100644 index 00000000..840c9742 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/comm/README @@ -0,0 +1,3 @@ +comm/ + The communication part of cinit. + The functions are used in client and in server code. diff --git a/software/cinit/browse_source/cinit-0.0.5/comm/do_change_status.c b/software/cinit/browse_source/cinit-0.0.5/comm/do_change_status.c new file mode 100644 index 00000000..5e43654b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/comm/do_change_status.c @@ -0,0 +1,69 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror("i/o: length"); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror("i/o: service name"); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror("i/o: status"); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror("i/o: PID"); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/comm/do_result.c b/software/cinit/browse_source/cinit-0.0.5/comm/do_result.c new file mode 100644 index 00000000..3bf78718 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/comm/do_result.c @@ -0,0 +1,32 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int sock2, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(sock2,value,1) == -1) { /* result */ + perror("i/o: result"); + return 0; + } + + return *value; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/comm/do_start_svc.c b/software/cinit/browse_source/cinit-0.0.5/comm/do_start_svc.c new file mode 100644 index 00000000..959a0001 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/comm/do_start_svc.c @@ -0,0 +1,49 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_start_svc(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror("i/o: len"); + return 0; + } + + if(tmp > PATH_MAX) return 0; + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror("i/o: service name"); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/.README b/software/cinit/browse_source/cinit-0.0.5/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/c_env b/software/cinit/browse_source/cinit-0.0.5/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/c_halt b/software/cinit/browse_source/cinit-0.0.5/conf/c_halt new file mode 100644 index 00000000..bc062a2c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/c_halt @@ -0,0 +1,4 @@ +halt + +Name of the service we should start when 'halting' (system stop, but no +power off). diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/c_init b/software/cinit/browse_source/cinit-0.0.5/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/c_needs b/software/cinit/browse_source/cinit-0.0.5/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/c_off b/software/cinit/browse_source/cinit-0.0.5/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/c_on b/software/cinit/browse_source/cinit-0.0.5/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/c_params b/software/cinit/browse_source/cinit-0.0.5/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/c_poweroff b/software/cinit/browse_source/cinit-0.0.5/conf/c_poweroff new file mode 100644 index 00000000..273d4bec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/c_poweroff @@ -0,0 +1,3 @@ +poweroff + +Name of the service we should start, when system power-off is called. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/c_reboot b/software/cinit/browse_source/cinit-0.0.5/conf/c_reboot new file mode 100644 index 00000000..17937b4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/c_reboot @@ -0,0 +1,3 @@ +reboot + +Name of the service we should start on reboot. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/c_respawn b/software/cinit/browse_source/cinit-0.0.5/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/c_sock b/software/cinit/browse_source/cinit-0.0.5/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/c_tmp b/software/cinit/browse_source/cinit-0.0.5/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.0.5/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.0.5/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/c_wants b/software/cinit/browse_source/cinit-0.0.5/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/cinit_dir b/software/cinit/browse_source/cinit-0.0.5/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/destdir b/software/cinit/browse_source/cinit-0.0.5/conf/destdir new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/destdir @@ -0,0 +1 @@ + diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/getty_dir b/software/cinit/browse_source/cinit-0.0.5/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/install_directory b/software/cinit/browse_source/cinit-0.0.5/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/install_prog b/software/cinit/browse_source/cinit-0.0.5/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/prefix b/software/cinit/browse_source/cinit-0.0.5/conf/prefix new file mode 100644 index 00000000..580ae0cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/prefix @@ -0,0 +1,4 @@ +/ + +Where to install cinit. Normally this will be /, but you can put in anywhere. +The subdirectory 'sbin' under this prefix must be reabable by the kernel. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/sleep_kill b/software/cinit/browse_source/cinit-0.0.5/conf/sleep_kill new file mode 100644 index 00000000..de1fd006 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/sleep_kill @@ -0,0 +1,5 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/sleep_svc b/software/cinit/browse_source/cinit-0.0.5/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/sock_group b/software/cinit/browse_source/cinit-0.0.5/conf/sock_group new file mode 100644 index 00000000..d4c1adda --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/sock_group @@ -0,0 +1,3 @@ +root + +The group, which should own the communication socket. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/sock_mode b/software/cinit/browse_source/cinit-0.0.5/conf/sock_mode new file mode 100644 index 00000000..b2a727b0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/sock_mode @@ -0,0 +1,3 @@ +0770 + +Octal mode of socket. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/sock_queue b/software/cinit/browse_source/cinit-0.0.5/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.0.5/conf/sock_user b/software/cinit/browse_source/cinit-0.0.5/conf/sock_user new file mode 100644 index 00000000..34274f4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/conf/sock_user @@ -0,0 +1,3 @@ +root + +The one who should own the communication socket. diff --git a/software/cinit/browse_source/cinit-0.0.5/doc/.buildwarn b/software/cinit/browse_source/cinit-0.0.5/doc/.buildwarn new file mode 100644 index 00000000..11388c21 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/doc/.buildwarn @@ -0,0 +1,21 @@ + +------------- +W A R N I N G +------------- + +**************************************************************************** +THIS IS A PRE-RELEASE, NOT YET THOUGHT TO BE USED IN PRODUCTIVE ENVIRONMENT! +**************************************************************************** + +First of all configure cinit through the configuration files found in conf/. +Especially look at conf/*tmp*. + +The documentation can be found in doc/, please read doc/configuring.cinit +before first use. + +After reading and configuring use: + + "make all" - to build cinit + "make install" - to install cinit + "make install-conf" - to install cinit configuration example + -> WARNING: the last make target does not honour $DESTDIR yet! diff --git a/software/cinit/browse_source/cinit-0.0.5/doc/caveats b/software/cinit/browse_source/cinit-0.0.5/doc/caveats new file mode 100644 index 00000000..5794538b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/doc/caveats @@ -0,0 +1,39 @@ +'Geheimnisse' in German + + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporary disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster, if you omit non needed + 'wants' and 'needs' dirs, as they need to be scanned, if they + exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that noone + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what todo when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + diff --git a/software/cinit/browse_source/cinit-0.0.5/doc/cinit.commands b/software/cinit/browse_source/cinit-0.0.5/doc/cinit.commands new file mode 100644 index 00000000..7f606f4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/doc/cinit.commands @@ -0,0 +1,92 @@ +-------------------------------------------------------------------------------- +cinit commands, Nico Schottelius 2005-04-28 +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (uses SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service and its dependencies. + CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell.**) + CMD_INIT: Start all services (again possibly).**) + + CMD_HALT: Halt the system*) + CMD_REBOOT: Reboot the system*) + CMD_POWEROFF: Power-off the system*) + + *) The commands are not and maybe will never be implemented, + as they are realized another way (using signals). + + **) Not yet implemented. + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) ok, a SID, a service ID: int svc_id; [ really need int? ] + b) fail, [currently only fail is returned] + a) already running + b) svc_name too long / not allowed + + [ A service identification is used for faster searching in cinit. + It is also a hint for developers of external software, that they should not + be able to use CMD_CHG_STATUS, if they didn't start a service. + They should use CMD_STOP_SVC to stop a service. + Starting a service is currently done via exec() in the external program or + a cinit-fork(). ] + +CMD1CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_INIT: Start all services (again possibly). + cinit returns: ready... + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. diff --git a/software/cinit/browse_source/cinit-0.0.5/doc/configuring.cinit b/software/cinit/browse_source/cinit-0.0.5/doc/configuring.cinit new file mode 100644 index 00000000..b899da34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/doc/configuring.cinit @@ -0,0 +1,75 @@ +-------------------------------------------------------------------------------- +configuring cinit, Nico Schottelius 2005-05-28 +-------------------------------------------------------------------------------- + +0. Pre-compile configuration + +Have a look at conf/*. Those variable will mostly be used when +compiling cinit. Some will be read later (like destdir). + +1. General configuration layout + +/etc/cinit (configureable via conf/cinit_dir) stores the complete +cinit configuration. + +cinit is service based. +A service consists of + - a base directory (like /etc/cinit/getty/1) + - dependency configuration: + + ./wants - services it wants to be started before (but it + will work anyway) + + ./needs/ - services it needs. If those services fail, this service + won't be started + + - the program to run when switching the service on + - a flag indicating whether to respawn the service: + + ./respawn (simply touch it) + + +Services +2. Hints + +2.0 Service executing / parameters + +on/off -> link +mostly no shell scripts + +linking to system configuration + +2.1 Daemons +pidfilehack +pidfilehack - from fefe/minit? +not forking! +writing to stdout + +2.2 Logging + +Currently there's no special logging support. +When programs write to stdout, it will be displayed on +the same stdout cinit is connected to +(we don't even open /dev/console - we are too lazy currently). + +2.3 Using prepared scripts + +In the bin/ directory of this tarball you'll find: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + +adding services with cinit.add.service? -> later, meta-deps? + +meta-deps + +X. Examples + +X.0 Getty +X.1 OpenSSH + diff --git a/software/cinit/browse_source/cinit-0.0.5/doc/fun/testing01 b/software/cinit/browse_source/cinit-0.0.5/doc/fun/testing01 new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/doc/fun/testing01 @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.0.5/doc/how_it_works_internally b/software/cinit/browse_source/cinit-0.0.5/doc/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/doc/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.0.5/doc/ipc.thoughts b/software/cinit/browse_source/cinit-0.0.5/doc/ipc.thoughts new file mode 100644 index 00000000..d7352559 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/doc/ipc.thoughts @@ -0,0 +1,74 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, Nico Schottelius 2005-04-28 +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2), +1024=max fds, -3=already opened (stderr/stdin/stdout), /2= +two fds needed per clients). + +Pipes cannot be use easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR. + +That way, we are forced to mount a temporary filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt and + - poweroff. + +Simple send cinit a signal, what todo: + SIGUSR1: reboot + SIGUSR2: poweroff + TERM: halt + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.0.5/doc/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.0.5/doc/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/doc/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.0.5/doc/merging.other.initsystems b/software/cinit/browse_source/cinit-0.0.5/doc/merging.other.initsystems new file mode 100644 index 00000000..9dd65218 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/doc/merging.other.initsystems @@ -0,0 +1,64 @@ +-------------------------------------------------------------------------------- +Merging other init systems to cinit +Nico Schottelius 2005-06-02 +-------------------------------------------------------------------------------- + +1. Preamble +2. General todo +3. Create a script + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not exclude that he accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much +appreciated. + + +2. General todo + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.0.5/doc/meta.dependencies b/software/cinit/browse_source/cinit-0.0.5/doc/meta.dependencies new file mode 100644 index 00000000..f599e37c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/doc/meta.dependencies @@ -0,0 +1,55 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, on would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation. + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +it does not need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ diff --git a/software/cinit/browse_source/cinit-0.0.5/doc/porting.to.other.os b/software/cinit/browse_source/cinit-0.0.5/doc/porting.to.other.os new file mode 100644 index 00000000..8ef962de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/doc/porting.to.other.os @@ -0,0 +1,22 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporary filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + diff --git a/software/cinit/browse_source/cinit-0.0.5/doc/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.0.5/doc/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/doc/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.0.5/doc/shutting.down b/software/cinit/browse_source/cinit-0.0.5/doc/shutting.down new file mode 100644 index 00000000..b5e81fda --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/doc/shutting.down @@ -0,0 +1,61 @@ +-------------------------------------------------------------------------------- +Shutting down the system +Nico Schotteilus, 2005-05-24 (last change: 2005-06-02) +-------------------------------------------------------------------------------- + +cinit will shutdown all running service exactly the reverted +way it started them. + +1. What to do to allow a system to shutdown? + +Create /etc/cinit/reboot, /etc/cinit/power-off and /etc/cinit/halt. + +It's in most scenarios also enough to create only one of those +service directories and link all others against the first one: + +[21:38] ei:cinit# mkdir /etc/cinit/power-off +[21:38] ei:cinit# ln -s power-off /etc/cinit/reboot +[21:38] ei:cinit# ln -s power-off /etc/cinit/halt + +Then create the needed services, which are almost always: + + - swapoff: disable swap + - sync: sync buffers to disk + - umount: umount everything + - remount: remount root read-only + + +on oder off????? + +Add dependencies to + +You can also use +What todo when shutting down (reboot, halt, poweroff) the system: + +1. Cycle through service list and +while(processes--) { + Stop_current_processs +} + + - Stop_current_processs + \ if(status = respawn) + | -> kill -TERM pid + | exec_svc(svc/off, svc/off.params) + +kill remaining processes with SIGTERM +sleep(WAIT_KILL) +kill remaining processes with SIGKILL +sync; +umount(*) + +reboot + + +- cycle through running services, kill them the other way round +- stop respawing processes + +- start off-process of running services +- don't shutdown failed services + +kill_svc(struct stat svc); + diff --git a/software/cinit/browse_source/cinit-0.0.5/doc/thoughts.closed b/software/cinit/browse_source/cinit-0.0.5/doc/thoughts.closed new file mode 100644 index 00000000..1da4bebe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/doc/thoughts.closed @@ -0,0 +1,24 @@ +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporary fs before. + diff --git a/software/cinit/browse_source/cinit-0.0.5/doc/thoughts.open b/software/cinit/browse_source/cinit-0.0.5/doc/thoughts.open new file mode 100644 index 00000000..5e0a054c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/doc/thoughts.open @@ -0,0 +1,14 @@ +- Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. + +- Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. diff --git a/software/cinit/browse_source/cinit-0.0.5/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.0.5/generic/mini_printf.c new file mode 100644 index 00000000..d384e717 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/generic/mini_printf.c @@ -0,0 +1,20 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * print string + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + p = str; + while ( *p != '\0') { + write(fd,p,1); + p++; + } + + write(fd,"\n",1); /* FIXME: only when console */ +} diff --git a/software/cinit/browse_source/cinit-0.0.5/generic/set_signals.c b/software/cinit/browse_source/cinit-0.0.5/generic/set_signals.c new file mode 100644 index 00000000..aa3233b6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/generic/set_signals.c @@ -0,0 +1,45 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +#include +#include +#include "cinit.h" + +void set_signals(int action) +{ + struct sigaction sa; + + if(action == ACT_SERV) { + sa.sa_handler=SIG_IGN; + } else { + sa.sa_handler=SIG_DFL; + } + sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + sigaction(SIGUSR2,&sa,NULL); /* USR2 */ + sigaction(SIGQUIT,&sa,NULL); /* QUIT... */ + sigaction(SIGTTIN,&sa,NULL); + sigaction(SIGTTOU,&sa,NULL); + + /* sigio is called to act on the socket */ + if(action == ACT_SERV) { + sa.sa_handler=sigio; + } + sigaction(SIGIO,&sa,NULL); + + /* signal handlers to do special things with: reboot */ + if(action == ACT_SERV) { + sa.sa_handler=sig_reboot; + } +// sigaction(SIGINT,&sa,NULL); /* FIXME: Testing only: ctr+c = REBOOT!!! */ + sigaction(SIGUSR1,&sa,NULL); + sigaction(SIGTERM,&sa,NULL); + sigaction(SIGHUP,&sa,NULL); + + /* sigstop can't be ignored, do the manpages say */ + /* sigaction(SIGSTOP,&sa,NULL); */ +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/add_mod_svc.c b/software/cinit/browse_source/cinit-0.0.5/old/add_mod_svc.c new file mode 100644 index 00000000..c74778d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/add_mod_svc.c @@ -0,0 +1,42 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * add_svc + * part of cinit + */ + +#include + +#include "cinit.h" + +/* we return the service id or -1 on error*/ +int add_mod_svc(char *svc, char status, pid_t pid) +{ + int tmp = 0; + + /* check if service exists, if so, set new status, return sid */ + tmp = chk_svc(svc); + if( tmp != -1 ) { + svc_list.svca[tmp].status = status; + return tmp; + } + + /* still here? than there is no such service */ + if(svc_list.process < MAX_SVC) { + printf("[%d]: %s (%d)\n",svc_list.process,svc,pid); + svc_list.svca[svc_list.process].abs_path = strdup(svc); + + if(svc_list.svca[svc_list.process].abs_path == NULL) { + LOG("strdup failed!"); + return -1; + } + svc_list.svca[svc_list.process].pid = pid; + /* inkrement later, as we count argv[0..n] */ + (svc_list.process)++; + } else { + LOG("too many services"); + return -1; + } + + /* return _our_ service id */ + return (svc_list.process -1); +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/cerr.c b/software/cinit/browse_source/cinit-0.0.5/old/cerr.c new file mode 100644 index 00000000..b9dec472 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/cerr.c @@ -0,0 +1,36 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * print error to stderr and exist + */ + +#include +#include "cinit.h" + +void cerr(char *string, int status) +{ + char *p; + + p = string; + while ( *p != '\0') { + write(2,p,1); + p++; + } + write(2,"\n",1); + + switch(status) { + case RT_CHLD_FAIL: + case RT_CHLD_OK: + _exit(status); + ;; + case RT_PAR_FAIL: /* FIXME: if status is RT_PAR_FAIL, start sulogin */ + _exit(23); + ;; + case RT_PAR_OK: + return; + ;; + } + +/* FIXME: return if in cinit, _exit on fork() */ +// if(...) +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/cinit.add.shutdown.reboot.poweroff b/software/cinit/browse_source/cinit-0.0.5/old/cinit.add.shutdown.reboot.poweroff new file mode 100644 index 00000000..23cae705 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/cinit.add.shutdown.reboot.poweroff @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add shutdown/reboot/poweroff service + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +# create halt, link reboot and poweroff to it +mkdir "$BASEDIR/$C_HALT" +ln -s "$C_HALT" "$BASEDIR/$C_REBOOT" +ln -s "$C_HALT" "$BASEDIR/$C_POWEROFF" diff --git a/software/cinit/browse_source/cinit-0.0.5/old/cinit.c01 b/software/cinit/browse_source/cinit-0.0.5/old/cinit.c01 new file mode 100644 index 00000000..e3890013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/cinit.c01 @@ -0,0 +1,105 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +#define CINIT_DIR "/etc/cinit" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "needs" +#define C_WANTS "wants" + +/* opendir() */ +#include +#include + +/* *stat() */ +#include +#include + + +#include + +#define EKEL "/etc/cinit/init/wants" + +void cerr(char *msg) +{ + printf("%s\n", msg); +} + +/* + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + + /* check if already running / ran / currently starting */ + + /* check for needs -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es, %s\n", pathbuf); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) printf("dir gibt es, %s\n", pathbuf); + + d_tmp = opendir(path); + + if(d_tmp == NULL) { + cerr("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} + +int main() +{ + + char buf[256]; + int tmp; + + strcpy(buf,CINIT_DIR); + tmp = strlen(CINIT_DIR); + buf[tmp] = '/'; + strcpy(&buf[tmp+1],C_INIT); + + printf("path: %s\n",buf); + + run_svc("/etc/cinit/init"); + + run_svc("/etc/cinit2/init"); + + run_svc("/NOT_THERE"); + +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/cinit.c02 b/software/cinit/browse_source/cinit-0.0.5/old/cinit.c02 new file mode 100644 index 00000000..7e5432b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/cinit.c02 @@ -0,0 +1,198 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +#define CINIT_DIR "/etc/cinit" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "needs" +#define C_WANTS "wants" +#define C_RUN "run" + +/* opendir() */ +#include +#include + +/* *stat() */ +#include +#include + +/* wait() */ +#include + +/* strlen */ +#include + +#include + +#define EKEL "/etc/cinit/init/wants" + +void cerr(char *msg) +{ + printf("%s\n", msg); +} + +/*********************************************************************** + * parallel run forked() run_svc() + */ +#define MAX_PAR 32 + +int run_run_svcs(char *rpath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + pid_t pids[MAX_PAR]; + int tmp,i=0; + + printf("run_run_svcs on: %s\n",rpath); + + d_tmp = opendir(rpath); + + if(d_tmp == NULL) { + printf("Failed to open dir: %s", rpath); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 + || strcmp(tdirent->d_name, "..") == 0) + continue; + + if(i < MAX_PAR) { + pids[i] = fork(); + i++; + } else { + cerr("to many dependencies"); + return 1; + } + + if(pids[i-1] == -1) { /* err */ + cerr("fork failed\n"); + return 0; + } else if(pids[i-1] == 0) { /* child */ + printf("Service zu starten nun: %s\n", tdirent->d_name); + run_svc(tdirent->d_name); + _exit(0); + } else /* the parent simply goes the loop again */ + printf("run_svcs_PARENT\n"); + } + + closedir(d_tmp); + + /* wait for pids */ + while(i >= 0) { +// printf("waiting for %d ... \n",i); + waitpid(pids[i], &tmp, 0); + i--; + } +} + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check if already running / ran / currently starting */ + + /* check for service dir */ + if( stat(path,&buf) ) { + printf("no such service: %s\n", path); + return 1; + } + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + cerr("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + + char buf[256]; + int tmp; + + strcpy(buf,CINIT_DIR); + tmp = strlen(CINIT_DIR); + buf[tmp] = '/'; + strcpy(&buf[tmp+1],C_INIT); + + printf("path: %s\n",buf); + + run_svc("/etc/cinit/init"); + + run_svc("/NOT_THERE"); + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/cinit.c03 b/software/cinit/browse_source/cinit-0.0.5/old/cinit.c03 new file mode 100644 index 00000000..c1b5eb42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/cinit.c03 @@ -0,0 +1,241 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +#define CINIT_DIR "/etc/cinit" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "needs" +#define C_WANTS "wants" +#define C_RUN "run" + +/* opendir() */ +#include +#include + +/* *stat() */ +#include +#include + +/* wait() */ +#include + +/* strlen */ +#include + +#include + +#include "cinit.h" + +#define EKEL "/etc/cinit/init/wants" + +/* status of a service */ +#define ST_TMP 1 /* currently working on it */ +#define ST_ONCE 2 /* executed once */ +#define ST_RESPAWN 3 /* running and respawning */ + +/* array of svc */ +/* linked list of services */ +/* balanced trees */ +struct svc { + char *abs_path; +// struct svc *next; + int status; /* tmp, respawn, ran once */ + /* evtl: */ +}; + +struct svcl { + struct svc svc_list[1000]; + int process; +} svc_list; + +void cerr(char *msg) +{ + printf("%s\n", msg); +} + +/*********************************************************************** + * parallel run forked() run_svc() + */ +#define MAX_PAR 32 + +int run_run_svcs(char *rpath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + pid_t pids[MAX_PAR]; + int tmp,i=0; + + printf("run_run_svcs on: %s\n",rpath); + + d_tmp = opendir(rpath); + + if(d_tmp == NULL) { + printf("Failed to open dir: %s", rpath); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 + || strcmp(tdirent->d_name, "..") == 0) + continue; + + if(i < MAX_PAR) { + pids[i] = fork(); + i++; + } else { + cerr("to many dependencies"); + return 1; + } + + if(pids[i-1] == -1) { /* err */ + cerr("fork failed\n"); + return 0; + } else if(pids[i-1] == 0) { /* child */ + printf("Service zu starten nun: %s\n", tdirent->d_name); + run_svc(tdirent->d_name); + _exit(0); + } else /* the parent simply goes the loop again */ + printf("run_svcs_PARENT\n"); + } + + closedir(d_tmp); + + /* wait for pids */ + while(i >= 0) { +// printf("waiting for %d ... \n",i); + waitpid(pids[i], &tmp, 0); + i--; + } +} + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check if already running / ran / currently starting */ + + /* debug */ + getcwd(pathbuf,1024); + + printf("dir: %s\n",pathbuf); + + /* check for service dir */ + if( stat(path,&buf) ) { + printf("no such service: %s\n", path); + return 1; + } + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + cerr("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + char pathbuf[MAXPATH]; + struct stat buf; + + strcpy(pathbuf,CINIT_DIR); + strcat(pathbuf,"/"); + strcat(pathbuf,C_INIT); + + printf("path: %s\n",pathbuf); + + svc_list.process = 0; + + /* stat, checkdir */ + if( stat(pathbuf,&buf) ) { + printf("PANIC ACTION: init dir missing\n"); + return 1; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("PANIC ACTION: init is not a dir\n"); + return 1; + } + + if( chdir(pathbuf) == -1) { + printf("PANIC ACTION: chdir(%s) failed!\n",pathbuf); + return 1; + } + run_svc("/etc/cinit/init"); +// run_svc(""); + +// run_svc("/NOT_THERE"); + +// execl("/bin/zsh","zsh", "-l"); + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/cinit.c04 b/software/cinit/browse_source/cinit-0.0.5/old/cinit.c04 new file mode 100644 index 00000000..983c03eb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/cinit.c04 @@ -0,0 +1,130 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* printf() */ +//#include + +/* str* */ +#include + +#include "cinit.h" + +/* global variable */ +struct svcl svc_list; +int f_in, f_out; + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + char pathbuf[PATH_MAX]; + char buf[1223]; + struct stat sbuf; + int i; + + struct sigaction sa; + + /* signal handlers to ignore */ + sa.sa_handler=SIG_IGN; +// sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGSTP,&sa,NULL); /* ignore ctr+z, stop */ + + D_PRINTF(CINIT_INIT); + + /* count of started processes */ + svc_list.process = 0; + + /* begin to handle signals */ + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + cerr("PANIC ACTION: init dir missing", RT_PAR_FAIL); + } else if( ! S_ISDIR(sbuf.st_mode) ) { + cerr("PANIC ACTION: init is not a dir", RT_PAR_FAIL); + } + + if( chdir(CINIT_INIT) == -1) + cerr("PANIC ACTION: chdir to /etc/cinit/init failed!",RT_PAR_FAIL); + + /* open communication fifos */ + f_in = open(CINIT_DIR SLASH F_IN, O_RDWR); + f_out = open(CINIT_DIR SLASH F_OUT, O_RDWR); + if(f_in == -1 || f_out == -1) cerr("opening fifo failed\n",RT_PAR_FAIL); + + /* initial run, only if we are 'real' init' */ +// if( getpid() == 1) { + i = run_init_svc(); + printf("Initialer Start rueckgabe: %d\n", i); +// } + + /* signal handlers to do special things with */ + // something else sa.sa_handler=SIG_IGN; + sigaction(SIGUSR1,&sa,NULL); /* reboot on sigusr1 */ + sigaction(SIGUSR1,&sa,NULL); /* power-off on sigusr2 */ + sigaction(SIGTERM,&sa,NULL); /* halt on sigterm */ + + /* important signal handlers: pipe, child */ +// sa.sa_handler=sig_pipe; +// sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + +// sa.sa_handler=sig_child; +// sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + + + /* big TODO: */ + + /* some while/for loop to hang forever, remember, we are init! */ + while(1) { + i=0; + /* read path */ + do { + read(f_in,&buf,1); +// buf1[i] = buf; i++; + } while(buf != '\0'); +// + // printf("Read path: %s\n",buf1); + + i=0; + /* read status */ + do { + read(f_in,&buf,1); + // buf2[i] = buf; i++; + } while(buf != '\0'); + + // status = atoi(buf2); + // printf("Read status: %d\n",status); + + i=0; + /* read pid */ + do { + read(f_in,&buf,1); + // buf3[i] = buf; i++; + } while(buf != '\0'); + + // pid = atoi(buf3); + + + + } + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/cinit.c05 b/software/cinit/browse_source/cinit-0.0.5/old/cinit.c05 new file mode 100644 index 00000000..8dec1f46 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/cinit.c05 @@ -0,0 +1,137 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* printf() */ +//#include + +/* str* */ +#include + +#include "cinit.h" + +/* global variable */ +struct svcl svc_list; + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + char buf[1223]; + struct stat sbuf; + int i; + + struct sigaction sa; + + /* signal handlers to ignore */ + sa.sa_handler=SIG_IGN; +// sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGSTOP,&sa,NULL); /* ignore ctr+z, stop */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + + D_PRINTF(CINIT_INIT); + + /* begin to handle signals */ + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + cerr("PANIC ACTION: init dir missing", RT_PAR_FAIL); + } else if( ! S_ISDIR(sbuf.st_mode) ) { + cerr("PANIC ACTION: init is not a dir", RT_PAR_FAIL); + } + + if( chdir(CINIT_INIT) == -1) + cerr("PANIC ACTION: chdir to /etc/cinit/init failed!",RT_PAR_FAIL); + + /* get shared memory */ + + shmfd = shm_open(CINIT_SHM,O_RDWR|O_CREAT,0600); + + if(shmfd == -1) { + perror("Shared memory"); + cerr("shared memory",RT_PAR_FAIL); + } + + /* count of started processes */ + svc_list.process = 0; + + /* open communication fifos */ + f_in = open(CINIT_DIR SLASH F_IN, O_RDWR); + f_out = open(CINIT_DIR SLASH F_OUT, O_RDWR); + if(f_in == -1 || f_out == -1) cerr("opening fifo failed",RT_PAR_FAIL); + + /* initial run, only if we are 'real' init' */ +// if( getpid() == 1) { + i = run_init_svc(); + printf("Initialer Start rueckgabe: %d\n", i); +// } + + /* signal handlers to do special things with */ + // something else sa.sa_handler=SIG_IGN; + sigaction(SIGUSR1,&sa,NULL); /* reboot on sigusr1 */ + sigaction(SIGUSR1,&sa,NULL); /* power-off on sigusr2 */ + sigaction(SIGTERM,&sa,NULL); /* halt on sigterm */ + + /* important signal handlers: pipe, child */ +// sa.sa_handler=sig_pipe; + +// sa.sa_handler=sig_child; +// sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + + + /* big TODO: */ + + /* some while/for loop to hang forever, remember, we are init! */ + while(1) { + i=0; + /* read path */ + do { + read(f_in,&buf,1); +// buf1[i] = buf; i++; + } while(buf != '\0'); +// + // printf("Read path: %s\n",buf1); + + i=0; + /* read status */ + do { + read(f_in,&buf,1); + // buf2[i] = buf; i++; + } while(buf != '\0'); + + // status = atoi(buf2); + // printf("Read status: %d\n",status); + + i=0; + /* read pid */ + do { + read(f_in,&buf,1); + // buf3[i] = buf; i++; + } while(buf != '\0'); + + // pid = atoi(buf3); + + + + } + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/cinit.c06 b/software/cinit/browse_source/cinit-0.0.5/old/cinit.c06 new file mode 100644 index 00000000..c48de22c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/cinit.c06 @@ -0,0 +1,158 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* printf() */ +//#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* global variable */ +struct svcl svc_list; +int sock; + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int signal) +{ + struct ucred suck; + int len = sizeof(suck), lens; + int nsock; + struct sockaddr_un sun; + char buf; + + lens=sizeof(sun); + memset(&sun,0,lens); + +/* this is always us! */ +// getsockopt(sock, SOL_SOCKET, SO_PEERCRED, &suck, &len); +// printf("orig angreifer: pid: %d uid: %d gid: %d\n",suck.pid,suck.uid,suck.gid); + + do { + //s_tmp[s_idx] = accept(sock,(struct sockaddr *) &sun, (socklen_t *) &lens); + nsock = accept(sock,(struct sockaddr *) NULL, (socklen_t *) NULL); + + // nsock = accept(sock,(struct sockaddr *) &sun, (socklen_t *) &lens); +// if( s_tmp[s_idx] == -1) { + if( nsock == -1) { + if (errno != EAGAIN) { + perror("accept"); + _exit(1); + } else { + break; + } + } + + //getsockopt(s_tmp[s_idx], SOL_SOCKET, SO_PEERCRED, &suck, &len); + getsockopt(nsock, SOL_SOCKET, SO_PEERCRED, &suck, &len); + printf("angreifer: pid: %d uid: %d gid: %d\n",suck.pid,suck.uid,suck.gid); + + + read(nsock,&buf,1); + + printf("command: %d\n",buf); + + while ( (len = read(nsock,&buf,1)) ) { +// printf("laenge: %d\n",len); + if(len == -1) { +// if(errno != EINVAL && errno != EAGAIN) { + perror("read"); + return; +// _exit(1); +// } + } + if(buf == 0) break; + write(1,&buf,1); + } + printf("Fertig mit lesen\n"); + + write(nsock,"ok\n",4); + printf("fertig mit schreiben\n"); + } while ( 1 ); + + printf("keine sockets mehr da..., sigio beendet sich jetzt.\n"); +} + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + struct stat sbuf; + int i; + + struct sigaction sa; + + /* signal handlers to ignore */ + sa.sa_handler=SIG_IGN; +// sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGSTOP,&sa,NULL); /* ignore ctr+z, stop */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + + sa.sa_handler=sigio; + sigaction(SIGIO,&sa,NULL); /* what todo when data arrived on socket */ + + D_PRINTF(CINIT_INIT); + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + cerr("PANIC ACTION: init dir missing", RT_PAR_FAIL); + } else if( ! S_ISDIR(sbuf.st_mode) ) { + cerr("PANIC ACTION: init is not a dir", RT_PAR_FAIL); + } + + if( chdir(CINIT_INIT) == -1) + cerr("PANIC ACTION: chdir to /etc/cinit/init failed!",RT_PAR_FAIL); + + /* count of started processes */ + svc_list.process = 0; + + /* initial run, only if we are 'real' init' */ +// if( getpid() == 1) { + i = run_init_svc(); + printf("Initialer Start rueckgabe: %d\n", i); +// } + + /* signal handlers to do special things with */ + // something else sa.sa_handler=SIG_IGN; +// sigaction(SIGUSR1,&sa,NULL); /* reboot on sigusr1 */ +// sigaction(SIGUSR1,&sa,NULL); /* power-off on sigusr2 */ +// sigaction(SIGTERM,&sa,NULL); /* halt on sigterm */ + + /* the main loop */ + while(1) ; + +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/cinit.commands.v01 b/software/cinit/browse_source/cinit-0.0.5/old/cinit.commands.v01 new file mode 100644 index 00000000..dfdb67c5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/cinit.commands.v01 @@ -0,0 +1,85 @@ +-------------------------------------------------------------------------------- +cinit commands, Nico Schottelius 2005-04-28 +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (uses SO_PEERCRED as +socketoption). + +The communication-protocol is binary. + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service and its dependencies. + CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_INIT: Start all services (again possibly). + + CMD_HALT: Halt the system. + CMD_REBOOT: Reboot the system. + CMD_POWEROFF: Power-off the system. + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) ok, a SID, a service ID: int svc_id; [ really need int? ] + b) fail, [currently only fail is returned] + a) already running + b) svc_name too long / not allowed + + [ A service identification is used for faster searching in cinit. + It is also a hint for developers of external software, that they should not + be able to use CMD_CHG_STATUS, if they didn't start a service. + They should use CMD_STOP_SVC to stop a service. + Starting a service is currently done via exec() in the external program or + a cinit-fork(). ] + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int svc_id; /* service ID to change */ + 1. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit uncgrafully + UNUSED! respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_INIT: Start all services (again possibly). + cinit returns: ready... + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. diff --git a/software/cinit/browse_source/cinit-0.0.5/old/cinit.create.cinit_dir b/software/cinit/browse_source/cinit-0.0.5/old/cinit.create.cinit_dir new file mode 100644 index 00000000..6fd58adb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/cinit.create.cinit_dir @@ -0,0 +1,11 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create our initial directory +# 2005-05-24 + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +mkdir -p $BASEDIR diff --git a/software/cinit/browse_source/cinit-0.0.5/old/cinit.h01 b/software/cinit/browse_source/cinit-0.0.5/old/cinit.h01 new file mode 100644 index 00000000..e07fa2c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/cinit.h01 @@ -0,0 +1,80 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * header of cinit + */ + +/* includes */ +#include /* pid_t */ + +/* limits */ +#define MAX_SVC 1024 /* maximum services */ +#define MAX_DEPS 32 /* maximum direct dependencies of a service */ + +/* paths */ +#define CINIT_DIR "/etc/cinit" + +#define F_IN "in" +#define F_OUT "out" +#define SLASH "/" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "./needs" +#define C_WANTS "./wants" +#define C_RUN "./run" +#define C_RESPAWN "respawn" +#define C_PARAMS "params" + +/* return values */ +#define RT_FAIL 0 +#define RT_OK 1 + +#define RT_CHLD_FAIL 1 /* child failed */ +#define RT_CHLD_OK 2 /* child succeded */ +#define RT_PAR_FAIL 3 /* parent failed */ +#define RT_PAR_OK 4 /* parent succeded */ + +/* status of a service-starter (run_run_svc) */ +#define RT_ONE_FAILED 5 /* one ore more failed */ +#define RT_ALL_STARTED 6 /* everything ok */ +#define RT_DEPS_MAX 7 /* too many dependencies */ + +/* status of a service */ +#define ST_NO 0 /* process not existing */ +#define ST_TMP 1 /* currently working on it */ +#define ST_ONCE 2 /* executed once */ +#define ST_RESPAWN 3 /* running and respawning */ +#define ST_FAIL 4 /* failed to start service */ + + + +/* variables */ + +/* array of svc */ +/* linked list of services */ +/* balanced trees */ + +struct svc { + char *abs_path; /* service identifier */ + int status; /* tmp, respawn, ran once */ + pid_t pid; /* pid of the process */ +}; + +struct svcl { + struct svc svca[MAX_SVC]; + int process; +}; + +extern struct svcl svc_list; + +/* functions */ + +void cerr(char *string, int status); +int chk_svc(char *svc); +int run_svc(char *rpath); +int add_mod_svc(char *svc, int status); +int run_run_svcs(char *rpath); + diff --git a/software/cinit/browse_source/cinit-0.0.5/old/cnt_digits.c b/software/cinit/browse_source/cinit-0.0.5/old/cnt_digits.c new file mode 100644 index 00000000..a692fa5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/cnt_digits.c @@ -0,0 +1,42 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* this code is stolen from gpm */ + +/* what's the english name for potenz ? */ +int x_high_y(int base, int pot_y) +{ + int val = 1; + + if(pot_y == 0) val = 1; + else if(pot_y < 0) val = 0; /* ugly hack ;) */ + else while(pot_y > 0) { + val = val * base; + pot_y--; + } + return val; +} + +/* return characters needed to display int */ +int cnt_digits(int number) +{ + /* 0-9 = 1 10^0 <-> (10^1)-1 + * 10 - 99 = 2 10^1 <-> (10^2)-1 + * 100 - 999 = 3 10^2 <-> (10^3)-1 + * 1000 - 9999 = 4 ... */ + + int ret = 0, num = 0; + + /* non negative, please */ + if(number < 0) number *= -1; + else if(number == 0) ret = 1; + else while(number > num) { + ret++; + num = (x_high_y(10,ret) - 1); + } + + return(ret); +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/do_change_status.c01 b/software/cinit/browse_source/cinit-0.0.5/old/do_change_status.c01 new file mode 100644 index 00000000..74bb9c1e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/do_change_status.c01 @@ -0,0 +1,65 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + char buf = CMD_CHG_STATUS; + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + D_PRINTF("VERSUCHE STATUS ZU AENDERN"); + printf("socket: %d (cmd=%d)\n",sock2, buf); + + if(action == ACT_READ) { + D_PRINTF("Leeeese"); + fpoint = read; + } else { + D_PRINTF("schreibe"); + fpoint = write; /* don't care about warnings! */ + } + + if(action == ACT_WRITE) { + D_PRINTF("schreibe kommando"); + if(fpoint(sock2,&buf,1) == -1) { /* COMMAND */ + perror("command i/o"); + return 0; + } + tmp = strlen(svc); + sock2 = connect_sock(sock2); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror("i/o: length"); + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror("i/o: service name"); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror("i/o: status"); + printf("Status: %d, *status=%d, sizeof=%d\n",status,*status,sizeof(*status)); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror("i/o: PID"); + return 0; + } + + D_PRINTF("fertig mit statuswechsel lesen"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/idea01 b/software/cinit/browse_source/cinit-0.0.5/old/idea01 new file mode 100644 index 00000000..cf0df9d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/idea01 @@ -0,0 +1,121 @@ +-------------------------------------------------------------------------------- +/etc/cinit + -> init/ + -> shutdown/ + -> reboot/ + + + needs/ -> we wait until all parallel processes are finished _and_ we + don't start if one fails + wants/ -> we start all of them parallel and wait for them? + hold/ + wait -> wait until process finished + run -> program to execute + params -> \n seperated argument list + respawn -> respawn it + +services may only be under /etc/cinit? +-------------------------------------------------------------------------------- +Service-Status: + +- abs_path +- status (respawn,tmp,once) +-------------------------------------------------------------------------------- + +starting services: + +run_svc("/etc/cinit/service/") + -> exec run $params +Later: + -> check if service already running -> return OK + -> check needs/ -> check wants/ + -> run_svc($cur) + + When run_svc returns, the service is started and all service it needs, too. + + +-------------------------------------------------------------------------------- + -> check needs/ + -> exists -> fork( run_run_svcs() ) and continue + (fork) -> fork() run_svc(needs/*); + -> check wants/ + -> exists -> run_svc(wants/*); + -> waitfor(need_run_svc) +-------------------------------------------------------------------------------- +run_run_svcs() + -> start parallel (forked) run_svc() for every service +-------------------------------------------------------------------------------- + +main() + - run_svc /etc/cinit/init/ + - sleep()? -> simply do nothing -> do we need to fork ourselves? No, we are init. +spaeter: + - open /dev/console W_ONLY + - make stdin == /etc/cinit/in + - make stdout, stderr /dev/console + +-------------------------------------------------------------------------------- +eof + +Things, which are clear + +- we need to fork before execl(), as excel() replaces us. +- chdir() _after_ fork() + + +profiles support: profile=$profile + + start + "service.$profile" if exists, instead of + "service" + +starting services: + +cinit: + pipe() + set_status_tmp() + fork() --> failure --> clear_service + cinit_process_watcher(): + fork() + execve(process,args,env) + waitpid() -> for once? PROCESS MUST RETURN! + write_pipe() + rmpipe() + +-------------------------------------------------------------------------------- + +What to send over to cinit and read back? + + - first you need two pipes for every process: read+write (on both sides) + - cinit wants + o command + - service temporary - trying to start in right now. + - service executed once - fine + - service executed once and that failed - :-( + - service respawing + o an identifier for the service (i from service list ;-) + + --> makes 2 bytes to read +-------------------------------------------------------------------------------- +How cinit works: + +cinit says: I want to start service xyz. (/etc/cinit/init on bootup) +cinit calls run_svc(). +-------------------------------------------------------------------------------- + +run_svc(char *relative_path): + - check if service is alr + - fork() + - write cinit: check service, I want to start it + -> returns status of service (see ST_* in cinit.h) + - cinit returns: ok, you are temporary + - [that checked] check if service + o is already started + o is beeing started + x check if rpath S_ISDIR + x chdir(dir) + - check needs - check wants + - for every needs/* start run_svc + - check respawn -> respawn = true + - check run + diff --git a/software/cinit/browse_source/cinit-0.0.5/old/idea02 b/software/cinit/browse_source/cinit-0.0.5/old/idea02 new file mode 100644 index 00000000..38af8965 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/idea02 @@ -0,0 +1,200 @@ +-------------------------------------------------------------------------------- +/etc/cinit + -> init/ + -> shutdown/ + -> reboot/ + + + needs/ -> we wait until all parallel processes are finished _and_ we + don't start if one fails + wants/ -> we start all of them parallel and wait for them? + hold/ + wait -> wait until process finished + run -> program to execute + params -> \n seperated argument list + respawn -> respawn it + +services may only be under /etc/cinit? +-------------------------------------------------------------------------------- +Service-Status: (see struct svc, cinit.h) + +- abs_path +- status (respawn,tmp,once) +- pid + +abs_path\0status\0pid\0 + +-------------------------------------------------------------------------------- + +starting services: + +run_svc("/etc/cinit/service/") + -> exec run $params +Later: + -> check if service already running -> return OK + -> check needs/ -> check wants/ + -> run_svc($cur) + + When run_svc returns, the service is started and all service it needs, too. + + +-------------------------------------------------------------------------------- + -> check needs/ + -> exists -> fork( run_run_svcs() ) and continue + (fork) -> fork() run_svc(needs/*); + -> check wants/ + -> exists -> run_svc(wants/*); + -> waitfor(need_run_svc) +-------------------------------------------------------------------------------- +run_run_svcs() + -> start parallel (forked) run_svc() for every service +-------------------------------------------------------------------------------- + +main() + - run_svc /etc/cinit/init/ + - sleep()? -> simply do nothing -> do we need to fork ourselves? No, we are init. +spaeter: + - open /dev/console W_ONLY + - make stdin == /etc/cinit/in + - make stdout, stderr /dev/console + +-------------------------------------------------------------------------------- +eof + +Things, which are clear + +- we need to fork before execl(), as excel() replaces us. +- chdir() _after_ fork() + + +profiles support: profile=$profile + + start + "service.$profile" if exists, instead of + "service" + +starting services: + +cinit: + pipe() + set_status_tmp() + fork() --> failure --> clear_service + cinit_process_watcher(): + fork() + execve(process,args,env) + waitpid() -> for once? PROCESS MUST RETURN! + write_pipe() + rmpipe() + +-------------------------------------------------------------------------------- + +What to send over to cinit and read back? + + - first you need two pipes for every process: read+write (on both sides) + - cinit wants + o command + - service temporary - trying to start in right now. + - service executed once - fine + - service executed once and that failed - :-( + - service respawing + o an identifier for the service (i from service list ;-) + + --> makes 2 bytes to read +-------------------------------------------------------------------------------- +How cinit works: + +cinit says: I want to start service xyz. (/etc/cinit/init on bootup) +cinit calls run_svc(). +-------------------------------------------------------------------------------- + +int run_svc(char *relative_path): + - check if service is already running or temporary (task list!) + -> yes: return RT_PAR_OK + -> no: continue. + - set service to be temporary (ST_TMP) and retrieve SID (service ID) + - walk through dependency tree and call run_svc + - fork() -> so cinit can continue. + - write cinit: check service, I want to start it + -> returns status of service (see ST_* in cinit.h) + - cinit returns: ok, you are temporary + - [that checked] check if service + o is already started + o is beeing started + x check if rpath S_ISDIR + x chdir(dir) + - check needs - check wants + - for every needs/* start run_svc + - check respawn -> respawn = true + - check run + +-------------------------------------------------------------------------------- + +add_mod_svc(char *svc, int status) + -> add or modify status of a service + + - check whether service exists, reset status + - if not exists, insert if maximum of services is not reached +-------------------------------------------------------------------------------- + +cinit communications proto +-------------------------------------------------------------------------------- + +cinit: + -> signal_handler on SIGCHLD + run_init() + -> run_svc(init) + -> fork() -> do the work + +signal_handler_child + waitpid(.*) + -> returns pid + + oder waitpid() in dem run_svc, wenn need/once? + + need: + for i in need/*; do + ( $service & ); + done + wait(.*); + +-------------------------------------------------------------------------------- + +cinit: + +run_svc: + checks what it needs (need/*) + need/* + fork() + fork(), fork() + +-------------------------------------------------------------------------------- +Kommunikationsproblem: + + -> 1024 ist maximale anzahl offener sockets -> 510 von fifos,pipes + - mehrere FIFOs? + --> kommunikation gesichert, extrem viele fifos... + --> etwas unsauber, aber geregelte kommunikation + - mehrere PIPEs? + --> viele PIPEs (HRHR) + --> programme koennen nur von cinit gefork()ed werden. + + --> eine datei mit prozessen? + --> einen RAM Bereich? +-------------------------------------------------------------------------------- + +cinit[1] <-> fifo <-> forker + +forker? +-------------------------------------------------------------------------------- + +pfad vorher aufloesen? + +-------------------------------------------------------------------------------- +Kommunikation: ::Test:: + + Test mit nur 2 FIFOs! + +-------------------------------------------------------------------------------- + +sig_fifo() +read(..) als hauptaufgabe? diff --git a/software/cinit/browse_source/cinit-0.0.5/old/msg_change_status.c01 b/software/cinit/browse_source/cinit-0.0.5/old/msg_change_status.c01 new file mode 100644 index 00000000..cfd66ae3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/msg_change_status.c01 @@ -0,0 +1,49 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include + +#include "cinit.h" + +int do_change_status(char *svc, char status, pid_t pid, int action) +{ + char buf = CMD_CHG_STATUS; + int tmp = strlen(svc); + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_READ) + fpoint = read; + else + fpoint = write; + + D_PRINTF("versuche status zu aendern"); + + if(write(sock,&buf,1) == -1) { /* write COMMAND */ + perror("write"); + return 0; + } + if(write(sock,&tmp,sizeof(tmp)) == -1) { /* write length */ + perror("write"); + return 0; + } + if(write(sock,svc,tmp) == -1) { /* write service name */ + perror("write"); + return 0; + } + if(write(sock,&buf,1) == -1) { /* write PID */ + perror("write"); + return 0; + } + write(sock,&status,sizeof(status)); /* write status */ + + D_PRINTF("fertig mit schreiben"); + + read(sock,&buf,sizeof(buf)); /* read SID or -1 if error */ + + return buf; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/msg_start_svc.c b/software/cinit/browse_source/cinit-0.0.5/old/msg_start_svc.c new file mode 100644 index 00000000..c6a78bf8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/msg_start_svc.c @@ -0,0 +1,23 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit we start a service + */ + +#include + +/* return status */ +int msg_start_svc(char *string, int respawn) +{ + char *p; + + p = string; + while ( *p != '\0') { + write(2,p,1); + p++; + } + +/* FIXME: return if in cinit, _exit on fork() */ +// if(...) + _exit(status); +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/read_file.c b/software/cinit/browse_source/cinit-0.0.5/old/read_file.c new file mode 100644 index 00000000..43a5854b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/read_file.c @@ -0,0 +1,100 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + +#include "cinit.h" + +/*********************************************************************** + * read_file: return file content, each line a char* + */ + +char **read_file(char *file) +{ + int tmp; + int fd, argc; + + char buf[BUFSIZE]; + char *p, *sbuf = NULL; + char **nargv = NULL; + + struct stat stbuf; + + D_PRINTF("Lese Datei"); + D_PRINTF(file); + + if( !stat(file,&stbuf) ) { + fd = open(file,O_RDONLY); + + if(fd == -1) { + LOG("params exists, but open params failed"); + return NULL; + } + + D_PRINTF("open ist ok"); + + argc = 0; + + /* most likely one round */ + while ( (tmp = read(fd,buf,BUFSIZE) ) != 0 ) { + if(tmp == -1) { + perror("read"); + return NULL; + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],buf,tmp); + argc += tmp; + } + close(fd); + } + + sbuf[argc] = '\0'; + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() */ + + argc = 0; + + while( (p = strchr(sbuf,'\n')) ) { + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG("realloc failed"); + return NULL; + } + + nargv[argc] = sbuf; + *p = '\0'; + sbuf = p+1; /* is ok, as behind the last \n is a \0 */ + argc++; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + if(nargv == NULL) { + LOG("realloc failed"); + return NULL; + } + + nargv[argc] = NULL; /* terminate argv list */ + + return nargv; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/run_init_svc.c01 b/software/cinit/browse_source/cinit-0.0.5/old/run_init_svc.c01 new file mode 100644 index 00000000..61467f44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/run_init_svc.c01 @@ -0,0 +1,50 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run initial service + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * start the first service + */ + +int run_init_svc() +{ + pid_t pid; + + D_PRINTF("Starte initialen starter"); + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + perror("fork failed\n"); + return RT_PAR_FAIL; + } else if(pid == 0) { /* child */ + /* close fifo */ + close(f_in); close(f_out); + + /* open the other way round */ + f_in = open(CINIT_DIR SLASH F_OUT, O_RDWR); + f_out = open(CINIT_DIR SLASH F_IN, O_RDWR); + if(f_in == -1 || f_out == -1) cerr("opening fifo failed\n",RT_CHLD_FAIL); + + /* open stderr, stdin, stdout to files? */ + if ( run_svc(CINIT_INIT) == RT_CHLD_OK) + _exit(EX_OK); + else + _exit(EX_FAIL); + } else + return RT_PAR_OK; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c00 b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c00 new file mode 100644 index 00000000..ff3bb989 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c00 @@ -0,0 +1,140 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp, sid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + close(sock); /* close old socket connection, we are a fork()! */ + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + return 0; + } + tmp = sizeof(addr); + memset(&addr,0,tmp); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + /* FIXME: why do we need tmp????? ... tmp == 1 is wrong!*/ +/* tmp = 1; + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + return 0; + } */ + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + return 0; + } + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror("getcwd"); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror("chdir"); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + if( ! run_run_svcs(pathtmp) ) { + D_PRINTF("some NEEDED services failed)"); + return 0; + } + + D_PRINTF("Starte wants"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + tmp = ST_ONCE; + sid = 20; + D_PRINTF("Melde status"); + if(!do_change_status(abspath,&tmp,&sid,sock,ACT_WRITE)) { + D_PRINTF("Status nicht gemeldet :((((((((((("); + return 0; + } + D_PRINTF("Status abgesetzt"); + +/* if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + if(respawn_svc(abspath)) { + msg_change_status(sid,ST_RESPAWN); + } else { + D_PRINTF("error in respawn"); + msg_change_status(sid,ST_FAIL); + } + } else { + D_PRINTF("einmal ausfuehren"); + if(exec_svc(abspath)) { + msg_change_status(sid,ST_ONCE); + } else { + D_PRINTF("error einmalig"); + msg_change_status(sid,ST_FAIL); + } + } */ +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c01 b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c01 new file mode 100644 index 00000000..e7457af0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c01 @@ -0,0 +1,292 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* perhaps move this code to cinit-static, so it's constant */ + while(tmp < svc_list.process) { + printf("%d\n",tmp); + + if( ! strcmp(rpath,svc_list.svca[tmp].abs_path) ) { + printf("Service im Array\n"); + return 0; + } + tmp++; + } + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* check for respawn? */ + + /* fork before chdir */ + pid = fork(); + + if(pid == -1) { + printf("ERORERER\n"); + return 0; + } else if(pid > 0) { /* parent gets child's PID */ + + /* NOT IF RESPAWN */ + if(!respawn) { + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) + return RT_PAR_OK; + else + return RT_PAR_FAIL; + } /* else */ /* Was tun, wenn respawn? nochmal forken als beobachter, + oder signal? */ + } + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + /* THis saVES US THE OTHER STRCMP!!!!! */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check, whether we should respawn fixme: much earlier! */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( !stat(pathtmp,&buf) ) respawn = 1; + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check if already running / ran / currently starting */ + + /* debug */ + getcwd(pathbuf,1024); + + printf("dir: %s\n",pathbuf); + + /* check for service dir */ + if( stat(path,&buf) ) { + printf("no such service: %s\n", path); + return 1; + } + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c02 b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c02 new file mode 100644 index 00000000..7fb329b6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c02 @@ -0,0 +1,282 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* perhaps move this code to cinit-static, so it's constant */ + while(tmp < svc_list.process) { + printf("%d\n",tmp); + + if( ! strcmp(rpath,svc_list.svca[tmp].abs_path) ) { + printf("Service im Array\n"); + return 0; + } + tmp++; + } + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* check for respawn? */ + + /* fork before chdir */ + pid = fork(); + + if(pid == -1) { + printf("ERORERER\n"); + return 0; + } else if(pid > 0) { /* parent gets child's PID */ + + /* NOT IF RESPAWN */ + if(!respawn) { + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) + return RT_PAR_OK; + else + return RT_PAR_FAIL; + } /* else */ /* Was tun, wenn respawn? nochmal forken als beobachter, + oder signal? */ + } + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + /* THis saVES US THE OTHER STRCMP!!!!! */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check, whether we should respawn fixme: much earlier! */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( !stat(pathtmp,&buf) ) respawn = 1; + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c03 b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c03 new file mode 100644 index 00000000..9422a7c9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c03 @@ -0,0 +1,283 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_in[2], p_out[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* create communication pipe */ + if ( pipe(p_in) == -1 || pipe(p_out) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + + /* check for respawn? yes, sometime... */ + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* fork before chdir */ + pid = fork(); + + if(pid == -1) { + printf("ERORERER\n"); + return 0; + } else if(pid > 0) { /* parent gets child's PID */ + + /* NOT IF RESPAWN */ + if(!respawn) { + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) + return RT_PAR_OK; + else + return RT_PAR_FAIL; + } /* else */ /* Was tun, wenn respawn? nochmal forken als beobachter, + oder signal? */ + } + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + /* THis saVES US THE OTHER STRCMP!!!!! */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check, whether we should respawn fixme: much earlier! */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( !stat(pathtmp,&buf) ) respawn = 1; + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + +beof + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c04 b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c04 new file mode 100644 index 00000000..727aa71f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c04 @@ -0,0 +1,297 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) respawn = 1; + + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + } + + /* fork at the beginning and before chdir */ + pid = fork(); + + if( pid == -1 ) cerr("fork failed",RT_PAR_FAIL); + + if(pid == -1) { + cerr("fork failed\n", RT_PAR_FAIL); + } else if(pid > 0) { /* parent gets child's PID */ + + if(respawn) { + /* read the final byte from child */ + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == ST_RESPAWN) { + printf("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + } + } else { /* execute once */ + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + + /* check for needs */ + + /* do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcat(pathtmp,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + pid = fork(); + if(tmp == -1) { + cerr("error ...\n", RT_PAR_FAIL); + } else if(tmp == 0) { + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,rpath); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c05 b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c05 new file mode 100644 index 00000000..927a9261 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c05 @@ -0,0 +1,294 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) respawn = 1; + + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + } + + /* fork at the beginning and before chdir */ + pid = fork(); + + if( pid == -1 ) cerr("fork failed",RT_PAR_FAIL); + + if(pid == -1) { + cerr("fork failed\n", RT_PAR_FAIL); + } else if(pid > 0) { /* parent gets child's PID */ + + if(respawn) { + /* read the final byte from child */ + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == ST_RESPAWN) { + printf("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + } + } else { /* execute once */ + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c05.2 b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c05.2 new file mode 100644 index 00000000..90d94b65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c05.2 @@ -0,0 +1,320 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; /* talk to respawnig watcher */ + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + return 0; + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + return 0; + } + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + return 0; + } + + /******************* end socket *********************/ + + sid = msg_start_svc(rpath); /* now we are temporary */ + if(sid == -1) { + cerr("cinit returned start error",RT_CHLD_FAIL); + return 0; + } + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + msg_change_status(sid,ST_FAIL); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + msg_change_status(sid,ST_FAIL); + return 0; + } + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + respawn = 1; + } + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) { + perror("pipe"); + cerr("pipe failed",RT_PAR_FAIL); + } + } + + /* clone */ + pid = fork(); + if( pid == -1 ) { + perror("fork"); + cerr("fork failed",RT_CHLD_FAIL); + return 0; + } + + _exit(0); + + /* the following block handles parent situation */ + + if(pid > 0) { /* parent gets child's PID */ + + /*************** THIS BLOCK IS CRAP ******************/ + + /* FIXME: when respawing, we'll watch our child */ + if(respawn) { + tmp = MSG_FAIL; + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == MSG_OK) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + msg_change_status(sid,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + msg_change_status(sid,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + /* FIXME: MISSING: + - signal handling (stop respawing) + - waitpid() in while(1) + */ + _exit(0); /* FIXME !!! */ + + /*************** END THIS BLOCK IS CRAP ******************/ + + } else /* don't RESPAWN */ { /* execute only once */ + D_PRINTF("Warte EINMAL auf mein Kind..."); + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + + /*********** CHILD EXECUTION HERE ***********/ + do { + + + } while(respawn); + + + + /* change to service dir */ + if( chdir(rpath) == -1) { + /* FIXME: errno! */ + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c06 b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c06 new file mode 100644 index 00000000..7dd265fc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c06 @@ -0,0 +1,293 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("Fehler"); + _exit(1); + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + cerr("Does your OS not support SO_PASSCRED (man 7 socket)?",RT_PAR_FAIL); + } + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + _exit(1); + } + + /******************* end socket *********************/ + + msg_start_svc(rpath); + D_PRINTF("in runsvc"); + _exit(0); + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc_client(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return ; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) respawn = 1; + + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + } + + /* fork at the beginning and before chdir */ + pid = fork(); + + /* FIXME: pay attention: we are possibly also a fork()! */ + + if( pid == -1 ) cerr("fork failed",RT_PAR_FAIL); + + if(pid > 0) { /* parent gets child's PID */ + if(respawn) { + /* read the final byte from child */ + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == ST_RESPAWN) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } else { /* execute once */ + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c07 b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c07 new file mode 100644 index 00000000..e62eff54 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c07 @@ -0,0 +1,304 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; /* talk to respawnig watcher */ + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + _exit(1); + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + cerr("Does your OS not support SO_PASSCRED (man 7 socket)?",RT_PAR_FAIL); + } + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + _exit(1); + } + + /******************* end socket *********************/ + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + _exit(1); + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + _exit(1); + } + + tmp = msg_start_svc(rpath); /* now we are temporary */ + + D_PRINTF("in runsvc"); + + if(tmp == -1) { + cerr("cinit returned start error",RT_CHLD_FAIL); + _exit(1); + } + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + respawn = 1; + } + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) { + perror("pipe"); + cerr("pipe failed",RT_PAR_FAIL); + } + } + + pid = fork(); + /* pay attention: we are also a fork()! */ + if( pid == -1 ) { + perror("fork"); + cerr("fork failed",RT_CHLD_FAIL); + _exit(1); + } + + _exit(0); + + /* the following block handles parent situation */ + + if(pid > 0) { /* parent gets child's PID */ + + /* FIXME: when respawing, we'll watch our child */ + if(respawn) { + tmp = MSG_FAIL; + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == MSG_OK) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } else /* don't RESPAWN */ { /* execute only once */ + D_PRINTF("Warte EINMAL auf mein Kind..."); + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c08 b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c08 new file mode 100644 index 00000000..587e13e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c08 @@ -0,0 +1,316 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; /* talk to respawnig watcher */ + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + _exit(1); + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + cerr("Does your OS not support SO_PASSCRED (man 7 socket)?",RT_PAR_FAIL); + /* FIXME: cerr */ + } + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + _exit(1); + } + + /******************* end socket *********************/ + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + _exit(1); + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + _exit(1); + } + + sid = msg_start_svc(rpath); /* now we are temporary */ + + D_PRINTF("in runsvc"); + + if(sid == -1) { + cerr("cinit returned start error",RT_CHLD_FAIL); + _exit(1); + } + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + respawn = 1; + } + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) { + perror("pipe"); + cerr("pipe failed",RT_PAR_FAIL); + } + } + + pid = fork(); + /* pay attention: we are also a fork()! */ + if( pid == -1 ) { + perror("fork"); + cerr("fork failed",RT_CHLD_FAIL); + _exit(1); + } + + _exit(0); + + /* the following block handles parent situation */ + + if(pid > 0) { /* parent gets child's PID */ + + /*************** THIS BLOCK IS CRAP ******************/ + + /* FIXME: when respawing, we'll watch our child */ + if(respawn) { + tmp = MSG_FAIL; + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == MSG_OK) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + msg_change_status(sid,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + msg_change_status(sid,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + /* FIXME: MISSING: + - signal handling (stop respawing) + - waitpid() in while(1) + */ + _exit(0); /* FIXME !!! */ + + /*************** END THIS BLOCK IS CRAP ******************/ + + } else /* don't RESPAWN */ { /* execute only once */ + D_PRINTF("Warte EINMAL auf mein Kind..."); + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + /* FIXME: errno! */ + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c09 b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c09 new file mode 100644 index 00000000..ff3bb989 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/run_svc.c09 @@ -0,0 +1,140 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp, sid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + close(sock); /* close old socket connection, we are a fork()! */ + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + return 0; + } + tmp = sizeof(addr); + memset(&addr,0,tmp); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + /* FIXME: why do we need tmp????? ... tmp == 1 is wrong!*/ +/* tmp = 1; + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + return 0; + } */ + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + return 0; + } + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror("getcwd"); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror("chdir"); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + if( ! run_run_svcs(pathtmp) ) { + D_PRINTF("some NEEDED services failed)"); + return 0; + } + + D_PRINTF("Starte wants"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + tmp = ST_ONCE; + sid = 20; + D_PRINTF("Melde status"); + if(!do_change_status(abspath,&tmp,&sid,sock,ACT_WRITE)) { + D_PRINTF("Status nicht gemeldet :((((((((((("); + return 0; + } + D_PRINTF("Status abgesetzt"); + +/* if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + if(respawn_svc(abspath)) { + msg_change_status(sid,ST_RESPAWN); + } else { + D_PRINTF("error in respawn"); + msg_change_status(sid,ST_FAIL); + } + } else { + D_PRINTF("einmal ausfuehren"); + if(exec_svc(abspath)) { + msg_change_status(sid,ST_ONCE); + } else { + D_PRINTF("error einmalig"); + msg_change_status(sid,ST_FAIL); + } + } */ +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/sig_chld.c b/software/cinit/browse_source/cinit-0.0.5/old/sig_chld.c new file mode 100644 index 00000000..e452f570 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/sig_chld.c @@ -0,0 +1,31 @@ +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* we are called, when a child exited */ +void sig_chld(int status) +{ + int pstat, i = 0; + pid_t pid; + + /* get pid of child and its status */ + pid = waitpid(chpid,&pstat,0); + + /* the child was either a respawed or once running process */ + + while(i < svc_list.process) { + if(pid == svc_list.svca[i].pid) { /* found service */ + + } + i++; + } + + if( WIFEXITED(pstat) ) printf("Kind gut gestorben\n"); + + printf("kind tot %d ...\n", status); +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/sig_special.c b/software/cinit/browse_source/cinit-0.0.5/old/sig_special.c new file mode 100644 index 00000000..6152f515 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/sig_special.c @@ -0,0 +1,21 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * We are called by signal to reboot + */ + +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_special + * react on special signals: + o SIGINT: ctrl + alt + del + o SIGWINCH: keyboard request + */ + +void sig_special(int signal) +{ + /* not used */ +} diff --git a/software/cinit/browse_source/cinit-0.0.5/old/sigio.c01 b/software/cinit/browse_source/cinit-0.0.5/old/sigio.c01 new file mode 100644 index 00000000..4e1ee482 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/old/sigio.c01 @@ -0,0 +1,73 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int signal) +{ + struct ucred suck; + int len, lens, nsock; + struct sockaddr_un sun; + char buf; + + D_PRINTF("sigio() startet"); + + do { + nsock = accept(sock,(struct sockaddr *) NULL, (socklen_t *) NULL); + + if( nsock == -1) { + if (errno != EAGAIN) { + perror("accept"); + _exit(1); + } else { + break; + } + } + + //getsockopt(s_tmp[s_idx], SOL_SOCKET, SO_PEERCRED, &suck, &len); + getsockopt(nsock, SOL_SOCKET, SO_PEERCRED, &suck, &len); + printf("angreifer: pid: %d uid: %d gid: %d\n",suck.pid,suck.uid,suck.gid); + + + read(nsock,&buf,1); + + printf("command: %d\n",buf); + + while ( (len = read(nsock,&buf,1)) ) { +// printf("laenge: %d\n",len); + if(len == -1) { +// if(errno != EINVAL && errno != EAGAIN) { + perror("read"); + return; +// _exit(1); +// } + } + if(buf == 0) break; + write(1,&buf,1); + } + printf("Fertig mit lesen\n"); + + write(nsock,"ok\n",4); + printf("fertig mit schreiben\n"); + } while ( 1 ); + + printf("keine sockets mehr da..., sigio beendet sich jetzt.\n"); +} + + diff --git a/software/cinit/browse_source/cinit-0.0.5/samples/debian.tar b/software/cinit/browse_source/cinit-0.0.5/samples/debian.tar new file mode 100644 index 00000000..a2118f37 Binary files /dev/null and b/software/cinit/browse_source/cinit-0.0.5/samples/debian.tar differ diff --git a/software/cinit/browse_source/cinit-0.0.5/samples/fedora.tar b/software/cinit/browse_source/cinit-0.0.5/samples/fedora.tar new file mode 120000 index 00000000..1ba34d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/samples/fedora.tar @@ -0,0 +1 @@ +debian.tar \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.0.5/samples/gentoo.tar b/software/cinit/browse_source/cinit-0.0.5/samples/gentoo.tar new file mode 120000 index 00000000..1ba34d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/samples/gentoo.tar @@ -0,0 +1 @@ +debian.tar \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.0.5/samples/mandrake.tar b/software/cinit/browse_source/cinit-0.0.5/samples/mandrake.tar new file mode 120000 index 00000000..1ba34d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/samples/mandrake.tar @@ -0,0 +1 @@ +debian.tar \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.0.5/samples/suse.tar b/software/cinit/browse_source/cinit-0.0.5/samples/suse.tar new file mode 120000 index 00000000..1ba34d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/samples/suse.tar @@ -0,0 +1 @@ +debian.tar \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.0.5/serv/chk_svc.c b/software/cinit/browse_source/cinit-0.0.5/serv/chk_svc.c new file mode 100644 index 00000000..bdc73c31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/serv/chk_svc.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * chk_svc: check whether service exists + * part of cinit + */ + +#include +#include "cinit.h" + +/* we are called from sigio */ +/* return SID, if service exists, else -1 */ +int chk_svc(char *svc) +{ + int tmp = 0; + + while(tmp < svc_list.process) { + if( ! strcmp(svc,svc_list.svca[tmp].abs_path) ) { + return tmp; + } + tmp++; + } + return -1; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/serv/cinit.c b/software/cinit/browse_source/cinit-0.0.5/serv/cinit.c new file mode 100644 index 00000000..00bea738 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/serv/cinit.c @@ -0,0 +1,143 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +/* mount */ +#include + +#include +#include + +#include /* nanosleep */ + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock, logfd; + +/*********************************************************************** + * the main procedure + */ + +#ifdef TIME_ME +time_t start; +#endif + +int main() +{ + struct stat sbuf; + pid_t pid; + struct sockaddr_un addr; + struct timespec ts; + +#ifdef TIME_ME + start = time(NULL); +#endif + + set_signals(ACT_SERV); /* set signal handlers */ + logfd = 1; /* write to stdout */ + list = NULL; /* list of services is empty currently */ + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + perror("PANIC ACTION"); + panic(); + } + if( ! S_ISDIR(sbuf.st_mode) ) { + LOG("PANIC ACTION: init is not a dir"); + panic(); + } + if( chdir(CINIT_INIT) == -1) { + perror("PANIC ACTION"); + panic(); + } + + /* count of started processes */ + // svc_list.process = 0; + + /******************** TMPDIR **********************/ + if(mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1) { + perror("mount"); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror("socket"); + panic(); + } + + /* tell the socket, _we_ want to get SIGIO! */ + pid = getpid(); + if(fcntl(sock,F_SETOWN,pid) == -1) { + perror("fcntl"); + panic(); + } + + /* O_SYNC: SIGIO will be called, O_NONBLOCK: don't block cinit */ + if ( fcntl(sock,F_SETFL,O_ASYNC|O_NONBLOCK) == -1) { + perror("fcntl"); + panic(); + } + + memset(&addr,0,sizeof(addr)); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror("bind"); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror("listen"); + panic(); + } + /******************** end socket **********************/ + + /* initial run, only if we are 'real' init' */ +// if( pid == 1) { + run_init_svc(); +// } + + D_PRINTF("fertig gestartet"); + + /* the main loop: sleep until a signal comes in */ + ts.tv_sec = -1; + if(ts.tv_sec < 0) { + D_PRINTF("is signed"); + ts.tv_sec = 1 << ((sizeof(ts.tv_sec) * 8)-1); + ts.tv_sec = ts.tv_sec - 1; + } + + while(1) { + nanosleep(&ts,NULL); + } +} diff --git a/software/cinit/browse_source/cinit-0.0.5/serv/list.c b/software/cinit/browse_source/cinit-0.0.5/serv/list.c new file mode 100644 index 00000000..38d9663b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/serv/list.c @@ -0,0 +1,97 @@ +/* (c) 2005 by Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * list handling: the processes cinit will execute/executed + * part of cinit + * changed some formatting, Nico Schottelius + */ + +#include +#include +#include "cinit.h" + + +int list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc( sizeof(struct listitem) ); + + if( tmp == NULL ) { + return 0; + } + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members, add this one */ + tmp->after = list; /* after the new element comes the begin */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first element has us as previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if( list == NULL ) { /* think positive */ + return NULL; + } else { + tmp = list->before; + } + D_PRINTF(path); + + do { + if(!strcmp(path, tmp->abs_path)) + return tmp; + tmp = tmp->before; + } while(tmp != list); + + return NULL; +} + +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if( tmp == NULL ) { + return 0; + } + + tmp->after->before = tmp->before; + tmp->before->after = tmp->after; + free(tmp->abs_path); + free(tmp); + return 1; +} + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + + tmp = list_search(path); + if( tmp == NULL ) { + return 0; + } + tmp->status = new_status; + tmp->pid = new_pid; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.5/serv/panic.c b/software/cinit/browse_source/cinit-0.0.5/serv/panic.c new file mode 100644 index 00000000..be44219b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/serv/panic.c @@ -0,0 +1,13 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * panic: if cinit fails. + * part of cinit + */ + +#include "cinit.h" +#include + +void panic(void) +{ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.0.5/serv/run_init_svc.c b/software/cinit/browse_source/cinit-0.0.5/serv/run_init_svc.c new file mode 100644 index 00000000..7dacd06d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/serv/run_init_svc.c @@ -0,0 +1,55 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run initial service + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +extern time_t start; + +int run_init_svc() +{ + pid_t pid; + int status; + +#ifdef TIME_ME + time_t stop; +#endif + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + logfd = 1; /* FIXME: shouldn't this be some kind of log, like /dev/log? */ + set_signals(ACT_CLIENT); + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ?*/ + if ( run_svc(CINIT_INIT) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + waitpid(pid, &status,0); +#ifdef TIME_ME + stop = time(NULL); + /* FiXME: remove printf! , remove message -> msg.h */ + printf("*** cinit needed %ld seconds to start ****\n",(int) stop-start); +#endif + return WIFEXITED(status); + } +} diff --git a/software/cinit/browse_source/cinit-0.0.5/serv/sig_reboot.c b/software/cinit/browse_source/cinit-0.0.5/serv/sig_reboot.c new file mode 100644 index 00000000..d430c3a6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/serv/sig_reboot.c @@ -0,0 +1,134 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * We are called by signal to reboot + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void sig_reboot(int signal) +{ + struct listitem *tmp; + struct timespec ts; + char **cmd; + int i; + + D_PRINTF("sig_reboot() startet"); + + tmp = list->before; + do { + /* kill service watcher, which will kill processes itself */ + if( tmp->status == ST_RESPAWN) { + D_PRINTF("Bringing down respawn watcher"); + kill(tmp->pid,SIGTERM); + } + + /* execute shutdown service */ + D_PRINTF("Executing off-service"); + exec_svc(tmp->abs_path,0); + tmp = tmp->before; + } while( tmp != list ); + + /* Let's disappear */ + close(sock); + if(umount(CINIT_TMNT) == -1) { + perror("umount"); + } + + /* now: all services are down, lets kill all other processes */ + if( kill(-1,SIGTERM) == -1) { + perror(MSG_TERMKILL); + } + D_PRINTF("SIGTERM GESENDET"); + + ts.tv_sec = SLEEP_KILL; /* defined in conf/ */ + nanosleep(&ts,NULL); + + + if( kill(-1,SIGKILL) == -1) { + perror(MSG_KILLBILL); + } + D_PRINTF("SIGKILL GESENDET"); + /* now: we are completly alone. umount everything, go to bed */ + +/* THIS IS FUCKING UNCLEAN AND SHOULD BE CLEANED UP VERY MUCH!!! */ + +#define CMD_CNT 5 +#define SWAP_OFF_CMD "/sbin/swapoff" +#define SWAP_OFF_ARG1 "-a" + +#define UMOUNT_CMD "/bin/umount" +#define UMOUNT_ARG1 "-a" + +#define MOUNT_CMD "/bin/mount" +#define MOUNT_ARG1 "-o" +#define MOUNT_ARG2 "remount,ro" +#define MOUNT_ARG3 "/" + + cmd = (char **) malloc( (CMD_CNT+1) * ( sizeof (char*) ) ); + if(cmd) { +// cmd[0] = (char *) malloc(strlen(SWAP_OFF_CMD) +1); +// cmd[1] = (char *) malloc(strlen(SWAP_OFF_CMD) +1); + /* /sbin/swapoff -a */ + cmd[0] = SWAP_OFF_CMD; + cmd[1] = SWAP_OFF_ARG1; + cmd[2] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + /* /bin/umount -a */ + cmd[0] = UMOUNT_CMD; + cmd[1] = UMOUNT_ARG1; + cmd[2] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + + /* /bin/mount -o remount,ro / */ + cmd[0] = MOUNT_CMD; + cmd[1] = MOUNT_ARG1; + cmd[2] = MOUNT_ARG1; + cmd[3] = MOUNT_ARG1; + cmd[4] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + } + + switch(signal) { + case SIGUSR1: /* halt */ + reboot(RB_HALT_SYSTEM); + break; + case SIGTERM: /* power off */ + reboot(RB_POWER_OFF); + break; + case SIGHUP: /* reboot */ + reboot(RB_AUTOBOOT); + break; + } + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.0.5/serv/sigio.c b/software/cinit/browse_source/cinit-0.0.5/serv/sigio.c new file mode 100644 index 00000000..5e066d52 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/serv/sigio.c @@ -0,0 +1,99 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int signal) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + + D_PRINTF("sigio() startet"); + + do { + /* create new socket */ + nsock = accept(sock,(struct sockaddr *) NULL, (socklen_t *) NULL); + + if( nsock == -1) { + if (errno != EAGAIN) { /* report, but don't panic */ + perror("accept"); + } + + return; + } + + if( read(nsock,&buf[0],1) == -1) { + perror("read-command"); + close(nsock); + continue; + } + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_start_svc(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists */ + buf[0] = 0; + do_result(nsock,&buf[0]); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG("Adding service failed!"); + buf[0] = 0; + do_result(nsock,&buf[0]); + } + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + + if(!tmp) break; + + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + D_PRINTF("MOD.ERR"); + buf[0] = 0; + } else { + buf[0] = 1; + } + do_result(nsock,buf); + break; + + default: + LOG("Unknown command!"); + break; + } + close(nsock); + } while ( 1 ); + + D_PRINTF("ENDE:SIGIO"); +} diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:41:08 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:41:08 new file mode 100644 index 00000000..d29de765 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:41:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586640 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:46:09 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:46:09 new file mode 100644 index 00000000..7ecb58be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-15:46:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586368 Apr 30 15:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-16:50:05 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-16:50:05 new file mode 100644 index 00000000..d87323e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-16:50:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587818 Apr 30 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-17:03:00 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-17:03:00 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:39:08 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:39:08 new file mode 100644 index 00000000..0c2bb0af --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:39:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586194 May 6 20:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:54:00 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:54:00 new file mode 100644 index 00000000..fe51f37f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:54:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590108 May 6 22:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:55:07 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:55:07 new file mode 100644 index 00000000..4d2854b5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:55:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590108 May 6 22:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-23:00:07 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-23:00:07 new file mode 100644 index 00000000..c0db4814 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-23:00:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 23:00 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:31:01 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:31:01 new file mode 100644 index 00000000..4ad1fccf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:31:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:31 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:39:02 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:39:02 new file mode 100644 index 00000000..16613354 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:39:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:43:08 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:43:08 new file mode 100644 index 00000000..29e5ab44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:43:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:54:04 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:54:04 new file mode 100644 index 00000000..474189e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:54:04 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:18:00 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:18:00 new file mode 100644 index 00000000..960ca358 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:18:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:18 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:14:00 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:14:00 new file mode 100644 index 00000000..7de2bc3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:14:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:14 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:43:08 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:43:08 new file mode 100644 index 00000000..11a18f12 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:43:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597245 May 7 14:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:48:01 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:48:01 new file mode 100644 index 00000000..28b127b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:48:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597405 May 7 14:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:55:05 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:55:05 new file mode 100644 index 00000000..5d0fa0e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:55:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:01:01 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:01:01 new file mode 100644 index 00000000..7c8b202b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:01:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 15:01 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:27:00 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:27:00 new file mode 100644 index 00000000..a2d19633 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:27:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:27 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:20:02 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:20:02 new file mode 100644 index 00000000..23608225 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:20:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602184 May 7 16:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:31:09 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:31:09 new file mode 100644 index 00000000..40f890cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:31:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:31 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-17:08:09 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-17:08:09 new file mode 100644 index 00000000..22b48319 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-17:08:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-10:44:00 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-10:44:00 new file mode 100644 index 00000000..4dad0f2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-10:44:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 64935 May 8 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-12:42:08 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-12:42:08 new file mode 100644 index 00000000..a356e57e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-12:42:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 23195 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-19:25:05 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-19:25:05 new file mode 100644 index 00000000..0b5026c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-19:25:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:30:03 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:30:03 new file mode 100644 index 00000000..7377ee59 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:30:03 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-21:54:00 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-21:54:00 new file mode 100644 index 00000000..41ed8e4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-21:54:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604637 May 10 21:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-22:07:06 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-22:07:06 new file mode 100644 index 00000000..9579bf3d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-22:07:06 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95212 May 10 22:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-00:14:02 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-00:14:02 new file mode 100644 index 00000000..86483ada --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-00:14:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-15-22:32:07 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-15-22:32:07 new file mode 100644 index 00000000..59557c4b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-15-22:32:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 15 22:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-15-23:52:06 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-15-23:52:06 new file mode 100644 index 00000000..757e6dc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-15-23:52:06 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579305 May 15 23:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-15-23:56:00 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-15-23:56:00 new file mode 100644 index 00000000..24c85104 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-15-23:56:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605145 May 15 23:56 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:16:09 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:16:09 new file mode 100644 index 00000000..27254aa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:16:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605205 May 16 00:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-09:58:08 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-09:58:08 new file mode 100644 index 00000000..90a5b698 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-09:58:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605567 May 16 09:58 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:09:00 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:09:00 new file mode 100644 index 00000000..4c34f810 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:09:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605583 May 16 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:13:07 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:13:07 new file mode 100644 index 00000000..b6a851e6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:13:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605619 May 16 10:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:23:05 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:23:05 new file mode 100644 index 00000000..2c4fc649 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:23:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-14:56:01 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-14:56:01 new file mode 100644 index 00000000..c5e08e25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-14:56:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95794 May 21 14:56 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:35:00 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:35:00 new file mode 100644 index 00000000..0f2d5463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:35:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:35 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.5/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.5/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/BUGS b/software/cinit/browse_source/cinit-0.0.6/BUGS new file mode 100644 index 00000000..235a8853 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/BUGS @@ -0,0 +1,2 @@ +To be done before 0.1 (dirty release): +- replace cerr-strings with #defines, so doubled strings are elimenated diff --git a/software/cinit/browse_source/cinit-0.0.6/COPYING b/software/cinit/browse_source/cinit-0.0.6/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.0.6/CREDITS b/software/cinit/browse_source/cinit-0.0.6/CREDITS new file mode 100644 index 00000000..fd3d6ff3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/CREDITS @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete diff --git a/software/cinit/browse_source/cinit-0.0.6/Changelog b/software/cinit/browse_source/cinit-0.0.6/Changelog new file mode 100644 index 00000000..47142a97 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/Changelog @@ -0,0 +1,8 @@ +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.0.6/MT/debug b/software/cinit/browse_source/cinit-0.0.6/MT/debug new file mode 100644 index 00000000..52dab24b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/MT/debug @@ -0,0 +1,31 @@ +started up on Linux 2.6.11.10 #2 Tue May 17 11:58:45 CEST 2005 ppc +command line: 'monotone-0.18', 'sync', 'linux.schottelius.org', 'info.clinux.cinit' +set locale: LC_CTYPE=C, LC_MESSAGES=C +initial path is /home/user/nico/cinit-0.0.5 +converting 13 bytes from ANSI_X3.4-1968 to UTF-8 +converting 4 bytes from ANSI_X3.4-1968 to UTF-8 +converting 21 bytes from ANSI_X3.4-1968 to UTF-8 +converting 17 bytes from ANSI_X3.4-1968 to UTF-8 +searching for 'MT' directory with root '/' +search for 'MT' ended at '/home/user/nico/cinit-0.0.5' with '' removed +initializing from directory /home/user/nico/cinit-0.0.5 +found working copy directory /home/user/nico/cinit-0.0.5 +options path is MT/options +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 7 bytes from UTF-8 to ANSI_X3.4-1968 +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 7 bytes from UTF-8 to ANSI_X3.4-1968 +local dump path is MT/debug +setting dump path to MT/debug +opening rcfile '/home/user/nico/.monotonerc' ... +'/home/user/nico/.monotonerc' is ok +skipping nonexistent rcfile 'MT/monotonerc' +executing sync command +db.fetch("SELECT domain, name, value FROM db_vars") +db.fetch("SELECT domain, name, value FROM db_vars") +lua isfunction() failed in get_fn +db.fetch("SELECT id from 'private_keys'") +db.fetch("SELECT id, name, value, keypair, signature FROM 'revision_certs' WHERE name = 'branch'") +db.execute("BEGIN") +connecting to linux.schottelius.org +db.execute("ROLLBACK") diff --git a/software/cinit/browse_source/cinit-0.0.6/MT/log b/software/cinit/browse_source/cinit-0.0.6/MT/log new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.6/MT/options b/software/cinit/browse_source/cinit-0.0.6/MT/options new file mode 100644 index 00000000..33960254 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/MT/options @@ -0,0 +1,3 @@ + branch "info.clinux.cinit" +database "/home/user/nico/monotone.db" + key "" diff --git a/software/cinit/browse_source/cinit-0.0.6/MT/revision b/software/cinit/browse_source/cinit-0.0.6/MT/revision new file mode 100644 index 00000000..46a746df --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/MT/revision @@ -0,0 +1 @@ +963cdee12452946c9cf0af5b69b95a30983ccfb6 diff --git a/software/cinit/browse_source/cinit-0.0.6/Makefile b/software/cinit/browse_source/cinit-0.0.6/Makefile new file mode 100644 index 00000000..daa9f7ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/Makefile @@ -0,0 +1,90 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-g -DDEBUG +OPTIMIZE=-Os -Werror + +# if cinit should display how long it needed to start +TIMEME=-DTIME_ME + +# init should be static per default! +LDFLAGS=-static + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-pipe -Wall -I. +LD=gcc +STRIP=strip + +# monotone +MT=monotone-0.18 + +# directories and files +DIRS=client bin conf comm generic doc sbin serv +FILES=BUGS Changelog Makefile README TODO cinit.h + +# objects +SERV=serv/sigio.o serv/cinit.o serv/list.o \ + serv/run_init_svc.o serv/panic.o serv/sig_reboot.o + +CLIENT=client/msg_start_svc.o client/msg_change_status.o client/run_svc.o \ + client/exec_svc.o client/respawn_svc.o client/run_run_svc.o \ + client/connect_sock.o client/begin_msg.o + +COMMUNICATION=comm/do_change_status.o comm/do_result.o comm/do_start_svc.o + +BOTH=generic/set_signals.o generic/mini_printf.o + +OBJ=$(SERV) $(CLIENT) $(BOTH) $(COMMUNICATION) + +# DO NOT CHANGE THIS. +SBIN=sbin +CINIT_BIN=$(SBIN)/cinit + +# targets +warn: + @cat doc/.buildwarn + +all: $(CINIT_BIN) sizecheck + +$(CINIT_BIN): $(SBIN) config.h $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ +$(SBIN): + mkdir $(SBIN) +sizecheck: + FILE="size/`date +%Y-%m-%d-%T`"; ls -l sbin/cinit > $$FILE; cat $$FILE +clean: + rm -f *.o */*.o sbin/cinit config.h +config.h: conf/* + ./bin/cinit.mkheader > config.h + +mt-update: + $(MT) add $(DIRS) $(FILES) 2>/dev/null +mt-commit: + $(MT) commit +mt-sync: + $(MT) sync linux.schottelius.org info.clinux.cinit + +install: install-dir + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-dir: + ./bin/cinit.install.dir + +install-conf: install-dir + @echo '*** Creating very basic configuration ***' + ./bin/cinit.install.conf + +install-test: install-dir + @echo '***> Copying testing configuration' + ./bin/cinit.install.test diff --git a/software/cinit/browse_source/cinit-0.0.6/README b/software/cinit/browse_source/cinit-0.0.6/README new file mode 100644 index 00000000..c3523e11 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/README @@ -0,0 +1,92 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ + +cinit is a fast init system with dependency features. +It is orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every POSIX compatible system. +- true dependencies +- parallel execution +- highly customisable (see conf/*) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via monotone. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +If it's the first time you operate with cinit, also do: +# make install-conf + +This will populate /etc/cinit with some default services for Linux +(mounting root r/w, starting gettys, setting hostname). + +This should work on most Linux systems, still you should have a +look at /etc/cinit and see whether services are correct. + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. + +sampleconfig.tar is the tar-ball I used for testing, beware if you use it: +It loads dvorak at startup! + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit.html diff --git a/software/cinit/browse_source/cinit-0.0.6/TODO b/software/cinit/browse_source/cinit-0.0.6/TODO new file mode 100644 index 00000000..167014fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/TODO @@ -0,0 +1,82 @@ +- Recheck sources: + - check errno! + - check whether headers are ok -> cleanup headers! + - eventually split cinit code to csvc to minimize binary of cinit? + - cleanup comments + - move messages to cinit.h or message.h or conf/msg-*! + - close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + - panic() should call sulogin + - remove FIXME entries (and what should be fixed, too) + - check LOG + +- Source Logic issues + - Add sulogin possibility + - stat() in run_svc -> don't call exec_svc, respawn_svc, run_run_svc + - remove stat from exec_svc, do before! + - respawn_svc and exec_svc must return pid_t of executed service / watcher + - handle CTR-ALT-DEL / keyboard request? (see caveats) + - check for possibilies to save ram, free things + - create coala-socket with correct permissions! (550, root:cinit) + -> is that really our problem or should a service do that? + - check if we caught every signal, which could kill us + - logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? + - check for other possibilities to create a smaller binary + - strip options + - gcc options + - ld options + - alternative libc (uclibc works fine!) + - perhaps remove MAX_DEPS? + - run_svc_new: + o we have many strcat()s, perhaps save length of pathbuf and strncat at + pathtmp[strlen(pathbuf)] ? + - we have to add killing services from outside + -> perhaps completly split client code from cinit? + -> ccinit? ;-) + -> shutting down services is NOT YET possible while cinit is running + +- add fsck to sample configuration + +- Documentation + - write manpages (use doc/* as base for that) + +- Porting + - add porting code to other unices? + - like openssh guys do? + - polling/signalling is different everywhere + a) use standars poll/select + b) use accelerated os-specfic + -> add the name of the function/the file to use + into conf/poll_func? + - using Linux 2.6 epoll mechanism? + +-------------------------------------------------------------------------------- +create_mini_cinit + -> use a tarball? (samples/*) + -> create something which should be runnable + -> mount, fsck, getty + --> for dev in `read /etc/fstab` ... + fsck $dev + --> mount -a + --> mount -n -o remount,rw / + --> getty from /etc/inittab or /sbin/*getty + -> find out, which gettys with which params + -> use it on 'make install' +-------------------------------------------------------------------------------- +- Check Spell and Grammar in documentation +-------------------------------------------------------------------------------- +- Other things + - DELAY + -> be variabel? + -> defined in service? + - link relativ + -> in anleitung + - profiles + -> cinit=? + -> profile=? + -> cprofile=? + - portability? + diff --git a/software/cinit/browse_source/cinit-0.0.6/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.add.dependency new file mode 100644 index 00000000..17683dcc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.add.dependency @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or needs Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +case $DEP in + wants) DEP=$C_WANTS ;; + needs) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could some PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEST="${BASEDIR}/${SVC_A}/${DEP}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.0.6/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.add.getty new file mode 100644 index 00000000..cd8aab55 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.add.getty @@ -0,0 +1,66 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +read -p "Getty to use [$mygetty]: " rgetty +read -p "Parameters to pass [$params]: " rparams + +[ "$rgetty" ] && mygetty=$rgetty +[ "$rparams" ] && params=$rparams + +if [ ! "$mygetty" -o ! "$params" ]; then + echo "No useable getty and parameters found, exiting." + exit 1 +fi + +echo -n "Putting $mygetty $params into $DDIR ... " +mkdir -p "$DDIR" +ln -s $mygetty "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.0.6/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.create.empty.service new file mode 100644 index 00000000..9fe748d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.create.empty.service @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR +BASEDIR=./testcinit + + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.6/bin/cinit.get-confdir b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.get-confdir new file mode 100644 index 00000000..a36c52f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.get-confdir @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# 2005-05-24 + +# try environment first +if [ "$CINIT_DIR" ]; then + CONFDIR=$CINIT_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +elif [ -d /etc/cinit ]; then + CONFDIR=/etc/cinit +else + echo Did not find cinit configuration 1>&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.0.6/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.install.binary new file mode 100644 index 00000000..08004ac7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.install.binary @@ -0,0 +1,9 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# + + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/bin/cinit.install.conf b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.install.conf new file mode 100644 index 00000000..bd6fadc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.install.conf @@ -0,0 +1,11 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# + + +. $(dirname $0)/cinit.read-conf + +echo "*** > Currently missing, sorry." + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.0.6/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.install.dir new file mode 100644 index 00000000..a94a9b9b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.install.dir @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install configuration directory +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" $DESTDIR/$PREFIX/$CINIT_DIR diff --git a/software/cinit/browse_source/cinit-0.0.6/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.0.6/bin/cinit.mkheader b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.mkheader new file mode 100644 index 00000000..e1f35d07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.mkheader @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric - no I didn't see an easier way + numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + + [ "$numeric" ] || value="\"$value\"" + + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.0.6/bin/cinit.read-conf b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.read-conf new file mode 100644 index 00000000..4263129c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.read-conf @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + eval $NAME="$(head -n 1 $conf)" + eval export $NAME +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.0.6/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.remove.getty new file mode 100644 index 00000000..e7b1a6ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.remove.getty @@ -0,0 +1,23 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + + +[ ! "$NUMBER" ] && exit 1 + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r $DDIR +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.0.6/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.6/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.6/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.shutdown new file mode 100644 index 00000000..49b1dabd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/bin/cinit.shutdown @@ -0,0 +1,27 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# 2005-05-24 + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -o|--off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -o|--off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.0.6/bin/not-working/cinit.create.service b/software/cinit/browse_source/cinit-0.0.6/bin/not-working/cinit.create.service new file mode 100644 index 00000000..df092275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/bin/not-working/cinit.create.service @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name (including category)" + echo " I do create a service for you" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +# read input (from gentoo-bug.sh, http://linux.schottelius.org/scripts/#gentoo-bug +reread() +{ + _tmp="" + name="$1" + + while [ ! "$_tmp" ]; do + read -p "$1 [$_tmp]: " _tmp + done + + echo $_tmp +} + + +for svc in $@; do + echo -n "Creating $svc ..." + mkdir -p "${BASEDIR}/${svc}" + cd ${BASEDIR}/${svc} + mkdir -p "${C_WANTS}" "${C_NEEDS}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.6/cinit.h b/software/cinit/browse_source/cinit-0.0.6/cinit.h new file mode 100644 index 00000000..9b207973 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/cinit.h @@ -0,0 +1,132 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * header of cinit + */ + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* limits: will be obsolete in cinit-1.0 */ +#define MAX_SVC 510 /* maximum services - defines size of array - may later be obsoleted */ +#define MAX_DEPS 32 /* maximum direct dependencies of a service */ +#define BUFSIZE 4096 + +/* paths */ +#define C_ONARG C_ON C_PARAMS +#define C_OFFARG C_OFF C_PARAMS +#define C_ONENV C_ON C_ENV +#define C_OFFENV C_OFF C_ENV + +#define SLASH "/" + +#define CINIT_INIT CINIT_DIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK + +/* commands (maximum: 2^8 = 256)*/ +#define CMD_START_SVC 0 +#define CMD_CHG_STATUS 1 +#define CMD_STOP_SVC 2 +#define CMD_KILL_SVC 3 + +#define CMD_RESCUE 251 +#define CMD_INIT 252 + +#define CMD_HALT 253 +#define CMD_REBOOT 254 +#define CMD_POWEROFF 255 + +/* status of a service */ +#define ST_TMP 1 /* currently working on it */ +#define ST_ONCE 2 /* executed once */ +#define ST_RESPAWN 3 /* running and respawning */ +#define ST_FAIL 4 /* failed to start service */ + +/* actions for i/o handlers (see comm/do_*) */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* Messages to the outside */ + +#define MSG_ERR_IO "i/o" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_FORK "fork" +#define MSG_BIND "bind" +#define MSG_LISTEN "listen" +#define MSG_SOCKET "socket" +#define MSG_FCNTL "fcntl" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_TERMKILL "sigterm" +#define MSG_KILLBILL "sigkill" +#define MSG_INIT_MISS "init dir missing" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" + +struct listitem { + char *abs_path; + int status; + pid_t pid; + struct listitem *before; + struct listitem *after; +}; + + +/* variables */ +extern struct listitem *list; +extern int sock, logfd; + +/* functions (used by server and client) */ +void cerr(char *string, int status); +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +#define LOG(s) mini_printf(s,logfd) + +int do_start_svc(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* server functions */ +/* int chk_svc(char *svc); +int add_mod_svc(char *svc, char status, pid_t pid); */ +int list_insert(char *path, int status); +struct listitem *list_search(char *path); +int list_delete(char *path); +int run_init_svc(void); +void sigio(int signal); +void sig_reboot(int signal); +void panic(void); + +/* client / message functions */ +int msg_start_svc(char *svc); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +int run_run_svcs(char *abspath); +pid_t exec_svc(char *abspath, int on); +pid_t respawn_svc(char *abspath); +int connect_sock(int socke); +char **read_file(char *file); + +/* listing functions (server only) */ + +int list_insert(char *path, int status); +struct listitem *list_search(char *path); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); + + +/* DEBUG */ +#ifdef DEBUG +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) +#endif + +/* Messages to the outside */ diff --git a/software/cinit/browse_source/cinit-0.0.6/client/README b/software/cinit/browse_source/cinit-0.0.6/client/README new file mode 100644 index 00000000..0a5b8d0c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/client/README @@ -0,0 +1,2 @@ +client/ + These sources are used by the children which are spawned by cinit. diff --git a/software/cinit/browse_source/cinit-0.0.6/client/begin_msg.c b/software/cinit/browse_source/cinit-0.0.6/client/begin_msg.c new file mode 100644 index 00000000..9b569543 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/client/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror("i/o: command"); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/client/connect_sock.c b/software/cinit/browse_source/cinit-0.0.6/client/connect_sock.c new file mode 100644 index 00000000..831121b7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/client/connect_sock.c @@ -0,0 +1,41 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + D_PRINTF("socket verbinden"); + + /******************* begin socket *********************/ + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror("socket"); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + perror("connect"); + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/client/exec_svc.c b/software/cinit/browse_source/cinit-0.0.6/client/exec_svc.c new file mode 100644 index 00000000..fcbf818d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/client/exec_svc.c @@ -0,0 +1,246 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +pid_t exec_svc(char *abspath, int on) +{ + pid_t pid; + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + pid = fork(); + if( pid == -1 ) { + perror("fork"); + return 0; + } + + /***** PARENT ******/ + if(pid > 0) { + waitpid(pid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + D_PRINTF("EXEC SVC ERFOLGREICH"); + return pid; + } + } + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + + if(on) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + D_PRINTF(pathtmp); + + /* readlink retrieves real name, if it is a symlink */ + if ( (tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror("readlink"); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + + if(on) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + tmp++; /* the byte to add to memory for \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + + if(on) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror("open"); + _exit(1); + } + + argc = 0; + + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror("read"); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG("realloc failed"); + _exit(1); + } + + nargv[argc] = sbuf; + *p = '\0'; + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + argc++; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG("realloc failed"); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(on) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* if a file exists, failing to open it is an error */ + if(fd == -1) { + perror("open"); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror("read"); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG("realloc failed"); + _exit(1); + } + + nenv[argc] = sbuf; + *p = '\0'; + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + argc++; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + perror(MSG_ERR_EXECVE); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.0.6/client/kill_svc.c b/software/cinit/browse_source/cinit-0.0.6/client/kill_svc.c new file mode 100644 index 00000000..d9ce3a8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/client/kill_svc.c @@ -0,0 +1,104 @@ +KOPIE VON RUN_SVC + +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and beforeo all dependencies + */ +void kill_svc(char *rpath, pid_t pid) +{ + int tmp; + char svc[PATH_MAX], svcparams[PATH_MAX]; + struct stat buf; + + D_PRINTF("starte kill_svc"); + D_PRINTF(rpath); + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror("getcwd"); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror("chdir"); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + if( ! run_run_svcs(pathtmp) ) { + /* FIXME: add log + service name here */ + D_PRINTF("some NEEDED services failed)"); + msg_change_status(abspath, ST_FAIL, 0); + return 0; + } + + D_PRINTF("Starte wants"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawning"); + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + D_PRINTF("exec_unce"); + pid = exec_svc(abspath); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return 0; + } + + D_PRINTF("Melde status"); + if(!msg_change_status(abspath, tmp, pid) ) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/client/msg_change_status.c b/software/cinit/browse_source/cinit-0.0.6/client/msg_change_status.c new file mode 100644 index 00000000..837d87b6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/client/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +int msg_change_status(char *svc, char status, pid_t pid) +{ + D_PRINTF(svc); + + if(!begin_msg(CMD_CHG_STATUS)) return 0; + + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/client/msg_start_svc.c b/software/cinit/browse_source/cinit-0.0.6/client/msg_start_svc.c new file mode 100644 index 00000000..d7e8867c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/client/msg_start_svc.c @@ -0,0 +1,26 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +int msg_start_svc(char *svc) +{ + D_PRINTF(svc); + + D_PRINTF("writing message begin"); + if(!begin_msg(CMD_START_SVC)) return 0; + D_PRINTF("writing service infos"); + if(!do_start_svc(sock,svc,ACT_CLIENT)) return 0; + D_PRINTF("reading result"); + if(!do_result(sock,NULL)) return 0; + D_PRINTF("gutes ende"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/client/respawn_svc.c b/software/cinit/browse_source/cinit-0.0.6/client/respawn_svc.c new file mode 100644 index 00000000..6ac56043 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/client/respawn_svc.c @@ -0,0 +1,75 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +//#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int status; + int pipefd[2]; +// struct sigaction sa; + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&status,sizeof(status)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /******************** CHILD ********************/ +/* FIXME: add handling for SIGTERM! */ +// sa.sa_handler= ( (void*)(int) ) sig_terminate; +// sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + + status = 1; + if( write(pipefd[1],&status,sizeof(status)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + while( status ) { + D_PRINTF(abspath); + pid = exec_svc(abspath, status); + + waitpid(pid,&status,0); + + if( WIFEXITED(status) ) { + if( WEXITSTATUS(status) ) { /* non-zero exit status */ + /* sleep conf/c_sleep seconds on error exit */ + sleep(SLEEP_SVC); + D_PRINTF("schlecht gestorben"); + } + } else { + sleep(SLEEP_SVC); + D_PRINTF("nicht normal gestorben"); + } + } + + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.0.6/client/run_run_svc.c b/software/cinit/browse_source/cinit-0.0.6/client/run_run_svc.c new file mode 100644 index 00000000..9cea0f33 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/client/run_run_svc.c @@ -0,0 +1,77 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX]; + pid_t pids[MAX_DEPS]; + int status, i=0, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + i++; + } else { + LOG("to many dependencies"); + break; + } + + if(pids[i-1] == -1) { /* err */ + LOG("fork failed"); + return 0; + } + + if(pids[i-1] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,"/"); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } + } + + closedir(d_tmp); + + /* wait for pids */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + if( ! WIFEXITED(status)) { + ret = 0; + } + i--; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/client/run_svc.c b/software/cinit/browse_source/cinit-0.0.6/client/run_svc.c new file mode 100644 index 00000000..9c765cc0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/client/run_svc.c @@ -0,0 +1,111 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and beforeo all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror("getcwd"); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror("chdir"); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + /* FIXME: add log + service name here */ + D_PRINTF("some NEEDED services failed"); + msg_change_status(abspath, ST_FAIL, 0); + return 0; + } + } + + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + D_PRINTF("Starte wants"); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + /*FIXME: check for C_ON, otherwise we are done! */ + + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + tmp = 1; + pid = exec_svc(abspath, tmp); + tmp = ST_ONCE; + } + + D_PRINTF("Melde status"); + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return 0; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/client/sig_terminate.c b/software/cinit/browse_source/cinit-0.0.6/client/sig_terminate.c new file mode 100644 index 00000000..adff9748 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/client/sig_terminate.c @@ -0,0 +1,19 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include "cinit.h" +#include + +void sig_terminate(int signal) +{ + char *nargv[2]; + + nargv[0] = SULOGIN; + nargv[1] = NULL; + + execv(SULOGIN,nargv); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.0.6/comm/README b/software/cinit/browse_source/cinit-0.0.6/comm/README new file mode 100644 index 00000000..840c9742 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/comm/README @@ -0,0 +1,3 @@ +comm/ + The communication part of cinit. + The functions are used in client and in server code. diff --git a/software/cinit/browse_source/cinit-0.0.6/comm/do_change_status.c b/software/cinit/browse_source/cinit-0.0.6/comm/do_change_status.c new file mode 100644 index 00000000..08bac734 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/comm/do_change_status.c @@ -0,0 +1,69 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/comm/do_result.c b/software/cinit/browse_source/cinit-0.0.6/comm/do_result.c new file mode 100644 index 00000000..3bf78718 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/comm/do_result.c @@ -0,0 +1,32 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int sock2, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(sock2,value,1) == -1) { /* result */ + perror("i/o: result"); + return 0; + } + + return *value; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/comm/do_start_svc.c b/software/cinit/browse_source/cinit-0.0.6/comm/do_start_svc.c new file mode 100644 index 00000000..959a0001 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/comm/do_start_svc.c @@ -0,0 +1,49 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_start_svc(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror("i/o: len"); + return 0; + } + + if(tmp > PATH_MAX) return 0; + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror("i/o: service name"); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/.README b/software/cinit/browse_source/cinit-0.0.6/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/c_env b/software/cinit/browse_source/cinit-0.0.6/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/c_halt b/software/cinit/browse_source/cinit-0.0.6/conf/c_halt new file mode 100644 index 00000000..bc062a2c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/c_halt @@ -0,0 +1,4 @@ +halt + +Name of the service we should start when 'halting' (system stop, but no +power off). diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/c_init b/software/cinit/browse_source/cinit-0.0.6/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/c_needs b/software/cinit/browse_source/cinit-0.0.6/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/c_off b/software/cinit/browse_source/cinit-0.0.6/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/c_on b/software/cinit/browse_source/cinit-0.0.6/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/c_params b/software/cinit/browse_source/cinit-0.0.6/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/c_poweroff b/software/cinit/browse_source/cinit-0.0.6/conf/c_poweroff new file mode 100644 index 00000000..273d4bec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/c_poweroff @@ -0,0 +1,3 @@ +poweroff + +Name of the service we should start, when system power-off is called. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/c_reboot b/software/cinit/browse_source/cinit-0.0.6/conf/c_reboot new file mode 100644 index 00000000..17937b4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/c_reboot @@ -0,0 +1,3 @@ +reboot + +Name of the service we should start on reboot. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/c_respawn b/software/cinit/browse_source/cinit-0.0.6/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/c_sock b/software/cinit/browse_source/cinit-0.0.6/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/c_tmp b/software/cinit/browse_source/cinit-0.0.6/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.0.6/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.0.6/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/c_wants b/software/cinit/browse_source/cinit-0.0.6/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/cinit_dir b/software/cinit/browse_source/cinit-0.0.6/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/destdir b/software/cinit/browse_source/cinit-0.0.6/conf/destdir new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/destdir @@ -0,0 +1 @@ + diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/getty_dir b/software/cinit/browse_source/cinit-0.0.6/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/install_directory b/software/cinit/browse_source/cinit-0.0.6/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/install_prog b/software/cinit/browse_source/cinit-0.0.6/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/prefix b/software/cinit/browse_source/cinit-0.0.6/conf/prefix new file mode 100644 index 00000000..580ae0cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/prefix @@ -0,0 +1,4 @@ +/ + +Where to install cinit. Normally this will be /, but you can put in anywhere. +The subdirectory 'sbin' under this prefix must be reabable by the kernel. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/profile b/software/cinit/browse_source/cinit-0.0.6/conf/profile new file mode 100644 index 00000000..92fc35ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/profile @@ -0,0 +1,5 @@ +cprofile= + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile=" is the standard. +Under Linux you specify it to the bootloader like grub or lilo. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/sleep_kill b/software/cinit/browse_source/cinit-0.0.6/conf/sleep_kill new file mode 100644 index 00000000..de1fd006 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/sleep_kill @@ -0,0 +1,5 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/sleep_svc b/software/cinit/browse_source/cinit-0.0.6/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/sock_group b/software/cinit/browse_source/cinit-0.0.6/conf/sock_group new file mode 100644 index 00000000..d4c1adda --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/sock_group @@ -0,0 +1,3 @@ +root + +The group, which should own the communication socket. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/sock_mode b/software/cinit/browse_source/cinit-0.0.6/conf/sock_mode new file mode 100644 index 00000000..b2a727b0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/sock_mode @@ -0,0 +1,3 @@ +0770 + +Octal mode of socket. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/sock_queue b/software/cinit/browse_source/cinit-0.0.6/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/sock_user b/software/cinit/browse_source/cinit-0.0.6/conf/sock_user new file mode 100644 index 00000000..34274f4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/sock_user @@ -0,0 +1,3 @@ +root + +The one who should own the communication socket. diff --git a/software/cinit/browse_source/cinit-0.0.6/conf/sulogin b/software/cinit/browse_source/cinit-0.0.6/conf/sulogin new file mode 100644 index 00000000..0e8b13d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/conf/sulogin @@ -0,0 +1,3 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it only if we panic(). diff --git a/software/cinit/browse_source/cinit-0.0.6/doc/.buildwarn b/software/cinit/browse_source/cinit-0.0.6/doc/.buildwarn new file mode 100644 index 00000000..9c4a7dbf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/doc/.buildwarn @@ -0,0 +1,25 @@ + +------------- +W A R N I N G +------------- + +**************************************************************************** +THIS IS A PRE-RELEASE, NOT YET THOUGHT TO BE USED IN PRODUCTIVE ENVIRONMENT! +**************************************************************************** + +First of all configure cinit through the configuration files found in conf/. +Especially look at conf/*tmp*. + +The documentation can be found in doc/, read + + doc/configuring.cinit + +_before_ first use. + +After reading and configuring use: + + "make all" - to build cinit + "make install" - to install cinit + "make install-test" - to install cinit configuration example + -> WARNING: the last make target is highly experiemental and + the installed configuration may not be usable on your system! diff --git a/software/cinit/browse_source/cinit-0.0.6/doc/caveats b/software/cinit/browse_source/cinit-0.0.6/doc/caveats new file mode 100644 index 00000000..11d7a68f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/doc/caveats @@ -0,0 +1,43 @@ +'Geheimnisse' in German + + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporary disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster, if you omit non needed + 'wants' and 'needs' dirs, as they need to be scanned, if they + exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that noone + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what todo when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status diff --git a/software/cinit/browse_source/cinit-0.0.6/doc/cinit.commands b/software/cinit/browse_source/cinit-0.0.6/doc/cinit.commands new file mode 100644 index 00000000..7f606f4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/doc/cinit.commands @@ -0,0 +1,92 @@ +-------------------------------------------------------------------------------- +cinit commands, Nico Schottelius 2005-04-28 +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (uses SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service and its dependencies. + CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell.**) + CMD_INIT: Start all services (again possibly).**) + + CMD_HALT: Halt the system*) + CMD_REBOOT: Reboot the system*) + CMD_POWEROFF: Power-off the system*) + + *) The commands are not and maybe will never be implemented, + as they are realized another way (using signals). + + **) Not yet implemented. + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) ok, a SID, a service ID: int svc_id; [ really need int? ] + b) fail, [currently only fail is returned] + a) already running + b) svc_name too long / not allowed + + [ A service identification is used for faster searching in cinit. + It is also a hint for developers of external software, that they should not + be able to use CMD_CHG_STATUS, if they didn't start a service. + They should use CMD_STOP_SVC to stop a service. + Starting a service is currently done via exec() in the external program or + a cinit-fork(). ] + +CMD1CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_INIT: Start all services (again possibly). + cinit returns: ready... + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. diff --git a/software/cinit/browse_source/cinit-0.0.6/doc/configuring.cinit b/software/cinit/browse_source/cinit-0.0.6/doc/configuring.cinit new file mode 100644 index 00000000..1723a5e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/doc/configuring.cinit @@ -0,0 +1,179 @@ +-------------------------------------------------------------------------------- +configuring cinit, Nico Schottelius 2005-05-28 (Last Modified: 2005-06-05) +-------------------------------------------------------------------------------- + +0. Pre-compile configuration +1. General configuration layout +2. Hints +2.0 Service executing / parameters +2.1 Daemons +2.2 Logging +2.3 Using prepared scripts +3. Profiles + + +0. Pre-compile configuration + +Have a look at conf/*. Those variable will mostly be used when +compiling cinit. Some will be read later (like destdir). + +1. General configuration layout + +/etc/cinit (configurable via conf/cinit_dir) stores the complete +cinit configuration. + +cinit is service based. +A service consists of + - a base directory (like /etc/cinit/getty/1) + - dependency configuration: + + ./wants - services it wants to be started before (but it + will work anyway) + + ./needs/ - services it needs. If those services fail, this service + won't be started + + - a flag indicating whether to respawn the service: + + ./respawn (simply touch it) + + - the program to run when switching the service on and off: + + ./on (a link to a program or a shell script) + ./on.params (see conf/c_params, the parameters to pass to the program) + ./on.env (see conf/c_env, the environment to pass to the program) + + ./off (call that when shutting down the service) + ./off.params (the parameters to pass to the program) + ./on.env (the environment to pass to the program) + +You should have a look at the samples/ directory for examples. + +If things are missing, cinit will continue with what's available. +This way you only need the files you use. Some examples: + + /etc/cinit/init: + ./wants -> services it wants + ./needs -> services it needs + That's everything + + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it + That's everything, as it has no dependencies + + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn on service + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting + + +2. Hints + +2.0 Service executing / parameters + +The on and off files can and should be links to the programs you want +to execute. This way you save yourself loading the big shell (which is +on many Linux systems bash, why so ever, dash does the job as good, still +beeing small). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. The on script +could look like: + + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). + + +2.1 Daemons + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking + ( The following daemons / servers are known to do that easily: + openssh [ssh server]: -D + bind [dns server/caching]: -f + syslogd [log server]: -n + isc-dhcp3 [dhcp server]: -f + qmail [mta]: normal behaviour + tcpserver [super server]: normal behaviour + xinetd [super server]: -dontfork + openvpn [vpn server]: normal behaviour + oops [http proxy]: normal behaviour + frox [ftp proxy]: "NoDetach" in config + proftpd [ftp server]: -n + vsftpd [ftp server]: normal behaviour (or: config: background=no) + distccd [compile server]: normal behaviour + monotone [vcs]: normal behaviour + cupsd [printer server]: -f or -F + mini-lpd [printer server]: normal behaviour + + And those daemons do not offer the possibility (as of release 0.0.6): + + - apache (only with debug mode) + - portmap (only with debug mode) + - inetd (some variants) + ) + + +The other possibility is to use a program, which will + a) start the daemon + b) look into the pidfile of the daemon + c) will then wait until that pid does not exist anymore + d) and then it exits and cinit will restart it (goto a) now) + +Such a program will be included into one of the next cinit releases, +though I do not recommend using it. You should better contact the +authors and make them implement a clean non-forking mode. + + +2.2 Logging + +Currently there's no special logging support. +When programs write to stdout, it will be displayed on +the same stdout cinit is connected to +(we don't even open /dev/console - we are too lazy currently). + + +2.3 Using prepared scripts + +In the bin/ directory of this tarball you'll find: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + + +3. Profiles + +Since cinit-0.0.6 there is profile in cinit. +Profiles are described in doc/profile.support. + +X. Examples + +Todo. + +X.0 Getty +X.1 OpenSSH diff --git a/software/cinit/browse_source/cinit-0.0.6/doc/fun/testing01 b/software/cinit/browse_source/cinit-0.0.6/doc/fun/testing01 new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/doc/fun/testing01 @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.0.6/doc/how_it_works_internally b/software/cinit/browse_source/cinit-0.0.6/doc/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/doc/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.0.6/doc/ipc.thoughts b/software/cinit/browse_source/cinit-0.0.6/doc/ipc.thoughts new file mode 100644 index 00000000..d7352559 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/doc/ipc.thoughts @@ -0,0 +1,74 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, Nico Schottelius 2005-04-28 +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2), +1024=max fds, -3=already opened (stderr/stdin/stdout), /2= +two fds needed per clients). + +Pipes cannot be use easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR. + +That way, we are forced to mount a temporary filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt and + - poweroff. + +Simple send cinit a signal, what todo: + SIGUSR1: reboot + SIGUSR2: poweroff + TERM: halt + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.0.6/doc/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.0.6/doc/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/doc/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.0.6/doc/merging.other.initsystems b/software/cinit/browse_source/cinit-0.0.6/doc/merging.other.initsystems new file mode 100644 index 00000000..9dd65218 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/doc/merging.other.initsystems @@ -0,0 +1,64 @@ +-------------------------------------------------------------------------------- +Merging other init systems to cinit +Nico Schottelius 2005-06-02 +-------------------------------------------------------------------------------- + +1. Preamble +2. General todo +3. Create a script + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not exclude that he accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much +appreciated. + + +2. General todo + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.0.6/doc/meta.dependencies b/software/cinit/browse_source/cinit-0.0.6/doc/meta.dependencies new file mode 100644 index 00000000..f599e37c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/doc/meta.dependencies @@ -0,0 +1,55 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, on would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation. + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +it does not need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ diff --git a/software/cinit/browse_source/cinit-0.0.6/doc/porting.to.other.os b/software/cinit/browse_source/cinit-0.0.6/doc/porting.to.other.os new file mode 100644 index 00000000..3a30809b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/doc/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporary filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.0.6/doc/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.0.6/doc/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/doc/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.0.6/doc/profile.support b/software/cinit/browse_source/cinit-0.0.6/doc/profile.support new file mode 100644 index 00000000..ab35e494 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/doc/profile.support @@ -0,0 +1,46 @@ +-------------------------------------------------------------------------------- +Profiles +Nico Schottelius 2005-06-04 +-------------------------------------------------------------------------------- + +1. What are profiles? +2. How to use profiles? +3. How to configure profiles? + +1. What are profiles? + +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +2. How to use profiles? + +Simply pass 'cprofile=PROFILENAME' (like cprofile=home) to cinit. +How to pass argumenents to cinit? Under Linux the init-system +gets the kernel arguments as arguments. So you can use + + kernel /usr/src/linux/vmlinuz cprofile=work (grub) + append="cprofile=work" (LILO) + +Other Unices should work like Linux, please consult your local +documentation. + +3. How to configure profiles? + +It's very simple: Normally cinit would call /etc/cinit/init as +primary service and solve all dependencies. If you pass +cprofile=wireless to it, cinit will start /etc/cinit/wireless as +primary service instead. + +So the only thing you have to do is to create a service directory +below /etc/cinit with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit; rsync -a init yourprofile + (standard cp will copy the linked files, not the links, that's + why I use rsync) + +That's it! diff --git a/software/cinit/browse_source/cinit-0.0.6/doc/thoughts.closed b/software/cinit/browse_source/cinit-0.0.6/doc/thoughts.closed new file mode 100644 index 00000000..1da4bebe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/doc/thoughts.closed @@ -0,0 +1,24 @@ +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporary fs before. + diff --git a/software/cinit/browse_source/cinit-0.0.6/doc/thoughts.open b/software/cinit/browse_source/cinit-0.0.6/doc/thoughts.open new file mode 100644 index 00000000..5e0a054c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/doc/thoughts.open @@ -0,0 +1,14 @@ +- Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. + +- Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. diff --git a/software/cinit/browse_source/cinit-0.0.6/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.0.6/generic/mini_printf.c new file mode 100644 index 00000000..d384e717 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/generic/mini_printf.c @@ -0,0 +1,20 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * print string + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + p = str; + while ( *p != '\0') { + write(fd,p,1); + p++; + } + + write(fd,"\n",1); /* FIXME: only when console */ +} diff --git a/software/cinit/browse_source/cinit-0.0.6/generic/set_signals.c b/software/cinit/browse_source/cinit-0.0.6/generic/set_signals.c new file mode 100644 index 00000000..aa3233b6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/generic/set_signals.c @@ -0,0 +1,45 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +#include +#include +#include "cinit.h" + +void set_signals(int action) +{ + struct sigaction sa; + + if(action == ACT_SERV) { + sa.sa_handler=SIG_IGN; + } else { + sa.sa_handler=SIG_DFL; + } + sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + sigaction(SIGUSR2,&sa,NULL); /* USR2 */ + sigaction(SIGQUIT,&sa,NULL); /* QUIT... */ + sigaction(SIGTTIN,&sa,NULL); + sigaction(SIGTTOU,&sa,NULL); + + /* sigio is called to act on the socket */ + if(action == ACT_SERV) { + sa.sa_handler=sigio; + } + sigaction(SIGIO,&sa,NULL); + + /* signal handlers to do special things with: reboot */ + if(action == ACT_SERV) { + sa.sa_handler=sig_reboot; + } +// sigaction(SIGINT,&sa,NULL); /* FIXME: Testing only: ctr+c = REBOOT!!! */ + sigaction(SIGUSR1,&sa,NULL); + sigaction(SIGTERM,&sa,NULL); + sigaction(SIGHUP,&sa,NULL); + + /* sigstop can't be ignored, do the manpages say */ + /* sigaction(SIGSTOP,&sa,NULL); */ +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/add_mod_svc.c b/software/cinit/browse_source/cinit-0.0.6/old/add_mod_svc.c new file mode 100644 index 00000000..c74778d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/add_mod_svc.c @@ -0,0 +1,42 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * add_svc + * part of cinit + */ + +#include + +#include "cinit.h" + +/* we return the service id or -1 on error*/ +int add_mod_svc(char *svc, char status, pid_t pid) +{ + int tmp = 0; + + /* check if service exists, if so, set new status, return sid */ + tmp = chk_svc(svc); + if( tmp != -1 ) { + svc_list.svca[tmp].status = status; + return tmp; + } + + /* still here? than there is no such service */ + if(svc_list.process < MAX_SVC) { + printf("[%d]: %s (%d)\n",svc_list.process,svc,pid); + svc_list.svca[svc_list.process].abs_path = strdup(svc); + + if(svc_list.svca[svc_list.process].abs_path == NULL) { + LOG("strdup failed!"); + return -1; + } + svc_list.svca[svc_list.process].pid = pid; + /* inkrement later, as we count argv[0..n] */ + (svc_list.process)++; + } else { + LOG("too many services"); + return -1; + } + + /* return _our_ service id */ + return (svc_list.process -1); +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/cerr.c b/software/cinit/browse_source/cinit-0.0.6/old/cerr.c new file mode 100644 index 00000000..b9dec472 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/cerr.c @@ -0,0 +1,36 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * print error to stderr and exist + */ + +#include +#include "cinit.h" + +void cerr(char *string, int status) +{ + char *p; + + p = string; + while ( *p != '\0') { + write(2,p,1); + p++; + } + write(2,"\n",1); + + switch(status) { + case RT_CHLD_FAIL: + case RT_CHLD_OK: + _exit(status); + ;; + case RT_PAR_FAIL: /* FIXME: if status is RT_PAR_FAIL, start sulogin */ + _exit(23); + ;; + case RT_PAR_OK: + return; + ;; + } + +/* FIXME: return if in cinit, _exit on fork() */ +// if(...) +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/cinit.add.shutdown.reboot.poweroff b/software/cinit/browse_source/cinit-0.0.6/old/cinit.add.shutdown.reboot.poweroff new file mode 100644 index 00000000..23cae705 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/cinit.add.shutdown.reboot.poweroff @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add shutdown/reboot/poweroff service + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +# create halt, link reboot and poweroff to it +mkdir "$BASEDIR/$C_HALT" +ln -s "$C_HALT" "$BASEDIR/$C_REBOOT" +ln -s "$C_HALT" "$BASEDIR/$C_POWEROFF" diff --git a/software/cinit/browse_source/cinit-0.0.6/old/cinit.c01 b/software/cinit/browse_source/cinit-0.0.6/old/cinit.c01 new file mode 100644 index 00000000..e3890013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/cinit.c01 @@ -0,0 +1,105 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +#define CINIT_DIR "/etc/cinit" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "needs" +#define C_WANTS "wants" + +/* opendir() */ +#include +#include + +/* *stat() */ +#include +#include + + +#include + +#define EKEL "/etc/cinit/init/wants" + +void cerr(char *msg) +{ + printf("%s\n", msg); +} + +/* + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + + /* check if already running / ran / currently starting */ + + /* check for needs -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es, %s\n", pathbuf); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) printf("dir gibt es, %s\n", pathbuf); + + d_tmp = opendir(path); + + if(d_tmp == NULL) { + cerr("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} + +int main() +{ + + char buf[256]; + int tmp; + + strcpy(buf,CINIT_DIR); + tmp = strlen(CINIT_DIR); + buf[tmp] = '/'; + strcpy(&buf[tmp+1],C_INIT); + + printf("path: %s\n",buf); + + run_svc("/etc/cinit/init"); + + run_svc("/etc/cinit2/init"); + + run_svc("/NOT_THERE"); + +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/cinit.c02 b/software/cinit/browse_source/cinit-0.0.6/old/cinit.c02 new file mode 100644 index 00000000..7e5432b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/cinit.c02 @@ -0,0 +1,198 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +#define CINIT_DIR "/etc/cinit" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "needs" +#define C_WANTS "wants" +#define C_RUN "run" + +/* opendir() */ +#include +#include + +/* *stat() */ +#include +#include + +/* wait() */ +#include + +/* strlen */ +#include + +#include + +#define EKEL "/etc/cinit/init/wants" + +void cerr(char *msg) +{ + printf("%s\n", msg); +} + +/*********************************************************************** + * parallel run forked() run_svc() + */ +#define MAX_PAR 32 + +int run_run_svcs(char *rpath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + pid_t pids[MAX_PAR]; + int tmp,i=0; + + printf("run_run_svcs on: %s\n",rpath); + + d_tmp = opendir(rpath); + + if(d_tmp == NULL) { + printf("Failed to open dir: %s", rpath); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 + || strcmp(tdirent->d_name, "..") == 0) + continue; + + if(i < MAX_PAR) { + pids[i] = fork(); + i++; + } else { + cerr("to many dependencies"); + return 1; + } + + if(pids[i-1] == -1) { /* err */ + cerr("fork failed\n"); + return 0; + } else if(pids[i-1] == 0) { /* child */ + printf("Service zu starten nun: %s\n", tdirent->d_name); + run_svc(tdirent->d_name); + _exit(0); + } else /* the parent simply goes the loop again */ + printf("run_svcs_PARENT\n"); + } + + closedir(d_tmp); + + /* wait for pids */ + while(i >= 0) { +// printf("waiting for %d ... \n",i); + waitpid(pids[i], &tmp, 0); + i--; + } +} + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check if already running / ran / currently starting */ + + /* check for service dir */ + if( stat(path,&buf) ) { + printf("no such service: %s\n", path); + return 1; + } + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + cerr("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + + char buf[256]; + int tmp; + + strcpy(buf,CINIT_DIR); + tmp = strlen(CINIT_DIR); + buf[tmp] = '/'; + strcpy(&buf[tmp+1],C_INIT); + + printf("path: %s\n",buf); + + run_svc("/etc/cinit/init"); + + run_svc("/NOT_THERE"); + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/cinit.c03 b/software/cinit/browse_source/cinit-0.0.6/old/cinit.c03 new file mode 100644 index 00000000..c1b5eb42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/cinit.c03 @@ -0,0 +1,241 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +#define CINIT_DIR "/etc/cinit" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "needs" +#define C_WANTS "wants" +#define C_RUN "run" + +/* opendir() */ +#include +#include + +/* *stat() */ +#include +#include + +/* wait() */ +#include + +/* strlen */ +#include + +#include + +#include "cinit.h" + +#define EKEL "/etc/cinit/init/wants" + +/* status of a service */ +#define ST_TMP 1 /* currently working on it */ +#define ST_ONCE 2 /* executed once */ +#define ST_RESPAWN 3 /* running and respawning */ + +/* array of svc */ +/* linked list of services */ +/* balanced trees */ +struct svc { + char *abs_path; +// struct svc *next; + int status; /* tmp, respawn, ran once */ + /* evtl: */ +}; + +struct svcl { + struct svc svc_list[1000]; + int process; +} svc_list; + +void cerr(char *msg) +{ + printf("%s\n", msg); +} + +/*********************************************************************** + * parallel run forked() run_svc() + */ +#define MAX_PAR 32 + +int run_run_svcs(char *rpath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + pid_t pids[MAX_PAR]; + int tmp,i=0; + + printf("run_run_svcs on: %s\n",rpath); + + d_tmp = opendir(rpath); + + if(d_tmp == NULL) { + printf("Failed to open dir: %s", rpath); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 + || strcmp(tdirent->d_name, "..") == 0) + continue; + + if(i < MAX_PAR) { + pids[i] = fork(); + i++; + } else { + cerr("to many dependencies"); + return 1; + } + + if(pids[i-1] == -1) { /* err */ + cerr("fork failed\n"); + return 0; + } else if(pids[i-1] == 0) { /* child */ + printf("Service zu starten nun: %s\n", tdirent->d_name); + run_svc(tdirent->d_name); + _exit(0); + } else /* the parent simply goes the loop again */ + printf("run_svcs_PARENT\n"); + } + + closedir(d_tmp); + + /* wait for pids */ + while(i >= 0) { +// printf("waiting for %d ... \n",i); + waitpid(pids[i], &tmp, 0); + i--; + } +} + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check if already running / ran / currently starting */ + + /* debug */ + getcwd(pathbuf,1024); + + printf("dir: %s\n",pathbuf); + + /* check for service dir */ + if( stat(path,&buf) ) { + printf("no such service: %s\n", path); + return 1; + } + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + cerr("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + char pathbuf[MAXPATH]; + struct stat buf; + + strcpy(pathbuf,CINIT_DIR); + strcat(pathbuf,"/"); + strcat(pathbuf,C_INIT); + + printf("path: %s\n",pathbuf); + + svc_list.process = 0; + + /* stat, checkdir */ + if( stat(pathbuf,&buf) ) { + printf("PANIC ACTION: init dir missing\n"); + return 1; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("PANIC ACTION: init is not a dir\n"); + return 1; + } + + if( chdir(pathbuf) == -1) { + printf("PANIC ACTION: chdir(%s) failed!\n",pathbuf); + return 1; + } + run_svc("/etc/cinit/init"); +// run_svc(""); + +// run_svc("/NOT_THERE"); + +// execl("/bin/zsh","zsh", "-l"); + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/cinit.c04 b/software/cinit/browse_source/cinit-0.0.6/old/cinit.c04 new file mode 100644 index 00000000..983c03eb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/cinit.c04 @@ -0,0 +1,130 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* printf() */ +//#include + +/* str* */ +#include + +#include "cinit.h" + +/* global variable */ +struct svcl svc_list; +int f_in, f_out; + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + char pathbuf[PATH_MAX]; + char buf[1223]; + struct stat sbuf; + int i; + + struct sigaction sa; + + /* signal handlers to ignore */ + sa.sa_handler=SIG_IGN; +// sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGSTP,&sa,NULL); /* ignore ctr+z, stop */ + + D_PRINTF(CINIT_INIT); + + /* count of started processes */ + svc_list.process = 0; + + /* begin to handle signals */ + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + cerr("PANIC ACTION: init dir missing", RT_PAR_FAIL); + } else if( ! S_ISDIR(sbuf.st_mode) ) { + cerr("PANIC ACTION: init is not a dir", RT_PAR_FAIL); + } + + if( chdir(CINIT_INIT) == -1) + cerr("PANIC ACTION: chdir to /etc/cinit/init failed!",RT_PAR_FAIL); + + /* open communication fifos */ + f_in = open(CINIT_DIR SLASH F_IN, O_RDWR); + f_out = open(CINIT_DIR SLASH F_OUT, O_RDWR); + if(f_in == -1 || f_out == -1) cerr("opening fifo failed\n",RT_PAR_FAIL); + + /* initial run, only if we are 'real' init' */ +// if( getpid() == 1) { + i = run_init_svc(); + printf("Initialer Start rueckgabe: %d\n", i); +// } + + /* signal handlers to do special things with */ + // something else sa.sa_handler=SIG_IGN; + sigaction(SIGUSR1,&sa,NULL); /* reboot on sigusr1 */ + sigaction(SIGUSR1,&sa,NULL); /* power-off on sigusr2 */ + sigaction(SIGTERM,&sa,NULL); /* halt on sigterm */ + + /* important signal handlers: pipe, child */ +// sa.sa_handler=sig_pipe; +// sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + +// sa.sa_handler=sig_child; +// sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + + + /* big TODO: */ + + /* some while/for loop to hang forever, remember, we are init! */ + while(1) { + i=0; + /* read path */ + do { + read(f_in,&buf,1); +// buf1[i] = buf; i++; + } while(buf != '\0'); +// + // printf("Read path: %s\n",buf1); + + i=0; + /* read status */ + do { + read(f_in,&buf,1); + // buf2[i] = buf; i++; + } while(buf != '\0'); + + // status = atoi(buf2); + // printf("Read status: %d\n",status); + + i=0; + /* read pid */ + do { + read(f_in,&buf,1); + // buf3[i] = buf; i++; + } while(buf != '\0'); + + // pid = atoi(buf3); + + + + } + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/cinit.c05 b/software/cinit/browse_source/cinit-0.0.6/old/cinit.c05 new file mode 100644 index 00000000..8dec1f46 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/cinit.c05 @@ -0,0 +1,137 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* printf() */ +//#include + +/* str* */ +#include + +#include "cinit.h" + +/* global variable */ +struct svcl svc_list; + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + char buf[1223]; + struct stat sbuf; + int i; + + struct sigaction sa; + + /* signal handlers to ignore */ + sa.sa_handler=SIG_IGN; +// sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGSTOP,&sa,NULL); /* ignore ctr+z, stop */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + + D_PRINTF(CINIT_INIT); + + /* begin to handle signals */ + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + cerr("PANIC ACTION: init dir missing", RT_PAR_FAIL); + } else if( ! S_ISDIR(sbuf.st_mode) ) { + cerr("PANIC ACTION: init is not a dir", RT_PAR_FAIL); + } + + if( chdir(CINIT_INIT) == -1) + cerr("PANIC ACTION: chdir to /etc/cinit/init failed!",RT_PAR_FAIL); + + /* get shared memory */ + + shmfd = shm_open(CINIT_SHM,O_RDWR|O_CREAT,0600); + + if(shmfd == -1) { + perror("Shared memory"); + cerr("shared memory",RT_PAR_FAIL); + } + + /* count of started processes */ + svc_list.process = 0; + + /* open communication fifos */ + f_in = open(CINIT_DIR SLASH F_IN, O_RDWR); + f_out = open(CINIT_DIR SLASH F_OUT, O_RDWR); + if(f_in == -1 || f_out == -1) cerr("opening fifo failed",RT_PAR_FAIL); + + /* initial run, only if we are 'real' init' */ +// if( getpid() == 1) { + i = run_init_svc(); + printf("Initialer Start rueckgabe: %d\n", i); +// } + + /* signal handlers to do special things with */ + // something else sa.sa_handler=SIG_IGN; + sigaction(SIGUSR1,&sa,NULL); /* reboot on sigusr1 */ + sigaction(SIGUSR1,&sa,NULL); /* power-off on sigusr2 */ + sigaction(SIGTERM,&sa,NULL); /* halt on sigterm */ + + /* important signal handlers: pipe, child */ +// sa.sa_handler=sig_pipe; + +// sa.sa_handler=sig_child; +// sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + + + /* big TODO: */ + + /* some while/for loop to hang forever, remember, we are init! */ + while(1) { + i=0; + /* read path */ + do { + read(f_in,&buf,1); +// buf1[i] = buf; i++; + } while(buf != '\0'); +// + // printf("Read path: %s\n",buf1); + + i=0; + /* read status */ + do { + read(f_in,&buf,1); + // buf2[i] = buf; i++; + } while(buf != '\0'); + + // status = atoi(buf2); + // printf("Read status: %d\n",status); + + i=0; + /* read pid */ + do { + read(f_in,&buf,1); + // buf3[i] = buf; i++; + } while(buf != '\0'); + + // pid = atoi(buf3); + + + + } + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/cinit.c06 b/software/cinit/browse_source/cinit-0.0.6/old/cinit.c06 new file mode 100644 index 00000000..c48de22c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/cinit.c06 @@ -0,0 +1,158 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* printf() */ +//#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* global variable */ +struct svcl svc_list; +int sock; + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int signal) +{ + struct ucred suck; + int len = sizeof(suck), lens; + int nsock; + struct sockaddr_un sun; + char buf; + + lens=sizeof(sun); + memset(&sun,0,lens); + +/* this is always us! */ +// getsockopt(sock, SOL_SOCKET, SO_PEERCRED, &suck, &len); +// printf("orig angreifer: pid: %d uid: %d gid: %d\n",suck.pid,suck.uid,suck.gid); + + do { + //s_tmp[s_idx] = accept(sock,(struct sockaddr *) &sun, (socklen_t *) &lens); + nsock = accept(sock,(struct sockaddr *) NULL, (socklen_t *) NULL); + + // nsock = accept(sock,(struct sockaddr *) &sun, (socklen_t *) &lens); +// if( s_tmp[s_idx] == -1) { + if( nsock == -1) { + if (errno != EAGAIN) { + perror("accept"); + _exit(1); + } else { + break; + } + } + + //getsockopt(s_tmp[s_idx], SOL_SOCKET, SO_PEERCRED, &suck, &len); + getsockopt(nsock, SOL_SOCKET, SO_PEERCRED, &suck, &len); + printf("angreifer: pid: %d uid: %d gid: %d\n",suck.pid,suck.uid,suck.gid); + + + read(nsock,&buf,1); + + printf("command: %d\n",buf); + + while ( (len = read(nsock,&buf,1)) ) { +// printf("laenge: %d\n",len); + if(len == -1) { +// if(errno != EINVAL && errno != EAGAIN) { + perror("read"); + return; +// _exit(1); +// } + } + if(buf == 0) break; + write(1,&buf,1); + } + printf("Fertig mit lesen\n"); + + write(nsock,"ok\n",4); + printf("fertig mit schreiben\n"); + } while ( 1 ); + + printf("keine sockets mehr da..., sigio beendet sich jetzt.\n"); +} + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + struct stat sbuf; + int i; + + struct sigaction sa; + + /* signal handlers to ignore */ + sa.sa_handler=SIG_IGN; +// sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGSTOP,&sa,NULL); /* ignore ctr+z, stop */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + + sa.sa_handler=sigio; + sigaction(SIGIO,&sa,NULL); /* what todo when data arrived on socket */ + + D_PRINTF(CINIT_INIT); + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + cerr("PANIC ACTION: init dir missing", RT_PAR_FAIL); + } else if( ! S_ISDIR(sbuf.st_mode) ) { + cerr("PANIC ACTION: init is not a dir", RT_PAR_FAIL); + } + + if( chdir(CINIT_INIT) == -1) + cerr("PANIC ACTION: chdir to /etc/cinit/init failed!",RT_PAR_FAIL); + + /* count of started processes */ + svc_list.process = 0; + + /* initial run, only if we are 'real' init' */ +// if( getpid() == 1) { + i = run_init_svc(); + printf("Initialer Start rueckgabe: %d\n", i); +// } + + /* signal handlers to do special things with */ + // something else sa.sa_handler=SIG_IGN; +// sigaction(SIGUSR1,&sa,NULL); /* reboot on sigusr1 */ +// sigaction(SIGUSR1,&sa,NULL); /* power-off on sigusr2 */ +// sigaction(SIGTERM,&sa,NULL); /* halt on sigterm */ + + /* the main loop */ + while(1) ; + +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/cinit.commands.v01 b/software/cinit/browse_source/cinit-0.0.6/old/cinit.commands.v01 new file mode 100644 index 00000000..dfdb67c5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/cinit.commands.v01 @@ -0,0 +1,85 @@ +-------------------------------------------------------------------------------- +cinit commands, Nico Schottelius 2005-04-28 +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (uses SO_PEERCRED as +socketoption). + +The communication-protocol is binary. + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service and its dependencies. + CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_INIT: Start all services (again possibly). + + CMD_HALT: Halt the system. + CMD_REBOOT: Reboot the system. + CMD_POWEROFF: Power-off the system. + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) ok, a SID, a service ID: int svc_id; [ really need int? ] + b) fail, [currently only fail is returned] + a) already running + b) svc_name too long / not allowed + + [ A service identification is used for faster searching in cinit. + It is also a hint for developers of external software, that they should not + be able to use CMD_CHG_STATUS, if they didn't start a service. + They should use CMD_STOP_SVC to stop a service. + Starting a service is currently done via exec() in the external program or + a cinit-fork(). ] + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int svc_id; /* service ID to change */ + 1. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit uncgrafully + UNUSED! respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_INIT: Start all services (again possibly). + cinit returns: ready... + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. diff --git a/software/cinit/browse_source/cinit-0.0.6/old/cinit.create.cinit_dir b/software/cinit/browse_source/cinit-0.0.6/old/cinit.create.cinit_dir new file mode 100644 index 00000000..6fd58adb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/cinit.create.cinit_dir @@ -0,0 +1,11 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create our initial directory +# 2005-05-24 + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +mkdir -p $BASEDIR diff --git a/software/cinit/browse_source/cinit-0.0.6/old/cinit.h01 b/software/cinit/browse_source/cinit-0.0.6/old/cinit.h01 new file mode 100644 index 00000000..e07fa2c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/cinit.h01 @@ -0,0 +1,80 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * header of cinit + */ + +/* includes */ +#include /* pid_t */ + +/* limits */ +#define MAX_SVC 1024 /* maximum services */ +#define MAX_DEPS 32 /* maximum direct dependencies of a service */ + +/* paths */ +#define CINIT_DIR "/etc/cinit" + +#define F_IN "in" +#define F_OUT "out" +#define SLASH "/" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "./needs" +#define C_WANTS "./wants" +#define C_RUN "./run" +#define C_RESPAWN "respawn" +#define C_PARAMS "params" + +/* return values */ +#define RT_FAIL 0 +#define RT_OK 1 + +#define RT_CHLD_FAIL 1 /* child failed */ +#define RT_CHLD_OK 2 /* child succeded */ +#define RT_PAR_FAIL 3 /* parent failed */ +#define RT_PAR_OK 4 /* parent succeded */ + +/* status of a service-starter (run_run_svc) */ +#define RT_ONE_FAILED 5 /* one ore more failed */ +#define RT_ALL_STARTED 6 /* everything ok */ +#define RT_DEPS_MAX 7 /* too many dependencies */ + +/* status of a service */ +#define ST_NO 0 /* process not existing */ +#define ST_TMP 1 /* currently working on it */ +#define ST_ONCE 2 /* executed once */ +#define ST_RESPAWN 3 /* running and respawning */ +#define ST_FAIL 4 /* failed to start service */ + + + +/* variables */ + +/* array of svc */ +/* linked list of services */ +/* balanced trees */ + +struct svc { + char *abs_path; /* service identifier */ + int status; /* tmp, respawn, ran once */ + pid_t pid; /* pid of the process */ +}; + +struct svcl { + struct svc svca[MAX_SVC]; + int process; +}; + +extern struct svcl svc_list; + +/* functions */ + +void cerr(char *string, int status); +int chk_svc(char *svc); +int run_svc(char *rpath); +int add_mod_svc(char *svc, int status); +int run_run_svcs(char *rpath); + diff --git a/software/cinit/browse_source/cinit-0.0.6/old/cnt_digits.c b/software/cinit/browse_source/cinit-0.0.6/old/cnt_digits.c new file mode 100644 index 00000000..a692fa5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/cnt_digits.c @@ -0,0 +1,42 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* this code is stolen from gpm */ + +/* what's the english name for potenz ? */ +int x_high_y(int base, int pot_y) +{ + int val = 1; + + if(pot_y == 0) val = 1; + else if(pot_y < 0) val = 0; /* ugly hack ;) */ + else while(pot_y > 0) { + val = val * base; + pot_y--; + } + return val; +} + +/* return characters needed to display int */ +int cnt_digits(int number) +{ + /* 0-9 = 1 10^0 <-> (10^1)-1 + * 10 - 99 = 2 10^1 <-> (10^2)-1 + * 100 - 999 = 3 10^2 <-> (10^3)-1 + * 1000 - 9999 = 4 ... */ + + int ret = 0, num = 0; + + /* non negative, please */ + if(number < 0) number *= -1; + else if(number == 0) ret = 1; + else while(number > num) { + ret++; + num = (x_high_y(10,ret) - 1); + } + + return(ret); +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/do_change_status.c01 b/software/cinit/browse_source/cinit-0.0.6/old/do_change_status.c01 new file mode 100644 index 00000000..74bb9c1e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/do_change_status.c01 @@ -0,0 +1,65 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + char buf = CMD_CHG_STATUS; + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + D_PRINTF("VERSUCHE STATUS ZU AENDERN"); + printf("socket: %d (cmd=%d)\n",sock2, buf); + + if(action == ACT_READ) { + D_PRINTF("Leeeese"); + fpoint = read; + } else { + D_PRINTF("schreibe"); + fpoint = write; /* don't care about warnings! */ + } + + if(action == ACT_WRITE) { + D_PRINTF("schreibe kommando"); + if(fpoint(sock2,&buf,1) == -1) { /* COMMAND */ + perror("command i/o"); + return 0; + } + tmp = strlen(svc); + sock2 = connect_sock(sock2); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror("i/o: length"); + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror("i/o: service name"); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror("i/o: status"); + printf("Status: %d, *status=%d, sizeof=%d\n",status,*status,sizeof(*status)); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror("i/o: PID"); + return 0; + } + + D_PRINTF("fertig mit statuswechsel lesen"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/idea01 b/software/cinit/browse_source/cinit-0.0.6/old/idea01 new file mode 100644 index 00000000..cf0df9d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/idea01 @@ -0,0 +1,121 @@ +-------------------------------------------------------------------------------- +/etc/cinit + -> init/ + -> shutdown/ + -> reboot/ + + + needs/ -> we wait until all parallel processes are finished _and_ we + don't start if one fails + wants/ -> we start all of them parallel and wait for them? + hold/ + wait -> wait until process finished + run -> program to execute + params -> \n seperated argument list + respawn -> respawn it + +services may only be under /etc/cinit? +-------------------------------------------------------------------------------- +Service-Status: + +- abs_path +- status (respawn,tmp,once) +-------------------------------------------------------------------------------- + +starting services: + +run_svc("/etc/cinit/service/") + -> exec run $params +Later: + -> check if service already running -> return OK + -> check needs/ -> check wants/ + -> run_svc($cur) + + When run_svc returns, the service is started and all service it needs, too. + + +-------------------------------------------------------------------------------- + -> check needs/ + -> exists -> fork( run_run_svcs() ) and continue + (fork) -> fork() run_svc(needs/*); + -> check wants/ + -> exists -> run_svc(wants/*); + -> waitfor(need_run_svc) +-------------------------------------------------------------------------------- +run_run_svcs() + -> start parallel (forked) run_svc() for every service +-------------------------------------------------------------------------------- + +main() + - run_svc /etc/cinit/init/ + - sleep()? -> simply do nothing -> do we need to fork ourselves? No, we are init. +spaeter: + - open /dev/console W_ONLY + - make stdin == /etc/cinit/in + - make stdout, stderr /dev/console + +-------------------------------------------------------------------------------- +eof + +Things, which are clear + +- we need to fork before execl(), as excel() replaces us. +- chdir() _after_ fork() + + +profiles support: profile=$profile + + start + "service.$profile" if exists, instead of + "service" + +starting services: + +cinit: + pipe() + set_status_tmp() + fork() --> failure --> clear_service + cinit_process_watcher(): + fork() + execve(process,args,env) + waitpid() -> for once? PROCESS MUST RETURN! + write_pipe() + rmpipe() + +-------------------------------------------------------------------------------- + +What to send over to cinit and read back? + + - first you need two pipes for every process: read+write (on both sides) + - cinit wants + o command + - service temporary - trying to start in right now. + - service executed once - fine + - service executed once and that failed - :-( + - service respawing + o an identifier for the service (i from service list ;-) + + --> makes 2 bytes to read +-------------------------------------------------------------------------------- +How cinit works: + +cinit says: I want to start service xyz. (/etc/cinit/init on bootup) +cinit calls run_svc(). +-------------------------------------------------------------------------------- + +run_svc(char *relative_path): + - check if service is alr + - fork() + - write cinit: check service, I want to start it + -> returns status of service (see ST_* in cinit.h) + - cinit returns: ok, you are temporary + - [that checked] check if service + o is already started + o is beeing started + x check if rpath S_ISDIR + x chdir(dir) + - check needs - check wants + - for every needs/* start run_svc + - check respawn -> respawn = true + - check run + diff --git a/software/cinit/browse_source/cinit-0.0.6/old/idea02 b/software/cinit/browse_source/cinit-0.0.6/old/idea02 new file mode 100644 index 00000000..38af8965 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/idea02 @@ -0,0 +1,200 @@ +-------------------------------------------------------------------------------- +/etc/cinit + -> init/ + -> shutdown/ + -> reboot/ + + + needs/ -> we wait until all parallel processes are finished _and_ we + don't start if one fails + wants/ -> we start all of them parallel and wait for them? + hold/ + wait -> wait until process finished + run -> program to execute + params -> \n seperated argument list + respawn -> respawn it + +services may only be under /etc/cinit? +-------------------------------------------------------------------------------- +Service-Status: (see struct svc, cinit.h) + +- abs_path +- status (respawn,tmp,once) +- pid + +abs_path\0status\0pid\0 + +-------------------------------------------------------------------------------- + +starting services: + +run_svc("/etc/cinit/service/") + -> exec run $params +Later: + -> check if service already running -> return OK + -> check needs/ -> check wants/ + -> run_svc($cur) + + When run_svc returns, the service is started and all service it needs, too. + + +-------------------------------------------------------------------------------- + -> check needs/ + -> exists -> fork( run_run_svcs() ) and continue + (fork) -> fork() run_svc(needs/*); + -> check wants/ + -> exists -> run_svc(wants/*); + -> waitfor(need_run_svc) +-------------------------------------------------------------------------------- +run_run_svcs() + -> start parallel (forked) run_svc() for every service +-------------------------------------------------------------------------------- + +main() + - run_svc /etc/cinit/init/ + - sleep()? -> simply do nothing -> do we need to fork ourselves? No, we are init. +spaeter: + - open /dev/console W_ONLY + - make stdin == /etc/cinit/in + - make stdout, stderr /dev/console + +-------------------------------------------------------------------------------- +eof + +Things, which are clear + +- we need to fork before execl(), as excel() replaces us. +- chdir() _after_ fork() + + +profiles support: profile=$profile + + start + "service.$profile" if exists, instead of + "service" + +starting services: + +cinit: + pipe() + set_status_tmp() + fork() --> failure --> clear_service + cinit_process_watcher(): + fork() + execve(process,args,env) + waitpid() -> for once? PROCESS MUST RETURN! + write_pipe() + rmpipe() + +-------------------------------------------------------------------------------- + +What to send over to cinit and read back? + + - first you need two pipes for every process: read+write (on both sides) + - cinit wants + o command + - service temporary - trying to start in right now. + - service executed once - fine + - service executed once and that failed - :-( + - service respawing + o an identifier for the service (i from service list ;-) + + --> makes 2 bytes to read +-------------------------------------------------------------------------------- +How cinit works: + +cinit says: I want to start service xyz. (/etc/cinit/init on bootup) +cinit calls run_svc(). +-------------------------------------------------------------------------------- + +int run_svc(char *relative_path): + - check if service is already running or temporary (task list!) + -> yes: return RT_PAR_OK + -> no: continue. + - set service to be temporary (ST_TMP) and retrieve SID (service ID) + - walk through dependency tree and call run_svc + - fork() -> so cinit can continue. + - write cinit: check service, I want to start it + -> returns status of service (see ST_* in cinit.h) + - cinit returns: ok, you are temporary + - [that checked] check if service + o is already started + o is beeing started + x check if rpath S_ISDIR + x chdir(dir) + - check needs - check wants + - for every needs/* start run_svc + - check respawn -> respawn = true + - check run + +-------------------------------------------------------------------------------- + +add_mod_svc(char *svc, int status) + -> add or modify status of a service + + - check whether service exists, reset status + - if not exists, insert if maximum of services is not reached +-------------------------------------------------------------------------------- + +cinit communications proto +-------------------------------------------------------------------------------- + +cinit: + -> signal_handler on SIGCHLD + run_init() + -> run_svc(init) + -> fork() -> do the work + +signal_handler_child + waitpid(.*) + -> returns pid + + oder waitpid() in dem run_svc, wenn need/once? + + need: + for i in need/*; do + ( $service & ); + done + wait(.*); + +-------------------------------------------------------------------------------- + +cinit: + +run_svc: + checks what it needs (need/*) + need/* + fork() + fork(), fork() + +-------------------------------------------------------------------------------- +Kommunikationsproblem: + + -> 1024 ist maximale anzahl offener sockets -> 510 von fifos,pipes + - mehrere FIFOs? + --> kommunikation gesichert, extrem viele fifos... + --> etwas unsauber, aber geregelte kommunikation + - mehrere PIPEs? + --> viele PIPEs (HRHR) + --> programme koennen nur von cinit gefork()ed werden. + + --> eine datei mit prozessen? + --> einen RAM Bereich? +-------------------------------------------------------------------------------- + +cinit[1] <-> fifo <-> forker + +forker? +-------------------------------------------------------------------------------- + +pfad vorher aufloesen? + +-------------------------------------------------------------------------------- +Kommunikation: ::Test:: + + Test mit nur 2 FIFOs! + +-------------------------------------------------------------------------------- + +sig_fifo() +read(..) als hauptaufgabe? diff --git a/software/cinit/browse_source/cinit-0.0.6/old/msg_change_status.c01 b/software/cinit/browse_source/cinit-0.0.6/old/msg_change_status.c01 new file mode 100644 index 00000000..cfd66ae3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/msg_change_status.c01 @@ -0,0 +1,49 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include + +#include "cinit.h" + +int do_change_status(char *svc, char status, pid_t pid, int action) +{ + char buf = CMD_CHG_STATUS; + int tmp = strlen(svc); + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_READ) + fpoint = read; + else + fpoint = write; + + D_PRINTF("versuche status zu aendern"); + + if(write(sock,&buf,1) == -1) { /* write COMMAND */ + perror("write"); + return 0; + } + if(write(sock,&tmp,sizeof(tmp)) == -1) { /* write length */ + perror("write"); + return 0; + } + if(write(sock,svc,tmp) == -1) { /* write service name */ + perror("write"); + return 0; + } + if(write(sock,&buf,1) == -1) { /* write PID */ + perror("write"); + return 0; + } + write(sock,&status,sizeof(status)); /* write status */ + + D_PRINTF("fertig mit schreiben"); + + read(sock,&buf,sizeof(buf)); /* read SID or -1 if error */ + + return buf; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/msg_start_svc.c b/software/cinit/browse_source/cinit-0.0.6/old/msg_start_svc.c new file mode 100644 index 00000000..c6a78bf8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/msg_start_svc.c @@ -0,0 +1,23 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit we start a service + */ + +#include + +/* return status */ +int msg_start_svc(char *string, int respawn) +{ + char *p; + + p = string; + while ( *p != '\0') { + write(2,p,1); + p++; + } + +/* FIXME: return if in cinit, _exit on fork() */ +// if(...) + _exit(status); +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/read_file.c b/software/cinit/browse_source/cinit-0.0.6/old/read_file.c new file mode 100644 index 00000000..43a5854b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/read_file.c @@ -0,0 +1,100 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + +#include "cinit.h" + +/*********************************************************************** + * read_file: return file content, each line a char* + */ + +char **read_file(char *file) +{ + int tmp; + int fd, argc; + + char buf[BUFSIZE]; + char *p, *sbuf = NULL; + char **nargv = NULL; + + struct stat stbuf; + + D_PRINTF("Lese Datei"); + D_PRINTF(file); + + if( !stat(file,&stbuf) ) { + fd = open(file,O_RDONLY); + + if(fd == -1) { + LOG("params exists, but open params failed"); + return NULL; + } + + D_PRINTF("open ist ok"); + + argc = 0; + + /* most likely one round */ + while ( (tmp = read(fd,buf,BUFSIZE) ) != 0 ) { + if(tmp == -1) { + perror("read"); + return NULL; + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],buf,tmp); + argc += tmp; + } + close(fd); + } + + sbuf[argc] = '\0'; + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() */ + + argc = 0; + + while( (p = strchr(sbuf,'\n')) ) { + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG("realloc failed"); + return NULL; + } + + nargv[argc] = sbuf; + *p = '\0'; + sbuf = p+1; /* is ok, as behind the last \n is a \0 */ + argc++; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + if(nargv == NULL) { + LOG("realloc failed"); + return NULL; + } + + nargv[argc] = NULL; /* terminate argv list */ + + return nargv; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/run_init_svc.c01 b/software/cinit/browse_source/cinit-0.0.6/old/run_init_svc.c01 new file mode 100644 index 00000000..61467f44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/run_init_svc.c01 @@ -0,0 +1,50 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run initial service + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * start the first service + */ + +int run_init_svc() +{ + pid_t pid; + + D_PRINTF("Starte initialen starter"); + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + perror("fork failed\n"); + return RT_PAR_FAIL; + } else if(pid == 0) { /* child */ + /* close fifo */ + close(f_in); close(f_out); + + /* open the other way round */ + f_in = open(CINIT_DIR SLASH F_OUT, O_RDWR); + f_out = open(CINIT_DIR SLASH F_IN, O_RDWR); + if(f_in == -1 || f_out == -1) cerr("opening fifo failed\n",RT_CHLD_FAIL); + + /* open stderr, stdin, stdout to files? */ + if ( run_svc(CINIT_INIT) == RT_CHLD_OK) + _exit(EX_OK); + else + _exit(EX_FAIL); + } else + return RT_PAR_OK; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c00 b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c00 new file mode 100644 index 00000000..ff3bb989 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c00 @@ -0,0 +1,140 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp, sid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + close(sock); /* close old socket connection, we are a fork()! */ + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + return 0; + } + tmp = sizeof(addr); + memset(&addr,0,tmp); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + /* FIXME: why do we need tmp????? ... tmp == 1 is wrong!*/ +/* tmp = 1; + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + return 0; + } */ + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + return 0; + } + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror("getcwd"); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror("chdir"); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + if( ! run_run_svcs(pathtmp) ) { + D_PRINTF("some NEEDED services failed)"); + return 0; + } + + D_PRINTF("Starte wants"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + tmp = ST_ONCE; + sid = 20; + D_PRINTF("Melde status"); + if(!do_change_status(abspath,&tmp,&sid,sock,ACT_WRITE)) { + D_PRINTF("Status nicht gemeldet :((((((((((("); + return 0; + } + D_PRINTF("Status abgesetzt"); + +/* if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + if(respawn_svc(abspath)) { + msg_change_status(sid,ST_RESPAWN); + } else { + D_PRINTF("error in respawn"); + msg_change_status(sid,ST_FAIL); + } + } else { + D_PRINTF("einmal ausfuehren"); + if(exec_svc(abspath)) { + msg_change_status(sid,ST_ONCE); + } else { + D_PRINTF("error einmalig"); + msg_change_status(sid,ST_FAIL); + } + } */ +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c01 b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c01 new file mode 100644 index 00000000..e7457af0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c01 @@ -0,0 +1,292 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* perhaps move this code to cinit-static, so it's constant */ + while(tmp < svc_list.process) { + printf("%d\n",tmp); + + if( ! strcmp(rpath,svc_list.svca[tmp].abs_path) ) { + printf("Service im Array\n"); + return 0; + } + tmp++; + } + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* check for respawn? */ + + /* fork before chdir */ + pid = fork(); + + if(pid == -1) { + printf("ERORERER\n"); + return 0; + } else if(pid > 0) { /* parent gets child's PID */ + + /* NOT IF RESPAWN */ + if(!respawn) { + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) + return RT_PAR_OK; + else + return RT_PAR_FAIL; + } /* else */ /* Was tun, wenn respawn? nochmal forken als beobachter, + oder signal? */ + } + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + /* THis saVES US THE OTHER STRCMP!!!!! */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check, whether we should respawn fixme: much earlier! */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( !stat(pathtmp,&buf) ) respawn = 1; + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check if already running / ran / currently starting */ + + /* debug */ + getcwd(pathbuf,1024); + + printf("dir: %s\n",pathbuf); + + /* check for service dir */ + if( stat(path,&buf) ) { + printf("no such service: %s\n", path); + return 1; + } + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c02 b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c02 new file mode 100644 index 00000000..7fb329b6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c02 @@ -0,0 +1,282 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* perhaps move this code to cinit-static, so it's constant */ + while(tmp < svc_list.process) { + printf("%d\n",tmp); + + if( ! strcmp(rpath,svc_list.svca[tmp].abs_path) ) { + printf("Service im Array\n"); + return 0; + } + tmp++; + } + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* check for respawn? */ + + /* fork before chdir */ + pid = fork(); + + if(pid == -1) { + printf("ERORERER\n"); + return 0; + } else if(pid > 0) { /* parent gets child's PID */ + + /* NOT IF RESPAWN */ + if(!respawn) { + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) + return RT_PAR_OK; + else + return RT_PAR_FAIL; + } /* else */ /* Was tun, wenn respawn? nochmal forken als beobachter, + oder signal? */ + } + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + /* THis saVES US THE OTHER STRCMP!!!!! */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check, whether we should respawn fixme: much earlier! */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( !stat(pathtmp,&buf) ) respawn = 1; + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c03 b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c03 new file mode 100644 index 00000000..9422a7c9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c03 @@ -0,0 +1,283 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_in[2], p_out[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* create communication pipe */ + if ( pipe(p_in) == -1 || pipe(p_out) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + + /* check for respawn? yes, sometime... */ + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* fork before chdir */ + pid = fork(); + + if(pid == -1) { + printf("ERORERER\n"); + return 0; + } else if(pid > 0) { /* parent gets child's PID */ + + /* NOT IF RESPAWN */ + if(!respawn) { + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) + return RT_PAR_OK; + else + return RT_PAR_FAIL; + } /* else */ /* Was tun, wenn respawn? nochmal forken als beobachter, + oder signal? */ + } + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + /* THis saVES US THE OTHER STRCMP!!!!! */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check, whether we should respawn fixme: much earlier! */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( !stat(pathtmp,&buf) ) respawn = 1; + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + +beof + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c04 b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c04 new file mode 100644 index 00000000..727aa71f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c04 @@ -0,0 +1,297 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) respawn = 1; + + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + } + + /* fork at the beginning and before chdir */ + pid = fork(); + + if( pid == -1 ) cerr("fork failed",RT_PAR_FAIL); + + if(pid == -1) { + cerr("fork failed\n", RT_PAR_FAIL); + } else if(pid > 0) { /* parent gets child's PID */ + + if(respawn) { + /* read the final byte from child */ + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == ST_RESPAWN) { + printf("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + } + } else { /* execute once */ + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + + /* check for needs */ + + /* do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcat(pathtmp,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + pid = fork(); + if(tmp == -1) { + cerr("error ...\n", RT_PAR_FAIL); + } else if(tmp == 0) { + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,rpath); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c05 b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c05 new file mode 100644 index 00000000..927a9261 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c05 @@ -0,0 +1,294 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) respawn = 1; + + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + } + + /* fork at the beginning and before chdir */ + pid = fork(); + + if( pid == -1 ) cerr("fork failed",RT_PAR_FAIL); + + if(pid == -1) { + cerr("fork failed\n", RT_PAR_FAIL); + } else if(pid > 0) { /* parent gets child's PID */ + + if(respawn) { + /* read the final byte from child */ + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == ST_RESPAWN) { + printf("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + } + } else { /* execute once */ + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c05.2 b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c05.2 new file mode 100644 index 00000000..90d94b65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c05.2 @@ -0,0 +1,320 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; /* talk to respawnig watcher */ + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + return 0; + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + return 0; + } + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + return 0; + } + + /******************* end socket *********************/ + + sid = msg_start_svc(rpath); /* now we are temporary */ + if(sid == -1) { + cerr("cinit returned start error",RT_CHLD_FAIL); + return 0; + } + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + msg_change_status(sid,ST_FAIL); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + msg_change_status(sid,ST_FAIL); + return 0; + } + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + respawn = 1; + } + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) { + perror("pipe"); + cerr("pipe failed",RT_PAR_FAIL); + } + } + + /* clone */ + pid = fork(); + if( pid == -1 ) { + perror("fork"); + cerr("fork failed",RT_CHLD_FAIL); + return 0; + } + + _exit(0); + + /* the following block handles parent situation */ + + if(pid > 0) { /* parent gets child's PID */ + + /*************** THIS BLOCK IS CRAP ******************/ + + /* FIXME: when respawing, we'll watch our child */ + if(respawn) { + tmp = MSG_FAIL; + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == MSG_OK) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + msg_change_status(sid,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + msg_change_status(sid,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + /* FIXME: MISSING: + - signal handling (stop respawing) + - waitpid() in while(1) + */ + _exit(0); /* FIXME !!! */ + + /*************** END THIS BLOCK IS CRAP ******************/ + + } else /* don't RESPAWN */ { /* execute only once */ + D_PRINTF("Warte EINMAL auf mein Kind..."); + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + + /*********** CHILD EXECUTION HERE ***********/ + do { + + + } while(respawn); + + + + /* change to service dir */ + if( chdir(rpath) == -1) { + /* FIXME: errno! */ + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c06 b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c06 new file mode 100644 index 00000000..7dd265fc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c06 @@ -0,0 +1,293 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("Fehler"); + _exit(1); + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + cerr("Does your OS not support SO_PASSCRED (man 7 socket)?",RT_PAR_FAIL); + } + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + _exit(1); + } + + /******************* end socket *********************/ + + msg_start_svc(rpath); + D_PRINTF("in runsvc"); + _exit(0); + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc_client(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return ; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) respawn = 1; + + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + } + + /* fork at the beginning and before chdir */ + pid = fork(); + + /* FIXME: pay attention: we are possibly also a fork()! */ + + if( pid == -1 ) cerr("fork failed",RT_PAR_FAIL); + + if(pid > 0) { /* parent gets child's PID */ + if(respawn) { + /* read the final byte from child */ + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == ST_RESPAWN) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } else { /* execute once */ + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c07 b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c07 new file mode 100644 index 00000000..e62eff54 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c07 @@ -0,0 +1,304 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; /* talk to respawnig watcher */ + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + _exit(1); + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + cerr("Does your OS not support SO_PASSCRED (man 7 socket)?",RT_PAR_FAIL); + } + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + _exit(1); + } + + /******************* end socket *********************/ + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + _exit(1); + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + _exit(1); + } + + tmp = msg_start_svc(rpath); /* now we are temporary */ + + D_PRINTF("in runsvc"); + + if(tmp == -1) { + cerr("cinit returned start error",RT_CHLD_FAIL); + _exit(1); + } + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + respawn = 1; + } + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) { + perror("pipe"); + cerr("pipe failed",RT_PAR_FAIL); + } + } + + pid = fork(); + /* pay attention: we are also a fork()! */ + if( pid == -1 ) { + perror("fork"); + cerr("fork failed",RT_CHLD_FAIL); + _exit(1); + } + + _exit(0); + + /* the following block handles parent situation */ + + if(pid > 0) { /* parent gets child's PID */ + + /* FIXME: when respawing, we'll watch our child */ + if(respawn) { + tmp = MSG_FAIL; + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == MSG_OK) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } else /* don't RESPAWN */ { /* execute only once */ + D_PRINTF("Warte EINMAL auf mein Kind..."); + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c08 b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c08 new file mode 100644 index 00000000..587e13e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c08 @@ -0,0 +1,316 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; /* talk to respawnig watcher */ + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + _exit(1); + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + cerr("Does your OS not support SO_PASSCRED (man 7 socket)?",RT_PAR_FAIL); + /* FIXME: cerr */ + } + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + _exit(1); + } + + /******************* end socket *********************/ + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + _exit(1); + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + _exit(1); + } + + sid = msg_start_svc(rpath); /* now we are temporary */ + + D_PRINTF("in runsvc"); + + if(sid == -1) { + cerr("cinit returned start error",RT_CHLD_FAIL); + _exit(1); + } + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + respawn = 1; + } + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) { + perror("pipe"); + cerr("pipe failed",RT_PAR_FAIL); + } + } + + pid = fork(); + /* pay attention: we are also a fork()! */ + if( pid == -1 ) { + perror("fork"); + cerr("fork failed",RT_CHLD_FAIL); + _exit(1); + } + + _exit(0); + + /* the following block handles parent situation */ + + if(pid > 0) { /* parent gets child's PID */ + + /*************** THIS BLOCK IS CRAP ******************/ + + /* FIXME: when respawing, we'll watch our child */ + if(respawn) { + tmp = MSG_FAIL; + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == MSG_OK) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + msg_change_status(sid,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + msg_change_status(sid,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + /* FIXME: MISSING: + - signal handling (stop respawing) + - waitpid() in while(1) + */ + _exit(0); /* FIXME !!! */ + + /*************** END THIS BLOCK IS CRAP ******************/ + + } else /* don't RESPAWN */ { /* execute only once */ + D_PRINTF("Warte EINMAL auf mein Kind..."); + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + /* FIXME: errno! */ + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c09 b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c09 new file mode 100644 index 00000000..ff3bb989 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/run_svc.c09 @@ -0,0 +1,140 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp, sid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + close(sock); /* close old socket connection, we are a fork()! */ + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + return 0; + } + tmp = sizeof(addr); + memset(&addr,0,tmp); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + /* FIXME: why do we need tmp????? ... tmp == 1 is wrong!*/ +/* tmp = 1; + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + return 0; + } */ + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + return 0; + } + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror("getcwd"); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror("chdir"); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + if( ! run_run_svcs(pathtmp) ) { + D_PRINTF("some NEEDED services failed)"); + return 0; + } + + D_PRINTF("Starte wants"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + tmp = ST_ONCE; + sid = 20; + D_PRINTF("Melde status"); + if(!do_change_status(abspath,&tmp,&sid,sock,ACT_WRITE)) { + D_PRINTF("Status nicht gemeldet :((((((((((("); + return 0; + } + D_PRINTF("Status abgesetzt"); + +/* if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + if(respawn_svc(abspath)) { + msg_change_status(sid,ST_RESPAWN); + } else { + D_PRINTF("error in respawn"); + msg_change_status(sid,ST_FAIL); + } + } else { + D_PRINTF("einmal ausfuehren"); + if(exec_svc(abspath)) { + msg_change_status(sid,ST_ONCE); + } else { + D_PRINTF("error einmalig"); + msg_change_status(sid,ST_FAIL); + } + } */ +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/sig_chld.c b/software/cinit/browse_source/cinit-0.0.6/old/sig_chld.c new file mode 100644 index 00000000..e452f570 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/sig_chld.c @@ -0,0 +1,31 @@ +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* we are called, when a child exited */ +void sig_chld(int status) +{ + int pstat, i = 0; + pid_t pid; + + /* get pid of child and its status */ + pid = waitpid(chpid,&pstat,0); + + /* the child was either a respawed or once running process */ + + while(i < svc_list.process) { + if(pid == svc_list.svca[i].pid) { /* found service */ + + } + i++; + } + + if( WIFEXITED(pstat) ) printf("Kind gut gestorben\n"); + + printf("kind tot %d ...\n", status); +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/sig_special.c b/software/cinit/browse_source/cinit-0.0.6/old/sig_special.c new file mode 100644 index 00000000..6152f515 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/sig_special.c @@ -0,0 +1,21 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * We are called by signal to reboot + */ + +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_special + * react on special signals: + o SIGINT: ctrl + alt + del + o SIGWINCH: keyboard request + */ + +void sig_special(int signal) +{ + /* not used */ +} diff --git a/software/cinit/browse_source/cinit-0.0.6/old/sigio.c01 b/software/cinit/browse_source/cinit-0.0.6/old/sigio.c01 new file mode 100644 index 00000000..4e1ee482 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/old/sigio.c01 @@ -0,0 +1,73 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int signal) +{ + struct ucred suck; + int len, lens, nsock; + struct sockaddr_un sun; + char buf; + + D_PRINTF("sigio() startet"); + + do { + nsock = accept(sock,(struct sockaddr *) NULL, (socklen_t *) NULL); + + if( nsock == -1) { + if (errno != EAGAIN) { + perror("accept"); + _exit(1); + } else { + break; + } + } + + //getsockopt(s_tmp[s_idx], SOL_SOCKET, SO_PEERCRED, &suck, &len); + getsockopt(nsock, SOL_SOCKET, SO_PEERCRED, &suck, &len); + printf("angreifer: pid: %d uid: %d gid: %d\n",suck.pid,suck.uid,suck.gid); + + + read(nsock,&buf,1); + + printf("command: %d\n",buf); + + while ( (len = read(nsock,&buf,1)) ) { +// printf("laenge: %d\n",len); + if(len == -1) { +// if(errno != EINVAL && errno != EAGAIN) { + perror("read"); + return; +// _exit(1); +// } + } + if(buf == 0) break; + write(1,&buf,1); + } + printf("Fertig mit lesen\n"); + + write(nsock,"ok\n",4); + printf("fertig mit schreiben\n"); + } while ( 1 ); + + printf("keine sockets mehr da..., sigio beendet sich jetzt.\n"); +} + + diff --git a/software/cinit/browse_source/cinit-0.0.6/samples/debian.tar b/software/cinit/browse_source/cinit-0.0.6/samples/debian.tar new file mode 100644 index 00000000..a2118f37 Binary files /dev/null and b/software/cinit/browse_source/cinit-0.0.6/samples/debian.tar differ diff --git a/software/cinit/browse_source/cinit-0.0.6/samples/fedora.tar b/software/cinit/browse_source/cinit-0.0.6/samples/fedora.tar new file mode 120000 index 00000000..1ba34d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/samples/fedora.tar @@ -0,0 +1 @@ +debian.tar \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.0.6/samples/gentoo.tar b/software/cinit/browse_source/cinit-0.0.6/samples/gentoo.tar new file mode 120000 index 00000000..1ba34d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/samples/gentoo.tar @@ -0,0 +1 @@ +debian.tar \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.0.6/samples/mandrake.tar b/software/cinit/browse_source/cinit-0.0.6/samples/mandrake.tar new file mode 120000 index 00000000..1ba34d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/samples/mandrake.tar @@ -0,0 +1 @@ +debian.tar \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.0.6/samples/suse.tar b/software/cinit/browse_source/cinit-0.0.6/samples/suse.tar new file mode 120000 index 00000000..1ba34d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/samples/suse.tar @@ -0,0 +1 @@ +debian.tar \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.0.6/serv/chk_svc.c b/software/cinit/browse_source/cinit-0.0.6/serv/chk_svc.c new file mode 100644 index 00000000..bdc73c31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/serv/chk_svc.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * chk_svc: check whether service exists + * part of cinit + */ + +#include +#include "cinit.h" + +/* we are called from sigio */ +/* return SID, if service exists, else -1 */ +int chk_svc(char *svc) +{ + int tmp = 0; + + while(tmp < svc_list.process) { + if( ! strcmp(svc,svc_list.svca[tmp].abs_path) ) { + return tmp; + } + tmp++; + } + return -1; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/serv/cinit.c b/software/cinit/browse_source/cinit-0.0.6/serv/cinit.c new file mode 100644 index 00000000..8e3af84e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/serv/cinit.c @@ -0,0 +1,163 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +/* mount */ +#include + +#include +#include +#include + +#include /* nanosleep */ + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock, logfd; + +/*********************************************************************** + * the main procedure + */ + +#ifdef TIME_ME +time_t start; +#endif + +int main(int argc, char **argv) +{ + struct stat sbuf; + pid_t pid; + struct sockaddr_un addr; + struct timespec ts; + char *initdir; + +#ifdef TIME_ME + start = time(NULL); +#endif + + set_signals(ACT_SERV); /* set signal handlers */ + logfd = 1; /* write to stdout */ + list = NULL; /* list of services is empty currently */ + + initdir = CINIT_INIT; + + /* profile support */ + while(argc) { + D_PRINTF(argv[argc-1]); + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + D_PRINTF(initdir); + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + perror(MSG_INIT_MISS); + panic(); + } + if( ! S_ISDIR(sbuf.st_mode) ) { + LOG(MSG_NOT_DIR); + panic(); + } + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + /* tell the socket, _we_ want to get SIGIO! */ + pid = getpid(); + if(fcntl(sock,F_SETOWN,pid) == -1) { + perror(MSG_FCNTL); + panic(); + } + + /* O_SYNC: SIGIO will be called, O_NONBLOCK: don't block cinit */ + if ( fcntl(sock,F_SETFL,O_ASYNC|O_NONBLOCK) == -1) { + perror(MSG_FCNTL); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + /******************** end socket **********************/ + + /* initial run, only if we are 'real' init': not needed */ +// if( pid == 1) { + run_init_svc(); +// } + + D_PRINTF("fertig gestartet"); + + /* the main loop: sleep until a signal comes in */ + ts.tv_sec = -1; + if(ts.tv_sec < 0) { + D_PRINTF("is signed"); + ts.tv_sec = 1 << ((sizeof(ts.tv_sec) * 8)-1); + ts.tv_sec = ts.tv_sec - 1; + } + + while(1) { + nanosleep(&ts,NULL); + } +} diff --git a/software/cinit/browse_source/cinit-0.0.6/serv/list.c b/software/cinit/browse_source/cinit-0.0.6/serv/list.c new file mode 100644 index 00000000..5fe4a6bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/serv/list.c @@ -0,0 +1,96 @@ +/* (c) 2005 by Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * list handling: the processes cinit will execute/executed + * part of cinit + * changed some formatting, Nico Schottelius + */ + +#include +#include +#include "cinit.h" + + +int list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc( sizeof(struct listitem) ); + + if( tmp == NULL ) { + return 0; + } + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members, add this one */ + tmp->after = list; /* after the new element comes the begin */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first element has us as previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if( list == NULL ) { /* think positive */ + return NULL; + } else { + tmp = list->before; + } + + do { + if(!strcmp(path, tmp->abs_path)) + return tmp; + tmp = tmp->before; + } while(tmp != list); + + return NULL; +} + +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if( tmp == NULL ) { + return 0; + } + + tmp->after->before = tmp->before; + tmp->before->after = tmp->after; + free(tmp->abs_path); + free(tmp); + return 1; +} + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + + tmp = list_search(path); + if( tmp == NULL ) { + return 0; + } + tmp->status = new_status; + tmp->pid = new_pid; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.6/serv/panic.c b/software/cinit/browse_source/cinit-0.0.6/serv/panic.c new file mode 100644 index 00000000..2f276fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/serv/panic.c @@ -0,0 +1,19 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * panic: if cinit fails, start sulogin + * part of cinit + */ + +#include "cinit.h" +#include + +void panic(void) +{ + char *nargv[2]; + + nargv[0] = SULOGIN; + nargv[1] = NULL; + + execv(SULOGIN,nargv); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.0.6/serv/run_init_svc.c b/software/cinit/browse_source/cinit-0.0.6/serv/run_init_svc.c new file mode 100644 index 00000000..7dacd06d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/serv/run_init_svc.c @@ -0,0 +1,55 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run initial service + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +extern time_t start; + +int run_init_svc() +{ + pid_t pid; + int status; + +#ifdef TIME_ME + time_t stop; +#endif + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + logfd = 1; /* FIXME: shouldn't this be some kind of log, like /dev/log? */ + set_signals(ACT_CLIENT); + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ?*/ + if ( run_svc(CINIT_INIT) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + waitpid(pid, &status,0); +#ifdef TIME_ME + stop = time(NULL); + /* FiXME: remove printf! , remove message -> msg.h */ + printf("*** cinit needed %ld seconds to start ****\n",(int) stop-start); +#endif + return WIFEXITED(status); + } +} diff --git a/software/cinit/browse_source/cinit-0.0.6/serv/sig_reboot.c b/software/cinit/browse_source/cinit-0.0.6/serv/sig_reboot.c new file mode 100644 index 00000000..d430c3a6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/serv/sig_reboot.c @@ -0,0 +1,134 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * We are called by signal to reboot + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void sig_reboot(int signal) +{ + struct listitem *tmp; + struct timespec ts; + char **cmd; + int i; + + D_PRINTF("sig_reboot() startet"); + + tmp = list->before; + do { + /* kill service watcher, which will kill processes itself */ + if( tmp->status == ST_RESPAWN) { + D_PRINTF("Bringing down respawn watcher"); + kill(tmp->pid,SIGTERM); + } + + /* execute shutdown service */ + D_PRINTF("Executing off-service"); + exec_svc(tmp->abs_path,0); + tmp = tmp->before; + } while( tmp != list ); + + /* Let's disappear */ + close(sock); + if(umount(CINIT_TMNT) == -1) { + perror("umount"); + } + + /* now: all services are down, lets kill all other processes */ + if( kill(-1,SIGTERM) == -1) { + perror(MSG_TERMKILL); + } + D_PRINTF("SIGTERM GESENDET"); + + ts.tv_sec = SLEEP_KILL; /* defined in conf/ */ + nanosleep(&ts,NULL); + + + if( kill(-1,SIGKILL) == -1) { + perror(MSG_KILLBILL); + } + D_PRINTF("SIGKILL GESENDET"); + /* now: we are completly alone. umount everything, go to bed */ + +/* THIS IS FUCKING UNCLEAN AND SHOULD BE CLEANED UP VERY MUCH!!! */ + +#define CMD_CNT 5 +#define SWAP_OFF_CMD "/sbin/swapoff" +#define SWAP_OFF_ARG1 "-a" + +#define UMOUNT_CMD "/bin/umount" +#define UMOUNT_ARG1 "-a" + +#define MOUNT_CMD "/bin/mount" +#define MOUNT_ARG1 "-o" +#define MOUNT_ARG2 "remount,ro" +#define MOUNT_ARG3 "/" + + cmd = (char **) malloc( (CMD_CNT+1) * ( sizeof (char*) ) ); + if(cmd) { +// cmd[0] = (char *) malloc(strlen(SWAP_OFF_CMD) +1); +// cmd[1] = (char *) malloc(strlen(SWAP_OFF_CMD) +1); + /* /sbin/swapoff -a */ + cmd[0] = SWAP_OFF_CMD; + cmd[1] = SWAP_OFF_ARG1; + cmd[2] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + /* /bin/umount -a */ + cmd[0] = UMOUNT_CMD; + cmd[1] = UMOUNT_ARG1; + cmd[2] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + + /* /bin/mount -o remount,ro / */ + cmd[0] = MOUNT_CMD; + cmd[1] = MOUNT_ARG1; + cmd[2] = MOUNT_ARG1; + cmd[3] = MOUNT_ARG1; + cmd[4] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + } + + switch(signal) { + case SIGUSR1: /* halt */ + reboot(RB_HALT_SYSTEM); + break; + case SIGTERM: /* power off */ + reboot(RB_POWER_OFF); + break; + case SIGHUP: /* reboot */ + reboot(RB_AUTOBOOT); + break; + } + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.0.6/serv/sigio.c b/software/cinit/browse_source/cinit-0.0.6/serv/sigio.c new file mode 120000 index 00000000..059b397f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/serv/sigio.c @@ -0,0 +1 @@ +sigio_linux.c \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.0.6/serv/sigio_linux.c b/software/cinit/browse_source/cinit-0.0.6/serv/sigio_linux.c new file mode 100644 index 00000000..5e066d52 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/serv/sigio_linux.c @@ -0,0 +1,99 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int signal) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + + D_PRINTF("sigio() startet"); + + do { + /* create new socket */ + nsock = accept(sock,(struct sockaddr *) NULL, (socklen_t *) NULL); + + if( nsock == -1) { + if (errno != EAGAIN) { /* report, but don't panic */ + perror("accept"); + } + + return; + } + + if( read(nsock,&buf[0],1) == -1) { + perror("read-command"); + close(nsock); + continue; + } + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_start_svc(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists */ + buf[0] = 0; + do_result(nsock,&buf[0]); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG("Adding service failed!"); + buf[0] = 0; + do_result(nsock,&buf[0]); + } + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + + if(!tmp) break; + + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + D_PRINTF("MOD.ERR"); + buf[0] = 0; + } else { + buf[0] = 1; + } + do_result(nsock,buf); + break; + + default: + LOG("Unknown command!"); + break; + } + close(nsock); + } while ( 1 ); + + D_PRINTF("ENDE:SIGIO"); +} diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:41:08 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:41:08 new file mode 100644 index 00000000..d29de765 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:41:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586640 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:46:09 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:46:09 new file mode 100644 index 00000000..7ecb58be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-15:46:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586368 Apr 30 15:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-16:50:05 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-16:50:05 new file mode 100644 index 00000000..d87323e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-16:50:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587818 Apr 30 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-17:03:00 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-17:03:00 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:39:08 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:39:08 new file mode 100644 index 00000000..0c2bb0af --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:39:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586194 May 6 20:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:54:00 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:54:00 new file mode 100644 index 00000000..fe51f37f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:54:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590108 May 6 22:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:55:07 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:55:07 new file mode 100644 index 00000000..4d2854b5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:55:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590108 May 6 22:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-23:00:07 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-23:00:07 new file mode 100644 index 00000000..c0db4814 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-23:00:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 23:00 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:31:01 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:31:01 new file mode 100644 index 00000000..4ad1fccf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:31:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:31 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:39:02 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:39:02 new file mode 100644 index 00000000..16613354 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:39:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:43:08 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:43:08 new file mode 100644 index 00000000..29e5ab44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:43:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:54:04 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:54:04 new file mode 100644 index 00000000..474189e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:54:04 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:18:00 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:18:00 new file mode 100644 index 00000000..960ca358 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:18:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:18 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:14:00 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:14:00 new file mode 100644 index 00000000..7de2bc3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:14:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:14 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:43:08 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:43:08 new file mode 100644 index 00000000..11a18f12 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:43:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597245 May 7 14:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:48:01 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:48:01 new file mode 100644 index 00000000..28b127b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:48:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597405 May 7 14:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:55:05 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:55:05 new file mode 100644 index 00000000..5d0fa0e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:55:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:01:01 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:01:01 new file mode 100644 index 00000000..7c8b202b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:01:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 15:01 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:27:00 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:27:00 new file mode 100644 index 00000000..a2d19633 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:27:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:27 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:20:02 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:20:02 new file mode 100644 index 00000000..23608225 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:20:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602184 May 7 16:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:31:09 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:31:09 new file mode 100644 index 00000000..40f890cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:31:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:31 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-17:08:09 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-17:08:09 new file mode 100644 index 00000000..22b48319 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-17:08:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-10:44:00 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-10:44:00 new file mode 100644 index 00000000..4dad0f2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-10:44:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 64935 May 8 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-12:42:08 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-12:42:08 new file mode 100644 index 00000000..a356e57e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-12:42:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 23195 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-19:25:05 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-19:25:05 new file mode 100644 index 00000000..0b5026c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-19:25:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:30:03 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:30:03 new file mode 100644 index 00000000..7377ee59 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:30:03 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-21:54:00 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-21:54:00 new file mode 100644 index 00000000..41ed8e4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-21:54:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604637 May 10 21:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-22:07:06 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-22:07:06 new file mode 100644 index 00000000..9579bf3d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-22:07:06 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95212 May 10 22:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-00:14:02 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-00:14:02 new file mode 100644 index 00000000..86483ada --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-00:14:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-15-22:32:07 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-15-22:32:07 new file mode 100644 index 00000000..59557c4b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-15-22:32:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 15 22:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-15-23:52:06 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-15-23:52:06 new file mode 100644 index 00000000..757e6dc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-15-23:52:06 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579305 May 15 23:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-15-23:56:00 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-15-23:56:00 new file mode 100644 index 00000000..24c85104 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-15-23:56:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605145 May 15 23:56 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:16:09 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:16:09 new file mode 100644 index 00000000..27254aa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:16:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605205 May 16 00:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-09:58:08 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-09:58:08 new file mode 100644 index 00000000..90a5b698 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-09:58:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605567 May 16 09:58 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:09:00 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:09:00 new file mode 100644 index 00000000..4c34f810 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:09:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605583 May 16 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:13:07 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:13:07 new file mode 100644 index 00000000..b6a851e6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:13:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605619 May 16 10:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:23:05 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:23:05 new file mode 100644 index 00000000..2c4fc649 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:23:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-14:56:01 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-14:56:01 new file mode 100644 index 00000000..c5e08e25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-14:56:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95794 May 21 14:56 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:35:00 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:35:00 new file mode 100644 index 00000000..0f2d5463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:35:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:35 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.0.6/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.0.6/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.0.6/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.6/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.0.6/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.6/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/BUGS b/software/cinit/browse_source/cinit-0.0.7/BUGS new file mode 100644 index 00000000..235a8853 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/BUGS @@ -0,0 +1,2 @@ +To be done before 0.1 (dirty release): +- replace cerr-strings with #defines, so doubled strings are elimenated diff --git a/software/cinit/browse_source/cinit-0.0.7/COPYING b/software/cinit/browse_source/cinit-0.0.7/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.0.7/CREDITS b/software/cinit/browse_source/cinit-0.0.7/CREDITS new file mode 100644 index 00000000..fd3d6ff3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/CREDITS @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete diff --git a/software/cinit/browse_source/cinit-0.0.7/Changelog b/software/cinit/browse_source/cinit-0.0.7/Changelog new file mode 100644 index 00000000..47142a97 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/Changelog @@ -0,0 +1,8 @@ +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.0.7/MT/debug b/software/cinit/browse_source/cinit-0.0.7/MT/debug new file mode 100644 index 00000000..52dab24b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/MT/debug @@ -0,0 +1,31 @@ +started up on Linux 2.6.11.10 #2 Tue May 17 11:58:45 CEST 2005 ppc +command line: 'monotone-0.18', 'sync', 'linux.schottelius.org', 'info.clinux.cinit' +set locale: LC_CTYPE=C, LC_MESSAGES=C +initial path is /home/user/nico/cinit-0.0.5 +converting 13 bytes from ANSI_X3.4-1968 to UTF-8 +converting 4 bytes from ANSI_X3.4-1968 to UTF-8 +converting 21 bytes from ANSI_X3.4-1968 to UTF-8 +converting 17 bytes from ANSI_X3.4-1968 to UTF-8 +searching for 'MT' directory with root '/' +search for 'MT' ended at '/home/user/nico/cinit-0.0.5' with '' removed +initializing from directory /home/user/nico/cinit-0.0.5 +found working copy directory /home/user/nico/cinit-0.0.5 +options path is MT/options +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 7 bytes from UTF-8 to ANSI_X3.4-1968 +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 7 bytes from UTF-8 to ANSI_X3.4-1968 +local dump path is MT/debug +setting dump path to MT/debug +opening rcfile '/home/user/nico/.monotonerc' ... +'/home/user/nico/.monotonerc' is ok +skipping nonexistent rcfile 'MT/monotonerc' +executing sync command +db.fetch("SELECT domain, name, value FROM db_vars") +db.fetch("SELECT domain, name, value FROM db_vars") +lua isfunction() failed in get_fn +db.fetch("SELECT id from 'private_keys'") +db.fetch("SELECT id, name, value, keypair, signature FROM 'revision_certs' WHERE name = 'branch'") +db.execute("BEGIN") +connecting to linux.schottelius.org +db.execute("ROLLBACK") diff --git a/software/cinit/browse_source/cinit-0.0.7/MT/log b/software/cinit/browse_source/cinit-0.0.7/MT/log new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.7/MT/options b/software/cinit/browse_source/cinit-0.0.7/MT/options new file mode 100644 index 00000000..33960254 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/MT/options @@ -0,0 +1,3 @@ + branch "info.clinux.cinit" +database "/home/user/nico/monotone.db" + key "" diff --git a/software/cinit/browse_source/cinit-0.0.7/MT/revision b/software/cinit/browse_source/cinit-0.0.7/MT/revision new file mode 100644 index 00000000..53a30a8a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/MT/revision @@ -0,0 +1 @@ +23fa7ccb2e3cc6a85fd3b72274f7bf7611dbd469 diff --git a/software/cinit/browse_source/cinit-0.0.7/Makefile b/software/cinit/browse_source/cinit-0.0.7/Makefile new file mode 100644 index 00000000..7c4c4eb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/Makefile @@ -0,0 +1,92 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +OPTIMIZE=-Werror +#DEBUG=-g -DDEBUG +#OPTIMIZE=-Os -Werror + +# init should be static per default! +LDFLAGS=-static + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-pipe -Wall -I. +LD=gcc +STRIP=strip + +# monotone +MT=monotone-0.18 + +# directories and files +SDIRS=bin client conf comm generic doc serv +FILES=BUGS Changelog Makefile README TODO cinit.h + +# objects +SERV=serv/sigio.o serv/cinit.o serv/list.o \ + serv/run_init_svc.o serv/panic.o serv/sig_reboot.o + +CLIENT=client/msg_start_svc.o client/msg_change_status.o client/run_svc.o \ + client/exec_svc.o client/respawn_svc.o client/run_run_svc.o \ + client/connect_sock.o client/begin_msg.o + +COMMUNICATION=comm/do_change_status.o comm/do_result.o comm/do_start_svc.o + +BOTH=generic/set_signals.o generic/mini_printf.o + +OBJ=$(SERV) $(CLIENT) $(BOTH) $(COMMUNICATION) + +# DO NOT CHANGE THIS. +SBIN=sbin +CINIT_BIN=$(SBIN)/cinit + +# targets +warn: + @cat doc/.buildwarn + +all: $(CINIT_BIN) sizecheck + +$(CINIT_BIN): $(SBIN) config.h $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ +$(SBIN): + mkdir $(SBIN) +sizecheck: + FILE="size/`date +%Y-%m-%d-%T`"; ls -l sbin/cinit > $$FILE; cat $$FILE + @echo -n "Source size (in KiB): " + @du -s $(SDIRS) | awk '{ sum+=$$1 } END { print sum }' +# @du -s bin client comm conf doc generic serv | awk '{ sum+=$1 } END { print sum }' +clean: + rm -f *.o */*.o sbin/cinit config.h +config.h: conf/* + ./bin/cinit.mkheader > config.h + +mt-update: + $(MT) add $(SDIRS) $(FILES) 2>/dev/null +mt-commit: + $(MT) commit +mt-sync: + $(MT) sync linux.schottelius.org info.clinux.cinit + +install: install-dir + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-dir: + ./bin/cinit.install.dir + +install-conf: install-dir + @echo '*** Creating very basic configuration ***' + ./bin/cinit.install.conf + +install-test: install-dir + @echo '***> Copying testing configuration' + ./bin/cinit.install.test diff --git a/software/cinit/browse_source/cinit-0.0.7/README b/software/cinit/browse_source/cinit-0.0.7/README new file mode 100644 index 00000000..c3523e11 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/README @@ -0,0 +1,92 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ + +cinit is a fast init system with dependency features. +It is orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every POSIX compatible system. +- true dependencies +- parallel execution +- highly customisable (see conf/*) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via monotone. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +If it's the first time you operate with cinit, also do: +# make install-conf + +This will populate /etc/cinit with some default services for Linux +(mounting root r/w, starting gettys, setting hostname). + +This should work on most Linux systems, still you should have a +look at /etc/cinit and see whether services are correct. + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. + +sampleconfig.tar is the tar-ball I used for testing, beware if you use it: +It loads dvorak at startup! + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit.html diff --git a/software/cinit/browse_source/cinit-0.0.7/TODO b/software/cinit/browse_source/cinit-0.0.7/TODO new file mode 100644 index 00000000..36cc4171 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/TODO @@ -0,0 +1,67 @@ +- Recheck sources: + - check errno! + - check whether headers are ok -> cleanup headers! + - eventually split cinit code to csvc to minimize binary of cinit? + - cleanup comments + - move messages to cinit.h or message.h or conf/msg-*! + - close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + - panic() should call sulogin + - remove FIXME entries (and what should be fixed, too) + - check LOG + - recheck 'strip' documentation, what can be stripped without problems + +- Source Logic issues + - Add sulogin possibility + - stat() in run_svc -> don't call exec_svc, respawn_svc, run_run_svc + - remove stat from exec_svc, do before! + - respawn_svc and exec_svc must return pid_t of executed service / watcher + - handle CTR-ALT-DEL / keyboard request? (see caveats) + - check for possibilies to save ram, free things + - create coala-socket with correct permissions! (550, root:cinit) + -> is that really our problem or should a service do that? + - check if we caught every signal, which could kill us + - logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? + - check for other possibilities to create a smaller binary + - strip options + - gcc options + - ld options + - alternative libc (uclibc works fine!) + - perhaps remove MAX_DEPS? + - run_svc_new: + o we have many strcat()s, perhaps save length of pathbuf and strncat at + pathtmp[strlen(pathbuf)] ? + - we have to add killing services from outside + -> perhaps completly split client code from cinit? + -> ccinit? ;-) + -> shutting down services is NOT YET possible while cinit is running + +- Documentation + - write manpages (use doc/* as base for that) + +- Porting + - add porting code to other unices? + - like openssh guys do? + - polling/signalling is different everywhere + a) use standars poll/select + b) use accelerated os-specfic + -> add the name of the function/the file to use + into conf/poll_func? + - using Linux 2.6 epoll mechanism? + +-------------------------------------------------------------------------------- +create_mini_cinit + -> use a tarball? (samples/*) + -> create something which should be runnable + -> mount, fsck, getty + --> for dev in `read /etc/fstab` ... + fsck $dev + --> getty from /etc/inittab or /sbin/*getty + -> find out, which gettys with which params + -> use it on 'make install' +-------------------------------------------------------------------------------- +- Check Spell and Grammar in documentation +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.0.7/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.add.dependency new file mode 100644 index 00000000..17683dcc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.add.dependency @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or needs Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +case $DEP in + wants) DEP=$C_WANTS ;; + needs) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could some PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEST="${BASEDIR}/${SVC_A}/${DEP}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.0.7/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.add.getty new file mode 100644 index 00000000..cd8aab55 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.add.getty @@ -0,0 +1,66 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +read -p "Getty to use [$mygetty]: " rgetty +read -p "Parameters to pass [$params]: " rparams + +[ "$rgetty" ] && mygetty=$rgetty +[ "$rparams" ] && params=$rparams + +if [ ! "$mygetty" -o ! "$params" ]; then + echo "No useable getty and parameters found, exiting." + exit 1 +fi + +echo -n "Putting $mygetty $params into $DDIR ... " +mkdir -p "$DDIR" +ln -s $mygetty "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.0.7/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.create.empty.service new file mode 100644 index 00000000..9fe748d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.create.empty.service @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR +BASEDIR=./testcinit + + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.7/bin/cinit.get-confdir b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.get-confdir new file mode 100644 index 00000000..a36c52f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.get-confdir @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# 2005-05-24 + +# try environment first +if [ "$CINIT_DIR" ]; then + CONFDIR=$CINIT_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +elif [ -d /etc/cinit ]; then + CONFDIR=/etc/cinit +else + echo Did not find cinit configuration 1>&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.0.7/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.install.binary new file mode 100644 index 00000000..08004ac7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.install.binary @@ -0,0 +1,9 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# + + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/bin/cinit.install.conf b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.install.conf new file mode 100644 index 00000000..bd6fadc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.install.conf @@ -0,0 +1,11 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# + + +. $(dirname $0)/cinit.read-conf + +echo "*** > Currently missing, sorry." + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.0.7/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.install.dir new file mode 100644 index 00000000..a94a9b9b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.install.dir @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install configuration directory +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" $DESTDIR/$PREFIX/$CINIT_DIR diff --git a/software/cinit/browse_source/cinit-0.0.7/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.0.7/bin/cinit.mkheader b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.mkheader new file mode 100644 index 00000000..e1f35d07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.mkheader @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric - no I didn't see an easier way + numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + + [ "$numeric" ] || value="\"$value\"" + + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.0.7/bin/cinit.read-conf b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.read-conf new file mode 100644 index 00000000..4263129c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.read-conf @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + eval $NAME="$(head -n 1 $conf)" + eval export $NAME +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.0.7/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.0.7/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.remove.getty new file mode 100644 index 00000000..e7b1a6ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.remove.getty @@ -0,0 +1,23 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + + +[ ! "$NUMBER" ] && exit 1 + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r $DDIR +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.0.7/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.7/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.7/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.shutdown new file mode 100644 index 00000000..49b1dabd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/bin/cinit.shutdown @@ -0,0 +1,27 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# 2005-05-24 + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -o|--off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -o|--off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.0.7/bin/not-working/cinit.create.service b/software/cinit/browse_source/cinit-0.0.7/bin/not-working/cinit.create.service new file mode 100644 index 00000000..df092275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/bin/not-working/cinit.create.service @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name (including category)" + echo " I do create a service for you" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +# read input (from gentoo-bug.sh, http://linux.schottelius.org/scripts/#gentoo-bug +reread() +{ + _tmp="" + name="$1" + + while [ ! "$_tmp" ]; do + read -p "$1 [$_tmp]: " _tmp + done + + echo $_tmp +} + + +for svc in $@; do + echo -n "Creating $svc ..." + mkdir -p "${BASEDIR}/${svc}" + cd ${BASEDIR}/${svc} + mkdir -p "${C_WANTS}" "${C_NEEDS}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.7/cinit.h b/software/cinit/browse_source/cinit-0.0.7/cinit.h new file mode 100644 index 00000000..2a18c76d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/cinit.h @@ -0,0 +1,130 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * header of cinit + */ + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* limits: will be obsolete in cinit-1.0 */ +#define MAX_SVC 510 /* maximum services - defines size of array - may later be obsoleted */ +#define MAX_DEPS 32 /* maximum direct dependencies of a service */ +#define BUFSIZE 4096 + +/* paths */ +#define C_ONARG C_ON C_PARAMS +#define C_OFFARG C_OFF C_PARAMS +#define C_ONENV C_ON C_ENV +#define C_OFFENV C_OFF C_ENV + +#define SLASH "/" + +#define CINIT_INIT CINIT_DIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK + +/* commands (maximum: 2^8 = 256)*/ +#define CMD_START_SVC 0 +#define CMD_CHG_STATUS 1 +#define CMD_STOP_SVC 2 +#define CMD_KILL_SVC 3 + +#define CMD_RESCUE 251 +#define CMD_INIT 252 + +#define CMD_HALT 253 +#define CMD_REBOOT 254 +#define CMD_POWEROFF 255 + +/* status of a service - DO NOT USE 0! */ +#define ST_TMP 1 /* currently working on it */ +#define ST_ONCE 2 /* executed once */ +#define ST_RESPAWN 3 /* running and respawning */ +#define ST_FAIL 4 /* failed to start service */ +#define ST_TMPNOW 5 /* now you are on it - only for clients */ + +/* actions for i/o handlers (see comm/do_*) */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* Messages to the outside */ + +#define MSG_ERR_READ "read" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_FORK "fork" +#define MSG_BIND "bind" +#define MSG_LISTEN "listen" +#define MSG_SOCKET "socket" +#define MSG_CONNECT "connect" +#define MSG_FCNTL "fcntl" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_TERMKILL "sigterm" +#define MSG_KILLBILL "sigkill" +#define MSG_INIT_MISS "init dir missing" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" + +struct listitem { + char *abs_path; + int status; + pid_t pid; + struct listitem *before; + struct listitem *after; +}; + + +/* variables */ +extern struct listitem *list; +extern int sock, logfd; + +/* functions (used by server and client) */ +void cerr(char *string, int status); +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +#define LOG(s) mini_printf(s,logfd) + +int do_start_svc(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* server functions */ +int list_insert(char *path, int status); +struct listitem *list_search(char *path); +int list_delete(char *path); +int run_init_svc(char *cinit_svc); +void sigio(int signal); +void sig_reboot(int signal); +void panic(void); + +/* client / message functions */ +int msg_start_svc(char *svc); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +int run_run_svcs(char *abspath); +pid_t exec_svc(char *abspath, int on); +pid_t respawn_svc(char *abspath); +int connect_sock(int socke); +char **read_file(char *file); + +/* listing functions (server only) */ +int list_insert(char *path, int status); +struct listitem *list_search(char *path); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); + + +/* DEBUG */ +#ifdef DEBUG +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) +#endif diff --git a/software/cinit/browse_source/cinit-0.0.7/client/README b/software/cinit/browse_source/cinit-0.0.7/client/README new file mode 100644 index 00000000..0a5b8d0c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/client/README @@ -0,0 +1,2 @@ +client/ + These sources are used by the children which are spawned by cinit. diff --git a/software/cinit/browse_source/cinit-0.0.7/client/begin_msg.c b/software/cinit/browse_source/cinit-0.0.7/client/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/client/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/client/connect_sock.c b/software/cinit/browse_source/cinit-0.0.7/client/connect_sock.c new file mode 100644 index 00000000..ee2c0467 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/client/connect_sock.c @@ -0,0 +1,39 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + /******************* begin socket *********************/ + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + perror(MSG_CONNECT); + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/client/exec_svc.c b/software/cinit/browse_source/cinit-0.0.7/client/exec_svc.c new file mode 100644 index 00000000..9681ba7f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/client/exec_svc.c @@ -0,0 +1,246 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +pid_t exec_svc(char *abspath, int on) +{ + pid_t pid; + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + pid = fork(); + if( pid == -1 ) { + perror("fork"); + return 0; + } + + /***** PARENT ******/ + if(pid > 0) { + waitpid(pid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return pid; + } + } + D_PRINTF("EXEC SVC FEHLGESCHLAGEN"); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + + if(on) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + D_PRINTF(pathtmp); + + /* readlink retrieves real name, if it is a symlink */ + if ( (tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror("readlink"); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + + if(on) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + tmp++; /* the byte to add to memory for \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + + if(on) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror("open"); + _exit(1); + } + + argc = 0; + + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror("read"); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG("realloc failed"); + _exit(1); + } + + nargv[argc] = sbuf; + *p = '\0'; + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + argc++; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG("realloc failed"); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(on) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* if a file exists, failing to open it is an error */ + if(fd == -1) { + perror("open"); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror("read"); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG("realloc failed"); + _exit(1); + } + + nenv[argc] = sbuf; + *p = '\0'; + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + argc++; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + perror(MSG_ERR_EXECVE); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.0.7/client/kill_svc.c b/software/cinit/browse_source/cinit-0.0.7/client/kill_svc.c new file mode 100644 index 00000000..a2db549f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/client/kill_svc.c @@ -0,0 +1,104 @@ +KOPIE VON RUN_SVC + +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * kill service????? + */ +void kill_svc(char *rpath, pid_t pid) +{ + int tmp; + char svc[PATH_MAX], svcparams[PATH_MAX]; + struct stat buf; + + D_PRINTF("starte kill_svc"); + D_PRINTF(rpath); + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + if( ! run_run_svcs(pathtmp) ) { + /* FIXME: add log + service name here */ + D_PRINTF("some NEEDED services failed)"); + msg_change_status(abspath, ST_FAIL, 0); + return 0; + } + + D_PRINTF("Starte wants"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawning"); + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + D_PRINTF("exec_unce"); + pid = exec_svc(abspath); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return 0; + } + + D_PRINTF("Melde status"); + if(!msg_change_status(abspath, tmp, pid) ) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/client/msg_change_status.c b/software/cinit/browse_source/cinit-0.0.7/client/msg_change_status.c new file mode 100644 index 00000000..837d87b6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/client/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +int msg_change_status(char *svc, char status, pid_t pid) +{ + D_PRINTF(svc); + + if(!begin_msg(CMD_CHG_STATUS)) return 0; + + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/client/msg_start_svc.c b/software/cinit/browse_source/cinit-0.0.7/client/msg_start_svc.c new file mode 100644 index 00000000..c1c1da98 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/client/msg_start_svc.c @@ -0,0 +1,18 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +int msg_start_svc(char *svc) +{ + if(!begin_msg(CMD_START_SVC)) return 0; + if(!do_start_svc(sock,svc,ACT_CLIENT)) return 0; + return (int) do_result(sock,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.0.7/client/respawn_svc.c b/software/cinit/browse_source/cinit-0.0.7/client/respawn_svc.c new file mode 100644 index 00000000..6ac56043 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/client/respawn_svc.c @@ -0,0 +1,75 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +//#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int status; + int pipefd[2]; +// struct sigaction sa; + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&status,sizeof(status)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /******************** CHILD ********************/ +/* FIXME: add handling for SIGTERM! */ +// sa.sa_handler= ( (void*)(int) ) sig_terminate; +// sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + + status = 1; + if( write(pipefd[1],&status,sizeof(status)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + while( status ) { + D_PRINTF(abspath); + pid = exec_svc(abspath, status); + + waitpid(pid,&status,0); + + if( WIFEXITED(status) ) { + if( WEXITSTATUS(status) ) { /* non-zero exit status */ + /* sleep conf/c_sleep seconds on error exit */ + sleep(SLEEP_SVC); + D_PRINTF("schlecht gestorben"); + } + } else { + sleep(SLEEP_SVC); + D_PRINTF("nicht normal gestorben"); + } + } + + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.0.7/client/run_run_svc.c b/software/cinit/browse_source/cinit-0.0.7/client/run_run_svc.c new file mode 100644 index 00000000..546f2385 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/client/run_run_svc.c @@ -0,0 +1,91 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG("to many dependencies"); + break; + } + + if(pids[i] == -1) { /* err */ + LOG("fork failed"); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,"/"); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + i++; + } + } + + closedir(d_tmp); + + /* wait for pids */ + i--; /* the index is one too much since last i++ */ + while(i >= 0) { +#ifdef DEBUG + printf("DEBUG: Warte auf %d (%d) ... \n",pids[i],i); +#endif + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } +#ifdef DEBUG + printf("FERTIG: Warte auf %d (%d) ... \n",pids[i],i); +#endif + i--; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/client/run_svc.c b/software/cinit/browse_source/cinit-0.0.7/client/run_svc.c new file mode 100644 index 00000000..5f436a44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/client/run_svc.c @@ -0,0 +1,132 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and beforeo all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + struct timespec ts; + + D_PRINTF(rpath); + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + do { + tmp = msg_start_svc(abspath); /* check status */ + + switch(tmp) { + case 0: /* failed to communicate */ + case ST_FAIL: /* somebody failed, we won't retry */ + D_PRINTF("kaputt"); + return 0; + break; + case ST_TMP: /* someone is working on it */ + D_PRINTF("warten"); + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case ST_RESPAWN: /* somebody does our work */ + D_PRINTF("schon durch"); + return 1; + break; + case ST_TMPNOW: /* we are on it! */ + break; + } + } while(tmp != ST_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + /* FIXME: add log + service name here */ + D_PRINTF("some NEEDED services failed"); + msg_change_status(abspath, ST_FAIL, 0); + return 0; + } + } + + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + D_PRINTF("Starte wants"); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + /*FIXME: check for C_ON, otherwise we are done! */ + + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + tmp = 1; + pid = exec_svc(abspath, tmp); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return 0; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/client/sig_terminate.c b/software/cinit/browse_source/cinit-0.0.7/client/sig_terminate.c new file mode 100644 index 00000000..adff9748 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/client/sig_terminate.c @@ -0,0 +1,19 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include "cinit.h" +#include + +void sig_terminate(int signal) +{ + char *nargv[2]; + + nargv[0] = SULOGIN; + nargv[1] = NULL; + + execv(SULOGIN,nargv); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.0.7/comm/README b/software/cinit/browse_source/cinit-0.0.7/comm/README new file mode 100644 index 00000000..840c9742 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/comm/README @@ -0,0 +1,3 @@ +comm/ + The communication part of cinit. + The functions are used in client and in server code. diff --git a/software/cinit/browse_source/cinit-0.0.7/comm/do_change_status.c b/software/cinit/browse_source/cinit-0.0.7/comm/do_change_status.c new file mode 100644 index 00000000..08bac734 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/comm/do_change_status.c @@ -0,0 +1,69 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/comm/do_result.c b/software/cinit/browse_source/cinit-0.0.7/comm/do_result.c new file mode 100644 index 00000000..69dc9d11 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/comm/do_result.c @@ -0,0 +1,31 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return 0; + } + return *value; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/comm/do_start_svc.c b/software/cinit/browse_source/cinit-0.0.7/comm/do_start_svc.c new file mode 100644 index 00000000..90b91712 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/comm/do_start_svc.c @@ -0,0 +1,52 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_start_svc(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + D_PRINTF("zu gross"); + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/.README b/software/cinit/browse_source/cinit-0.0.7/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/c_env b/software/cinit/browse_source/cinit-0.0.7/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/c_halt b/software/cinit/browse_source/cinit-0.0.7/conf/c_halt new file mode 100644 index 00000000..bc062a2c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/c_halt @@ -0,0 +1,4 @@ +halt + +Name of the service we should start when 'halting' (system stop, but no +power off). diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/c_init b/software/cinit/browse_source/cinit-0.0.7/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/c_needs b/software/cinit/browse_source/cinit-0.0.7/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/c_off b/software/cinit/browse_source/cinit-0.0.7/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/c_on b/software/cinit/browse_source/cinit-0.0.7/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/c_params b/software/cinit/browse_source/cinit-0.0.7/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/c_poweroff b/software/cinit/browse_source/cinit-0.0.7/conf/c_poweroff new file mode 100644 index 00000000..273d4bec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/c_poweroff @@ -0,0 +1,3 @@ +poweroff + +Name of the service we should start, when system power-off is called. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/c_reboot b/software/cinit/browse_source/cinit-0.0.7/conf/c_reboot new file mode 100644 index 00000000..17937b4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/c_reboot @@ -0,0 +1,3 @@ +reboot + +Name of the service we should start on reboot. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/c_respawn b/software/cinit/browse_source/cinit-0.0.7/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/c_sock b/software/cinit/browse_source/cinit-0.0.7/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/c_tmp b/software/cinit/browse_source/cinit-0.0.7/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.0.7/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.0.7/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/c_wants b/software/cinit/browse_source/cinit-0.0.7/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/cinit_dir b/software/cinit/browse_source/cinit-0.0.7/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/destdir b/software/cinit/browse_source/cinit-0.0.7/conf/destdir new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/destdir @@ -0,0 +1 @@ + diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/getty_dir b/software/cinit/browse_source/cinit-0.0.7/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/install_directory b/software/cinit/browse_source/cinit-0.0.7/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/install_prog b/software/cinit/browse_source/cinit-0.0.7/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/prefix b/software/cinit/browse_source/cinit-0.0.7/conf/prefix new file mode 100644 index 00000000..580ae0cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/prefix @@ -0,0 +1,4 @@ +/ + +Where to install cinit. Normally this will be /, but you can put in anywhere. +The subdirectory 'sbin' under this prefix must be reabable by the kernel. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/profile b/software/cinit/browse_source/cinit-0.0.7/conf/profile new file mode 100644 index 00000000..92fc35ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/profile @@ -0,0 +1,5 @@ +cprofile= + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile=" is the standard. +Under Linux you specify it to the bootloader like grub or lilo. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/sleep_kill b/software/cinit/browse_source/cinit-0.0.7/conf/sleep_kill new file mode 100644 index 00000000..de1fd006 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/sleep_kill @@ -0,0 +1,5 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.0.7/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/sleep_svc b/software/cinit/browse_source/cinit-0.0.7/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/sock_group b/software/cinit/browse_source/cinit-0.0.7/conf/sock_group new file mode 100644 index 00000000..d4c1adda --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/sock_group @@ -0,0 +1,3 @@ +root + +The group, which should own the communication socket. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/sock_mode b/software/cinit/browse_source/cinit-0.0.7/conf/sock_mode new file mode 100644 index 00000000..b2a727b0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/sock_mode @@ -0,0 +1,3 @@ +0770 + +Octal mode of socket. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/sock_queue b/software/cinit/browse_source/cinit-0.0.7/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/sock_user b/software/cinit/browse_source/cinit-0.0.7/conf/sock_user new file mode 100644 index 00000000..34274f4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/sock_user @@ -0,0 +1,3 @@ +root + +The one who should own the communication socket. diff --git a/software/cinit/browse_source/cinit-0.0.7/conf/sulogin b/software/cinit/browse_source/cinit-0.0.7/conf/sulogin new file mode 100644 index 00000000..0e8b13d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/conf/sulogin @@ -0,0 +1,3 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it only if we panic(). diff --git a/software/cinit/browse_source/cinit-0.0.7/doc/.buildwarn b/software/cinit/browse_source/cinit-0.0.7/doc/.buildwarn new file mode 100644 index 00000000..36cddb27 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/doc/.buildwarn @@ -0,0 +1,19 @@ +**************************************************************************** +THIS IS A PRE-RELEASE, NOT YET THOUGHT TO BE USED IN PRODUCTIVE ENVIRONMENT! +**************************************************************************** + +First of all configure cinit through the configuration files found in conf/. + +The documentation can be found in doc/, read + + doc/configuring.cinit + +_before_ first use. + +After reading and configuring use: + + "make all" - to build cinit + "make install" - to install cinit + "make install-test" - to install cinit configuration example + -> WARNING: the last make target is highly experiemental and + the installed configuration may not be usable on your system! diff --git a/software/cinit/browse_source/cinit-0.0.7/doc/FAQ b/software/cinit/browse_source/cinit-0.0.7/doc/FAQ new file mode 100644 index 00000000..dd0de5b6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/doc/FAQ @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions [Nico Schottelius, 2005-06-05] +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile=home" will use /etc/cinit/home as starting + point. diff --git a/software/cinit/browse_source/cinit-0.0.7/doc/caveats b/software/cinit/browse_source/cinit-0.0.7/doc/caveats new file mode 100644 index 00000000..54c3d4f2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/doc/caveats @@ -0,0 +1,53 @@ +'Geheimnisse' in German + + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.0.7/doc/cinit.commands b/software/cinit/browse_source/cinit-0.0.7/doc/cinit.commands new file mode 100644 index 00000000..7f606f4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/doc/cinit.commands @@ -0,0 +1,92 @@ +-------------------------------------------------------------------------------- +cinit commands, Nico Schottelius 2005-04-28 +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (uses SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service and its dependencies. + CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell.**) + CMD_INIT: Start all services (again possibly).**) + + CMD_HALT: Halt the system*) + CMD_REBOOT: Reboot the system*) + CMD_POWEROFF: Power-off the system*) + + *) The commands are not and maybe will never be implemented, + as they are realized another way (using signals). + + **) Not yet implemented. + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) ok, a SID, a service ID: int svc_id; [ really need int? ] + b) fail, [currently only fail is returned] + a) already running + b) svc_name too long / not allowed + + [ A service identification is used for faster searching in cinit. + It is also a hint for developers of external software, that they should not + be able to use CMD_CHG_STATUS, if they didn't start a service. + They should use CMD_STOP_SVC to stop a service. + Starting a service is currently done via exec() in the external program or + a cinit-fork(). ] + +CMD1CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_INIT: Start all services (again possibly). + cinit returns: ready... + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. diff --git a/software/cinit/browse_source/cinit-0.0.7/doc/configuring.cinit b/software/cinit/browse_source/cinit-0.0.7/doc/configuring.cinit new file mode 100644 index 00000000..1723a5e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/doc/configuring.cinit @@ -0,0 +1,179 @@ +-------------------------------------------------------------------------------- +configuring cinit, Nico Schottelius 2005-05-28 (Last Modified: 2005-06-05) +-------------------------------------------------------------------------------- + +0. Pre-compile configuration +1. General configuration layout +2. Hints +2.0 Service executing / parameters +2.1 Daemons +2.2 Logging +2.3 Using prepared scripts +3. Profiles + + +0. Pre-compile configuration + +Have a look at conf/*. Those variable will mostly be used when +compiling cinit. Some will be read later (like destdir). + +1. General configuration layout + +/etc/cinit (configurable via conf/cinit_dir) stores the complete +cinit configuration. + +cinit is service based. +A service consists of + - a base directory (like /etc/cinit/getty/1) + - dependency configuration: + + ./wants - services it wants to be started before (but it + will work anyway) + + ./needs/ - services it needs. If those services fail, this service + won't be started + + - a flag indicating whether to respawn the service: + + ./respawn (simply touch it) + + - the program to run when switching the service on and off: + + ./on (a link to a program or a shell script) + ./on.params (see conf/c_params, the parameters to pass to the program) + ./on.env (see conf/c_env, the environment to pass to the program) + + ./off (call that when shutting down the service) + ./off.params (the parameters to pass to the program) + ./on.env (the environment to pass to the program) + +You should have a look at the samples/ directory for examples. + +If things are missing, cinit will continue with what's available. +This way you only need the files you use. Some examples: + + /etc/cinit/init: + ./wants -> services it wants + ./needs -> services it needs + That's everything + + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it + That's everything, as it has no dependencies + + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn on service + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting + + +2. Hints + +2.0 Service executing / parameters + +The on and off files can and should be links to the programs you want +to execute. This way you save yourself loading the big shell (which is +on many Linux systems bash, why so ever, dash does the job as good, still +beeing small). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. The on script +could look like: + + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). + + +2.1 Daemons + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking + ( The following daemons / servers are known to do that easily: + openssh [ssh server]: -D + bind [dns server/caching]: -f + syslogd [log server]: -n + isc-dhcp3 [dhcp server]: -f + qmail [mta]: normal behaviour + tcpserver [super server]: normal behaviour + xinetd [super server]: -dontfork + openvpn [vpn server]: normal behaviour + oops [http proxy]: normal behaviour + frox [ftp proxy]: "NoDetach" in config + proftpd [ftp server]: -n + vsftpd [ftp server]: normal behaviour (or: config: background=no) + distccd [compile server]: normal behaviour + monotone [vcs]: normal behaviour + cupsd [printer server]: -f or -F + mini-lpd [printer server]: normal behaviour + + And those daemons do not offer the possibility (as of release 0.0.6): + + - apache (only with debug mode) + - portmap (only with debug mode) + - inetd (some variants) + ) + + +The other possibility is to use a program, which will + a) start the daemon + b) look into the pidfile of the daemon + c) will then wait until that pid does not exist anymore + d) and then it exits and cinit will restart it (goto a) now) + +Such a program will be included into one of the next cinit releases, +though I do not recommend using it. You should better contact the +authors and make them implement a clean non-forking mode. + + +2.2 Logging + +Currently there's no special logging support. +When programs write to stdout, it will be displayed on +the same stdout cinit is connected to +(we don't even open /dev/console - we are too lazy currently). + + +2.3 Using prepared scripts + +In the bin/ directory of this tarball you'll find: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + + +3. Profiles + +Since cinit-0.0.6 there is profile in cinit. +Profiles are described in doc/profile.support. + +X. Examples + +Todo. + +X.0 Getty +X.1 OpenSSH diff --git a/software/cinit/browse_source/cinit-0.0.7/doc/fun/testing01 b/software/cinit/browse_source/cinit-0.0.7/doc/fun/testing01 new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/doc/fun/testing01 @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.0.7/doc/how_it_works_internally b/software/cinit/browse_source/cinit-0.0.7/doc/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/doc/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.0.7/doc/ipc.thoughts b/software/cinit/browse_source/cinit-0.0.7/doc/ipc.thoughts new file mode 100644 index 00000000..01f8eda5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/doc/ipc.thoughts @@ -0,0 +1,74 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, Nico Schottelius 2005-04-28 +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2), +1024=max fds, -3=already opened (stderr/stdin/stdout), /2= +two fds needed per clients). + +Pipes cannot be use easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR. + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt and + - poweroff. + +Simple send cinit a signal, what to do: + SIGUSR1: reboot + SIGUSR2: poweroff + TERM: halt + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.0.7/doc/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.0.7/doc/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/doc/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.0.7/doc/merging.other.initsystems b/software/cinit/browse_source/cinit-0.0.7/doc/merging.other.initsystems new file mode 100644 index 00000000..a2496e40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/doc/merging.other.initsystems @@ -0,0 +1,64 @@ +-------------------------------------------------------------------------------- +Merging other init systems to cinit +Nico Schottelius 2005-06-02 +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not exclude that he accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much +appreciated. + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.0.7/doc/meta.dependencies b/software/cinit/browse_source/cinit-0.0.7/doc/meta.dependencies new file mode 100644 index 00000000..f599e37c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/doc/meta.dependencies @@ -0,0 +1,55 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, on would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation. + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +it does not need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ diff --git a/software/cinit/browse_source/cinit-0.0.7/doc/optimising.cinit b/software/cinit/browse_source/cinit-0.0.7/doc/optimising.cinit new file mode 100644 index 00000000..740fdc85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/doc/optimising.cinit @@ -0,0 +1,22 @@ +-------------------------------------------------------------------------------- +optimising cinit, Nico Schottelius 2005-06-09 (Last Modified: ) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + + diff --git a/software/cinit/browse_source/cinit-0.0.7/doc/porting.to.other.os b/software/cinit/browse_source/cinit-0.0.7/doc/porting.to.other.os new file mode 100644 index 00000000..d19599bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/doc/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.0.7/doc/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.0.7/doc/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/doc/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.0.7/doc/profile.support b/software/cinit/browse_source/cinit-0.0.7/doc/profile.support new file mode 100644 index 00000000..ab35e494 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/doc/profile.support @@ -0,0 +1,46 @@ +-------------------------------------------------------------------------------- +Profiles +Nico Schottelius 2005-06-04 +-------------------------------------------------------------------------------- + +1. What are profiles? +2. How to use profiles? +3. How to configure profiles? + +1. What are profiles? + +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +2. How to use profiles? + +Simply pass 'cprofile=PROFILENAME' (like cprofile=home) to cinit. +How to pass argumenents to cinit? Under Linux the init-system +gets the kernel arguments as arguments. So you can use + + kernel /usr/src/linux/vmlinuz cprofile=work (grub) + append="cprofile=work" (LILO) + +Other Unices should work like Linux, please consult your local +documentation. + +3. How to configure profiles? + +It's very simple: Normally cinit would call /etc/cinit/init as +primary service and solve all dependencies. If you pass +cprofile=wireless to it, cinit will start /etc/cinit/wireless as +primary service instead. + +So the only thing you have to do is to create a service directory +below /etc/cinit with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit; rsync -a init yourprofile + (standard cp will copy the linked files, not the links, that's + why I use rsync) + +That's it! diff --git a/software/cinit/browse_source/cinit-0.0.7/doc/thoughts.closed b/software/cinit/browse_source/cinit-0.0.7/doc/thoughts.closed new file mode 100644 index 00000000..76f0041c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/doc/thoughts.closed @@ -0,0 +1,24 @@ +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + diff --git a/software/cinit/browse_source/cinit-0.0.7/doc/thoughts.open b/software/cinit/browse_source/cinit-0.0.7/doc/thoughts.open new file mode 100644 index 00000000..5e0a054c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/doc/thoughts.open @@ -0,0 +1,14 @@ +- Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. + +- Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. diff --git a/software/cinit/browse_source/cinit-0.0.7/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.0.7/generic/mini_printf.c new file mode 100644 index 00000000..d384e717 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/generic/mini_printf.c @@ -0,0 +1,20 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * print string + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + p = str; + while ( *p != '\0') { + write(fd,p,1); + p++; + } + + write(fd,"\n",1); /* FIXME: only when console */ +} diff --git a/software/cinit/browse_source/cinit-0.0.7/generic/set_signals.c b/software/cinit/browse_source/cinit-0.0.7/generic/set_signals.c new file mode 100644 index 00000000..aa3233b6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/generic/set_signals.c @@ -0,0 +1,45 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +#include +#include +#include "cinit.h" + +void set_signals(int action) +{ + struct sigaction sa; + + if(action == ACT_SERV) { + sa.sa_handler=SIG_IGN; + } else { + sa.sa_handler=SIG_DFL; + } + sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + sigaction(SIGUSR2,&sa,NULL); /* USR2 */ + sigaction(SIGQUIT,&sa,NULL); /* QUIT... */ + sigaction(SIGTTIN,&sa,NULL); + sigaction(SIGTTOU,&sa,NULL); + + /* sigio is called to act on the socket */ + if(action == ACT_SERV) { + sa.sa_handler=sigio; + } + sigaction(SIGIO,&sa,NULL); + + /* signal handlers to do special things with: reboot */ + if(action == ACT_SERV) { + sa.sa_handler=sig_reboot; + } +// sigaction(SIGINT,&sa,NULL); /* FIXME: Testing only: ctr+c = REBOOT!!! */ + sigaction(SIGUSR1,&sa,NULL); + sigaction(SIGTERM,&sa,NULL); + sigaction(SIGHUP,&sa,NULL); + + /* sigstop can't be ignored, do the manpages say */ + /* sigaction(SIGSTOP,&sa,NULL); */ +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/add_mod_svc.c b/software/cinit/browse_source/cinit-0.0.7/old/add_mod_svc.c new file mode 100644 index 00000000..c74778d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/add_mod_svc.c @@ -0,0 +1,42 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * add_svc + * part of cinit + */ + +#include + +#include "cinit.h" + +/* we return the service id or -1 on error*/ +int add_mod_svc(char *svc, char status, pid_t pid) +{ + int tmp = 0; + + /* check if service exists, if so, set new status, return sid */ + tmp = chk_svc(svc); + if( tmp != -1 ) { + svc_list.svca[tmp].status = status; + return tmp; + } + + /* still here? than there is no such service */ + if(svc_list.process < MAX_SVC) { + printf("[%d]: %s (%d)\n",svc_list.process,svc,pid); + svc_list.svca[svc_list.process].abs_path = strdup(svc); + + if(svc_list.svca[svc_list.process].abs_path == NULL) { + LOG("strdup failed!"); + return -1; + } + svc_list.svca[svc_list.process].pid = pid; + /* inkrement later, as we count argv[0..n] */ + (svc_list.process)++; + } else { + LOG("too many services"); + return -1; + } + + /* return _our_ service id */ + return (svc_list.process -1); +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/cerr.c b/software/cinit/browse_source/cinit-0.0.7/old/cerr.c new file mode 100644 index 00000000..b9dec472 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/cerr.c @@ -0,0 +1,36 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * print error to stderr and exist + */ + +#include +#include "cinit.h" + +void cerr(char *string, int status) +{ + char *p; + + p = string; + while ( *p != '\0') { + write(2,p,1); + p++; + } + write(2,"\n",1); + + switch(status) { + case RT_CHLD_FAIL: + case RT_CHLD_OK: + _exit(status); + ;; + case RT_PAR_FAIL: /* FIXME: if status is RT_PAR_FAIL, start sulogin */ + _exit(23); + ;; + case RT_PAR_OK: + return; + ;; + } + +/* FIXME: return if in cinit, _exit on fork() */ +// if(...) +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/cinit.add.shutdown.reboot.poweroff b/software/cinit/browse_source/cinit-0.0.7/old/cinit.add.shutdown.reboot.poweroff new file mode 100644 index 00000000..23cae705 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/cinit.add.shutdown.reboot.poweroff @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add shutdown/reboot/poweroff service + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +# create halt, link reboot and poweroff to it +mkdir "$BASEDIR/$C_HALT" +ln -s "$C_HALT" "$BASEDIR/$C_REBOOT" +ln -s "$C_HALT" "$BASEDIR/$C_POWEROFF" diff --git a/software/cinit/browse_source/cinit-0.0.7/old/cinit.c01 b/software/cinit/browse_source/cinit-0.0.7/old/cinit.c01 new file mode 100644 index 00000000..e3890013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/cinit.c01 @@ -0,0 +1,105 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +#define CINIT_DIR "/etc/cinit" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "needs" +#define C_WANTS "wants" + +/* opendir() */ +#include +#include + +/* *stat() */ +#include +#include + + +#include + +#define EKEL "/etc/cinit/init/wants" + +void cerr(char *msg) +{ + printf("%s\n", msg); +} + +/* + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + + /* check if already running / ran / currently starting */ + + /* check for needs -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es, %s\n", pathbuf); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) printf("dir gibt es, %s\n", pathbuf); + + d_tmp = opendir(path); + + if(d_tmp == NULL) { + cerr("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} + +int main() +{ + + char buf[256]; + int tmp; + + strcpy(buf,CINIT_DIR); + tmp = strlen(CINIT_DIR); + buf[tmp] = '/'; + strcpy(&buf[tmp+1],C_INIT); + + printf("path: %s\n",buf); + + run_svc("/etc/cinit/init"); + + run_svc("/etc/cinit2/init"); + + run_svc("/NOT_THERE"); + +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/cinit.c02 b/software/cinit/browse_source/cinit-0.0.7/old/cinit.c02 new file mode 100644 index 00000000..7e5432b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/cinit.c02 @@ -0,0 +1,198 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +#define CINIT_DIR "/etc/cinit" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "needs" +#define C_WANTS "wants" +#define C_RUN "run" + +/* opendir() */ +#include +#include + +/* *stat() */ +#include +#include + +/* wait() */ +#include + +/* strlen */ +#include + +#include + +#define EKEL "/etc/cinit/init/wants" + +void cerr(char *msg) +{ + printf("%s\n", msg); +} + +/*********************************************************************** + * parallel run forked() run_svc() + */ +#define MAX_PAR 32 + +int run_run_svcs(char *rpath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + pid_t pids[MAX_PAR]; + int tmp,i=0; + + printf("run_run_svcs on: %s\n",rpath); + + d_tmp = opendir(rpath); + + if(d_tmp == NULL) { + printf("Failed to open dir: %s", rpath); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 + || strcmp(tdirent->d_name, "..") == 0) + continue; + + if(i < MAX_PAR) { + pids[i] = fork(); + i++; + } else { + cerr("to many dependencies"); + return 1; + } + + if(pids[i-1] == -1) { /* err */ + cerr("fork failed\n"); + return 0; + } else if(pids[i-1] == 0) { /* child */ + printf("Service zu starten nun: %s\n", tdirent->d_name); + run_svc(tdirent->d_name); + _exit(0); + } else /* the parent simply goes the loop again */ + printf("run_svcs_PARENT\n"); + } + + closedir(d_tmp); + + /* wait for pids */ + while(i >= 0) { +// printf("waiting for %d ... \n",i); + waitpid(pids[i], &tmp, 0); + i--; + } +} + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check if already running / ran / currently starting */ + + /* check for service dir */ + if( stat(path,&buf) ) { + printf("no such service: %s\n", path); + return 1; + } + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + cerr("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + + char buf[256]; + int tmp; + + strcpy(buf,CINIT_DIR); + tmp = strlen(CINIT_DIR); + buf[tmp] = '/'; + strcpy(&buf[tmp+1],C_INIT); + + printf("path: %s\n",buf); + + run_svc("/etc/cinit/init"); + + run_svc("/NOT_THERE"); + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/cinit.c03 b/software/cinit/browse_source/cinit-0.0.7/old/cinit.c03 new file mode 100644 index 00000000..c1b5eb42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/cinit.c03 @@ -0,0 +1,241 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +#define CINIT_DIR "/etc/cinit" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "needs" +#define C_WANTS "wants" +#define C_RUN "run" + +/* opendir() */ +#include +#include + +/* *stat() */ +#include +#include + +/* wait() */ +#include + +/* strlen */ +#include + +#include + +#include "cinit.h" + +#define EKEL "/etc/cinit/init/wants" + +/* status of a service */ +#define ST_TMP 1 /* currently working on it */ +#define ST_ONCE 2 /* executed once */ +#define ST_RESPAWN 3 /* running and respawning */ + +/* array of svc */ +/* linked list of services */ +/* balanced trees */ +struct svc { + char *abs_path; +// struct svc *next; + int status; /* tmp, respawn, ran once */ + /* evtl: */ +}; + +struct svcl { + struct svc svc_list[1000]; + int process; +} svc_list; + +void cerr(char *msg) +{ + printf("%s\n", msg); +} + +/*********************************************************************** + * parallel run forked() run_svc() + */ +#define MAX_PAR 32 + +int run_run_svcs(char *rpath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + pid_t pids[MAX_PAR]; + int tmp,i=0; + + printf("run_run_svcs on: %s\n",rpath); + + d_tmp = opendir(rpath); + + if(d_tmp == NULL) { + printf("Failed to open dir: %s", rpath); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 + || strcmp(tdirent->d_name, "..") == 0) + continue; + + if(i < MAX_PAR) { + pids[i] = fork(); + i++; + } else { + cerr("to many dependencies"); + return 1; + } + + if(pids[i-1] == -1) { /* err */ + cerr("fork failed\n"); + return 0; + } else if(pids[i-1] == 0) { /* child */ + printf("Service zu starten nun: %s\n", tdirent->d_name); + run_svc(tdirent->d_name); + _exit(0); + } else /* the parent simply goes the loop again */ + printf("run_svcs_PARENT\n"); + } + + closedir(d_tmp); + + /* wait for pids */ + while(i >= 0) { +// printf("waiting for %d ... \n",i); + waitpid(pids[i], &tmp, 0); + i--; + } +} + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check if already running / ran / currently starting */ + + /* debug */ + getcwd(pathbuf,1024); + + printf("dir: %s\n",pathbuf); + + /* check for service dir */ + if( stat(path,&buf) ) { + printf("no such service: %s\n", path); + return 1; + } + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + cerr("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + char pathbuf[MAXPATH]; + struct stat buf; + + strcpy(pathbuf,CINIT_DIR); + strcat(pathbuf,"/"); + strcat(pathbuf,C_INIT); + + printf("path: %s\n",pathbuf); + + svc_list.process = 0; + + /* stat, checkdir */ + if( stat(pathbuf,&buf) ) { + printf("PANIC ACTION: init dir missing\n"); + return 1; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("PANIC ACTION: init is not a dir\n"); + return 1; + } + + if( chdir(pathbuf) == -1) { + printf("PANIC ACTION: chdir(%s) failed!\n",pathbuf); + return 1; + } + run_svc("/etc/cinit/init"); +// run_svc(""); + +// run_svc("/NOT_THERE"); + +// execl("/bin/zsh","zsh", "-l"); + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/cinit.c04 b/software/cinit/browse_source/cinit-0.0.7/old/cinit.c04 new file mode 100644 index 00000000..983c03eb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/cinit.c04 @@ -0,0 +1,130 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* printf() */ +//#include + +/* str* */ +#include + +#include "cinit.h" + +/* global variable */ +struct svcl svc_list; +int f_in, f_out; + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + char pathbuf[PATH_MAX]; + char buf[1223]; + struct stat sbuf; + int i; + + struct sigaction sa; + + /* signal handlers to ignore */ + sa.sa_handler=SIG_IGN; +// sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGSTP,&sa,NULL); /* ignore ctr+z, stop */ + + D_PRINTF(CINIT_INIT); + + /* count of started processes */ + svc_list.process = 0; + + /* begin to handle signals */ + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + cerr("PANIC ACTION: init dir missing", RT_PAR_FAIL); + } else if( ! S_ISDIR(sbuf.st_mode) ) { + cerr("PANIC ACTION: init is not a dir", RT_PAR_FAIL); + } + + if( chdir(CINIT_INIT) == -1) + cerr("PANIC ACTION: chdir to /etc/cinit/init failed!",RT_PAR_FAIL); + + /* open communication fifos */ + f_in = open(CINIT_DIR SLASH F_IN, O_RDWR); + f_out = open(CINIT_DIR SLASH F_OUT, O_RDWR); + if(f_in == -1 || f_out == -1) cerr("opening fifo failed\n",RT_PAR_FAIL); + + /* initial run, only if we are 'real' init' */ +// if( getpid() == 1) { + i = run_init_svc(); + printf("Initialer Start rueckgabe: %d\n", i); +// } + + /* signal handlers to do special things with */ + // something else sa.sa_handler=SIG_IGN; + sigaction(SIGUSR1,&sa,NULL); /* reboot on sigusr1 */ + sigaction(SIGUSR1,&sa,NULL); /* power-off on sigusr2 */ + sigaction(SIGTERM,&sa,NULL); /* halt on sigterm */ + + /* important signal handlers: pipe, child */ +// sa.sa_handler=sig_pipe; +// sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + +// sa.sa_handler=sig_child; +// sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + + + /* big TODO: */ + + /* some while/for loop to hang forever, remember, we are init! */ + while(1) { + i=0; + /* read path */ + do { + read(f_in,&buf,1); +// buf1[i] = buf; i++; + } while(buf != '\0'); +// + // printf("Read path: %s\n",buf1); + + i=0; + /* read status */ + do { + read(f_in,&buf,1); + // buf2[i] = buf; i++; + } while(buf != '\0'); + + // status = atoi(buf2); + // printf("Read status: %d\n",status); + + i=0; + /* read pid */ + do { + read(f_in,&buf,1); + // buf3[i] = buf; i++; + } while(buf != '\0'); + + // pid = atoi(buf3); + + + + } + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/cinit.c05 b/software/cinit/browse_source/cinit-0.0.7/old/cinit.c05 new file mode 100644 index 00000000..8dec1f46 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/cinit.c05 @@ -0,0 +1,137 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* printf() */ +//#include + +/* str* */ +#include + +#include "cinit.h" + +/* global variable */ +struct svcl svc_list; + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + char buf[1223]; + struct stat sbuf; + int i; + + struct sigaction sa; + + /* signal handlers to ignore */ + sa.sa_handler=SIG_IGN; +// sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGSTOP,&sa,NULL); /* ignore ctr+z, stop */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + + D_PRINTF(CINIT_INIT); + + /* begin to handle signals */ + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + cerr("PANIC ACTION: init dir missing", RT_PAR_FAIL); + } else if( ! S_ISDIR(sbuf.st_mode) ) { + cerr("PANIC ACTION: init is not a dir", RT_PAR_FAIL); + } + + if( chdir(CINIT_INIT) == -1) + cerr("PANIC ACTION: chdir to /etc/cinit/init failed!",RT_PAR_FAIL); + + /* get shared memory */ + + shmfd = shm_open(CINIT_SHM,O_RDWR|O_CREAT,0600); + + if(shmfd == -1) { + perror("Shared memory"); + cerr("shared memory",RT_PAR_FAIL); + } + + /* count of started processes */ + svc_list.process = 0; + + /* open communication fifos */ + f_in = open(CINIT_DIR SLASH F_IN, O_RDWR); + f_out = open(CINIT_DIR SLASH F_OUT, O_RDWR); + if(f_in == -1 || f_out == -1) cerr("opening fifo failed",RT_PAR_FAIL); + + /* initial run, only if we are 'real' init' */ +// if( getpid() == 1) { + i = run_init_svc(); + printf("Initialer Start rueckgabe: %d\n", i); +// } + + /* signal handlers to do special things with */ + // something else sa.sa_handler=SIG_IGN; + sigaction(SIGUSR1,&sa,NULL); /* reboot on sigusr1 */ + sigaction(SIGUSR1,&sa,NULL); /* power-off on sigusr2 */ + sigaction(SIGTERM,&sa,NULL); /* halt on sigterm */ + + /* important signal handlers: pipe, child */ +// sa.sa_handler=sig_pipe; + +// sa.sa_handler=sig_child; +// sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + + + /* big TODO: */ + + /* some while/for loop to hang forever, remember, we are init! */ + while(1) { + i=0; + /* read path */ + do { + read(f_in,&buf,1); +// buf1[i] = buf; i++; + } while(buf != '\0'); +// + // printf("Read path: %s\n",buf1); + + i=0; + /* read status */ + do { + read(f_in,&buf,1); + // buf2[i] = buf; i++; + } while(buf != '\0'); + + // status = atoi(buf2); + // printf("Read status: %d\n",status); + + i=0; + /* read pid */ + do { + read(f_in,&buf,1); + // buf3[i] = buf; i++; + } while(buf != '\0'); + + // pid = atoi(buf3); + + + + } + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/cinit.c06 b/software/cinit/browse_source/cinit-0.0.7/old/cinit.c06 new file mode 100644 index 00000000..c48de22c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/cinit.c06 @@ -0,0 +1,158 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* printf() */ +//#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* global variable */ +struct svcl svc_list; +int sock; + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int signal) +{ + struct ucred suck; + int len = sizeof(suck), lens; + int nsock; + struct sockaddr_un sun; + char buf; + + lens=sizeof(sun); + memset(&sun,0,lens); + +/* this is always us! */ +// getsockopt(sock, SOL_SOCKET, SO_PEERCRED, &suck, &len); +// printf("orig angreifer: pid: %d uid: %d gid: %d\n",suck.pid,suck.uid,suck.gid); + + do { + //s_tmp[s_idx] = accept(sock,(struct sockaddr *) &sun, (socklen_t *) &lens); + nsock = accept(sock,(struct sockaddr *) NULL, (socklen_t *) NULL); + + // nsock = accept(sock,(struct sockaddr *) &sun, (socklen_t *) &lens); +// if( s_tmp[s_idx] == -1) { + if( nsock == -1) { + if (errno != EAGAIN) { + perror("accept"); + _exit(1); + } else { + break; + } + } + + //getsockopt(s_tmp[s_idx], SOL_SOCKET, SO_PEERCRED, &suck, &len); + getsockopt(nsock, SOL_SOCKET, SO_PEERCRED, &suck, &len); + printf("angreifer: pid: %d uid: %d gid: %d\n",suck.pid,suck.uid,suck.gid); + + + read(nsock,&buf,1); + + printf("command: %d\n",buf); + + while ( (len = read(nsock,&buf,1)) ) { +// printf("laenge: %d\n",len); + if(len == -1) { +// if(errno != EINVAL && errno != EAGAIN) { + perror("read"); + return; +// _exit(1); +// } + } + if(buf == 0) break; + write(1,&buf,1); + } + printf("Fertig mit lesen\n"); + + write(nsock,"ok\n",4); + printf("fertig mit schreiben\n"); + } while ( 1 ); + + printf("keine sockets mehr da..., sigio beendet sich jetzt.\n"); +} + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + struct stat sbuf; + int i; + + struct sigaction sa; + + /* signal handlers to ignore */ + sa.sa_handler=SIG_IGN; +// sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGSTOP,&sa,NULL); /* ignore ctr+z, stop */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + + sa.sa_handler=sigio; + sigaction(SIGIO,&sa,NULL); /* what todo when data arrived on socket */ + + D_PRINTF(CINIT_INIT); + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + cerr("PANIC ACTION: init dir missing", RT_PAR_FAIL); + } else if( ! S_ISDIR(sbuf.st_mode) ) { + cerr("PANIC ACTION: init is not a dir", RT_PAR_FAIL); + } + + if( chdir(CINIT_INIT) == -1) + cerr("PANIC ACTION: chdir to /etc/cinit/init failed!",RT_PAR_FAIL); + + /* count of started processes */ + svc_list.process = 0; + + /* initial run, only if we are 'real' init' */ +// if( getpid() == 1) { + i = run_init_svc(); + printf("Initialer Start rueckgabe: %d\n", i); +// } + + /* signal handlers to do special things with */ + // something else sa.sa_handler=SIG_IGN; +// sigaction(SIGUSR1,&sa,NULL); /* reboot on sigusr1 */ +// sigaction(SIGUSR1,&sa,NULL); /* power-off on sigusr2 */ +// sigaction(SIGTERM,&sa,NULL); /* halt on sigterm */ + + /* the main loop */ + while(1) ; + +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/cinit.commands.v01 b/software/cinit/browse_source/cinit-0.0.7/old/cinit.commands.v01 new file mode 100644 index 00000000..dfdb67c5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/cinit.commands.v01 @@ -0,0 +1,85 @@ +-------------------------------------------------------------------------------- +cinit commands, Nico Schottelius 2005-04-28 +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (uses SO_PEERCRED as +socketoption). + +The communication-protocol is binary. + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service and its dependencies. + CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_INIT: Start all services (again possibly). + + CMD_HALT: Halt the system. + CMD_REBOOT: Reboot the system. + CMD_POWEROFF: Power-off the system. + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) ok, a SID, a service ID: int svc_id; [ really need int? ] + b) fail, [currently only fail is returned] + a) already running + b) svc_name too long / not allowed + + [ A service identification is used for faster searching in cinit. + It is also a hint for developers of external software, that they should not + be able to use CMD_CHG_STATUS, if they didn't start a service. + They should use CMD_STOP_SVC to stop a service. + Starting a service is currently done via exec() in the external program or + a cinit-fork(). ] + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int svc_id; /* service ID to change */ + 1. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit uncgrafully + UNUSED! respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_INIT: Start all services (again possibly). + cinit returns: ready... + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. diff --git a/software/cinit/browse_source/cinit-0.0.7/old/cinit.create.cinit_dir b/software/cinit/browse_source/cinit-0.0.7/old/cinit.create.cinit_dir new file mode 100644 index 00000000..6fd58adb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/cinit.create.cinit_dir @@ -0,0 +1,11 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create our initial directory +# 2005-05-24 + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +mkdir -p $BASEDIR diff --git a/software/cinit/browse_source/cinit-0.0.7/old/cinit.h01 b/software/cinit/browse_source/cinit-0.0.7/old/cinit.h01 new file mode 100644 index 00000000..e07fa2c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/cinit.h01 @@ -0,0 +1,80 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * header of cinit + */ + +/* includes */ +#include /* pid_t */ + +/* limits */ +#define MAX_SVC 1024 /* maximum services */ +#define MAX_DEPS 32 /* maximum direct dependencies of a service */ + +/* paths */ +#define CINIT_DIR "/etc/cinit" + +#define F_IN "in" +#define F_OUT "out" +#define SLASH "/" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "./needs" +#define C_WANTS "./wants" +#define C_RUN "./run" +#define C_RESPAWN "respawn" +#define C_PARAMS "params" + +/* return values */ +#define RT_FAIL 0 +#define RT_OK 1 + +#define RT_CHLD_FAIL 1 /* child failed */ +#define RT_CHLD_OK 2 /* child succeded */ +#define RT_PAR_FAIL 3 /* parent failed */ +#define RT_PAR_OK 4 /* parent succeded */ + +/* status of a service-starter (run_run_svc) */ +#define RT_ONE_FAILED 5 /* one ore more failed */ +#define RT_ALL_STARTED 6 /* everything ok */ +#define RT_DEPS_MAX 7 /* too many dependencies */ + +/* status of a service */ +#define ST_NO 0 /* process not existing */ +#define ST_TMP 1 /* currently working on it */ +#define ST_ONCE 2 /* executed once */ +#define ST_RESPAWN 3 /* running and respawning */ +#define ST_FAIL 4 /* failed to start service */ + + + +/* variables */ + +/* array of svc */ +/* linked list of services */ +/* balanced trees */ + +struct svc { + char *abs_path; /* service identifier */ + int status; /* tmp, respawn, ran once */ + pid_t pid; /* pid of the process */ +}; + +struct svcl { + struct svc svca[MAX_SVC]; + int process; +}; + +extern struct svcl svc_list; + +/* functions */ + +void cerr(char *string, int status); +int chk_svc(char *svc); +int run_svc(char *rpath); +int add_mod_svc(char *svc, int status); +int run_run_svcs(char *rpath); + diff --git a/software/cinit/browse_source/cinit-0.0.7/old/cnt_digits.c b/software/cinit/browse_source/cinit-0.0.7/old/cnt_digits.c new file mode 100644 index 00000000..a692fa5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/cnt_digits.c @@ -0,0 +1,42 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* this code is stolen from gpm */ + +/* what's the english name for potenz ? */ +int x_high_y(int base, int pot_y) +{ + int val = 1; + + if(pot_y == 0) val = 1; + else if(pot_y < 0) val = 0; /* ugly hack ;) */ + else while(pot_y > 0) { + val = val * base; + pot_y--; + } + return val; +} + +/* return characters needed to display int */ +int cnt_digits(int number) +{ + /* 0-9 = 1 10^0 <-> (10^1)-1 + * 10 - 99 = 2 10^1 <-> (10^2)-1 + * 100 - 999 = 3 10^2 <-> (10^3)-1 + * 1000 - 9999 = 4 ... */ + + int ret = 0, num = 0; + + /* non negative, please */ + if(number < 0) number *= -1; + else if(number == 0) ret = 1; + else while(number > num) { + ret++; + num = (x_high_y(10,ret) - 1); + } + + return(ret); +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/do_change_status.c01 b/software/cinit/browse_source/cinit-0.0.7/old/do_change_status.c01 new file mode 100644 index 00000000..74bb9c1e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/do_change_status.c01 @@ -0,0 +1,65 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + char buf = CMD_CHG_STATUS; + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + D_PRINTF("VERSUCHE STATUS ZU AENDERN"); + printf("socket: %d (cmd=%d)\n",sock2, buf); + + if(action == ACT_READ) { + D_PRINTF("Leeeese"); + fpoint = read; + } else { + D_PRINTF("schreibe"); + fpoint = write; /* don't care about warnings! */ + } + + if(action == ACT_WRITE) { + D_PRINTF("schreibe kommando"); + if(fpoint(sock2,&buf,1) == -1) { /* COMMAND */ + perror("command i/o"); + return 0; + } + tmp = strlen(svc); + sock2 = connect_sock(sock2); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror("i/o: length"); + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror("i/o: service name"); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror("i/o: status"); + printf("Status: %d, *status=%d, sizeof=%d\n",status,*status,sizeof(*status)); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror("i/o: PID"); + return 0; + } + + D_PRINTF("fertig mit statuswechsel lesen"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/idea01 b/software/cinit/browse_source/cinit-0.0.7/old/idea01 new file mode 100644 index 00000000..cf0df9d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/idea01 @@ -0,0 +1,121 @@ +-------------------------------------------------------------------------------- +/etc/cinit + -> init/ + -> shutdown/ + -> reboot/ + + + needs/ -> we wait until all parallel processes are finished _and_ we + don't start if one fails + wants/ -> we start all of them parallel and wait for them? + hold/ + wait -> wait until process finished + run -> program to execute + params -> \n seperated argument list + respawn -> respawn it + +services may only be under /etc/cinit? +-------------------------------------------------------------------------------- +Service-Status: + +- abs_path +- status (respawn,tmp,once) +-------------------------------------------------------------------------------- + +starting services: + +run_svc("/etc/cinit/service/") + -> exec run $params +Later: + -> check if service already running -> return OK + -> check needs/ -> check wants/ + -> run_svc($cur) + + When run_svc returns, the service is started and all service it needs, too. + + +-------------------------------------------------------------------------------- + -> check needs/ + -> exists -> fork( run_run_svcs() ) and continue + (fork) -> fork() run_svc(needs/*); + -> check wants/ + -> exists -> run_svc(wants/*); + -> waitfor(need_run_svc) +-------------------------------------------------------------------------------- +run_run_svcs() + -> start parallel (forked) run_svc() for every service +-------------------------------------------------------------------------------- + +main() + - run_svc /etc/cinit/init/ + - sleep()? -> simply do nothing -> do we need to fork ourselves? No, we are init. +spaeter: + - open /dev/console W_ONLY + - make stdin == /etc/cinit/in + - make stdout, stderr /dev/console + +-------------------------------------------------------------------------------- +eof + +Things, which are clear + +- we need to fork before execl(), as excel() replaces us. +- chdir() _after_ fork() + + +profiles support: profile=$profile + + start + "service.$profile" if exists, instead of + "service" + +starting services: + +cinit: + pipe() + set_status_tmp() + fork() --> failure --> clear_service + cinit_process_watcher(): + fork() + execve(process,args,env) + waitpid() -> for once? PROCESS MUST RETURN! + write_pipe() + rmpipe() + +-------------------------------------------------------------------------------- + +What to send over to cinit and read back? + + - first you need two pipes for every process: read+write (on both sides) + - cinit wants + o command + - service temporary - trying to start in right now. + - service executed once - fine + - service executed once and that failed - :-( + - service respawing + o an identifier for the service (i from service list ;-) + + --> makes 2 bytes to read +-------------------------------------------------------------------------------- +How cinit works: + +cinit says: I want to start service xyz. (/etc/cinit/init on bootup) +cinit calls run_svc(). +-------------------------------------------------------------------------------- + +run_svc(char *relative_path): + - check if service is alr + - fork() + - write cinit: check service, I want to start it + -> returns status of service (see ST_* in cinit.h) + - cinit returns: ok, you are temporary + - [that checked] check if service + o is already started + o is beeing started + x check if rpath S_ISDIR + x chdir(dir) + - check needs - check wants + - for every needs/* start run_svc + - check respawn -> respawn = true + - check run + diff --git a/software/cinit/browse_source/cinit-0.0.7/old/idea02 b/software/cinit/browse_source/cinit-0.0.7/old/idea02 new file mode 100644 index 00000000..38af8965 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/idea02 @@ -0,0 +1,200 @@ +-------------------------------------------------------------------------------- +/etc/cinit + -> init/ + -> shutdown/ + -> reboot/ + + + needs/ -> we wait until all parallel processes are finished _and_ we + don't start if one fails + wants/ -> we start all of them parallel and wait for them? + hold/ + wait -> wait until process finished + run -> program to execute + params -> \n seperated argument list + respawn -> respawn it + +services may only be under /etc/cinit? +-------------------------------------------------------------------------------- +Service-Status: (see struct svc, cinit.h) + +- abs_path +- status (respawn,tmp,once) +- pid + +abs_path\0status\0pid\0 + +-------------------------------------------------------------------------------- + +starting services: + +run_svc("/etc/cinit/service/") + -> exec run $params +Later: + -> check if service already running -> return OK + -> check needs/ -> check wants/ + -> run_svc($cur) + + When run_svc returns, the service is started and all service it needs, too. + + +-------------------------------------------------------------------------------- + -> check needs/ + -> exists -> fork( run_run_svcs() ) and continue + (fork) -> fork() run_svc(needs/*); + -> check wants/ + -> exists -> run_svc(wants/*); + -> waitfor(need_run_svc) +-------------------------------------------------------------------------------- +run_run_svcs() + -> start parallel (forked) run_svc() for every service +-------------------------------------------------------------------------------- + +main() + - run_svc /etc/cinit/init/ + - sleep()? -> simply do nothing -> do we need to fork ourselves? No, we are init. +spaeter: + - open /dev/console W_ONLY + - make stdin == /etc/cinit/in + - make stdout, stderr /dev/console + +-------------------------------------------------------------------------------- +eof + +Things, which are clear + +- we need to fork before execl(), as excel() replaces us. +- chdir() _after_ fork() + + +profiles support: profile=$profile + + start + "service.$profile" if exists, instead of + "service" + +starting services: + +cinit: + pipe() + set_status_tmp() + fork() --> failure --> clear_service + cinit_process_watcher(): + fork() + execve(process,args,env) + waitpid() -> for once? PROCESS MUST RETURN! + write_pipe() + rmpipe() + +-------------------------------------------------------------------------------- + +What to send over to cinit and read back? + + - first you need two pipes for every process: read+write (on both sides) + - cinit wants + o command + - service temporary - trying to start in right now. + - service executed once - fine + - service executed once and that failed - :-( + - service respawing + o an identifier for the service (i from service list ;-) + + --> makes 2 bytes to read +-------------------------------------------------------------------------------- +How cinit works: + +cinit says: I want to start service xyz. (/etc/cinit/init on bootup) +cinit calls run_svc(). +-------------------------------------------------------------------------------- + +int run_svc(char *relative_path): + - check if service is already running or temporary (task list!) + -> yes: return RT_PAR_OK + -> no: continue. + - set service to be temporary (ST_TMP) and retrieve SID (service ID) + - walk through dependency tree and call run_svc + - fork() -> so cinit can continue. + - write cinit: check service, I want to start it + -> returns status of service (see ST_* in cinit.h) + - cinit returns: ok, you are temporary + - [that checked] check if service + o is already started + o is beeing started + x check if rpath S_ISDIR + x chdir(dir) + - check needs - check wants + - for every needs/* start run_svc + - check respawn -> respawn = true + - check run + +-------------------------------------------------------------------------------- + +add_mod_svc(char *svc, int status) + -> add or modify status of a service + + - check whether service exists, reset status + - if not exists, insert if maximum of services is not reached +-------------------------------------------------------------------------------- + +cinit communications proto +-------------------------------------------------------------------------------- + +cinit: + -> signal_handler on SIGCHLD + run_init() + -> run_svc(init) + -> fork() -> do the work + +signal_handler_child + waitpid(.*) + -> returns pid + + oder waitpid() in dem run_svc, wenn need/once? + + need: + for i in need/*; do + ( $service & ); + done + wait(.*); + +-------------------------------------------------------------------------------- + +cinit: + +run_svc: + checks what it needs (need/*) + need/* + fork() + fork(), fork() + +-------------------------------------------------------------------------------- +Kommunikationsproblem: + + -> 1024 ist maximale anzahl offener sockets -> 510 von fifos,pipes + - mehrere FIFOs? + --> kommunikation gesichert, extrem viele fifos... + --> etwas unsauber, aber geregelte kommunikation + - mehrere PIPEs? + --> viele PIPEs (HRHR) + --> programme koennen nur von cinit gefork()ed werden. + + --> eine datei mit prozessen? + --> einen RAM Bereich? +-------------------------------------------------------------------------------- + +cinit[1] <-> fifo <-> forker + +forker? +-------------------------------------------------------------------------------- + +pfad vorher aufloesen? + +-------------------------------------------------------------------------------- +Kommunikation: ::Test:: + + Test mit nur 2 FIFOs! + +-------------------------------------------------------------------------------- + +sig_fifo() +read(..) als hauptaufgabe? diff --git a/software/cinit/browse_source/cinit-0.0.7/old/msg_change_status.c01 b/software/cinit/browse_source/cinit-0.0.7/old/msg_change_status.c01 new file mode 100644 index 00000000..cfd66ae3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/msg_change_status.c01 @@ -0,0 +1,49 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include + +#include "cinit.h" + +int do_change_status(char *svc, char status, pid_t pid, int action) +{ + char buf = CMD_CHG_STATUS; + int tmp = strlen(svc); + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_READ) + fpoint = read; + else + fpoint = write; + + D_PRINTF("versuche status zu aendern"); + + if(write(sock,&buf,1) == -1) { /* write COMMAND */ + perror("write"); + return 0; + } + if(write(sock,&tmp,sizeof(tmp)) == -1) { /* write length */ + perror("write"); + return 0; + } + if(write(sock,svc,tmp) == -1) { /* write service name */ + perror("write"); + return 0; + } + if(write(sock,&buf,1) == -1) { /* write PID */ + perror("write"); + return 0; + } + write(sock,&status,sizeof(status)); /* write status */ + + D_PRINTF("fertig mit schreiben"); + + read(sock,&buf,sizeof(buf)); /* read SID or -1 if error */ + + return buf; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/msg_start_svc.c b/software/cinit/browse_source/cinit-0.0.7/old/msg_start_svc.c new file mode 100644 index 00000000..c6a78bf8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/msg_start_svc.c @@ -0,0 +1,23 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit we start a service + */ + +#include + +/* return status */ +int msg_start_svc(char *string, int respawn) +{ + char *p; + + p = string; + while ( *p != '\0') { + write(2,p,1); + p++; + } + +/* FIXME: return if in cinit, _exit on fork() */ +// if(...) + _exit(status); +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/read_file.c b/software/cinit/browse_source/cinit-0.0.7/old/read_file.c new file mode 100644 index 00000000..43a5854b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/read_file.c @@ -0,0 +1,100 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + +#include "cinit.h" + +/*********************************************************************** + * read_file: return file content, each line a char* + */ + +char **read_file(char *file) +{ + int tmp; + int fd, argc; + + char buf[BUFSIZE]; + char *p, *sbuf = NULL; + char **nargv = NULL; + + struct stat stbuf; + + D_PRINTF("Lese Datei"); + D_PRINTF(file); + + if( !stat(file,&stbuf) ) { + fd = open(file,O_RDONLY); + + if(fd == -1) { + LOG("params exists, but open params failed"); + return NULL; + } + + D_PRINTF("open ist ok"); + + argc = 0; + + /* most likely one round */ + while ( (tmp = read(fd,buf,BUFSIZE) ) != 0 ) { + if(tmp == -1) { + perror("read"); + return NULL; + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],buf,tmp); + argc += tmp; + } + close(fd); + } + + sbuf[argc] = '\0'; + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() */ + + argc = 0; + + while( (p = strchr(sbuf,'\n')) ) { + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG("realloc failed"); + return NULL; + } + + nargv[argc] = sbuf; + *p = '\0'; + sbuf = p+1; /* is ok, as behind the last \n is a \0 */ + argc++; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + if(nargv == NULL) { + LOG("realloc failed"); + return NULL; + } + + nargv[argc] = NULL; /* terminate argv list */ + + return nargv; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/run_init_svc.c01 b/software/cinit/browse_source/cinit-0.0.7/old/run_init_svc.c01 new file mode 100644 index 00000000..61467f44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/run_init_svc.c01 @@ -0,0 +1,50 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run initial service + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * start the first service + */ + +int run_init_svc() +{ + pid_t pid; + + D_PRINTF("Starte initialen starter"); + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + perror("fork failed\n"); + return RT_PAR_FAIL; + } else if(pid == 0) { /* child */ + /* close fifo */ + close(f_in); close(f_out); + + /* open the other way round */ + f_in = open(CINIT_DIR SLASH F_OUT, O_RDWR); + f_out = open(CINIT_DIR SLASH F_IN, O_RDWR); + if(f_in == -1 || f_out == -1) cerr("opening fifo failed\n",RT_CHLD_FAIL); + + /* open stderr, stdin, stdout to files? */ + if ( run_svc(CINIT_INIT) == RT_CHLD_OK) + _exit(EX_OK); + else + _exit(EX_FAIL); + } else + return RT_PAR_OK; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c00 b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c00 new file mode 100644 index 00000000..ff3bb989 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c00 @@ -0,0 +1,140 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp, sid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + close(sock); /* close old socket connection, we are a fork()! */ + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + return 0; + } + tmp = sizeof(addr); + memset(&addr,0,tmp); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + /* FIXME: why do we need tmp????? ... tmp == 1 is wrong!*/ +/* tmp = 1; + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + return 0; + } */ + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + return 0; + } + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror("getcwd"); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror("chdir"); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + if( ! run_run_svcs(pathtmp) ) { + D_PRINTF("some NEEDED services failed)"); + return 0; + } + + D_PRINTF("Starte wants"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + tmp = ST_ONCE; + sid = 20; + D_PRINTF("Melde status"); + if(!do_change_status(abspath,&tmp,&sid,sock,ACT_WRITE)) { + D_PRINTF("Status nicht gemeldet :((((((((((("); + return 0; + } + D_PRINTF("Status abgesetzt"); + +/* if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + if(respawn_svc(abspath)) { + msg_change_status(sid,ST_RESPAWN); + } else { + D_PRINTF("error in respawn"); + msg_change_status(sid,ST_FAIL); + } + } else { + D_PRINTF("einmal ausfuehren"); + if(exec_svc(abspath)) { + msg_change_status(sid,ST_ONCE); + } else { + D_PRINTF("error einmalig"); + msg_change_status(sid,ST_FAIL); + } + } */ +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c01 b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c01 new file mode 100644 index 00000000..e7457af0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c01 @@ -0,0 +1,292 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* perhaps move this code to cinit-static, so it's constant */ + while(tmp < svc_list.process) { + printf("%d\n",tmp); + + if( ! strcmp(rpath,svc_list.svca[tmp].abs_path) ) { + printf("Service im Array\n"); + return 0; + } + tmp++; + } + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* check for respawn? */ + + /* fork before chdir */ + pid = fork(); + + if(pid == -1) { + printf("ERORERER\n"); + return 0; + } else if(pid > 0) { /* parent gets child's PID */ + + /* NOT IF RESPAWN */ + if(!respawn) { + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) + return RT_PAR_OK; + else + return RT_PAR_FAIL; + } /* else */ /* Was tun, wenn respawn? nochmal forken als beobachter, + oder signal? */ + } + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + /* THis saVES US THE OTHER STRCMP!!!!! */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check, whether we should respawn fixme: much earlier! */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( !stat(pathtmp,&buf) ) respawn = 1; + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check if already running / ran / currently starting */ + + /* debug */ + getcwd(pathbuf,1024); + + printf("dir: %s\n",pathbuf); + + /* check for service dir */ + if( stat(path,&buf) ) { + printf("no such service: %s\n", path); + return 1; + } + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c02 b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c02 new file mode 100644 index 00000000..7fb329b6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c02 @@ -0,0 +1,282 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* perhaps move this code to cinit-static, so it's constant */ + while(tmp < svc_list.process) { + printf("%d\n",tmp); + + if( ! strcmp(rpath,svc_list.svca[tmp].abs_path) ) { + printf("Service im Array\n"); + return 0; + } + tmp++; + } + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* check for respawn? */ + + /* fork before chdir */ + pid = fork(); + + if(pid == -1) { + printf("ERORERER\n"); + return 0; + } else if(pid > 0) { /* parent gets child's PID */ + + /* NOT IF RESPAWN */ + if(!respawn) { + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) + return RT_PAR_OK; + else + return RT_PAR_FAIL; + } /* else */ /* Was tun, wenn respawn? nochmal forken als beobachter, + oder signal? */ + } + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + /* THis saVES US THE OTHER STRCMP!!!!! */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check, whether we should respawn fixme: much earlier! */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( !stat(pathtmp,&buf) ) respawn = 1; + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c03 b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c03 new file mode 100644 index 00000000..9422a7c9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c03 @@ -0,0 +1,283 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_in[2], p_out[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* create communication pipe */ + if ( pipe(p_in) == -1 || pipe(p_out) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + + /* check for respawn? yes, sometime... */ + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* fork before chdir */ + pid = fork(); + + if(pid == -1) { + printf("ERORERER\n"); + return 0; + } else if(pid > 0) { /* parent gets child's PID */ + + /* NOT IF RESPAWN */ + if(!respawn) { + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) + return RT_PAR_OK; + else + return RT_PAR_FAIL; + } /* else */ /* Was tun, wenn respawn? nochmal forken als beobachter, + oder signal? */ + } + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + /* THis saVES US THE OTHER STRCMP!!!!! */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check, whether we should respawn fixme: much earlier! */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( !stat(pathtmp,&buf) ) respawn = 1; + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + +beof + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c04 b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c04 new file mode 100644 index 00000000..727aa71f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c04 @@ -0,0 +1,297 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) respawn = 1; + + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + } + + /* fork at the beginning and before chdir */ + pid = fork(); + + if( pid == -1 ) cerr("fork failed",RT_PAR_FAIL); + + if(pid == -1) { + cerr("fork failed\n", RT_PAR_FAIL); + } else if(pid > 0) { /* parent gets child's PID */ + + if(respawn) { + /* read the final byte from child */ + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == ST_RESPAWN) { + printf("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + } + } else { /* execute once */ + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + + /* check for needs */ + + /* do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcat(pathtmp,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + pid = fork(); + if(tmp == -1) { + cerr("error ...\n", RT_PAR_FAIL); + } else if(tmp == 0) { + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,rpath); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c05 b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c05 new file mode 100644 index 00000000..927a9261 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c05 @@ -0,0 +1,294 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) respawn = 1; + + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + } + + /* fork at the beginning and before chdir */ + pid = fork(); + + if( pid == -1 ) cerr("fork failed",RT_PAR_FAIL); + + if(pid == -1) { + cerr("fork failed\n", RT_PAR_FAIL); + } else if(pid > 0) { /* parent gets child's PID */ + + if(respawn) { + /* read the final byte from child */ + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == ST_RESPAWN) { + printf("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + } + } else { /* execute once */ + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c05.2 b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c05.2 new file mode 100644 index 00000000..90d94b65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c05.2 @@ -0,0 +1,320 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; /* talk to respawnig watcher */ + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + return 0; + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + return 0; + } + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + return 0; + } + + /******************* end socket *********************/ + + sid = msg_start_svc(rpath); /* now we are temporary */ + if(sid == -1) { + cerr("cinit returned start error",RT_CHLD_FAIL); + return 0; + } + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + msg_change_status(sid,ST_FAIL); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + msg_change_status(sid,ST_FAIL); + return 0; + } + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + respawn = 1; + } + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) { + perror("pipe"); + cerr("pipe failed",RT_PAR_FAIL); + } + } + + /* clone */ + pid = fork(); + if( pid == -1 ) { + perror("fork"); + cerr("fork failed",RT_CHLD_FAIL); + return 0; + } + + _exit(0); + + /* the following block handles parent situation */ + + if(pid > 0) { /* parent gets child's PID */ + + /*************** THIS BLOCK IS CRAP ******************/ + + /* FIXME: when respawing, we'll watch our child */ + if(respawn) { + tmp = MSG_FAIL; + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == MSG_OK) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + msg_change_status(sid,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + msg_change_status(sid,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + /* FIXME: MISSING: + - signal handling (stop respawing) + - waitpid() in while(1) + */ + _exit(0); /* FIXME !!! */ + + /*************** END THIS BLOCK IS CRAP ******************/ + + } else /* don't RESPAWN */ { /* execute only once */ + D_PRINTF("Warte EINMAL auf mein Kind..."); + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + + /*********** CHILD EXECUTION HERE ***********/ + do { + + + } while(respawn); + + + + /* change to service dir */ + if( chdir(rpath) == -1) { + /* FIXME: errno! */ + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c06 b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c06 new file mode 100644 index 00000000..7dd265fc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c06 @@ -0,0 +1,293 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("Fehler"); + _exit(1); + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + cerr("Does your OS not support SO_PASSCRED (man 7 socket)?",RT_PAR_FAIL); + } + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + _exit(1); + } + + /******************* end socket *********************/ + + msg_start_svc(rpath); + D_PRINTF("in runsvc"); + _exit(0); + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc_client(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return ; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) respawn = 1; + + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + } + + /* fork at the beginning and before chdir */ + pid = fork(); + + /* FIXME: pay attention: we are possibly also a fork()! */ + + if( pid == -1 ) cerr("fork failed",RT_PAR_FAIL); + + if(pid > 0) { /* parent gets child's PID */ + if(respawn) { + /* read the final byte from child */ + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == ST_RESPAWN) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } else { /* execute once */ + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c07 b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c07 new file mode 100644 index 00000000..e62eff54 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c07 @@ -0,0 +1,304 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; /* talk to respawnig watcher */ + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + _exit(1); + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + cerr("Does your OS not support SO_PASSCRED (man 7 socket)?",RT_PAR_FAIL); + } + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + _exit(1); + } + + /******************* end socket *********************/ + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + _exit(1); + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + _exit(1); + } + + tmp = msg_start_svc(rpath); /* now we are temporary */ + + D_PRINTF("in runsvc"); + + if(tmp == -1) { + cerr("cinit returned start error",RT_CHLD_FAIL); + _exit(1); + } + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + respawn = 1; + } + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) { + perror("pipe"); + cerr("pipe failed",RT_PAR_FAIL); + } + } + + pid = fork(); + /* pay attention: we are also a fork()! */ + if( pid == -1 ) { + perror("fork"); + cerr("fork failed",RT_CHLD_FAIL); + _exit(1); + } + + _exit(0); + + /* the following block handles parent situation */ + + if(pid > 0) { /* parent gets child's PID */ + + /* FIXME: when respawing, we'll watch our child */ + if(respawn) { + tmp = MSG_FAIL; + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == MSG_OK) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } else /* don't RESPAWN */ { /* execute only once */ + D_PRINTF("Warte EINMAL auf mein Kind..."); + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c08 b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c08 new file mode 100644 index 00000000..587e13e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c08 @@ -0,0 +1,316 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; /* talk to respawnig watcher */ + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + _exit(1); + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + cerr("Does your OS not support SO_PASSCRED (man 7 socket)?",RT_PAR_FAIL); + /* FIXME: cerr */ + } + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + _exit(1); + } + + /******************* end socket *********************/ + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + _exit(1); + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + _exit(1); + } + + sid = msg_start_svc(rpath); /* now we are temporary */ + + D_PRINTF("in runsvc"); + + if(sid == -1) { + cerr("cinit returned start error",RT_CHLD_FAIL); + _exit(1); + } + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + respawn = 1; + } + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) { + perror("pipe"); + cerr("pipe failed",RT_PAR_FAIL); + } + } + + pid = fork(); + /* pay attention: we are also a fork()! */ + if( pid == -1 ) { + perror("fork"); + cerr("fork failed",RT_CHLD_FAIL); + _exit(1); + } + + _exit(0); + + /* the following block handles parent situation */ + + if(pid > 0) { /* parent gets child's PID */ + + /*************** THIS BLOCK IS CRAP ******************/ + + /* FIXME: when respawing, we'll watch our child */ + if(respawn) { + tmp = MSG_FAIL; + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == MSG_OK) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + msg_change_status(sid,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + msg_change_status(sid,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + /* FIXME: MISSING: + - signal handling (stop respawing) + - waitpid() in while(1) + */ + _exit(0); /* FIXME !!! */ + + /*************** END THIS BLOCK IS CRAP ******************/ + + } else /* don't RESPAWN */ { /* execute only once */ + D_PRINTF("Warte EINMAL auf mein Kind..."); + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + /* FIXME: errno! */ + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c09 b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c09 new file mode 100644 index 00000000..ff3bb989 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/run_svc.c09 @@ -0,0 +1,140 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp, sid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + close(sock); /* close old socket connection, we are a fork()! */ + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + return 0; + } + tmp = sizeof(addr); + memset(&addr,0,tmp); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + /* FIXME: why do we need tmp????? ... tmp == 1 is wrong!*/ +/* tmp = 1; + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + return 0; + } */ + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + return 0; + } + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror("getcwd"); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror("chdir"); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + if( ! run_run_svcs(pathtmp) ) { + D_PRINTF("some NEEDED services failed)"); + return 0; + } + + D_PRINTF("Starte wants"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + tmp = ST_ONCE; + sid = 20; + D_PRINTF("Melde status"); + if(!do_change_status(abspath,&tmp,&sid,sock,ACT_WRITE)) { + D_PRINTF("Status nicht gemeldet :((((((((((("); + return 0; + } + D_PRINTF("Status abgesetzt"); + +/* if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + if(respawn_svc(abspath)) { + msg_change_status(sid,ST_RESPAWN); + } else { + D_PRINTF("error in respawn"); + msg_change_status(sid,ST_FAIL); + } + } else { + D_PRINTF("einmal ausfuehren"); + if(exec_svc(abspath)) { + msg_change_status(sid,ST_ONCE); + } else { + D_PRINTF("error einmalig"); + msg_change_status(sid,ST_FAIL); + } + } */ +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/sig_chld.c b/software/cinit/browse_source/cinit-0.0.7/old/sig_chld.c new file mode 100644 index 00000000..e452f570 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/sig_chld.c @@ -0,0 +1,31 @@ +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* we are called, when a child exited */ +void sig_chld(int status) +{ + int pstat, i = 0; + pid_t pid; + + /* get pid of child and its status */ + pid = waitpid(chpid,&pstat,0); + + /* the child was either a respawed or once running process */ + + while(i < svc_list.process) { + if(pid == svc_list.svca[i].pid) { /* found service */ + + } + i++; + } + + if( WIFEXITED(pstat) ) printf("Kind gut gestorben\n"); + + printf("kind tot %d ...\n", status); +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/sig_special.c b/software/cinit/browse_source/cinit-0.0.7/old/sig_special.c new file mode 100644 index 00000000..6152f515 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/sig_special.c @@ -0,0 +1,21 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * We are called by signal to reboot + */ + +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_special + * react on special signals: + o SIGINT: ctrl + alt + del + o SIGWINCH: keyboard request + */ + +void sig_special(int signal) +{ + /* not used */ +} diff --git a/software/cinit/browse_source/cinit-0.0.7/old/sigio.c01 b/software/cinit/browse_source/cinit-0.0.7/old/sigio.c01 new file mode 100644 index 00000000..4e1ee482 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/old/sigio.c01 @@ -0,0 +1,73 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int signal) +{ + struct ucred suck; + int len, lens, nsock; + struct sockaddr_un sun; + char buf; + + D_PRINTF("sigio() startet"); + + do { + nsock = accept(sock,(struct sockaddr *) NULL, (socklen_t *) NULL); + + if( nsock == -1) { + if (errno != EAGAIN) { + perror("accept"); + _exit(1); + } else { + break; + } + } + + //getsockopt(s_tmp[s_idx], SOL_SOCKET, SO_PEERCRED, &suck, &len); + getsockopt(nsock, SOL_SOCKET, SO_PEERCRED, &suck, &len); + printf("angreifer: pid: %d uid: %d gid: %d\n",suck.pid,suck.uid,suck.gid); + + + read(nsock,&buf,1); + + printf("command: %d\n",buf); + + while ( (len = read(nsock,&buf,1)) ) { +// printf("laenge: %d\n",len); + if(len == -1) { +// if(errno != EINVAL && errno != EAGAIN) { + perror("read"); + return; +// _exit(1); +// } + } + if(buf == 0) break; + write(1,&buf,1); + } + printf("Fertig mit lesen\n"); + + write(nsock,"ok\n",4); + printf("fertig mit schreiben\n"); + } while ( 1 ); + + printf("keine sockets mehr da..., sigio beendet sich jetzt.\n"); +} + + diff --git a/software/cinit/browse_source/cinit-0.0.7/samples/README b/software/cinit/browse_source/cinit-0.0.7/samples/README new file mode 100644 index 00000000..21532d87 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/samples/README @@ -0,0 +1,5 @@ +There is currently only one sample (debian.tar). + +The others are only linked to it, because the multi-distribution +support is already included into bin/cinit.install.test. + diff --git a/software/cinit/browse_source/cinit-0.0.7/samples/debian.tar b/software/cinit/browse_source/cinit-0.0.7/samples/debian.tar new file mode 100644 index 00000000..3e68759b Binary files /dev/null and b/software/cinit/browse_source/cinit-0.0.7/samples/debian.tar differ diff --git a/software/cinit/browse_source/cinit-0.0.7/samples/fedora.tar b/software/cinit/browse_source/cinit-0.0.7/samples/fedora.tar new file mode 120000 index 00000000..1ba34d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/samples/fedora.tar @@ -0,0 +1 @@ +debian.tar \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.0.7/samples/gentoo.tar b/software/cinit/browse_source/cinit-0.0.7/samples/gentoo.tar new file mode 120000 index 00000000..1ba34d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/samples/gentoo.tar @@ -0,0 +1 @@ +debian.tar \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.0.7/samples/mandrake.tar b/software/cinit/browse_source/cinit-0.0.7/samples/mandrake.tar new file mode 120000 index 00000000..1ba34d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/samples/mandrake.tar @@ -0,0 +1 @@ +debian.tar \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.0.7/samples/suse.tar b/software/cinit/browse_source/cinit-0.0.7/samples/suse.tar new file mode 120000 index 00000000..1ba34d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/samples/suse.tar @@ -0,0 +1 @@ +debian.tar \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.0.7/serv/chk_svc.c b/software/cinit/browse_source/cinit-0.0.7/serv/chk_svc.c new file mode 100644 index 00000000..bdc73c31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/serv/chk_svc.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * chk_svc: check whether service exists + * part of cinit + */ + +#include +#include "cinit.h" + +/* we are called from sigio */ +/* return SID, if service exists, else -1 */ +int chk_svc(char *svc) +{ + int tmp = 0; + + while(tmp < svc_list.process) { + if( ! strcmp(svc,svc_list.svca[tmp].abs_path) ) { + return tmp; + } + tmp++; + } + return -1; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/serv/cinit.c b/software/cinit/browse_source/cinit-0.0.7/serv/cinit.c new file mode 100644 index 00000000..d7817cfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/serv/cinit.c @@ -0,0 +1,158 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +/* mount */ +#include + +#include +#include +#include + +#include /* nanosleep */ + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock, logfd; + +/*********************************************************************** + * the main procedure + */ + +int main(int argc, char **argv) +{ + struct stat sbuf; + pid_t pid; + struct sockaddr_un addr; + struct timespec ts; + char *initdir; + + set_signals(ACT_SERV); /* set signal handlers */ + logfd = 1; /* write to stdout */ + list = NULL; /* list of services is empty currently */ + + initdir = CINIT_INIT; + + /* profile support */ + while(argc) { + D_PRINTF(argv[argc-1]); + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + D_PRINTF(initdir); + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + perror(MSG_INIT_MISS); + panic(); + } + if( ! S_ISDIR(sbuf.st_mode) ) { + LOG(MSG_NOT_DIR); + panic(); + } + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + /* tell the socket, _we_ want to get SIGIO! */ + pid = getpid(); + if(fcntl(sock,F_SETOWN,pid) == -1) { + perror(MSG_FCNTL); + panic(); + } + + /* O_SYNC: SIGIO will be called, O_NONBLOCK: don't block cinit */ + if ( fcntl(sock,F_SETFL,O_ASYNC|O_NONBLOCK) == -1) { + perror(MSG_FCNTL); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + /******************** end socket **********************/ + + /* initial run, only if we are 'real' init': not needed */ +// if( pid == 1) { +// if(! run_init_svc() ) { +// panic(); +// } +// } + + run_init_svc(initdir); + free(initdir); + + D_PRINTF("fertig gestartet"); + + /* calculate biggest value */ + ts.tv_sec = -1; + if(ts.tv_sec < 0) { + ts.tv_sec = 1 << ((sizeof(ts.tv_sec) * 8)-1); + ts.tv_sec = ts.tv_sec - 1; + } + while(1) { + nanosleep(&ts,NULL); + } +} diff --git a/software/cinit/browse_source/cinit-0.0.7/serv/list.c b/software/cinit/browse_source/cinit-0.0.7/serv/list.c new file mode 100644 index 00000000..3bb29b06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/serv/list.c @@ -0,0 +1,97 @@ +/* (c) 2005 by Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * list handling: the processes cinit will execute/executed + * part of cinit + * changed some formatting, Nico Schottelius + */ + +#include +#include +#include "cinit.h" + + +int list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc( sizeof(struct listitem) ); + + if( tmp == NULL ) { + return 0; + } + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members, add this one */ + tmp->after = list; /* after the new element comes the begin */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first element has us as previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if( list == NULL ) { /* think positive */ + return NULL; + } else { + tmp = list->before; + } + + do { + if(!strcmp(path, tmp->abs_path)) + return tmp; + tmp = tmp->before; + } while(tmp != list); + + return NULL; +} + +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if( tmp == NULL ) { + return 0; + } + + tmp->after->before = tmp->before; + tmp->before->after = tmp->after; + free(tmp->abs_path); + free(tmp); + return 1; +} + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + + tmp = list_search(path); + if( tmp == NULL ) { + D_PRINTF("nix zu aendern da"); + return 0; + } + tmp->status = new_status; + tmp->pid = new_pid; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.7/serv/panic.c b/software/cinit/browse_source/cinit-0.0.7/serv/panic.c new file mode 100644 index 00000000..a130945f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/serv/panic.c @@ -0,0 +1,20 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * panic: if cinit fails, start sulogin + * part of cinit + */ + +#include "cinit.h" +#include + +void panic(void) +{ + char *nargv[2]; + + nargv[0] = SULOGIN; + nargv[1] = NULL; + + /* FIXME: perhaps fork before? And return to standard after? */ + execv(SULOGIN,nargv); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.0.7/serv/run_init_svc.c b/software/cinit/browse_source/cinit-0.0.7/serv/run_init_svc.c new file mode 100644 index 00000000..8a405a70 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/serv/run_init_svc.c @@ -0,0 +1,50 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run initial service + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + int status; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + logfd = 1; /* FIXME: shouldn't this be some kind of log, like /dev/log? */ + set_signals(ACT_CLIENT); + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ?*/ + if ( run_svc(cinit_svc) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + waitpid(pid, &status,0); + + /* return to init what happened */ + if(WIFEXITED(status)) { + return (! WEXITSTATUS(status) ); + } else { + return 0; + } + } +} diff --git a/software/cinit/browse_source/cinit-0.0.7/serv/sig_reboot.c b/software/cinit/browse_source/cinit-0.0.7/serv/sig_reboot.c new file mode 100644 index 00000000..d362f3c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/serv/sig_reboot.c @@ -0,0 +1,136 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * We are called by signal to reboot + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void sig_reboot(int signal) +{ + struct listitem *tmp; + struct timespec ts; + char **cmd; + int i; + + D_PRINTF("sig_reboot() startet"); + + tmp = list->before; + do { + /* kill service watcher, which will kill processes itself */ + if( tmp->status == ST_RESPAWN) { + D_PRINTF("Bringing down respawn watcher"); + kill(tmp->pid,SIGTERM); + } + + /* execute shutdown service */ + D_PRINTF("Executing off-service"); + exec_svc(tmp->abs_path,0); + tmp = tmp->before; + } while( tmp != list ); + + /* Let's disappear */ + close(sock); + if(umount(CINIT_TMNT) == -1) { + perror("umount"); + } + + /* now: all services are down, lets kill all other processes */ + if( kill(-1,SIGTERM) == -1) { + perror(MSG_TERMKILL); + } + D_PRINTF("SIGTERM GESENDET"); + + ts.tv_sec = SLEEP_KILL; /* defined in conf/sleep_kill */ + nanosleep(&ts,NULL); + + if( kill(-1,SIGKILL) == -1) { + perror(MSG_KILLBILL); + } + D_PRINTF("SIGKILL GESENDET"); + /* now: we are completly alone. umount everything, go to bed */ + + /* sync data to disk */ + sync(); + +/* THIS IS FUCKING UNCLEAN AND SHOULD BE CLEANED UP VERY MUCH!!! */ + +#define CMD_CNT 5 +#define SWAP_OFF_CMD "/sbin/swapoff" +#define SWAP_OFF_ARG1 "-a" + +#define UMOUNT_CMD "/bin/umount" +#define UMOUNT_ARG1 "-a" + +#define MOUNT_CMD "/bin/mount" +#define MOUNT_ARG1 "-o" +#define MOUNT_ARG2 "remount,ro" +#define MOUNT_ARG3 "/" + + cmd = (char **) malloc( (CMD_CNT+1) * ( sizeof (char*) ) ); + if(cmd) { +// cmd[0] = (char *) malloc(strlen(SWAP_OFF_CMD) +1); +// cmd[1] = (char *) malloc(strlen(SWAP_OFF_CMD) +1); + /* /sbin/swapoff -a */ + cmd[0] = SWAP_OFF_CMD; + cmd[1] = SWAP_OFF_ARG1; + cmd[2] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + /* /bin/umount -a */ + cmd[0] = UMOUNT_CMD; + cmd[1] = UMOUNT_ARG1; + cmd[2] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + + /* /bin/mount -o remount,ro / */ + cmd[0] = MOUNT_CMD; + cmd[1] = MOUNT_ARG1; + cmd[2] = MOUNT_ARG2; + cmd[3] = MOUNT_ARG3; + cmd[4] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + } + + switch(signal) { + case SIGUSR1: /* halt */ + reboot(RB_HALT_SYSTEM); + break; + case SIGTERM: /* power off */ + reboot(RB_POWER_OFF); + break; + case SIGHUP: /* reboot */ + reboot(RB_AUTOBOOT); + break; + } + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.0.7/serv/sigio.c b/software/cinit/browse_source/cinit-0.0.7/serv/sigio.c new file mode 100644 index 00000000..9c292c35 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/serv/sigio.c @@ -0,0 +1,99 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int signal) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + do { + /* create new socket */ + nsock = accept(sock,(struct sockaddr *) NULL, (socklen_t *) NULL); + + if( nsock == -1) { + if( errno != EAGAIN ) { /* report, but don't panic */ + perror("accept"); + } + return; + } + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_start_svc(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + D_PRINTF("Service schon da"); + buf[0] = list_tmp->status; + do_result(nsock,&buf[0]); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG("Adding service failed!"); + buf[0] = 0; + do_result(nsock,&buf[0]); + } else { + buf[0] = ST_TMPNOW; + do_result(nsock,&buf[0]); + } + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + + if(!tmp) break; + + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + D_PRINTF("**** MOD.ERR ***"); + buf[0] = 0; + } else { + buf[0] = 1; + } + do_result(nsock,buf); + break; + + default: + LOG("Unknown command!"); + break; + } + close(nsock); + } while ( 1 ); + + D_PRINTF("ENDE:SIGIO"); +} diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:41:08 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:41:08 new file mode 100644 index 00000000..d29de765 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:41:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586640 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:46:09 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:46:09 new file mode 100644 index 00000000..7ecb58be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-15:46:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586368 Apr 30 15:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-16:50:05 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-16:50:05 new file mode 100644 index 00000000..d87323e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-16:50:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587818 Apr 30 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-17:03:00 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-17:03:00 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:39:08 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:39:08 new file mode 100644 index 00000000..0c2bb0af --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:39:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586194 May 6 20:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:54:00 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:54:00 new file mode 100644 index 00000000..fe51f37f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:54:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590108 May 6 22:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:55:07 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:55:07 new file mode 100644 index 00000000..4d2854b5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:55:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590108 May 6 22:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-23:00:07 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-23:00:07 new file mode 100644 index 00000000..c0db4814 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-23:00:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 23:00 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:31:01 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:31:01 new file mode 100644 index 00000000..4ad1fccf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:31:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:31 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:39:02 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:39:02 new file mode 100644 index 00000000..16613354 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:39:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:43:08 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:43:08 new file mode 100644 index 00000000..29e5ab44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:43:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:54:04 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:54:04 new file mode 100644 index 00000000..474189e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:54:04 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:18:00 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:18:00 new file mode 100644 index 00000000..960ca358 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:18:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:18 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:14:00 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:14:00 new file mode 100644 index 00000000..7de2bc3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:14:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:14 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:43:08 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:43:08 new file mode 100644 index 00000000..11a18f12 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:43:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597245 May 7 14:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:48:01 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:48:01 new file mode 100644 index 00000000..28b127b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:48:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597405 May 7 14:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:55:05 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:55:05 new file mode 100644 index 00000000..5d0fa0e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:55:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:01:01 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:01:01 new file mode 100644 index 00000000..7c8b202b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:01:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 15:01 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:27:00 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:27:00 new file mode 100644 index 00000000..a2d19633 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:27:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:27 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:20:02 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:20:02 new file mode 100644 index 00000000..23608225 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:20:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602184 May 7 16:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:31:09 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:31:09 new file mode 100644 index 00000000..40f890cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:31:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:31 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-17:08:09 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-17:08:09 new file mode 100644 index 00000000..22b48319 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-17:08:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-10:44:00 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-10:44:00 new file mode 100644 index 00000000..4dad0f2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-10:44:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 64935 May 8 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-12:42:08 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-12:42:08 new file mode 100644 index 00000000..a356e57e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-12:42:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 23195 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-19:25:05 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-19:25:05 new file mode 100644 index 00000000..0b5026c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-19:25:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:30:03 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:30:03 new file mode 100644 index 00000000..7377ee59 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:30:03 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-21:54:00 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-21:54:00 new file mode 100644 index 00000000..41ed8e4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-21:54:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604637 May 10 21:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-22:07:06 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-22:07:06 new file mode 100644 index 00000000..9579bf3d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-22:07:06 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95212 May 10 22:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-00:14:02 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-00:14:02 new file mode 100644 index 00000000..86483ada --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-00:14:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-15-22:32:07 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-15-22:32:07 new file mode 100644 index 00000000..59557c4b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-15-22:32:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 15 22:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-15-23:52:06 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-15-23:52:06 new file mode 100644 index 00000000..757e6dc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-15-23:52:06 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579305 May 15 23:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-15-23:56:00 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-15-23:56:00 new file mode 100644 index 00000000..24c85104 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-15-23:56:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605145 May 15 23:56 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:16:09 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:16:09 new file mode 100644 index 00000000..27254aa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:16:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605205 May 16 00:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-09:58:08 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-09:58:08 new file mode 100644 index 00000000..90a5b698 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-09:58:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605567 May 16 09:58 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:09:00 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:09:00 new file mode 100644 index 00000000..4c34f810 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:09:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605583 May 16 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:13:07 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:13:07 new file mode 100644 index 00000000..b6a851e6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:13:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605619 May 16 10:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:23:05 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:23:05 new file mode 100644 index 00000000..2c4fc649 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:23:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-14:56:01 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-14:56:01 new file mode 100644 index 00000000..c5e08e25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-14:56:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95794 May 21 14:56 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:35:00 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:35:00 new file mode 100644 index 00000000..0f2d5463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:35:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:35 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-06-08-10:23:04 b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-08-10:23:04 new file mode 100644 index 00000000..0858c419 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-08-10:23:04 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53724 Jun 8 10:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-08:44:09 b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-08:44:09 new file mode 100644 index 00000000..b96788fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-08:44:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53524 Jun 9 08:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-10:00:08 b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-10:00:08 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-11:47:04 b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-11:47:04 new file mode 100644 index 00000000..531df2bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.7/size/2005-06-09-11:47:04 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/ b/software/cinit/browse_source/cinit-0.0.8/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.0.8/CHANGES b/software/cinit/browse_source/cinit-0.0.8/CHANGES new file mode 100644 index 00000000..57da4622 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/CHANGES @@ -0,0 +1,22 @@ +- support for variabel delay (delay) + -> support for user killing their shutdown! +- fixed cpu-consuming bug +- fixed killing service watcher and service at the same time + (results in zombies before reboot) +- support for killing services +- support for starting services (as defined) +- support for borken, forking daemons +- support for RESCUE +-> restore system? -> exec /sbin/cinit! +- added script to test cinit in UML +15:05 < telmich> added cinit.uml.test + +- adding cleaning of broken processes (aka ZOMBIES) + +- Added documentation: + - "rescue mode" + - updating cinit + - security + - testing in UML + + diff --git a/software/cinit/browse_source/cinit-0.0.8/COPYING b/software/cinit/browse_source/cinit-0.0.8/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.0.8/CREDITS b/software/cinit/browse_source/cinit-0.0.8/CREDITS new file mode 100644 index 00000000..eb881b2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/CREDITS @@ -0,0 +1,16 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: 2005-06-10) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) diff --git a/software/cinit/browse_source/cinit-0.0.8/Changelog b/software/cinit/browse_source/cinit-0.0.8/Changelog new file mode 100644 index 00000000..47142a97 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/Changelog @@ -0,0 +1,8 @@ +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.0.8/MT/debug b/software/cinit/browse_source/cinit-0.0.8/MT/debug new file mode 100644 index 00000000..da4b82f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/MT/debug @@ -0,0 +1,231 @@ +started up on Linux 2.6.11.11 #1 Fri Jun 3 00:29:38 CEST 2005 ppc +command line: 'monotone-0.18', 'rename', 'comm/do_start_svc.c', 'comm/do_svc_name.c' +set locale: LC_CTYPE=C, LC_MESSAGES=C +initial path is /home/user/nico/cinit-0.0.8 +converting 13 bytes from ANSI_X3.4-1968 to UTF-8 +converting 6 bytes from ANSI_X3.4-1968 to UTF-8 +converting 19 bytes from ANSI_X3.4-1968 to UTF-8 +converting 18 bytes from ANSI_X3.4-1968 to UTF-8 +searching for 'MT' directory with root '/' +search for 'MT' ended at '/home/user/nico/cinit-0.0.8' with '' removed +initializing from directory /home/user/nico/cinit-0.0.8 +found working copy directory /home/user/nico/cinit-0.0.8 +options path is MT/options +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 7 bytes from UTF-8 to ANSI_X3.4-1968 +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 7 bytes from UTF-8 to ANSI_X3.4-1968 +local dump path is MT/debug +setting dump path to MT/debug +opening rcfile '/home/user/nico/.monotonerc' ... +'/home/user/nico/.monotonerc' is ok +skipping nonexistent rcfile 'MT/monotonerc' +executing rename command +options path is MT/options +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 7 bytes from UTF-8 to ANSI_X3.4-1968 +revision path is MT/revision +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 8 bytes from UTF-8 to ANSI_X3.4-1968 +loading revision id from MT/revision +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 8 bytes from UTF-8 to ANSI_X3.4-1968 +db.fetch("SELECT id FROM 'revisions' WHERE id = '4c49cfb4ff9e37e1086fc76a3edd6164f662be4f'") +db.fetch("SELECT data FROM revisions WHERE id = '4c49cfb4ff9e37e1086fc76a3edd6164f662be4f'") +old manifest is bb60c844676ecb012b67fcef727729ee26b90ef6 +db.fetch("SELECT id FROM 'manifest_deltas' WHERE id = 'bb60c844676ecb012b67fcef727729ee26b90ef6'") +db.fetch("SELECT id FROM 'manifests' WHERE id = 'bb60c844676ecb012b67fcef727729ee26b90ef6'") +db.fetch("SELECT id FROM 'manifests' WHERE id = 'bb60c844676ecb012b67fcef727729ee26b90ef6'") +db.fetch("SELECT data FROM 'manifests' WHERE id = 'bb60c844676ecb012b67fcef727729ee26b90ef6'") +old manifest has 165 entries +work path is MT/work +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 4 bytes from UTF-8 to ANSI_X3.4-1968 +checking for un-committed work file MT/work +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 4 bytes from UTF-8 to ANSI_X3.4-1968 +read rearrangement from MT/work +'comm/do_start_svc.c' prefixed to 'comm/do_start_svc.c' +'comm/do_svc_name.c' prefixed to 'comm/do_svc_name.c' +analyzing file 1 : '' -> 'CREDITS' +analyzing file 2 : '' -> 'Changelog' +analyzing file 3 : '' -> 'Makefile' +analyzing file 4 : '' -> 'README' +analyzing file 5 : '' -> 'TODO' +analyzing file 7 : '' -> 'bin/cinit.add.dependency' +analyzing file 8 : '' -> 'bin/cinit.add.getty' +analyzing file 9 : '' -> 'bin/cinit.create.empty.service' +analyzing file 10 : '' -> 'bin/cinit.get-confdir' +analyzing file 11 : '' -> 'bin/cinit.install.binary' +analyzing file 12 : '' -> 'bin/cinit.install.conf' +analyzing file 13 : '' -> 'bin/cinit.install.dir' +analyzing file 14 : '' -> 'bin/cinit.install.test' +analyzing file 15 : '' -> 'bin/cinit.mkheader' +analyzing file 16 : '' -> 'bin/cinit.read-conf' +analyzing file 17 : '' -> 'bin/cinit.reboot' +analyzing file 18 : '' -> 'bin/cinit.remove.getty' +analyzing file 19 : '' -> 'bin/cinit.respawn.off' +analyzing file 20 : '' -> 'bin/cinit.respawn.on' +analyzing file 21 : '' -> 'bin/cinit.shutdown' +analyzing file 22 : '' -> 'bin/cinit.wait.for.daemon' +analyzing file 24 : '' -> 'bin/not-working/cinit.create.service' +analyzing file 25 : '' -> 'cinit.h' +analyzing file 27 : '' -> 'client/README' +analyzing file 28 : '' -> 'client/begin_msg.c' +analyzing file 29 : '' -> 'client/connect_sock.c' +analyzing file 30 : '' -> 'client/exec_svc.c' +analyzing file 31 : '' -> 'client/kill_svc.c' +analyzing file 32 : '' -> 'client/msg_change_status.c' +analyzing file 33 : '' -> 'client/msg_svc_on_off.c' +analyzing file 34 : '' -> 'client/respawn_svc.c' +analyzing file 35 : '' -> 'client/run_run_svc.c' +analyzing file 36 : '' -> 'client/run_svc.c' +analyzing file 37 : '' -> 'client/sig_terminate.c' +analyzing file 39 : '' -> 'comm/README' +analyzing file 40 : '' -> 'comm/do_change_status.c' +analyzing file 41 : '' -> 'comm/do_result.c' +analyzing file 42 : '' -> 'comm/do_start_svc.c' +analyzing file 44 : '' -> 'conf/.README' +analyzing file 45 : '' -> 'conf/c_env' +analyzing file 46 : '' -> 'conf/c_halt' +analyzing file 47 : '' -> 'conf/c_init' +analyzing file 48 : '' -> 'conf/c_needs' +analyzing file 49 : '' -> 'conf/c_off' +analyzing file 50 : '' -> 'conf/c_on' +analyzing file 51 : '' -> 'conf/c_params' +analyzing file 52 : '' -> 'conf/c_poweroff' +analyzing file 53 : '' -> 'conf/c_reboot' +analyzing file 54 : '' -> 'conf/c_respawn' +analyzing file 55 : '' -> 'conf/c_sock' +analyzing file 56 : '' -> 'conf/c_tmp' +analyzing file 57 : '' -> 'conf/c_tmpfs' +analyzing file 58 : '' -> 'conf/c_tmpmount' +analyzing file 59 : '' -> 'conf/c_wants' +analyzing file 60 : '' -> 'conf/cinit_dir' +analyzing file 61 : '' -> 'conf/destdir' +analyzing file 62 : '' -> 'conf/getty_dir' +analyzing file 63 : '' -> 'conf/install_directory' +analyzing file 64 : '' -> 'conf/install_prog' +analyzing file 65 : '' -> 'conf/max_deps' +analyzing file 66 : '' -> 'conf/prefix' +analyzing file 67 : '' -> 'conf/profile' +analyzing file 68 : '' -> 'conf/sleep_init' +analyzing file 69 : '' -> 'conf/sleep_kill' +analyzing file 70 : '' -> 'conf/sleep_kill_svc' +analyzing file 71 : '' -> 'conf/sleep_rerun' +analyzing file 72 : '' -> 'conf/sleep_svc' +analyzing file 73 : '' -> 'conf/sock_queue' +analyzing file 74 : '' -> 'conf/sulogin' +analyzing file 76 : '' -> 'doc/.buildwarn' +analyzing file 77 : '' -> 'doc/FAQ' +analyzing file 78 : '' -> 'doc/caveats' +analyzing file 79 : '' -> 'doc/cinit.commands' +analyzing file 80 : '' -> 'doc/compiles.on' +analyzing file 81 : '' -> 'doc/configuring.cinit' +analyzing file 82 : '' -> 'doc/cservice' +analyzing file 83 : '' -> 'doc/daemons.backgrounding' +analyzing file 85 : '' -> 'doc/fun/testing01' +analyzing file 86 : '' -> 'doc/how_it_works_internally' +analyzing file 87 : '' -> 'doc/ipc.thoughts' +analyzing file 88 : '' -> 'doc/ipc.usenet.posting' +analyzing file 89 : '' -> 'doc/merging.other.initsystems' +analyzing file 90 : '' -> 'doc/meta.dependencies' +analyzing file 91 : '' -> 'doc/optimising.cinit' +analyzing file 92 : '' -> 'doc/porting.to.other.os' +analyzing file 93 : '' -> 'doc/posix.aardvark.bug.report' +analyzing file 94 : '' -> 'doc/profile.support' +analyzing file 95 : '' -> 'doc/security' +analyzing file 96 : '' -> 'doc/thoughts.closed' +analyzing file 97 : '' -> 'doc/thoughts.open' +analyzing file 98 : '' -> 'doc/using.rescue' +analyzing file 100 : '' -> 'generic/mini_printf.c' +analyzing file 101 : '' -> 'generic/set_signals.c' +analyzing file 103 : '' -> 'old/cerr.c' +analyzing file 104 : '' -> 'old/cinit.c01' +analyzing file 105 : '' -> 'old/cinit.c02' +analyzing file 106 : '' -> 'old/cinit.c03' +analyzing file 107 : '' -> 'old/cinit.c04' +analyzing file 108 : '' -> 'old/cinit.c05' +analyzing file 109 : '' -> 'old/cinit.c06' +analyzing file 110 : '' -> 'old/cinit.commands.v01' +analyzing file 111 : '' -> 'old/cinit.h01' +analyzing file 112 : '' -> 'old/cnt_digits.c' +analyzing file 113 : '' -> 'old/do_change_status.c01' +analyzing file 114 : '' -> 'old/idea01' +analyzing file 115 : '' -> 'old/idea02' +analyzing file 116 : '' -> 'old/msg_change_status.c01' +analyzing file 117 : '' -> 'old/msg_start_svc.c' +analyzing file 118 : '' -> 'old/run_init_svc.c01' +analyzing file 119 : '' -> 'old/run_svc.c00' +analyzing file 120 : '' -> 'old/run_svc.c01' +analyzing file 121 : '' -> 'old/run_svc.c02' +analyzing file 122 : '' -> 'old/run_svc.c03' +analyzing file 123 : '' -> 'old/run_svc.c04' +analyzing file 124 : '' -> 'old/run_svc.c05' +analyzing file 125 : '' -> 'old/run_svc.c05.2' +analyzing file 126 : '' -> 'old/run_svc.c06' +analyzing file 127 : '' -> 'old/run_svc.c07' +analyzing file 128 : '' -> 'old/run_svc.c08' +analyzing file 129 : '' -> 'old/run_svc.c09' +analyzing file 130 : '' -> 'old/sig_chld.c' +analyzing file 131 : '' -> 'old/sigio.c01' +analyzing file 133 : '' -> 'serv/cinit.c' +analyzing file 134 : '' -> 'serv/list.c' +analyzing file 135 : '' -> 'serv/panic.c' +analyzing file 136 : '' -> 'serv/run_init_svc.c' +analyzing file 137 : '' -> 'serv/sig_reboot.c' +analyzing file 138 : '' -> 'serv/sigio.c' +analyzing file 140 : '' -> 'size/2005-04-26-14:54:44' +analyzing file 141 : '' -> 'size/2005-04-26-16:47:50' +analyzing file 142 : '' -> 'size/2005-04-26-16:48:48' +analyzing file 143 : '' -> 'size/2005-04-26-16:50:45' +analyzing file 144 : '' -> 'size/2005-04-26-17:12:48' +analyzing file 145 : '' -> 'size/2005-04-26-17:13:43' +analyzing file 146 : '' -> 'size/2005-04-26-23:05:33' +analyzing file 147 : '' -> 'size/2005-04-27-00:39:24' +analyzing file 148 : '' -> 'size/2005-04-30-15:18:22' +analyzing file 149 : '' -> 'size/2005-04-30-15:20:40' +analyzing file 150 : '' -> 'size/2005-04-30-15:23:25' +analyzing file 151 : '' -> 'size/2005-04-30-15:25:44' +analyzing file 152 : '' -> 'size/2005-04-30-15:32:43' +analyzing file 153 : '' -> 'size/2005-04-30-15:33:37' +analyzing file 154 : '' -> 'size/2005-04-30-15:41:08' +analyzing file 155 : '' -> 'size/2005-04-30-15:41:18' +analyzing file 156 : '' -> 'size/2005-04-30-15:46:09' +analyzing file 157 : '' -> 'size/2005-04-30-16:48:16' +analyzing file 158 : '' -> 'size/2005-04-30-16:50:05' +analyzing file 159 : '' -> 'size/2005-04-30-17:02:27' +analyzing file 160 : '' -> 'size/2005-04-30-17:03:00' +analyzing file 161 : '' -> 'size/2005-04-30-17:05:11' +analyzing file 162 : '' -> 'size/2005-04-30-17:06:15' +analyzing file 163 : '' -> 'size/2005-04-30-17:11:59' +analyzing file 164 : '' -> 'size/2005-04-30-17:13:43' +analyzing file 165 : '' -> 'size/2005-04-30-22:28:13' +analyzing file 166 : '' -> 'size/2005-04-30-22:34:23' +analyzing file 167 : '' -> 'size/2005-05-02-13:27:51' +analyzing file 168 : '' -> 'size/2005-05-02-13:46:31' +analyzing file 169 : '' -> 'size/2005-05-02-13:49:29' +analyzing file 170 : '' -> 'size/2005-05-02-13:49:58' +analyzing file 171 : '' -> 'size/2005-05-02-13:52:20' +analyzing file 172 : '' -> 'size/2005-05-02-13:55:50' +analyzing file 173 : '' -> 'size/2005-05-02-13:58:14' +analyzing file 174 : '' -> 'size/2005-05-02-13:59:53' +analyzing file 175 : '' -> 'size/2005-05-02-14:00:26' +analyzing file 176 : '' -> 'size/2005-05-02-14:04:19' +skipping preserved directory 177 : 'bin' +skipping preserved directory 178 : 'bin/not-working' +skipping preserved directory 179 : 'client' +skipping preserved directory 180 : 'comm' +skipping preserved directory 181 : 'conf' +skipping preserved directory 182 : 'doc' +skipping preserved directory 183 : 'doc/fun' +skipping preserved directory 184 : 'generic' +skipping preserved directory 185 : 'old' +skipping preserved directory 186 : 'serv' +skipping preserved directory 187 : 'size' +analyzing file 193 : '' -> 'comm/do_svc_name.c' +analyzing file 195 : '' -> 'serv/.sigio.c.swo' +adding comm/do_start_svc.c -> comm/do_svc_name.c to working copy rename set +skipping preserved directory 1 : 'comm' +analyzing file 2 : 'comm/do_start_svc.c' -> 'comm/do_svc_name.c' +change_set.cc:565: invariant 'I(entries.find(p) == entries.end())' violated diff --git a/software/cinit/browse_source/cinit-0.0.8/MT/log b/software/cinit/browse_source/cinit-0.0.8/MT/log new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.8/MT/options b/software/cinit/browse_source/cinit-0.0.8/MT/options new file mode 100644 index 00000000..33960254 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/MT/options @@ -0,0 +1,3 @@ + branch "info.clinux.cinit" +database "/home/user/nico/monotone.db" + key "" diff --git a/software/cinit/browse_source/cinit-0.0.8/MT/revision b/software/cinit/browse_source/cinit-0.0.8/MT/revision new file mode 100644 index 00000000..5a43e29b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/MT/revision @@ -0,0 +1 @@ +407ad04a93f6addbbb4d764cbce17fb8d46d2cce diff --git a/software/cinit/browse_source/cinit-0.0.8/Makefile b/software/cinit/browse_source/cinit-0.0.8/Makefile new file mode 100644 index 00000000..856c1337 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/Makefile @@ -0,0 +1,108 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +#DEBUG=-g -DDEBUG +OPTIMIZE=-Os -Werror + +# init should be static per default! +LDFLAGS=-static + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-pipe -Wall -I. +LD=gcc +STRIP=strip -R .comment -R .note.ABI-tag + +# monotone +MT=monotone-0.18 + +# directories and files +SDIRS=bin client conf comm doc generic serv util +FILES=Changelog Makefile README TODO cinit.h + +# objects +SERV=serv/sigio.o serv/cinit.o serv/list.o \ + serv/run_init_svc.o serv/panic.o serv/sig_reboot.o \ + serv/sig_child.o + +CLIENT=client/msg_svc_on_off.o client/msg_change_status.o client/run_svc.o \ + client/exec_svc.o client/respawn_svc.o client/run_run_svcs.o \ + client/connect_sock.o client/begin_msg.o client/sig_terminate.o + +COMMUNICATION=comm/do_change_status.o comm/do_result.o comm/do_svc_name.o + +BOTH=generic/set_signals.o generic/mini_printf.o + +OBJ=$(SERV) $(CLIENT) $(BOTH) $(COMMUNICATION) + +CSVC_OBJ=util/cservice.o generic/mini_printf.o util/msg_reboot.o \ + $(CLIENT) $(COMMUNICATION) + +# DO NOT CHANGE THIS. +SBIN=sbin +CINIT_BIN=$(SBIN)/cinit + +# targets +warn: + @cat doc/.buildwarn + +all: cinit cservice sizecheck + +cinit: $(CINIT_BIN) + +$(CINIT_BIN): $(SBIN) config.h $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +$(SBIN): + mkdir $(SBIN) + +sizecheck: cinit cservice + FILE="size/`date +%Y-%m-%d-%T`"; ls -l sbin/ > $$FILE; cat $$FILE + @echo -n "Source size (in KiB): " + @du -s $(SDIRS) | awk '{ sum+=$$1 } END { print sum }' +# @du -s bin client comm conf doc generic serv | awk '{ sum+=$1 } END { print sum }' +clean: + rm -f *.o */*.o sbin/cinit config.h + +config.h: conf/* + ./bin/cinit.mkheader > config.h + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice: $(SBIN) config.h $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +# monotone +mt-update: + $(MT) add $(SDIRS) $(FILES) 2>/dev/null +mt-commit: + $(MT) commit +mt-sync: + $(MT) sync linux.schottelius.org info.clinux.cinit + +install: install-dir + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-dir: + ./bin/cinit.install.dir + +install-conf: install-dir + @echo '*** Creating very basic configuration ***' + ./bin/cinit.install.conf + +install-test: install-dir + @echo '***> Copying testing configuration' + ./bin/cinit.install.test diff --git a/software/cinit/browse_source/cinit-0.0.8/README b/software/cinit/browse_source/cinit-0.0.8/README new file mode 100644 index 00000000..ded26a82 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/README @@ -0,0 +1,111 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via monotone. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ +(some I do use for testing, beware if you use it: It loads the +dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.0.8/TODO b/software/cinit/browse_source/cinit-0.0.8/TODO new file mode 100644 index 00000000..f21401ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/TODO @@ -0,0 +1,86 @@ +-------------------------------------------------------------------------------- +- Recheck sources: + - check errno! + - eventually split cinit code to csvc to minimize binary of cinit? + - close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? + - remove FIXME entries (and what should be fixed, too) + - cservice -p does not work, kill -TERM does! + - cleanup sig_reboot.c + - memset for timespecs? +-------------------------------------------------------------------------------- +- Source Logic issues + - cservice: remove trailing slash of service names, + absolute the service names? + - add reading of delay to run_svc, storing in list + - handle multiple killing within sigio (fork) ? + - add shutdown/reboot/.../ -> cinit.commands! + - socket / general access from outside/non-root? + - move umount, swapoff and remount to off of init? + -> cleanup sig_reboot.c + - handle CTR-ALT-DEL / keyboard request? (see caveats) + - check for possibilies to save ram, free things + - create coala-socket with correct permissions! (550, root:cinit) + -> is that really our problem or should a service do that? + - check if we caught every signal, which could kill us + - logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? + - check for other possibilities to create a smaller binary + - strip options + - gcc options + - ld options + - alternative libc (uclibc and dietlibc work fine!) + - run_svc: + o we have many strcat()s, perhaps save length of pathbuf and strncat at + pathtmp[strlen(pathbuf)] ? + - the service watcher has somehow to handle SIGTERM and killing the process + -> global pid_t variable would do it + -> split code to cclient? + -> we have to add killing services from outside + -> perhaps completly split client code from cinit? + -> ccinit? ;-) + -> shutting down services is NOT YET possible while cinit is running + - cservice: + o shutdown/reboot/halt system (through socket?) -> no. + o show service list? -> no. + o respawn services + o exec services + o shutting down service _AND_ dependencies on it???? + -> recursive searching in /etc/cinit/{*/}*/needs (not wants) + -> also without. + - really need swapoff? +-------------------------------------------------------------------------------- +- Documentation + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml +-------------------------------------------------------------------------------- +- Porting + - add porting code to other unices? + - like openssh guys do? + - polling/signalling is different everywhere + a) use standars poll/select + b) use accelerated os-specfic + -> add the name of the function/the file to use + into conf/poll_func? + o kqueue for freebsd/openbsd? + o epoll or sigio (current) for Linux? + o poll for netbsd + - using Linux 2.6 epoll mechanism? + +-------------------------------------------------------------------------------- +create_mini_cinit + -> use a tarball? (samples/*) + -> create something which should be runnable + -> mount, fsck, getty + --> for dev in `read /etc/fstab` ... + fsck $dev + --> getty from /etc/inittab or /sbin/*getty + -> find out, which gettys with which params + -> use it on 'make install' +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.0.8/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.add.dependency new file mode 100644 index 00000000..17683dcc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.add.dependency @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or needs Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +case $DEP in + wants) DEP=$C_WANTS ;; + needs) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could some PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEST="${BASEDIR}/${SVC_A}/${DEP}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.0.8/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.add.getty new file mode 100644 index 00000000..cd8aab55 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.add.getty @@ -0,0 +1,66 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +read -p "Getty to use [$mygetty]: " rgetty +read -p "Parameters to pass [$params]: " rparams + +[ "$rgetty" ] && mygetty=$rgetty +[ "$rparams" ] && params=$rparams + +if [ ! "$mygetty" -o ! "$params" ]; then + echo "No useable getty and parameters found, exiting." + exit 1 +fi + +echo -n "Putting $mygetty $params into $DDIR ... " +mkdir -p "$DDIR" +ln -s $mygetty "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.0.8/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.create.empty.service new file mode 100644 index 00000000..9fe748d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.create.empty.service @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR +BASEDIR=./testcinit + + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.8/bin/cinit.get-confdir b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.get-confdir new file mode 100644 index 00000000..a36c52f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.get-confdir @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# 2005-05-24 + +# try environment first +if [ "$CINIT_DIR" ]; then + CONFDIR=$CINIT_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +elif [ -d /etc/cinit ]; then + CONFDIR=/etc/cinit +else + echo Did not find cinit configuration 1>&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.0.8/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.install.binary new file mode 100644 index 00000000..0f7825cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.install.binary @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# + + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $DESTDIR/$PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi diff --git a/software/cinit/browse_source/cinit-0.0.8/bin/cinit.install.conf b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.install.conf new file mode 100644 index 00000000..bd6fadc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.install.conf @@ -0,0 +1,11 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# + + +. $(dirname $0)/cinit.read-conf + +echo "*** > Currently missing, sorry." + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.0.8/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.install.dir new file mode 100644 index 00000000..a94a9b9b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.install.dir @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install configuration directory +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" $DESTDIR/$PREFIX/$CINIT_DIR diff --git a/software/cinit/browse_source/cinit-0.0.8/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.0.8/bin/cinit.mkheader b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.mkheader new file mode 100644 index 00000000..e1f35d07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.mkheader @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric - no I didn't see an easier way + numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + + [ "$numeric" ] || value="\"$value\"" + + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.0.8/bin/cinit.read-conf b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.read-conf new file mode 100644 index 00000000..4263129c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.read-conf @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + eval $NAME="$(head -n 1 $conf)" + eval export $NAME +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.0.8/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.0.8/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.remove.getty new file mode 100644 index 00000000..e7b1a6ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.remove.getty @@ -0,0 +1,23 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + + +[ ! "$NUMBER" ] && exit 1 + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r $DDIR +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.0.8/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.8/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.8/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.shutdown new file mode 100644 index 00000000..49b1dabd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.shutdown @@ -0,0 +1,27 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# 2005-05-24 + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -o|--off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -o|--off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.0.8/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.uml.test new file mode 100644 index 00000000..7ed7df0c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.0.8 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG init=/sbin/cinit umid=cinit$$" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.0.8/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..a0ca091f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 + +PIDFILE=$1; shift +DAEMON=$1; shift + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(cat "$PIDFILE" | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(cat "$PIDFILE" | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.0.8/cinit.h b/software/cinit/browse_source/cinit-0.0.8/cinit.h new file mode 100644 index 00000000..b1c21577 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/cinit.h @@ -0,0 +1,132 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * header of cinit + */ + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* paths */ +#define C_ONARG C_ON C_PARAMS +#define C_OFFARG C_OFF C_PARAMS +#define C_ONENV C_ON C_ENV +#define C_OFFENV C_OFF C_ENV + +#define SLASH "/" + +#define CINIT_INIT CINIT_DIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK + +/* commands (maximum: 2^8 = 256)*/ +#define CMD_START_SVC 1 +#define CMD_CHG_STATUS 2 +#define CMD_STOP_SVC 3 +#define CMD_RESCUE 4 +#define CMD_HALT 5 +#define CMD_REBOOT 6 +#define CMD_POWEROFF 7 + +/* status of a service - DO NOT USE 0! */ +#define ST_TMP 1 /* currently working on it */ +#define ST_ONCE 2 /* executed once */ +#define ST_RESPAWN 3 /* running and respawning */ +#define ST_FAIL 4 /* failed to start service */ +#define ST_TMPNOW 5 /* now you are on it - only for clients */ +#define ST_OFF 6 /* Switching service off */ + +/* actions for i/o handlers (see comm/do_*) */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* Messages to the outside */ +#define MSG_ERR_OPEN "open" +#define MSG_ERR_READ "read" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_FORK "fork" +#define MSG_BIND "bind" +#define MSG_LISTEN "listen" +#define MSG_SOCKET "socket" +#define MSG_CONNECT "connect" +#define MSG_FCNTL "fcntl" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_TERMKILL "sigterm" +#define MSG_KILLBILL "sigkill" +#define MSG_INIT_MISS "initial service missing" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" +#define MSG_ERR_DEPS "Too many dependencies" +#define MSG_ERR_ACCEPT "accept" +#define MSG_ERR_WAITPID "waitpid" + +struct listitem { + char *abs_path; /* name of service */ + int status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + struct listitem *before; /* previous item */ + struct listitem *after; /* next item */ +}; + +/* variables */ +extern struct listitem *list; /* the process linked chain */ +extern int sock; /* current writing/reading socket */ +extern int logfd; /* log file deskriptor, currently unused */ +extern pid_t cpid; /* used by main() and reused be respaw_svc() */ + +/* functions (used by server and client) */ +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +#define LOG(s) mini_printf(s,logfd) + +int do_svc_name(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* server functions */ +int list_insert(char *path, int status); +struct listitem *list_search(char *path); +int list_delete(char *path); +int run_init_svc(char *cinit_svc); +void sigio(int signal); +void sig_reboot(int signal); +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +int msg_svc_on_off(char *svc, int action); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +int run_run_svcs(char *abspath); +pid_t exec_svc(char *abspath, int on); +pid_t respawn_svc(char *abspath); +int connect_sock(int socke); +char **read_file(char *file); +void sig_terminate(int signal); + +/* listing functions (server only) */ +int list_insert(char *path, int status); +struct listitem *list_search(char *path); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); + +/* util */ +int msg_reboot(char cmd); + +/* DEBUG */ +#ifdef DEBUG +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) +#endif diff --git a/software/cinit/browse_source/cinit-0.0.8/client/README b/software/cinit/browse_source/cinit-0.0.8/client/README new file mode 100644 index 00000000..0a5b8d0c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/client/README @@ -0,0 +1,2 @@ +client/ + These sources are used by the children which are spawned by cinit. diff --git a/software/cinit/browse_source/cinit-0.0.8/client/begin_msg.c b/software/cinit/browse_source/cinit-0.0.8/client/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/client/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/client/connect_sock.c b/software/cinit/browse_source/cinit-0.0.8/client/connect_sock.c new file mode 100644 index 00000000..06f735c3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/client/connect_sock.c @@ -0,0 +1,40 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + /******************* begin socket *********************/ + /* FIXME: reuse socke later?*/ + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { +// perror(MSG_CONNECT); /* no errors to the outside */ + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/client/exec_svc.c b/software/cinit/browse_source/cinit-0.0.8/client/exec_svc.c new file mode 100644 index 00000000..4b5d436f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/client/exec_svc.c @@ -0,0 +1,261 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +pid_t exec_svc(char *abspath, int on) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(on) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(on) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(on) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(on) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* if a file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + perror(MSG_ERR_EXECVE); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.0.8/client/kill_svc.c b/software/cinit/browse_source/cinit-0.0.8/client/kill_svc.c new file mode 100644 index 00000000..a2db549f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/client/kill_svc.c @@ -0,0 +1,104 @@ +KOPIE VON RUN_SVC + +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * kill service????? + */ +void kill_svc(char *rpath, pid_t pid) +{ + int tmp; + char svc[PATH_MAX], svcparams[PATH_MAX]; + struct stat buf; + + D_PRINTF("starte kill_svc"); + D_PRINTF(rpath); + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + if( ! run_run_svcs(pathtmp) ) { + /* FIXME: add log + service name here */ + D_PRINTF("some NEEDED services failed)"); + msg_change_status(abspath, ST_FAIL, 0); + return 0; + } + + D_PRINTF("Starte wants"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawning"); + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + D_PRINTF("exec_unce"); + pid = exec_svc(abspath); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return 0; + } + + D_PRINTF("Melde status"); + if(!msg_change_status(abspath, tmp, pid) ) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/client/msg_change_status.c b/software/cinit/browse_source/cinit-0.0.8/client/msg_change_status.c new file mode 100644 index 00000000..490abfbe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/client/msg_change_status.c @@ -0,0 +1,27 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +int msg_change_status(char *svc, char status, pid_t pid) +{ + if(!begin_msg(CMD_CHG_STATUS)) { + return 0; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/client/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.0.8/client/msg_svc_on_off.c new file mode 100644 index 00000000..6f5bb88c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/client/msg_svc_on_off.c @@ -0,0 +1,30 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, int action) +{ + char cmd; + + if(action) { + cmd = CMD_START_SVC; + } else { + cmd = CMD_STOP_SVC; + } + + if(!begin_msg(cmd)) return 0; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return 0; + return (int) do_result(sock,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.0.8/client/respawn_svc.c b/software/cinit/browse_source/cinit-0.0.8/client/respawn_svc.c new file mode 100644 index 00000000..f95a4c2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/client/respawn_svc.c @@ -0,0 +1,100 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, 1) ) { + /* only sleep if the service execited itself and is not + killed by sig_term */ + if(cpid != 0) { + D_PRINTF(abspath); + sleep(SLEEP_SVC); + D_PRINTF("fertig"); + } + } + } while( cpid ); /* cpid is reset by sig_terminate() */ + + /* start off task */ + exec_svc(abspath,0); + + /* write cinit that we killed it */ + msg_change_status(abspath,ST_OFF,0); + + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.0.8/client/run_run_svcs.c b/software/cinit/browse_source/cinit-0.0.8/client/run_run_svcs.c new file mode 100644 index 00000000..e16f0bce --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/client/run_run_svcs.c @@ -0,0 +1,83 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/client/run_svc.c b/software/cinit/browse_source/cinit-0.0.8/client/run_svc.c new file mode 100644 index 00000000..f90b41ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/client/run_svc.c @@ -0,0 +1,124 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and beforeo all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + struct timespec ts; + + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,1); /* check status */ + + switch(tmp) { + case 0: /* failed to communicate */ + case ST_FAIL: /* somebody failed, we won't retry */ + return 0; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case ST_RESPAWN: /* somebody does our work */ + return 1; + break; + case ST_TMPNOW: /* we are on it! */ + break; + } + } while(tmp != ST_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + msg_change_status(abspath, ST_FAIL, 0); + return 0; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, 1); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + D_PRINTF(abspath); + D_PRINTF("exec fehlgeschlagen"); + return 0; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + D_PRINTF("msg change fehlgeschlagen"); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/client/sig_terminate.c b/software/cinit/browse_source/cinit-0.0.8/client/sig_terminate.c new file mode 100644 index 00000000..a5427b5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/client/sig_terminate.c @@ -0,0 +1,55 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + if( kill(cpid,SIGKILL) == -1) { + perror(MSG_TERMKILL); + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + return; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/comm/README b/software/cinit/browse_source/cinit-0.0.8/comm/README new file mode 100644 index 00000000..840c9742 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/comm/README @@ -0,0 +1,3 @@ +comm/ + The communication part of cinit. + The functions are used in client and in server code. diff --git a/software/cinit/browse_source/cinit-0.0.8/comm/do_change_status.c b/software/cinit/browse_source/cinit-0.0.8/comm/do_change_status.c new file mode 100644 index 00000000..08bac734 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/comm/do_change_status.c @@ -0,0 +1,69 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/comm/do_result.c b/software/cinit/browse_source/cinit-0.0.8/comm/do_result.c new file mode 100644 index 00000000..16bc14a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/comm/do_result.c @@ -0,0 +1,32 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return 0; + } + + return *value; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/comm/do_svc_name.c b/software/cinit/browse_source/cinit-0.0.8/comm/do_svc_name.c new file mode 100644 index 00000000..80fc32f1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/comm/do_svc_name.c @@ -0,0 +1,52 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + D_PRINTF("zu gross"); + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/.README b/software/cinit/browse_source/cinit-0.0.8/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/c_delay b/software/cinit/browse_source/cinit-0.0.8/conf/c_delay new file mode 100644 index 00000000..36b73392 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGKILL for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/c_env b/software/cinit/browse_source/cinit-0.0.8/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/c_halt b/software/cinit/browse_source/cinit-0.0.8/conf/c_halt new file mode 100644 index 00000000..bc062a2c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/c_halt @@ -0,0 +1,4 @@ +halt + +Name of the service we should start when 'halting' (system stop, but no +power off). diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/c_init b/software/cinit/browse_source/cinit-0.0.8/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/c_needs b/software/cinit/browse_source/cinit-0.0.8/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/c_off b/software/cinit/browse_source/cinit-0.0.8/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/c_on b/software/cinit/browse_source/cinit-0.0.8/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/c_params b/software/cinit/browse_source/cinit-0.0.8/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/c_poweroff b/software/cinit/browse_source/cinit-0.0.8/conf/c_poweroff new file mode 100644 index 00000000..273d4bec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/c_poweroff @@ -0,0 +1,3 @@ +poweroff + +Name of the service we should start, when system power-off is called. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/c_reboot b/software/cinit/browse_source/cinit-0.0.8/conf/c_reboot new file mode 100644 index 00000000..17937b4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/c_reboot @@ -0,0 +1,3 @@ +reboot + +Name of the service we should start on reboot. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/c_respawn b/software/cinit/browse_source/cinit-0.0.8/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/c_sock b/software/cinit/browse_source/cinit-0.0.8/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/c_tmp b/software/cinit/browse_source/cinit-0.0.8/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.0.8/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.0.8/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/c_wants b/software/cinit/browse_source/cinit-0.0.8/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/cinit_dir b/software/cinit/browse_source/cinit-0.0.8/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/destdir b/software/cinit/browse_source/cinit-0.0.8/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/getty_dir b/software/cinit/browse_source/cinit-0.0.8/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/install_directory b/software/cinit/browse_source/cinit-0.0.8/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/install_prog b/software/cinit/browse_source/cinit-0.0.8/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/max_delay b/software/cinit/browse_source/cinit-0.0.8/conf/max_delay new file mode 100644 index 00000000..149fa16c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/max_delay @@ -0,0 +1,7 @@ +4 + +Maximum number of digits which may be in the delay file. +If there are more, the string "12345678901" will be cut to the +right length "1234567890". I don't think you'll ever need +a timeout greater 4 digits (9999 seconds are 166,65~ minutes, are +2 hours, 46 minutes and 39 seconds). See doc/configuring.cinit. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/max_deps b/software/cinit/browse_source/cinit-0.0.8/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/prefix b/software/cinit/browse_source/cinit-0.0.8/conf/prefix new file mode 100644 index 00000000..580ae0cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/prefix @@ -0,0 +1,4 @@ +/ + +Where to install cinit. Normally this will be /, but you can put in anywhere. +The subdirectory 'sbin' under this prefix must be reabable by the kernel. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/profile b/software/cinit/browse_source/cinit-0.0.8/conf/profile new file mode 100644 index 00000000..92fc35ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/profile @@ -0,0 +1,5 @@ +cprofile= + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile=" is the standard. +Under Linux you specify it to the bootloader like grub or lilo. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/sleep_init b/software/cinit/browse_source/cinit-0.0.8/conf/sleep_init new file mode 100644 index 00000000..c78c1bb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/sleep_init @@ -0,0 +1,11 @@ +86400 + +The delay used in the main loop. It looks like some implementations +cannot handle the biggest integer value, as it has been calculated: + + /* calculate biggest value */ + ts.tv_sec = -1; + if(ts.tv_sec < 0) { + ts.tv_sec = 1 << ((sizeof(ts.tv_sec) * 8)-1); + ts.tv_sec = ts.tv_sec - 1; + } diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/sleep_kill b/software/cinit/browse_source/cinit-0.0.8/conf/sleep_kill new file mode 100644 index 00000000..de1fd006 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/sleep_kill @@ -0,0 +1,5 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.0.8/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.0.8/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/sleep_svc b/software/cinit/browse_source/cinit-0.0.8/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/sock_queue b/software/cinit/browse_source/cinit-0.0.8/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.0.8/conf/sulogin b/software/cinit/browse_source/cinit-0.0.8/conf/sulogin new file mode 100644 index 00000000..4f003994 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/conf/sulogin @@ -0,0 +1,4 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it only if we panic(). +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/.buildwarn b/software/cinit/browse_source/cinit-0.0.8/doc/.buildwarn new file mode 100644 index 00000000..36cddb27 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/.buildwarn @@ -0,0 +1,19 @@ +**************************************************************************** +THIS IS A PRE-RELEASE, NOT YET THOUGHT TO BE USED IN PRODUCTIVE ENVIRONMENT! +**************************************************************************** + +First of all configure cinit through the configuration files found in conf/. + +The documentation can be found in doc/, read + + doc/configuring.cinit + +_before_ first use. + +After reading and configuring use: + + "make all" - to build cinit + "make install" - to install cinit + "make install-test" - to install cinit configuration example + -> WARNING: the last make target is highly experiemental and + the installed configuration may not be usable on your system! diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/FAQ b/software/cinit/browse_source/cinit-0.0.8/doc/FAQ new file mode 100644 index 00000000..7de033c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile=home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/caveats b/software/cinit/browse_source/cinit-0.0.8/doc/caveats new file mode 100644 index 00000000..9b73366a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/caveats @@ -0,0 +1,59 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/cinit.commands b/software/cinit/browse_source/cinit-0.0.8/doc/cinit.commands new file mode 100644 index 00000000..5d7b473c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/cinit.commands @@ -0,0 +1,77 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (uses SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. **) + + CMD_RESCUE: Kill everything, and spawn a sulogin shell.**) + CMD_INIT: Start all services (again possibly).**) + + CMD_HALT: Halt the system*) + CMD_REBOOT: Reboot the system*) + CMD_POWEROFF: Power-off the system*) + + *) The commands are not and maybe will never be implemented, + as they are realized another way (using signals). + + **) Not yet implemented. + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/compiles.on b/software/cinit/browse_source/cinit-0.0.8/doc/compiles.on new file mode 100644 index 00000000..3fe83479 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/compiles.on @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +compiles.on, +Nico Schottelius 2005-06-09 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit is known to compile on: + +x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 + +Please report your configuration, if it's not listed here. diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/configuring.cinit b/software/cinit/browse_source/cinit-0.0.8/doc/configuring.cinit new file mode 100644 index 00000000..e0dc76f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/configuring.cinit @@ -0,0 +1,181 @@ +-------------------------------------------------------------------------------- +configuring cinit, +Nico Schottelius 2005-05-28 (Last Modified: 2005-06-05) +-------------------------------------------------------------------------------- + +0. Pre-compile configuration +1. General configuration layout +2. Hints +2.0 Service executing / parameters +2.1 Daemons +2.2 Logging +2.3 Using prepared scripts +3. Profiles + + +0. Pre-compile configuration + +Have a look at conf/*. Those variable will mostly be used when +compiling cinit. Some will be read later (like destdir). + +1. General configuration layout + +/etc/cinit (configurable via conf/cinit_dir) stores the complete +cinit configuration. + +cinit is service based. +A service consists of + - a base directory (like /etc/cinit/getty/1) + - dependency configuration: + + ./wants - services it wants to be started before (but it + will work anyway) + + ./needs/ - services it needs. If those services fail, this service + won't be started + + - a flag indicating whether to respawn the service: + + ./respawn (simply touch it) + + - a delay: how long to wait for the service (in seconds) before + sending SIGKILL after the SIGTERM (only for respawning processes): + + ./delay (one line with only the digits) + + If delay is non-existing or not readable, the delay from + conf/sleep_kill_svc is taken. + + - the program to run when switching the service on and off: + + ./on (a link to a program or a shell script) + ./on.params (see conf/c_params, the parameters to pass to the program) + ./on.env (see conf/c_env, the environment to pass to the program) + + ./off (call that when shutting down the service) + ./off.params (the parameters to pass to the program) + ./on.env (the environment to pass to the program) + +You should have a look at the samples/ directory for examples. + +If things are missing, cinit will continue with what's available. +This way you only need the files you use. Some examples: + + /etc/cinit/init: + ./wants -> services it wants + ./needs -> services it needs + That's everything + + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it + That's everything, as it has no dependencies + + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn on service + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting + + +2. Hints + +2.0 Service executing / parameters + +The on and off files can and should be links to the programs you want +to execute. This way you save yourself loading the big shell (which is +on many Linux systems bash, why so ever, dash does the job as good, still +beeing small). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. The on script +could look like: + + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). + + +2.1 Daemons + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking (Please have a look at +daemons.backgrounding for a list of known daemons and their switches +to avoid backgrounding). + +The other possibility is to use a program, which will + a) start the daemon + b) look into the pidfile of the daemon + c) will then wait until that pid does not exist anymore + d) and then it exits and cinit will restart it (goto a) now) + +Such a program is included into this cinit release, +though I do not recommend using it. You should better contact the +authors and make them implement a clean non-forking mode. + +The name of the program (actually a shell script) is "cinit.wait.for.daemon". + +You will use it as the "on" part of the service and you have to add + + a) the pidfile to on.params + b) the daemon binary + +Thus the service would look like: + + svc-broken-daemon/ + on -> /usr/sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + +2.2 Logging + +Currently there's no special logging support. +When programs write to stdout, it will be displayed on +the same stdout cinit is connected to +(we don't even open /dev/console - we are too lazy currently). + + +2.3 Using prepared scripts + +In the bin/ directory of this tarball you'll find: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + + +3. Profiles + +Since cinit-0.0.6 there is profile in cinit. +Profiles are described in doc/profile.support. + +X. Examples + +Can be found in the tarballs below samples/. diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/cservice b/software/cinit/browse_source/cinit-0.0.8/doc/cservice new file mode 100644 index 00000000..af816e62 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/cservice @@ -0,0 +1,23 @@ +-------------------------------------------------------------------------------- +cservice, +Nico Schottelius, 2005-06-10 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cservice - control cinit + +cservice -[phears] + + - - start a service (including all needed dependencies) + - - stop a respawing service, don't care about other services + - - reboot + - - halt + - - poweroff (on some systems the same as halt) + +-------------------------------------------------------------------------------- + + + +-------------------------------------------------------------------------------- + -o - (only) start a service (only the service, no dependencies) + -t - (tho) start a service (including all dependencies) + - - stop a respawing service and stop all depending services diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/daemons.backgrounding b/software/cinit/browse_source/cinit-0.0.8/doc/daemons.backgrounding new file mode 100644 index 00000000..e3864065 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/daemons.backgrounding @@ -0,0 +1,57 @@ +-------------------------------------------------------------------------------- +daemons backgrounding, +Nico Schottelius 2005-06-12 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +0. Definition + +A daemon is a program which runs in the background, not having a tty +associated necesserally. Running in background does not mean it has +to background (fork()) itself, but that you cannot control it directly +from a shell. + +1. Daemons and cinit + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + + + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking + +The following daemons / servers are known to avoid backgrounding easily: + + bind [dns server/caching]: -f + cupsd [printer server]: -f or -F + dhcp3 (isc) [dhcp server]: -f + distccd [compile server]: normal behaviour + frox [ftp proxy]: "NoDetach" in config + mini-lpd [printer server]: normal behaviour + metalog [log server]: normal behaviour + monotone [vcs]: normal behaviour + nessusd ["security server"]: normal behaviour + ntpd [time server]: -n + oops [http proxy]: normal behaviour + openssh [ssh server]: -D + openvpn [vpn server]: normal behaviour + pbbuttonsd [power management]:normal behaviour + proftpd [ftp server]: -n + qmail [mta]: normal behaviour + rsync ["file server"]: --no-detach + slapd [ldap]: -d + snmpd [snmp daemon]: -f + svnserve [vcs]: --foreground + syslogd [log server]: -n + tcpserver [super server]: normal behaviour + vsftpd [ftp server]: normal behaviour (or: config: background=no) + xinetd [super server]: -dontfork + +Those are the daemons that do not offer the possibility (as of release 0.0.8): + + - apache (only with debug mode) + - inetd (some variants) + - nscd (no switch, no configuraton option) + - portmap (only with debug mode) diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/fun/testing01 b/software/cinit/browse_source/cinit-0.0.8/doc/fun/testing01 new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/fun/testing01 @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/how_it_works_internally b/software/cinit/browse_source/cinit-0.0.8/doc/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/ipc.thoughts b/software/cinit/browse_source/cinit-0.0.8/doc/ipc.thoughts new file mode 100644 index 00000000..06ad5b8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/ipc.thoughts @@ -0,0 +1,79 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2), +1024=max fds, -3=already opened (stderr/stdin/stdout), /2= +two fds needed per client). + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt and + - poweroff. + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.0.8/doc/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/merging.other.initsystems b/software/cinit/browse_source/cinit-0.0.8/doc/merging.other.initsystems new file mode 100644 index 00000000..b209042c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/merging.other.initsystems @@ -0,0 +1,63 @@ +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not exclude that he accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated. + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/meta.dependencies b/software/cinit/browse_source/cinit-0.0.8/doc/meta.dependencies new file mode 100644 index 00000000..28558e50 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/meta.dependencies @@ -0,0 +1,55 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, on would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation. + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +it does not need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/optimising.cinit b/software/cinit/browse_source/cinit-0.0.8/doc/optimising.cinit new file mode 100644 index 00000000..4e5a1708 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/optimising.cinit @@ -0,0 +1,23 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + + diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/porting.to.other.os b/software/cinit/browse_source/cinit-0.0.8/doc/porting.to.other.os new file mode 100644 index 00000000..fcc838af --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.0.8/doc/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/profile.support b/software/cinit/browse_source/cinit-0.0.8/doc/profile.support new file mode 100644 index 00000000..b39d517e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/profile.support @@ -0,0 +1,51 @@ +-------------------------------------------------------------------------------- +Profiles, +Nico Schottelius, 2005-06-04 +-------------------------------------------------------------------------------- + +1. What are profiles? +2. How to use profiles? +3. How to configure profiles? + + +1. What are profiles? + +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +2. How to use profiles? + +Simply pass 'cprofile=PROFILENAME' (like cprofile=home) to cinit. +How to pass argumenents to cinit? Under Linux the init-system +gets the kernel arguments as arguments. So you can use + + kernel /usr/src/linux/vmlinuz cprofile=work (grub) + append="cprofile=work" (LILO) + +Other Unices should work like Linux, please consult your local +documentation. + + +3. How to configure profiles? + +It's very simple: Normally cinit would call /etc/cinit/init as +primary service and solve all dependencies. If you pass +cprofile=wireless to it, cinit will start /etc/cinit/wireless as +primary service instead. + +So the only thing you have to do is to create a service directory +below /etc/cinit with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/init; tar c . | (mkdir ../yp; cd ../yp; tar x ) + +That's it! diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/removing.zombies b/software/cinit/browse_source/cinit-0.0.8/doc/removing.zombies new file mode 100644 index 00000000..c34f5f8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + Still cinit will currently keep the behaviour of reaping the vestiges + broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/replacing.init b/software/cinit/browse_source/cinit-0.0.8/doc/replacing.init new file mode 100644 index 00000000..655182b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/replacing.init @@ -0,0 +1,10 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and copy cinit to init (cp /sbin/cinit /sbin/init), reboot. + diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/security b/software/cinit/browse_source/cinit-0.0.8/doc/security new file mode 100644 index 00000000..63eb0571 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/security @@ -0,0 +1,29 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console. diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/testing.cinit.in.uml b/software/cinit/browse_source/cinit-0.0.8/doc/testing.cinit.in.uml new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/testing.cinit.in.uml @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/thoughts.closed b/software/cinit/browse_source/cinit-0.0.8/doc/thoughts.closed new file mode 100644 index 00000000..0660ea65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/thoughts.closed @@ -0,0 +1,43 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/thoughts.open b/software/cinit/browse_source/cinit-0.0.8/doc/thoughts.open new file mode 100644 index 00000000..209830be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/thoughts.open @@ -0,0 +1,8 @@ + +- Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/updating.cinit b/software/cinit/browse_source/cinit-0.0.8/doc/updating.cinit new file mode 100644 index 00000000..214f1dc7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/updating.cinit @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything, including cinit and leave +you behind with only a shell. diff --git a/software/cinit/browse_source/cinit-0.0.8/doc/using.rescue b/software/cinit/browse_source/cinit-0.0.8/doc/using.rescue new file mode 100644 index 00000000..cec43f76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/doc/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user". + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.0.8/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.0.8/generic/mini_printf.c new file mode 100644 index 00000000..669d663a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/generic/mini_printf.c @@ -0,0 +1,20 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * print string + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + p = str; + while ( *p != '\0') { + write(fd,p,1); + ++p; + } + + write(fd,"\n",1); /* FIXME: only when console */ +} diff --git a/software/cinit/browse_source/cinit-0.0.8/generic/set_signals.c b/software/cinit/browse_source/cinit-0.0.8/generic/set_signals.c new file mode 100644 index 00000000..beceff73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/generic/set_signals.c @@ -0,0 +1,48 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +#include +#include +#include "cinit.h" + +void set_signals(int action) +{ + struct sigaction sa; + + if(action == ACT_SERV) { + sa.sa_handler=SIG_IGN; + } else { + sa.sa_handler=SIG_DFL; + } + sigaction(SIGINT,&sa,NULL); /* ignore ctr+c and ctr+alt+del */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + sigaction(SIGQUIT,&sa,NULL); /* QUIT... */ + sigaction(SIGTTIN,&sa,NULL); + sigaction(SIGTTOU,&sa,NULL); + sigaction(SIGSTOP,&sa,NULL); + + /* cleaning dead processes */ + if(action == ACT_SERV) { + sa.sa_handler=sig_child; + } + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + /* sigio is called to act on the socket */ + if(action == ACT_SERV) { + sa.sa_handler=sigio; + } + sigaction(SIGIO,&sa,NULL); + + /* signal handlers to do special things with: reboot */ + if(action == ACT_SERV) { + sa.sa_handler=sig_reboot; + } + sigaction(SIGUSR1,&sa,NULL); /* halt */ + sigaction(SIGUSR2,&sa,NULL); /* Rescue */ + sigaction(SIGTERM,&sa,NULL); /* poweroff */ + sigaction(SIGHUP,&sa,NULL); /* reboot */ + +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/add_mod_svc.c b/software/cinit/browse_source/cinit-0.0.8/old/add_mod_svc.c new file mode 100644 index 00000000..c74778d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/add_mod_svc.c @@ -0,0 +1,42 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * add_svc + * part of cinit + */ + +#include + +#include "cinit.h" + +/* we return the service id or -1 on error*/ +int add_mod_svc(char *svc, char status, pid_t pid) +{ + int tmp = 0; + + /* check if service exists, if so, set new status, return sid */ + tmp = chk_svc(svc); + if( tmp != -1 ) { + svc_list.svca[tmp].status = status; + return tmp; + } + + /* still here? than there is no such service */ + if(svc_list.process < MAX_SVC) { + printf("[%d]: %s (%d)\n",svc_list.process,svc,pid); + svc_list.svca[svc_list.process].abs_path = strdup(svc); + + if(svc_list.svca[svc_list.process].abs_path == NULL) { + LOG("strdup failed!"); + return -1; + } + svc_list.svca[svc_list.process].pid = pid; + /* inkrement later, as we count argv[0..n] */ + (svc_list.process)++; + } else { + LOG("too many services"); + return -1; + } + + /* return _our_ service id */ + return (svc_list.process -1); +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/cerr.c b/software/cinit/browse_source/cinit-0.0.8/old/cerr.c new file mode 100644 index 00000000..b9dec472 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/cerr.c @@ -0,0 +1,36 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * print error to stderr and exist + */ + +#include +#include "cinit.h" + +void cerr(char *string, int status) +{ + char *p; + + p = string; + while ( *p != '\0') { + write(2,p,1); + p++; + } + write(2,"\n",1); + + switch(status) { + case RT_CHLD_FAIL: + case RT_CHLD_OK: + _exit(status); + ;; + case RT_PAR_FAIL: /* FIXME: if status is RT_PAR_FAIL, start sulogin */ + _exit(23); + ;; + case RT_PAR_OK: + return; + ;; + } + +/* FIXME: return if in cinit, _exit on fork() */ +// if(...) +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/chk_svc.c b/software/cinit/browse_source/cinit-0.0.8/old/chk_svc.c new file mode 100644 index 00000000..bdc73c31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/chk_svc.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * chk_svc: check whether service exists + * part of cinit + */ + +#include +#include "cinit.h" + +/* we are called from sigio */ +/* return SID, if service exists, else -1 */ +int chk_svc(char *svc) +{ + int tmp = 0; + + while(tmp < svc_list.process) { + if( ! strcmp(svc,svc_list.svca[tmp].abs_path) ) { + return tmp; + } + tmp++; + } + return -1; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/cinit.add.shutdown.reboot.poweroff b/software/cinit/browse_source/cinit-0.0.8/old/cinit.add.shutdown.reboot.poweroff new file mode 100644 index 00000000..23cae705 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/cinit.add.shutdown.reboot.poweroff @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add shutdown/reboot/poweroff service + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +# create halt, link reboot and poweroff to it +mkdir "$BASEDIR/$C_HALT" +ln -s "$C_HALT" "$BASEDIR/$C_REBOOT" +ln -s "$C_HALT" "$BASEDIR/$C_POWEROFF" diff --git a/software/cinit/browse_source/cinit-0.0.8/old/cinit.c01 b/software/cinit/browse_source/cinit-0.0.8/old/cinit.c01 new file mode 100644 index 00000000..e3890013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/cinit.c01 @@ -0,0 +1,105 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +#define CINIT_DIR "/etc/cinit" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "needs" +#define C_WANTS "wants" + +/* opendir() */ +#include +#include + +/* *stat() */ +#include +#include + + +#include + +#define EKEL "/etc/cinit/init/wants" + +void cerr(char *msg) +{ + printf("%s\n", msg); +} + +/* + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + + /* check if already running / ran / currently starting */ + + /* check for needs -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es, %s\n", pathbuf); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) printf("dir gibt es, %s\n", pathbuf); + + d_tmp = opendir(path); + + if(d_tmp == NULL) { + cerr("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} + +int main() +{ + + char buf[256]; + int tmp; + + strcpy(buf,CINIT_DIR); + tmp = strlen(CINIT_DIR); + buf[tmp] = '/'; + strcpy(&buf[tmp+1],C_INIT); + + printf("path: %s\n",buf); + + run_svc("/etc/cinit/init"); + + run_svc("/etc/cinit2/init"); + + run_svc("/NOT_THERE"); + +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/cinit.c02 b/software/cinit/browse_source/cinit-0.0.8/old/cinit.c02 new file mode 100644 index 00000000..7e5432b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/cinit.c02 @@ -0,0 +1,198 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +#define CINIT_DIR "/etc/cinit" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "needs" +#define C_WANTS "wants" +#define C_RUN "run" + +/* opendir() */ +#include +#include + +/* *stat() */ +#include +#include + +/* wait() */ +#include + +/* strlen */ +#include + +#include + +#define EKEL "/etc/cinit/init/wants" + +void cerr(char *msg) +{ + printf("%s\n", msg); +} + +/*********************************************************************** + * parallel run forked() run_svc() + */ +#define MAX_PAR 32 + +int run_run_svcs(char *rpath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + pid_t pids[MAX_PAR]; + int tmp,i=0; + + printf("run_run_svcs on: %s\n",rpath); + + d_tmp = opendir(rpath); + + if(d_tmp == NULL) { + printf("Failed to open dir: %s", rpath); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 + || strcmp(tdirent->d_name, "..") == 0) + continue; + + if(i < MAX_PAR) { + pids[i] = fork(); + i++; + } else { + cerr("to many dependencies"); + return 1; + } + + if(pids[i-1] == -1) { /* err */ + cerr("fork failed\n"); + return 0; + } else if(pids[i-1] == 0) { /* child */ + printf("Service zu starten nun: %s\n", tdirent->d_name); + run_svc(tdirent->d_name); + _exit(0); + } else /* the parent simply goes the loop again */ + printf("run_svcs_PARENT\n"); + } + + closedir(d_tmp); + + /* wait for pids */ + while(i >= 0) { +// printf("waiting for %d ... \n",i); + waitpid(pids[i], &tmp, 0); + i--; + } +} + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check if already running / ran / currently starting */ + + /* check for service dir */ + if( stat(path,&buf) ) { + printf("no such service: %s\n", path); + return 1; + } + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + cerr("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + + char buf[256]; + int tmp; + + strcpy(buf,CINIT_DIR); + tmp = strlen(CINIT_DIR); + buf[tmp] = '/'; + strcpy(&buf[tmp+1],C_INIT); + + printf("path: %s\n",buf); + + run_svc("/etc/cinit/init"); + + run_svc("/NOT_THERE"); + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/cinit.c03 b/software/cinit/browse_source/cinit-0.0.8/old/cinit.c03 new file mode 100644 index 00000000..c1b5eb42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/cinit.c03 @@ -0,0 +1,241 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +#define CINIT_DIR "/etc/cinit" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "needs" +#define C_WANTS "wants" +#define C_RUN "run" + +/* opendir() */ +#include +#include + +/* *stat() */ +#include +#include + +/* wait() */ +#include + +/* strlen */ +#include + +#include + +#include "cinit.h" + +#define EKEL "/etc/cinit/init/wants" + +/* status of a service */ +#define ST_TMP 1 /* currently working on it */ +#define ST_ONCE 2 /* executed once */ +#define ST_RESPAWN 3 /* running and respawning */ + +/* array of svc */ +/* linked list of services */ +/* balanced trees */ +struct svc { + char *abs_path; +// struct svc *next; + int status; /* tmp, respawn, ran once */ + /* evtl: */ +}; + +struct svcl { + struct svc svc_list[1000]; + int process; +} svc_list; + +void cerr(char *msg) +{ + printf("%s\n", msg); +} + +/*********************************************************************** + * parallel run forked() run_svc() + */ +#define MAX_PAR 32 + +int run_run_svcs(char *rpath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + pid_t pids[MAX_PAR]; + int tmp,i=0; + + printf("run_run_svcs on: %s\n",rpath); + + d_tmp = opendir(rpath); + + if(d_tmp == NULL) { + printf("Failed to open dir: %s", rpath); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 + || strcmp(tdirent->d_name, "..") == 0) + continue; + + if(i < MAX_PAR) { + pids[i] = fork(); + i++; + } else { + cerr("to many dependencies"); + return 1; + } + + if(pids[i-1] == -1) { /* err */ + cerr("fork failed\n"); + return 0; + } else if(pids[i-1] == 0) { /* child */ + printf("Service zu starten nun: %s\n", tdirent->d_name); + run_svc(tdirent->d_name); + _exit(0); + } else /* the parent simply goes the loop again */ + printf("run_svcs_PARENT\n"); + } + + closedir(d_tmp); + + /* wait for pids */ + while(i >= 0) { +// printf("waiting for %d ... \n",i); + waitpid(pids[i], &tmp, 0); + i--; + } +} + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check if already running / ran / currently starting */ + + /* debug */ + getcwd(pathbuf,1024); + + printf("dir: %s\n",pathbuf); + + /* check for service dir */ + if( stat(path,&buf) ) { + printf("no such service: %s\n", path); + return 1; + } + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + cerr("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + char pathbuf[MAXPATH]; + struct stat buf; + + strcpy(pathbuf,CINIT_DIR); + strcat(pathbuf,"/"); + strcat(pathbuf,C_INIT); + + printf("path: %s\n",pathbuf); + + svc_list.process = 0; + + /* stat, checkdir */ + if( stat(pathbuf,&buf) ) { + printf("PANIC ACTION: init dir missing\n"); + return 1; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("PANIC ACTION: init is not a dir\n"); + return 1; + } + + if( chdir(pathbuf) == -1) { + printf("PANIC ACTION: chdir(%s) failed!\n",pathbuf); + return 1; + } + run_svc("/etc/cinit/init"); +// run_svc(""); + +// run_svc("/NOT_THERE"); + +// execl("/bin/zsh","zsh", "-l"); + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/cinit.c04 b/software/cinit/browse_source/cinit-0.0.8/old/cinit.c04 new file mode 100644 index 00000000..983c03eb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/cinit.c04 @@ -0,0 +1,130 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* printf() */ +//#include + +/* str* */ +#include + +#include "cinit.h" + +/* global variable */ +struct svcl svc_list; +int f_in, f_out; + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + char pathbuf[PATH_MAX]; + char buf[1223]; + struct stat sbuf; + int i; + + struct sigaction sa; + + /* signal handlers to ignore */ + sa.sa_handler=SIG_IGN; +// sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGSTP,&sa,NULL); /* ignore ctr+z, stop */ + + D_PRINTF(CINIT_INIT); + + /* count of started processes */ + svc_list.process = 0; + + /* begin to handle signals */ + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + cerr("PANIC ACTION: init dir missing", RT_PAR_FAIL); + } else if( ! S_ISDIR(sbuf.st_mode) ) { + cerr("PANIC ACTION: init is not a dir", RT_PAR_FAIL); + } + + if( chdir(CINIT_INIT) == -1) + cerr("PANIC ACTION: chdir to /etc/cinit/init failed!",RT_PAR_FAIL); + + /* open communication fifos */ + f_in = open(CINIT_DIR SLASH F_IN, O_RDWR); + f_out = open(CINIT_DIR SLASH F_OUT, O_RDWR); + if(f_in == -1 || f_out == -1) cerr("opening fifo failed\n",RT_PAR_FAIL); + + /* initial run, only if we are 'real' init' */ +// if( getpid() == 1) { + i = run_init_svc(); + printf("Initialer Start rueckgabe: %d\n", i); +// } + + /* signal handlers to do special things with */ + // something else sa.sa_handler=SIG_IGN; + sigaction(SIGUSR1,&sa,NULL); /* reboot on sigusr1 */ + sigaction(SIGUSR1,&sa,NULL); /* power-off on sigusr2 */ + sigaction(SIGTERM,&sa,NULL); /* halt on sigterm */ + + /* important signal handlers: pipe, child */ +// sa.sa_handler=sig_pipe; +// sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + +// sa.sa_handler=sig_child; +// sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + + + /* big TODO: */ + + /* some while/for loop to hang forever, remember, we are init! */ + while(1) { + i=0; + /* read path */ + do { + read(f_in,&buf,1); +// buf1[i] = buf; i++; + } while(buf != '\0'); +// + // printf("Read path: %s\n",buf1); + + i=0; + /* read status */ + do { + read(f_in,&buf,1); + // buf2[i] = buf; i++; + } while(buf != '\0'); + + // status = atoi(buf2); + // printf("Read status: %d\n",status); + + i=0; + /* read pid */ + do { + read(f_in,&buf,1); + // buf3[i] = buf; i++; + } while(buf != '\0'); + + // pid = atoi(buf3); + + + + } + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/cinit.c05 b/software/cinit/browse_source/cinit-0.0.8/old/cinit.c05 new file mode 100644 index 00000000..8dec1f46 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/cinit.c05 @@ -0,0 +1,137 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* printf() */ +//#include + +/* str* */ +#include + +#include "cinit.h" + +/* global variable */ +struct svcl svc_list; + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + char buf[1223]; + struct stat sbuf; + int i; + + struct sigaction sa; + + /* signal handlers to ignore */ + sa.sa_handler=SIG_IGN; +// sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGSTOP,&sa,NULL); /* ignore ctr+z, stop */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + + D_PRINTF(CINIT_INIT); + + /* begin to handle signals */ + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + cerr("PANIC ACTION: init dir missing", RT_PAR_FAIL); + } else if( ! S_ISDIR(sbuf.st_mode) ) { + cerr("PANIC ACTION: init is not a dir", RT_PAR_FAIL); + } + + if( chdir(CINIT_INIT) == -1) + cerr("PANIC ACTION: chdir to /etc/cinit/init failed!",RT_PAR_FAIL); + + /* get shared memory */ + + shmfd = shm_open(CINIT_SHM,O_RDWR|O_CREAT,0600); + + if(shmfd == -1) { + perror("Shared memory"); + cerr("shared memory",RT_PAR_FAIL); + } + + /* count of started processes */ + svc_list.process = 0; + + /* open communication fifos */ + f_in = open(CINIT_DIR SLASH F_IN, O_RDWR); + f_out = open(CINIT_DIR SLASH F_OUT, O_RDWR); + if(f_in == -1 || f_out == -1) cerr("opening fifo failed",RT_PAR_FAIL); + + /* initial run, only if we are 'real' init' */ +// if( getpid() == 1) { + i = run_init_svc(); + printf("Initialer Start rueckgabe: %d\n", i); +// } + + /* signal handlers to do special things with */ + // something else sa.sa_handler=SIG_IGN; + sigaction(SIGUSR1,&sa,NULL); /* reboot on sigusr1 */ + sigaction(SIGUSR1,&sa,NULL); /* power-off on sigusr2 */ + sigaction(SIGTERM,&sa,NULL); /* halt on sigterm */ + + /* important signal handlers: pipe, child */ +// sa.sa_handler=sig_pipe; + +// sa.sa_handler=sig_child; +// sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + + + /* big TODO: */ + + /* some while/for loop to hang forever, remember, we are init! */ + while(1) { + i=0; + /* read path */ + do { + read(f_in,&buf,1); +// buf1[i] = buf; i++; + } while(buf != '\0'); +// + // printf("Read path: %s\n",buf1); + + i=0; + /* read status */ + do { + read(f_in,&buf,1); + // buf2[i] = buf; i++; + } while(buf != '\0'); + + // status = atoi(buf2); + // printf("Read status: %d\n",status); + + i=0; + /* read pid */ + do { + read(f_in,&buf,1); + // buf3[i] = buf; i++; + } while(buf != '\0'); + + // pid = atoi(buf3); + + + + } + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/cinit.c06 b/software/cinit/browse_source/cinit-0.0.8/old/cinit.c06 new file mode 100644 index 00000000..c48de22c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/cinit.c06 @@ -0,0 +1,158 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* printf() */ +//#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* global variable */ +struct svcl svc_list; +int sock; + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int signal) +{ + struct ucred suck; + int len = sizeof(suck), lens; + int nsock; + struct sockaddr_un sun; + char buf; + + lens=sizeof(sun); + memset(&sun,0,lens); + +/* this is always us! */ +// getsockopt(sock, SOL_SOCKET, SO_PEERCRED, &suck, &len); +// printf("orig angreifer: pid: %d uid: %d gid: %d\n",suck.pid,suck.uid,suck.gid); + + do { + //s_tmp[s_idx] = accept(sock,(struct sockaddr *) &sun, (socklen_t *) &lens); + nsock = accept(sock,(struct sockaddr *) NULL, (socklen_t *) NULL); + + // nsock = accept(sock,(struct sockaddr *) &sun, (socklen_t *) &lens); +// if( s_tmp[s_idx] == -1) { + if( nsock == -1) { + if (errno != EAGAIN) { + perror("accept"); + _exit(1); + } else { + break; + } + } + + //getsockopt(s_tmp[s_idx], SOL_SOCKET, SO_PEERCRED, &suck, &len); + getsockopt(nsock, SOL_SOCKET, SO_PEERCRED, &suck, &len); + printf("angreifer: pid: %d uid: %d gid: %d\n",suck.pid,suck.uid,suck.gid); + + + read(nsock,&buf,1); + + printf("command: %d\n",buf); + + while ( (len = read(nsock,&buf,1)) ) { +// printf("laenge: %d\n",len); + if(len == -1) { +// if(errno != EINVAL && errno != EAGAIN) { + perror("read"); + return; +// _exit(1); +// } + } + if(buf == 0) break; + write(1,&buf,1); + } + printf("Fertig mit lesen\n"); + + write(nsock,"ok\n",4); + printf("fertig mit schreiben\n"); + } while ( 1 ); + + printf("keine sockets mehr da..., sigio beendet sich jetzt.\n"); +} + +/*********************************************************************** + * the main procedure + */ + +int main() +{ + struct stat sbuf; + int i; + + struct sigaction sa; + + /* signal handlers to ignore */ + sa.sa_handler=SIG_IGN; +// sigaction(SIGINT,&sa,NULL); /* ignore ctr+c */ + sigaction(SIGSTOP,&sa,NULL); /* ignore ctr+z, stop */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + sigaction(SIGCHLD,&sa,NULL); /* what todo when child exited */ + + sa.sa_handler=sigio; + sigaction(SIGIO,&sa,NULL); /* what todo when data arrived on socket */ + + D_PRINTF(CINIT_INIT); + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + cerr("PANIC ACTION: init dir missing", RT_PAR_FAIL); + } else if( ! S_ISDIR(sbuf.st_mode) ) { + cerr("PANIC ACTION: init is not a dir", RT_PAR_FAIL); + } + + if( chdir(CINIT_INIT) == -1) + cerr("PANIC ACTION: chdir to /etc/cinit/init failed!",RT_PAR_FAIL); + + /* count of started processes */ + svc_list.process = 0; + + /* initial run, only if we are 'real' init' */ +// if( getpid() == 1) { + i = run_init_svc(); + printf("Initialer Start rueckgabe: %d\n", i); +// } + + /* signal handlers to do special things with */ + // something else sa.sa_handler=SIG_IGN; +// sigaction(SIGUSR1,&sa,NULL); /* reboot on sigusr1 */ +// sigaction(SIGUSR1,&sa,NULL); /* power-off on sigusr2 */ +// sigaction(SIGTERM,&sa,NULL); /* halt on sigterm */ + + /* the main loop */ + while(1) ; + +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/cinit.commands.v01 b/software/cinit/browse_source/cinit-0.0.8/old/cinit.commands.v01 new file mode 100644 index 00000000..dfdb67c5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/cinit.commands.v01 @@ -0,0 +1,85 @@ +-------------------------------------------------------------------------------- +cinit commands, Nico Schottelius 2005-04-28 +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (uses SO_PEERCRED as +socketoption). + +The communication-protocol is binary. + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service and its dependencies. + CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_INIT: Start all services (again possibly). + + CMD_HALT: Halt the system. + CMD_REBOOT: Reboot the system. + CMD_POWEROFF: Power-off the system. + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) ok, a SID, a service ID: int svc_id; [ really need int? ] + b) fail, [currently only fail is returned] + a) already running + b) svc_name too long / not allowed + + [ A service identification is used for faster searching in cinit. + It is also a hint for developers of external software, that they should not + be able to use CMD_CHG_STATUS, if they didn't start a service. + They should use CMD_STOP_SVC to stop a service. + Starting a service is currently done via exec() in the external program or + a cinit-fork(). ] + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int svc_id; /* service ID to change */ + 1. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit uncgrafully + UNUSED! respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_KILL_SVC: Shutdown a service, don't care about its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: ready... + +CMD_INIT: Start all services (again possibly). + cinit returns: ready... + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. diff --git a/software/cinit/browse_source/cinit-0.0.8/old/cinit.create.cinit_dir b/software/cinit/browse_source/cinit-0.0.8/old/cinit.create.cinit_dir new file mode 100644 index 00000000..6fd58adb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/cinit.create.cinit_dir @@ -0,0 +1,11 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create our initial directory +# 2005-05-24 + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +mkdir -p $BASEDIR diff --git a/software/cinit/browse_source/cinit-0.0.8/old/cinit.create.service b/software/cinit/browse_source/cinit-0.0.8/old/cinit.create.service new file mode 100644 index 00000000..df092275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/cinit.create.service @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name (including category)" + echo " I do create a service for you" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +# read input (from gentoo-bug.sh, http://linux.schottelius.org/scripts/#gentoo-bug +reread() +{ + _tmp="" + name="$1" + + while [ ! "$_tmp" ]; do + read -p "$1 [$_tmp]: " _tmp + done + + echo $_tmp +} + + +for svc in $@; do + echo -n "Creating $svc ..." + mkdir -p "${BASEDIR}/${svc}" + cd ${BASEDIR}/${svc} + mkdir -p "${C_WANTS}" "${C_NEEDS}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.0.8/old/cinit.h01 b/software/cinit/browse_source/cinit-0.0.8/old/cinit.h01 new file mode 100644 index 00000000..e07fa2c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/cinit.h01 @@ -0,0 +1,80 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * header of cinit + */ + +/* includes */ +#include /* pid_t */ + +/* limits */ +#define MAX_SVC 1024 /* maximum services */ +#define MAX_DEPS 32 /* maximum direct dependencies of a service */ + +/* paths */ +#define CINIT_DIR "/etc/cinit" + +#define F_IN "in" +#define F_OUT "out" +#define SLASH "/" + +#define C_INIT "init" +#define C_SHD "shutdown" +#define C_REBOOT "reboot" + +#define C_NEEDS "./needs" +#define C_WANTS "./wants" +#define C_RUN "./run" +#define C_RESPAWN "respawn" +#define C_PARAMS "params" + +/* return values */ +#define RT_FAIL 0 +#define RT_OK 1 + +#define RT_CHLD_FAIL 1 /* child failed */ +#define RT_CHLD_OK 2 /* child succeded */ +#define RT_PAR_FAIL 3 /* parent failed */ +#define RT_PAR_OK 4 /* parent succeded */ + +/* status of a service-starter (run_run_svc) */ +#define RT_ONE_FAILED 5 /* one ore more failed */ +#define RT_ALL_STARTED 6 /* everything ok */ +#define RT_DEPS_MAX 7 /* too many dependencies */ + +/* status of a service */ +#define ST_NO 0 /* process not existing */ +#define ST_TMP 1 /* currently working on it */ +#define ST_ONCE 2 /* executed once */ +#define ST_RESPAWN 3 /* running and respawning */ +#define ST_FAIL 4 /* failed to start service */ + + + +/* variables */ + +/* array of svc */ +/* linked list of services */ +/* balanced trees */ + +struct svc { + char *abs_path; /* service identifier */ + int status; /* tmp, respawn, ran once */ + pid_t pid; /* pid of the process */ +}; + +struct svcl { + struct svc svca[MAX_SVC]; + int process; +}; + +extern struct svcl svc_list; + +/* functions */ + +void cerr(char *string, int status); +int chk_svc(char *svc); +int run_svc(char *rpath); +int add_mod_svc(char *svc, int status); +int run_run_svcs(char *rpath); + diff --git a/software/cinit/browse_source/cinit-0.0.8/old/cnt_digits.c b/software/cinit/browse_source/cinit-0.0.8/old/cnt_digits.c new file mode 100644 index 00000000..a692fa5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/cnt_digits.c @@ -0,0 +1,42 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* this code is stolen from gpm */ + +/* what's the english name for potenz ? */ +int x_high_y(int base, int pot_y) +{ + int val = 1; + + if(pot_y == 0) val = 1; + else if(pot_y < 0) val = 0; /* ugly hack ;) */ + else while(pot_y > 0) { + val = val * base; + pot_y--; + } + return val; +} + +/* return characters needed to display int */ +int cnt_digits(int number) +{ + /* 0-9 = 1 10^0 <-> (10^1)-1 + * 10 - 99 = 2 10^1 <-> (10^2)-1 + * 100 - 999 = 3 10^2 <-> (10^3)-1 + * 1000 - 9999 = 4 ... */ + + int ret = 0, num = 0; + + /* non negative, please */ + if(number < 0) number *= -1; + else if(number == 0) ret = 1; + else while(number > num) { + ret++; + num = (x_high_y(10,ret) - 1); + } + + return(ret); +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/cservice.c01 b/software/cinit/browse_source/cinit-0.0.8/old/cservice.c01 new file mode 100644 index 00000000..0e06cc95 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/cservice.c01 @@ -0,0 +1,185 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cservice: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +/* mount */ +#include + +#include +#include +#include + +#include /* nanosleep */ + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock, logfd; + +/*********************************************************************** + * cservice - control cinit + */ + +#define CSERVICE_BANNER "cservice - control cinit\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncservice -[fund] \n" \ + "\t-u\t- (up) start a service (including all needed depedencies)\n" \ + "\t-d\t- (down) kill a respawing service\n\n" \ + "\t-f\t- (force) force starting service and all dependencies\n" \ + "\t-n\t- (no dependency) start a service, don't care about dependencies\n\n" + + +void usage(char *stext) +{ + write(1,CSERVICE_BANNER,strlen(CSERVICE_BANNER)); + write(1,stext,strlen(stext)); + write(1,USAGE_TEXT,strlen(USAGE_TEXT)); + _exit(1); + +} + +int main(int argc, char **argv) +{ + struct stat sbuf; + pid_t pid; + struct sockaddr_un addr; + char svc_dir[PATH_MAX+1]; + int tmp; + + /* argv */ + if(argc != 3) usage("Too less arguments!"); + if(argv[1][0] != '-') usage("Wrong arguments"); + if(strlen(argv[1]) != 2) usage("Wrong parameter length"); + + + switch(argv[1][1]) { + case 'o': /* on */ +// run_-vc(argv[2]); + break; + + case 'k': /* kill */ +// msg_kill_svc(argv[2]); + break; + + case 'p': /* power off */ + msg_reboot(CMD_POWEROFF); + break; + + case 'r': /* reboot */ + msg_reboot(CMD_REBOOT); + break; + + case 'h': /* halt */ + msg_reboot(CMD_HALT); + break; + + default: + usage("Unknown parameter"); + break; + } + + + /* absolute the service */ + if( argv[2][0] == '/') { + if(strlen(argv[2]) > PATH_MAX) usage("Servicename too long"); + + strcpy(svc_dir,argv[2]); + } else { + if( ( strlen(CINIT_DIR)+strlen(argv[2]) ) > PATH_MAX) + usage("Servicename too long"); + strcpy(svc_dir,CINIT_DIR); + strcat(svc_dir,argv[2]); + } + + tmp = readlink(svc_dir,svc_dir,PATH_MAX); + + if(tmp == -1) { + if(errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + } + + /* stat, checkdir */ + if( stat(svc_dir,&sbuf) ) { + perror(MSG_INIT_MISS); + _exit(1); + } + if( ! S_ISDIR(sbuf.st_mode) ) { + mini_printf(MSG_NOT_DIR); + _exit(1); + } + if( chdir(svc_dir) == -1) { + perror(MSG_CHDIR); + _exit(1); + } + + switch(argv[1][1]) { + case 't': + break; + + case 'h': + /* recursive find dependencies, this will take long time :( */ + find_deps(svc_dir) + break; + + case 'i': + run_svc(svc_dir); + break; + + case 'l': + break; + + case 'o': + break; + + default: usage("Unknown Parameter"); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + } + + /* tell the socket, _we_ want to get SIGIO! */ + pid = getpid(); + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/do_change_status.c01 b/software/cinit/browse_source/cinit-0.0.8/old/do_change_status.c01 new file mode 100644 index 00000000..74bb9c1e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/do_change_status.c01 @@ -0,0 +1,65 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + char buf = CMD_CHG_STATUS; + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + D_PRINTF("VERSUCHE STATUS ZU AENDERN"); + printf("socket: %d (cmd=%d)\n",sock2, buf); + + if(action == ACT_READ) { + D_PRINTF("Leeeese"); + fpoint = read; + } else { + D_PRINTF("schreibe"); + fpoint = write; /* don't care about warnings! */ + } + + if(action == ACT_WRITE) { + D_PRINTF("schreibe kommando"); + if(fpoint(sock2,&buf,1) == -1) { /* COMMAND */ + perror("command i/o"); + return 0; + } + tmp = strlen(svc); + sock2 = connect_sock(sock2); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror("i/o: length"); + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror("i/o: service name"); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror("i/o: status"); + printf("Status: %d, *status=%d, sizeof=%d\n",status,*status,sizeof(*status)); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror("i/o: PID"); + return 0; + } + + D_PRINTF("fertig mit statuswechsel lesen"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/idea01 b/software/cinit/browse_source/cinit-0.0.8/old/idea01 new file mode 100644 index 00000000..cf0df9d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/idea01 @@ -0,0 +1,121 @@ +-------------------------------------------------------------------------------- +/etc/cinit + -> init/ + -> shutdown/ + -> reboot/ + + + needs/ -> we wait until all parallel processes are finished _and_ we + don't start if one fails + wants/ -> we start all of them parallel and wait for them? + hold/ + wait -> wait until process finished + run -> program to execute + params -> \n seperated argument list + respawn -> respawn it + +services may only be under /etc/cinit? +-------------------------------------------------------------------------------- +Service-Status: + +- abs_path +- status (respawn,tmp,once) +-------------------------------------------------------------------------------- + +starting services: + +run_svc("/etc/cinit/service/") + -> exec run $params +Later: + -> check if service already running -> return OK + -> check needs/ -> check wants/ + -> run_svc($cur) + + When run_svc returns, the service is started and all service it needs, too. + + +-------------------------------------------------------------------------------- + -> check needs/ + -> exists -> fork( run_run_svcs() ) and continue + (fork) -> fork() run_svc(needs/*); + -> check wants/ + -> exists -> run_svc(wants/*); + -> waitfor(need_run_svc) +-------------------------------------------------------------------------------- +run_run_svcs() + -> start parallel (forked) run_svc() for every service +-------------------------------------------------------------------------------- + +main() + - run_svc /etc/cinit/init/ + - sleep()? -> simply do nothing -> do we need to fork ourselves? No, we are init. +spaeter: + - open /dev/console W_ONLY + - make stdin == /etc/cinit/in + - make stdout, stderr /dev/console + +-------------------------------------------------------------------------------- +eof + +Things, which are clear + +- we need to fork before execl(), as excel() replaces us. +- chdir() _after_ fork() + + +profiles support: profile=$profile + + start + "service.$profile" if exists, instead of + "service" + +starting services: + +cinit: + pipe() + set_status_tmp() + fork() --> failure --> clear_service + cinit_process_watcher(): + fork() + execve(process,args,env) + waitpid() -> for once? PROCESS MUST RETURN! + write_pipe() + rmpipe() + +-------------------------------------------------------------------------------- + +What to send over to cinit and read back? + + - first you need two pipes for every process: read+write (on both sides) + - cinit wants + o command + - service temporary - trying to start in right now. + - service executed once - fine + - service executed once and that failed - :-( + - service respawing + o an identifier for the service (i from service list ;-) + + --> makes 2 bytes to read +-------------------------------------------------------------------------------- +How cinit works: + +cinit says: I want to start service xyz. (/etc/cinit/init on bootup) +cinit calls run_svc(). +-------------------------------------------------------------------------------- + +run_svc(char *relative_path): + - check if service is alr + - fork() + - write cinit: check service, I want to start it + -> returns status of service (see ST_* in cinit.h) + - cinit returns: ok, you are temporary + - [that checked] check if service + o is already started + o is beeing started + x check if rpath S_ISDIR + x chdir(dir) + - check needs - check wants + - for every needs/* start run_svc + - check respawn -> respawn = true + - check run + diff --git a/software/cinit/browse_source/cinit-0.0.8/old/idea02 b/software/cinit/browse_source/cinit-0.0.8/old/idea02 new file mode 100644 index 00000000..38af8965 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/idea02 @@ -0,0 +1,200 @@ +-------------------------------------------------------------------------------- +/etc/cinit + -> init/ + -> shutdown/ + -> reboot/ + + + needs/ -> we wait until all parallel processes are finished _and_ we + don't start if one fails + wants/ -> we start all of them parallel and wait for them? + hold/ + wait -> wait until process finished + run -> program to execute + params -> \n seperated argument list + respawn -> respawn it + +services may only be under /etc/cinit? +-------------------------------------------------------------------------------- +Service-Status: (see struct svc, cinit.h) + +- abs_path +- status (respawn,tmp,once) +- pid + +abs_path\0status\0pid\0 + +-------------------------------------------------------------------------------- + +starting services: + +run_svc("/etc/cinit/service/") + -> exec run $params +Later: + -> check if service already running -> return OK + -> check needs/ -> check wants/ + -> run_svc($cur) + + When run_svc returns, the service is started and all service it needs, too. + + +-------------------------------------------------------------------------------- + -> check needs/ + -> exists -> fork( run_run_svcs() ) and continue + (fork) -> fork() run_svc(needs/*); + -> check wants/ + -> exists -> run_svc(wants/*); + -> waitfor(need_run_svc) +-------------------------------------------------------------------------------- +run_run_svcs() + -> start parallel (forked) run_svc() for every service +-------------------------------------------------------------------------------- + +main() + - run_svc /etc/cinit/init/ + - sleep()? -> simply do nothing -> do we need to fork ourselves? No, we are init. +spaeter: + - open /dev/console W_ONLY + - make stdin == /etc/cinit/in + - make stdout, stderr /dev/console + +-------------------------------------------------------------------------------- +eof + +Things, which are clear + +- we need to fork before execl(), as excel() replaces us. +- chdir() _after_ fork() + + +profiles support: profile=$profile + + start + "service.$profile" if exists, instead of + "service" + +starting services: + +cinit: + pipe() + set_status_tmp() + fork() --> failure --> clear_service + cinit_process_watcher(): + fork() + execve(process,args,env) + waitpid() -> for once? PROCESS MUST RETURN! + write_pipe() + rmpipe() + +-------------------------------------------------------------------------------- + +What to send over to cinit and read back? + + - first you need two pipes for every process: read+write (on both sides) + - cinit wants + o command + - service temporary - trying to start in right now. + - service executed once - fine + - service executed once and that failed - :-( + - service respawing + o an identifier for the service (i from service list ;-) + + --> makes 2 bytes to read +-------------------------------------------------------------------------------- +How cinit works: + +cinit says: I want to start service xyz. (/etc/cinit/init on bootup) +cinit calls run_svc(). +-------------------------------------------------------------------------------- + +int run_svc(char *relative_path): + - check if service is already running or temporary (task list!) + -> yes: return RT_PAR_OK + -> no: continue. + - set service to be temporary (ST_TMP) and retrieve SID (service ID) + - walk through dependency tree and call run_svc + - fork() -> so cinit can continue. + - write cinit: check service, I want to start it + -> returns status of service (see ST_* in cinit.h) + - cinit returns: ok, you are temporary + - [that checked] check if service + o is already started + o is beeing started + x check if rpath S_ISDIR + x chdir(dir) + - check needs - check wants + - for every needs/* start run_svc + - check respawn -> respawn = true + - check run + +-------------------------------------------------------------------------------- + +add_mod_svc(char *svc, int status) + -> add or modify status of a service + + - check whether service exists, reset status + - if not exists, insert if maximum of services is not reached +-------------------------------------------------------------------------------- + +cinit communications proto +-------------------------------------------------------------------------------- + +cinit: + -> signal_handler on SIGCHLD + run_init() + -> run_svc(init) + -> fork() -> do the work + +signal_handler_child + waitpid(.*) + -> returns pid + + oder waitpid() in dem run_svc, wenn need/once? + + need: + for i in need/*; do + ( $service & ); + done + wait(.*); + +-------------------------------------------------------------------------------- + +cinit: + +run_svc: + checks what it needs (need/*) + need/* + fork() + fork(), fork() + +-------------------------------------------------------------------------------- +Kommunikationsproblem: + + -> 1024 ist maximale anzahl offener sockets -> 510 von fifos,pipes + - mehrere FIFOs? + --> kommunikation gesichert, extrem viele fifos... + --> etwas unsauber, aber geregelte kommunikation + - mehrere PIPEs? + --> viele PIPEs (HRHR) + --> programme koennen nur von cinit gefork()ed werden. + + --> eine datei mit prozessen? + --> einen RAM Bereich? +-------------------------------------------------------------------------------- + +cinit[1] <-> fifo <-> forker + +forker? +-------------------------------------------------------------------------------- + +pfad vorher aufloesen? + +-------------------------------------------------------------------------------- +Kommunikation: ::Test:: + + Test mit nur 2 FIFOs! + +-------------------------------------------------------------------------------- + +sig_fifo() +read(..) als hauptaufgabe? diff --git a/software/cinit/browse_source/cinit-0.0.8/old/msg_change_status.c01 b/software/cinit/browse_source/cinit-0.0.8/old/msg_change_status.c01 new file mode 100644 index 00000000..cfd66ae3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/msg_change_status.c01 @@ -0,0 +1,49 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include + +#include "cinit.h" + +int do_change_status(char *svc, char status, pid_t pid, int action) +{ + char buf = CMD_CHG_STATUS; + int tmp = strlen(svc); + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_READ) + fpoint = read; + else + fpoint = write; + + D_PRINTF("versuche status zu aendern"); + + if(write(sock,&buf,1) == -1) { /* write COMMAND */ + perror("write"); + return 0; + } + if(write(sock,&tmp,sizeof(tmp)) == -1) { /* write length */ + perror("write"); + return 0; + } + if(write(sock,svc,tmp) == -1) { /* write service name */ + perror("write"); + return 0; + } + if(write(sock,&buf,1) == -1) { /* write PID */ + perror("write"); + return 0; + } + write(sock,&status,sizeof(status)); /* write status */ + + D_PRINTF("fertig mit schreiben"); + + read(sock,&buf,sizeof(buf)); /* read SID or -1 if error */ + + return buf; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/msg_start_svc.c b/software/cinit/browse_source/cinit-0.0.8/old/msg_start_svc.c new file mode 100644 index 00000000..c6a78bf8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/msg_start_svc.c @@ -0,0 +1,23 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit we start a service + */ + +#include + +/* return status */ +int msg_start_svc(char *string, int respawn) +{ + char *p; + + p = string; + while ( *p != '\0') { + write(2,p,1); + p++; + } + +/* FIXME: return if in cinit, _exit on fork() */ +// if(...) + _exit(status); +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/read_file.c b/software/cinit/browse_source/cinit-0.0.8/old/read_file.c new file mode 100644 index 00000000..43a5854b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/read_file.c @@ -0,0 +1,100 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + +#include "cinit.h" + +/*********************************************************************** + * read_file: return file content, each line a char* + */ + +char **read_file(char *file) +{ + int tmp; + int fd, argc; + + char buf[BUFSIZE]; + char *p, *sbuf = NULL; + char **nargv = NULL; + + struct stat stbuf; + + D_PRINTF("Lese Datei"); + D_PRINTF(file); + + if( !stat(file,&stbuf) ) { + fd = open(file,O_RDONLY); + + if(fd == -1) { + LOG("params exists, but open params failed"); + return NULL; + } + + D_PRINTF("open ist ok"); + + argc = 0; + + /* most likely one round */ + while ( (tmp = read(fd,buf,BUFSIZE) ) != 0 ) { + if(tmp == -1) { + perror("read"); + return NULL; + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],buf,tmp); + argc += tmp; + } + close(fd); + } + + sbuf[argc] = '\0'; + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() */ + + argc = 0; + + while( (p = strchr(sbuf,'\n')) ) { + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG("realloc failed"); + return NULL; + } + + nargv[argc] = sbuf; + *p = '\0'; + sbuf = p+1; /* is ok, as behind the last \n is a \0 */ + argc++; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + if(nargv == NULL) { + LOG("realloc failed"); + return NULL; + } + + nargv[argc] = NULL; /* terminate argv list */ + + return nargv; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/run_init_svc.c01 b/software/cinit/browse_source/cinit-0.0.8/old/run_init_svc.c01 new file mode 100644 index 00000000..61467f44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/run_init_svc.c01 @@ -0,0 +1,50 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run initial service + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * start the first service + */ + +int run_init_svc() +{ + pid_t pid; + + D_PRINTF("Starte initialen starter"); + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + perror("fork failed\n"); + return RT_PAR_FAIL; + } else if(pid == 0) { /* child */ + /* close fifo */ + close(f_in); close(f_out); + + /* open the other way round */ + f_in = open(CINIT_DIR SLASH F_OUT, O_RDWR); + f_out = open(CINIT_DIR SLASH F_IN, O_RDWR); + if(f_in == -1 || f_out == -1) cerr("opening fifo failed\n",RT_CHLD_FAIL); + + /* open stderr, stdin, stdout to files? */ + if ( run_svc(CINIT_INIT) == RT_CHLD_OK) + _exit(EX_OK); + else + _exit(EX_FAIL); + } else + return RT_PAR_OK; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c00 b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c00 new file mode 100644 index 00000000..ff3bb989 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c00 @@ -0,0 +1,140 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp, sid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + close(sock); /* close old socket connection, we are a fork()! */ + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + return 0; + } + tmp = sizeof(addr); + memset(&addr,0,tmp); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + /* FIXME: why do we need tmp????? ... tmp == 1 is wrong!*/ +/* tmp = 1; + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + return 0; + } */ + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + return 0; + } + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror("getcwd"); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror("chdir"); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + if( ! run_run_svcs(pathtmp) ) { + D_PRINTF("some NEEDED services failed)"); + return 0; + } + + D_PRINTF("Starte wants"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + tmp = ST_ONCE; + sid = 20; + D_PRINTF("Melde status"); + if(!do_change_status(abspath,&tmp,&sid,sock,ACT_WRITE)) { + D_PRINTF("Status nicht gemeldet :((((((((((("); + return 0; + } + D_PRINTF("Status abgesetzt"); + +/* if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + if(respawn_svc(abspath)) { + msg_change_status(sid,ST_RESPAWN); + } else { + D_PRINTF("error in respawn"); + msg_change_status(sid,ST_FAIL); + } + } else { + D_PRINTF("einmal ausfuehren"); + if(exec_svc(abspath)) { + msg_change_status(sid,ST_ONCE); + } else { + D_PRINTF("error einmalig"); + msg_change_status(sid,ST_FAIL); + } + } */ +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c01 b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c01 new file mode 100644 index 00000000..e7457af0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c01 @@ -0,0 +1,292 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* perhaps move this code to cinit-static, so it's constant */ + while(tmp < svc_list.process) { + printf("%d\n",tmp); + + if( ! strcmp(rpath,svc_list.svca[tmp].abs_path) ) { + printf("Service im Array\n"); + return 0; + } + tmp++; + } + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* check for respawn? */ + + /* fork before chdir */ + pid = fork(); + + if(pid == -1) { + printf("ERORERER\n"); + return 0; + } else if(pid > 0) { /* parent gets child's PID */ + + /* NOT IF RESPAWN */ + if(!respawn) { + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) + return RT_PAR_OK; + else + return RT_PAR_FAIL; + } /* else */ /* Was tun, wenn respawn? nochmal forken als beobachter, + oder signal? */ + } + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + /* THis saVES US THE OTHER STRCMP!!!!! */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check, whether we should respawn fixme: much earlier! */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( !stat(pathtmp,&buf) ) respawn = 1; + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether _one_ service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check if already running / ran / currently starting */ + + /* debug */ + getcwd(pathbuf,1024); + + printf("dir: %s\n",pathbuf); + + /* check for service dir */ + if( stat(path,&buf) ) { + printf("no such service: %s\n", path); + return 1; + } + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c02 b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c02 new file mode 100644 index 00000000..7fb329b6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c02 @@ -0,0 +1,282 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* perhaps move this code to cinit-static, so it's constant */ + while(tmp < svc_list.process) { + printf("%d\n",tmp); + + if( ! strcmp(rpath,svc_list.svca[tmp].abs_path) ) { + printf("Service im Array\n"); + return 0; + } + tmp++; + } + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* check for respawn? */ + + /* fork before chdir */ + pid = fork(); + + if(pid == -1) { + printf("ERORERER\n"); + return 0; + } else if(pid > 0) { /* parent gets child's PID */ + + /* NOT IF RESPAWN */ + if(!respawn) { + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) + return RT_PAR_OK; + else + return RT_PAR_FAIL; + } /* else */ /* Was tun, wenn respawn? nochmal forken als beobachter, + oder signal? */ + } + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + /* THis saVES US THE OTHER STRCMP!!!!! */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check, whether we should respawn fixme: much earlier! */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( !stat(pathtmp,&buf) ) respawn = 1; + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c03 b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c03 new file mode 100644 index 00000000..9422a7c9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c03 @@ -0,0 +1,283 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_in[2], p_out[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* create communication pipe */ + if ( pipe(p_in) == -1 || pipe(p_out) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + + /* check for respawn? yes, sometime... */ + + /* check for needs -> forked() */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + tmp = fork(); + if(tmp == -1) { + printf("error ...\n"); + exit(1); + } else if(tmp == 0) { /* child */ + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + printf("ZOOOMBIE\n"); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /* fork before chdir */ + pid = fork(); + + if(pid == -1) { + printf("ERORERER\n"); + return 0; + } else if(pid > 0) { /* parent gets child's PID */ + + /* NOT IF RESPAWN */ + if(!respawn) { + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) + return RT_PAR_OK; + else + return RT_PAR_FAIL; + } /* else */ /* Was tun, wenn respawn? nochmal forken als beobachter, + oder signal? */ + } + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + /* THis saVES US THE OTHER STRCMP!!!!! */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check, whether we should respawn fixme: much earlier! */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( !stat(pathtmp,&buf) ) respawn = 1; + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + +beof + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c04 b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c04 new file mode 100644 index 00000000..727aa71f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c04 @@ -0,0 +1,297 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) respawn = 1; + + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + } + + /* fork at the beginning and before chdir */ + pid = fork(); + + if( pid == -1 ) cerr("fork failed",RT_PAR_FAIL); + + if(pid == -1) { + cerr("fork failed\n", RT_PAR_FAIL); + } else if(pid > 0) { /* parent gets child's PID */ + + if(respawn) { + /* read the final byte from child */ + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == ST_RESPAWN) { + printf("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + } + } else { /* execute once */ + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + + /* check for needs */ + + /* do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcat(pathtmp,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathbuf); + pid = fork(); + if(tmp == -1) { + cerr("error ...\n", RT_PAR_FAIL); + } else if(tmp == 0) { + printf("child for run_run_svcs()\n"); + run_run_svcs(pathbuf); + _exit(0); + } + else + printf("parent\n"); + } + + /* check for wants -> forked() ? */ + strcpy(pathbuf,rpath); + strcat(pathbuf,"/"); + strcat(pathbuf,C_WANTS); + + if( ! stat(pathbuf,&buf) ) { + printf("dir gibt es auch: %s\n", pathbuf); + run_run_svcs(pathbuf); + } + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if run is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c05 b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c05 new file mode 100644 index 00000000..927a9261 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c05 @@ -0,0 +1,294 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets relative path */ +int run_svc_new(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) respawn = 1; + + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + } + + /* fork at the beginning and before chdir */ + pid = fork(); + + if( pid == -1 ) cerr("fork failed",RT_PAR_FAIL); + + if(pid == -1) { + cerr("fork failed\n", RT_PAR_FAIL); + } else if(pid > 0) { /* parent gets child's PID */ + + if(respawn) { + /* read the final byte from child */ + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == ST_RESPAWN) { + printf("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + } + } else { /* execute once */ + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathbuf,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} + + +/*********************************************************************** + * run_svc: gets a wants/needs directory + * returns whether the service failed or not + */ +int run_svc(char *path) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char *p, pathbuf[1024]; + struct stat buf; + int tmp; + + /* check for service/run */ + strcpy(pathbuf,path); + strcat(pathbuf,"/"); + strcat(pathbuf,C_RUN); + + d_tmp = opendir(pathbuf); + + if(d_tmp == NULL) { + printf("failed to open dir..."); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + if (strcmp(tdirent->d_name, ".") == 0 || strcmp(tdirent->d_name, "..") == 0) + continue; + + p=tdirent->d_name; + while(*p != '\0') { + write(1,p,1); + p++; + } + write(1,"\n",1); + } + + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c05.2 b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c05.2 new file mode 100644 index 00000000..90d94b65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c05.2 @@ -0,0 +1,320 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; /* talk to respawnig watcher */ + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + return 0; + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + return 0; + } + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + return 0; + } + + /******************* end socket *********************/ + + sid = msg_start_svc(rpath); /* now we are temporary */ + if(sid == -1) { + cerr("cinit returned start error",RT_CHLD_FAIL); + return 0; + } + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + msg_change_status(sid,ST_FAIL); + return 0; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + msg_change_status(sid,ST_FAIL); + return 0; + } + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + respawn = 1; + } + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) { + perror("pipe"); + cerr("pipe failed",RT_PAR_FAIL); + } + } + + /* clone */ + pid = fork(); + if( pid == -1 ) { + perror("fork"); + cerr("fork failed",RT_CHLD_FAIL); + return 0; + } + + _exit(0); + + /* the following block handles parent situation */ + + if(pid > 0) { /* parent gets child's PID */ + + /*************** THIS BLOCK IS CRAP ******************/ + + /* FIXME: when respawing, we'll watch our child */ + if(respawn) { + tmp = MSG_FAIL; + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == MSG_OK) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + msg_change_status(sid,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + msg_change_status(sid,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + /* FIXME: MISSING: + - signal handling (stop respawing) + - waitpid() in while(1) + */ + _exit(0); /* FIXME !!! */ + + /*************** END THIS BLOCK IS CRAP ******************/ + + } else /* don't RESPAWN */ { /* execute only once */ + D_PRINTF("Warte EINMAL auf mein Kind..."); + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + + /*********** CHILD EXECUTION HERE ***********/ + do { + + + } while(respawn); + + + + /* change to service dir */ + if( chdir(rpath) == -1) { + /* FIXME: errno! */ + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c06 b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c06 new file mode 100644 index 00000000..7dd265fc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c06 @@ -0,0 +1,293 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("Fehler"); + _exit(1); + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + cerr("Does your OS not support SO_PASSCRED (man 7 socket)?",RT_PAR_FAIL); + } + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + _exit(1); + } + + /******************* end socket *********************/ + + msg_start_svc(rpath); + D_PRINTF("in runsvc"); + _exit(0); + + /* check if service is already (beeing) started */ + if ( (tmp = chk_svc_client(rpath) ) != ST_NO) return tmp; + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + return ; + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + return 0; + } + + /* get our own service ID */ + sid = add_mod_svc(rpath,ST_TMP); + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) respawn = 1; + + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) + cerr("pipe failed",RT_PAR_FAIL); + } + + /* fork at the beginning and before chdir */ + pid = fork(); + + /* FIXME: pay attention: we are possibly also a fork()! */ + + if( pid == -1 ) cerr("fork failed",RT_PAR_FAIL); + + if(pid > 0) { /* parent gets child's PID */ + if(respawn) { + /* read the final byte from child */ + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == ST_RESPAWN) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } else { /* execute once */ + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c07 b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c07 new file mode 100644 index 00000000..e62eff54 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c07 @@ -0,0 +1,304 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; /* talk to respawnig watcher */ + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + _exit(1); + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + cerr("Does your OS not support SO_PASSCRED (man 7 socket)?",RT_PAR_FAIL); + } + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + _exit(1); + } + + /******************* end socket *********************/ + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + _exit(1); + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + _exit(1); + } + + tmp = msg_start_svc(rpath); /* now we are temporary */ + + D_PRINTF("in runsvc"); + + if(tmp == -1) { + cerr("cinit returned start error",RT_CHLD_FAIL); + _exit(1); + } + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + respawn = 1; + } + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) { + perror("pipe"); + cerr("pipe failed",RT_PAR_FAIL); + } + } + + pid = fork(); + /* pay attention: we are also a fork()! */ + if( pid == -1 ) { + perror("fork"); + cerr("fork failed",RT_CHLD_FAIL); + _exit(1); + } + + _exit(0); + + /* the following block handles parent situation */ + + if(pid > 0) { /* parent gets child's PID */ + + /* FIXME: when respawing, we'll watch our child */ + if(respawn) { + tmp = MSG_FAIL; + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == MSG_OK) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + add_mod_svc(rpath,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } else /* don't RESPAWN */ { /* execute only once */ + D_PRINTF("Warte EINMAL auf mein Kind..."); + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c08 b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c08 new file mode 100644 index 00000000..587e13e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c08 @@ -0,0 +1,316 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp=0, respawn = 0, status, fd, cnt, sid; + int p_com[2]; /* talk to respawnig watcher */ + char pathbuf[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + char **nargv, *sbuf, *p; /* the argv for the executed process */ + struct stat buf; + pid_t pid; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + /* close old socket connection */ + D_PRINTF("beginne socket zeugs"); + close(sock); + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + _exit(1); + } + memset(&addr,0,sizeof(addr)); + strcpy(addr.sun_path, CINIT_SOCK); + + addr.sun_family = AF_UNIX; + tmp = sizeof(addr); + + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + cerr("Does your OS not support SO_PASSCRED (man 7 socket)?",RT_PAR_FAIL); + /* FIXME: cerr */ + } + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + _exit(1); + } + + /******************* end socket *********************/ + + /* check whether service exists */ + if( stat(rpath,&buf) ) { + printf("Service does not exist %s\n",rpath); + _exit(1); + } else if( ! S_ISDIR(buf.st_mode) ) { + printf("Service is not a dir (%s)!\n",rpath); + _exit(1); + } + + sid = msg_start_svc(rpath); /* now we are temporary */ + + D_PRINTF("in runsvc"); + + if(sid == -1) { + cerr("cinit returned start error",RT_CHLD_FAIL); + _exit(1); + } + + /* check, whether we should respawn */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); /* FIXME: check return values */ + if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + respawn = 1; + } + + /* if respawn, we have to create a pipe to talk with child */ + if(respawn) { + if ( pipe(p_com) == -1 ) { + perror("pipe"); + cerr("pipe failed",RT_PAR_FAIL); + } + } + + pid = fork(); + /* pay attention: we are also a fork()! */ + if( pid == -1 ) { + perror("fork"); + cerr("fork failed",RT_CHLD_FAIL); + _exit(1); + } + + _exit(0); + + /* the following block handles parent situation */ + + if(pid > 0) { /* parent gets child's PID */ + + /*************** THIS BLOCK IS CRAP ******************/ + + /* FIXME: when respawing, we'll watch our child */ + if(respawn) { + tmp = MSG_FAIL; + read(p_com[0],&tmp,1); /* FIXME: check return */ + if(tmp == MSG_OK) { + D_PRINTF("kind sagte, wir respawnenen jetzt\n"); + msg_change_status(sid,ST_RESPAWN); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { /* child failed */ + printf("kind sagte, respawn kaputt\n"); + msg_change_status(sid,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + /* FIXME: MISSING: + - signal handling (stop respawing) + - waitpid() in while(1) + */ + _exit(0); /* FIXME !!! */ + + /*************** END THIS BLOCK IS CRAP ******************/ + + } else /* don't RESPAWN */ { /* execute only once */ + D_PRINTF("Warte EINMAL auf mein Kind..."); + waitpid(pid, &status, 0); + + if(WIFEXITED(status)) { + add_mod_svc(rpath,ST_ONCE); /* FIXME: search bei sid! */ + return RT_PAR_OK; + } else { + add_mod_svc(rpath,ST_FAIL); /* FIXME: search bei sid! */ + return RT_PAR_FAIL; + } + } + } + /* done till here. PARENTS EXECUTION ENDED! */ + + /*********** CHILD EXECUTION HERE ***********/ + + /* change to service dir */ + if( chdir(rpath) == -1) { + /* FIXME: errno! */ + printf("chdir(%s) failed!\n",rpath); + return 1; + } + + /* getcwd returns the full service name */ + if(getcwd(pathbuf,PATH_MAX) == NULL) return 0; + + printf("absolut and current %s\n",pathbuf); + + /* check for needs */ + + /* CHECKME: do we need absolute paths anymore? */ + // strcpy(pathbuf,rpath); + // strcat(pathbuf,"/"); + strcpy(pathtmp,C_NEEDS); + if( ! stat(pathtmp,&buf) ) { + printf("going for %s\n",pathtmp); + if( run_run_svcs(pathtmp) != RT_ALL_STARTED ) { + cerr("couldn't start all services I depend on\n",RT_CHLD_FAIL); + } + } + + /* check for wants -> forked() ? */ +// strcpy(pathbuf,rpath); +// strcat(pathbuf,"/"); + strcpy(pathtmp,C_WANTS); + + if( ! stat(pathtmp,&buf) ) { + printf("dir gibt es auch: %s\n", pathtmp); + run_run_svcs(pathtmp); /* don't care if everything went well */ + } + + /* everything is started, now start ourselves! */ + + /**** RETRIEVE REAL BINARY NAME ****/ + /* .../run */ +// strcpy(pathtmp,pathbuf); +// strcat(pathtmp,"/"); +// strcpy(pathtmp,C_RUN); /* FIXME: check return values */ + + /* readlink retrieves real name, if "./run" is a symlink */ + if ( (tmp = readlink(C_RUN,pathtmp,PATH_MAX) ) == -1) { + if (errno != EINVAL) cerr("readlinx failed\n",RT_CHLD_FAIL); + + /* binary is not a link, copy that to argv0 */ + sbuf = (char *) malloc( strlen(pathbuf) + strlen(C_RUN) + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strcpy(sbuf,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); /* FIXME: check return values */ + + } else { /* it's a link, copy to sbuf */ + sbuf = (char *) malloc( tmp + 1 ); + if(sbuf == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + strncpy(sbuf,pathtmp,tmp); + sbuf[tmp] = '\0'; + } + printf("argv0: %s\n",sbuf); + + /**** BUILD ARGV ****/ + + /* STOPPPPPPPED ********** + broken code: malloc of char* missing! */ + nargv = malloc( sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[0] = sbuf; + + /**** read params ****/ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_PARAMS); + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + if(fd == -1) cerr("open params failed\n",RT_CHLD_FAIL); + + sbuf = NULL; + cnt = 0; + /* most likely one round */ + while ( (tmp = read(fd,pathtmp,PATH_MAX-1) ) != 0 ) { + if(tmp == -1) cerr("read params failed\n",RT_CHLD_FAIL); + + /* STRCHR >> tmp ???? */ + /* terminate for strchr - do we really need that? */ + pathtmp[PATH_MAX-1] = '\0'; + + sbuf = realloc(sbuf,cnt + tmp + 1); + if(sbuf == NULL) cerr("realloc failed\n",RT_CHLD_FAIL); + + /* copy to temporary buffer */ + strncpy(&sbuf[cnt],pathtmp,tmp); + + cnt += tmp; + printf("Groesse: %d (%d)\n",tmp,cnt+1); + } + close(fd); + } /* if params */ + sbuf[cnt] = '\0'; + + /* build argv, now really */ + /* use the allocated buffer and replace \n with \0 ;-) */ + + cnt = 1; +// p = sbuf; + while ( *sbuf != '\0' ) { + p = strchr(sbuf,'\n'); /* set p to next \n */ + + nargv = realloc(nargv,(cnt+1) * sizeof(char *) ); + if(nargv == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); +// nargv[cnt] = malloc( sizeof(char *) ); +// if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = sbuf; /* beginning of argv[cnt] */ + *p = '\0'; /* end argv[cnt] */ + + tmp = p - sbuf; + printf("argv[%d]: %s (%d)\n",cnt,nargv[cnt],tmp); + sbuf = p+1; + cnt++; + } + /* GNAAAAAAAAAA: correct???? */ + /* close argv list */ + nargv[cnt] = malloc( sizeof(char *) ); + if(nargv[cnt] == NULL) cerr("malloc failed\n",RT_CHLD_FAIL); + + nargv[cnt] = NULL; + + // char *strchr(const char *s, int c); + /* end buffer */ + + /* get size of argv[n] */ + + /* run the fscking service */ + strcpy(pathtmp,pathbuf); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RUN); + printf("Service starten: %s \n", pathtmp); + + /* nothing to run, so it's finished */ + if( stat(pathtmp,&buf) ) _exit(0); + + //execl(pathtmp,pathtmp,"/bin/ls","-l", "/bin/echo"); + execv(pathtmp,nargv); + +// _exit(1); + +/* + if(respawn) + tmp = 0; + execl(); + return 1; +*/ +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c09 b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c09 new file mode 100644 index 00000000..ff3bb989 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/run_svc.c09 @@ -0,0 +1,140 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* Run a service */ +/* We _MUST_ return!!! */ +int run_svc(char *rpath) +{ + int tmp, sid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + struct sockaddr_un addr; + + D_PRINTF("starte run_svc"); + D_PRINTF(rpath); + + /******************* begin socket *********************/ + close(sock); /* close old socket connection, we are a fork()! */ + + sock = socket(PF_UNIX,SOCK_STREAM,0); + if( sock == -1 ) { + perror("socket"); + return 0; + } + tmp = sizeof(addr); + memset(&addr,0,tmp); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + /* FIXME: why do we need tmp????? ... tmp == 1 is wrong!*/ +/* tmp = 1; + if(setsockopt(sock, SOL_SOCKET, SO_PASSCRED, &tmp, sizeof(tmp)) == -1) { + perror("passcred"); + return 0; + } */ + + if(connect(sock,(struct sockaddr *)&addr,tmp) == -1) { + perror("connect"); + return 0; + } + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror("getcwd"); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror("chdir"); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror("getcwd2"); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror("chdir2"); + return 0; + } + + /******************* REGISTER SERVICE ***************/ + D_PRINTF(abspath); + tmp = msg_start_svc(abspath); /* mark us as temporary */ + if(tmp == -1) return 1; /* already started */ + + /******************* BEGIN DEPENDENCIES ***************/ + D_PRINTF("Starte needs"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_NEEDS); + if( ! run_run_svcs(pathtmp) ) { + D_PRINTF("some NEEDED services failed)"); + return 0; + } + + D_PRINTF("Starte wants"); + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_WANTS); + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,"/"); + strcat(pathtmp,C_RESPAWN); + + tmp = ST_ONCE; + sid = 20; + D_PRINTF("Melde status"); + if(!do_change_status(abspath,&tmp,&sid,sock,ACT_WRITE)) { + D_PRINTF("Status nicht gemeldet :((((((((((("); + return 0; + } + D_PRINTF("Status abgesetzt"); + +/* if( stat(pathtmp,&buf) == 0) { + D_PRINTF("Respawn, ja das werden wir tun"); + if(respawn_svc(abspath)) { + msg_change_status(sid,ST_RESPAWN); + } else { + D_PRINTF("error in respawn"); + msg_change_status(sid,ST_FAIL); + } + } else { + D_PRINTF("einmal ausfuehren"); + if(exec_svc(abspath)) { + msg_change_status(sid,ST_ONCE); + } else { + D_PRINTF("error einmalig"); + msg_change_status(sid,ST_FAIL); + } + } */ +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/sig_chld.c b/software/cinit/browse_source/cinit-0.0.8/old/sig_chld.c new file mode 100644 index 00000000..e452f570 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/sig_chld.c @@ -0,0 +1,31 @@ +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* we are called, when a child exited */ +void sig_chld(int status) +{ + int pstat, i = 0; + pid_t pid; + + /* get pid of child and its status */ + pid = waitpid(chpid,&pstat,0); + + /* the child was either a respawed or once running process */ + + while(i < svc_list.process) { + if(pid == svc_list.svca[i].pid) { /* found service */ + + } + i++; + } + + if( WIFEXITED(pstat) ) printf("Kind gut gestorben\n"); + + printf("kind tot %d ...\n", status); +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/sig_special.c b/software/cinit/browse_source/cinit-0.0.8/old/sig_special.c new file mode 100644 index 00000000..6152f515 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/sig_special.c @@ -0,0 +1,21 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * We are called by signal to reboot + */ + +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_special + * react on special signals: + o SIGINT: ctrl + alt + del + o SIGWINCH: keyboard request + */ + +void sig_special(int signal) +{ + /* not used */ +} diff --git a/software/cinit/browse_source/cinit-0.0.8/old/sigio.c01 b/software/cinit/browse_source/cinit-0.0.8/old/sigio.c01 new file mode 100644 index 00000000..4e1ee482 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/sigio.c01 @@ -0,0 +1,73 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int signal) +{ + struct ucred suck; + int len, lens, nsock; + struct sockaddr_un sun; + char buf; + + D_PRINTF("sigio() startet"); + + do { + nsock = accept(sock,(struct sockaddr *) NULL, (socklen_t *) NULL); + + if( nsock == -1) { + if (errno != EAGAIN) { + perror("accept"); + _exit(1); + } else { + break; + } + } + + //getsockopt(s_tmp[s_idx], SOL_SOCKET, SO_PEERCRED, &suck, &len); + getsockopt(nsock, SOL_SOCKET, SO_PEERCRED, &suck, &len); + printf("angreifer: pid: %d uid: %d gid: %d\n",suck.pid,suck.uid,suck.gid); + + + read(nsock,&buf,1); + + printf("command: %d\n",buf); + + while ( (len = read(nsock,&buf,1)) ) { +// printf("laenge: %d\n",len); + if(len == -1) { +// if(errno != EINVAL && errno != EAGAIN) { + perror("read"); + return; +// _exit(1); +// } + } + if(buf == 0) break; + write(1,&buf,1); + } + printf("Fertig mit lesen\n"); + + write(nsock,"ok\n",4); + printf("fertig mit schreiben\n"); + } while ( 1 ); + + printf("keine sockets mehr da..., sigio beendet sich jetzt.\n"); +} + + diff --git a/software/cinit/browse_source/cinit-0.0.8/old/sock_group b/software/cinit/browse_source/cinit-0.0.8/old/sock_group new file mode 100644 index 00000000..d4c1adda --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/sock_group @@ -0,0 +1,3 @@ +root + +The group, which should own the communication socket. diff --git a/software/cinit/browse_source/cinit-0.0.8/old/sock_mode b/software/cinit/browse_source/cinit-0.0.8/old/sock_mode new file mode 100644 index 00000000..b2a727b0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/sock_mode @@ -0,0 +1,3 @@ +0770 + +Octal mode of socket. diff --git a/software/cinit/browse_source/cinit-0.0.8/old/sock_user b/software/cinit/browse_source/cinit-0.0.8/old/sock_user new file mode 100644 index 00000000..34274f4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/old/sock_user @@ -0,0 +1,3 @@ +root + +The one who should own the communication socket. diff --git a/software/cinit/browse_source/cinit-0.0.8/samples/README b/software/cinit/browse_source/cinit-0.0.8/samples/README new file mode 100644 index 00000000..21532d87 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/samples/README @@ -0,0 +1,5 @@ +There is currently only one sample (debian.tar). + +The others are only linked to it, because the multi-distribution +support is already included into bin/cinit.install.test. + diff --git a/software/cinit/browse_source/cinit-0.0.8/samples/debian.tar b/software/cinit/browse_source/cinit-0.0.8/samples/debian.tar new file mode 100644 index 00000000..3e68759b Binary files /dev/null and b/software/cinit/browse_source/cinit-0.0.8/samples/debian.tar differ diff --git a/software/cinit/browse_source/cinit-0.0.8/samples/fedora.tar b/software/cinit/browse_source/cinit-0.0.8/samples/fedora.tar new file mode 120000 index 00000000..1ba34d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/samples/fedora.tar @@ -0,0 +1 @@ +debian.tar \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.0.8/samples/gentoo.tar b/software/cinit/browse_source/cinit-0.0.8/samples/gentoo.tar new file mode 120000 index 00000000..1ba34d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/samples/gentoo.tar @@ -0,0 +1 @@ +debian.tar \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.0.8/samples/mandrake.tar b/software/cinit/browse_source/cinit-0.0.8/samples/mandrake.tar new file mode 120000 index 00000000..1ba34d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/samples/mandrake.tar @@ -0,0 +1 @@ +debian.tar \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.0.8/samples/suse.tar b/software/cinit/browse_source/cinit-0.0.8/samples/suse.tar new file mode 120000 index 00000000..1ba34d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/samples/suse.tar @@ -0,0 +1 @@ +debian.tar \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.0.8/sbin/cservice b/software/cinit/browse_source/cinit-0.0.8/sbin/cservice new file mode 100644 index 00000000..fcec3b22 Binary files /dev/null and b/software/cinit/browse_source/cinit-0.0.8/sbin/cservice differ diff --git a/software/cinit/browse_source/cinit-0.0.8/serv/cinit.c b/software/cinit/browse_source/cinit-0.0.8/serv/cinit.c new file mode 100644 index 00000000..8147c4b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/serv/cinit.c @@ -0,0 +1,153 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +/* mount */ +#include + +#include +#include +#include + +#include /* nanosleep */ + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock, logfd; +pid_t cpid; + +/*********************************************************************** + * the main procedure + */ + +int main(int argc, char **argv) +{ + struct stat sbuf; + struct sockaddr_un addr; + struct timespec ts; + char *initdir; + + set_signals(ACT_SERV); /* set signal handlers */ + logfd = 1; /* write to stdout */ + list = NULL; /* list of services is empty currently */ + + initdir = CINIT_INIT; + + /* profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* stat, checkdir */ + if( stat(CINIT_INIT,&sbuf) ) { + perror(MSG_INIT_MISS); + panic(); + } + if( ! S_ISDIR(sbuf.st_mode) ) { + LOG(MSG_NOT_DIR); + panic(); + } + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + /* tell the socket, _we_ want to get SIGIO! */ + cpid = getpid(); + if(fcntl(sock,F_SETOWN,cpid) == -1) { + perror(MSG_FCNTL); + panic(); + } + + /* O_SYNC: SIGIO will be called, O_NONBLOCK: don't block cinit */ + if ( fcntl(sock,F_SETFL,O_ASYNC|O_NONBLOCK) == -1) { + perror(MSG_FCNTL); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + /******************** end socket **********************/ + + /* initial run, only if we are 'real' init': not needed */ +// if( cpid == 1) { +// if(! run_init_svc() ) { +// panic(); +// } +// } + + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + ts.tv_sec = SLEEP_INIT; + while(1) { + nanosleep(&ts,NULL); + } +} diff --git a/software/cinit/browse_source/cinit-0.0.8/serv/list.c b/software/cinit/browse_source/cinit-0.0.8/serv/list.c new file mode 100644 index 00000000..50f863a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/serv/list.c @@ -0,0 +1,106 @@ +/* (c) 2005 by Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * list handling: the processes cinit will execute/executed + * part of cinit + * changed some formatting, Nico Schottelius + */ + +#include +#include +#include "cinit.h" + + +int list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc( sizeof(struct listitem) ); + + if( tmp == NULL ) { + return 0; + } + + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members, add this one */ + tmp->after = list; /* after the new element comes the begin */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first element has us as previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if( list == NULL ) { /* think positive */ + return NULL; + } else { + tmp = list; + } + + do { + if( !strcmp(path, tmp->abs_path) ) { + return tmp; + } + tmp = tmp->before; + } while(tmp != list); + + return NULL; +} + +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if( tmp == NULL ) { + return 0; + } + + tmp->after->before = tmp->before; + tmp->before->after = tmp->after; + free(tmp->abs_path); + free(tmp); + return 1; +} + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + +// D_PRINTF(path); + + tmp = list_search(path); + if( tmp == NULL ) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/serv/panic.c b/software/cinit/browse_source/cinit-0.0.8/serv/panic.c new file mode 100644 index 00000000..a130945f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/serv/panic.c @@ -0,0 +1,20 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * panic: if cinit fails, start sulogin + * part of cinit + */ + +#include "cinit.h" +#include + +void panic(void) +{ + char *nargv[2]; + + nargv[0] = SULOGIN; + nargv[1] = NULL; + + /* FIXME: perhaps fork before? And return to standard after? */ + execv(SULOGIN,nargv); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.0.8/serv/run_init_svc.c b/software/cinit/browse_source/cinit-0.0.8/serv/run_init_svc.c new file mode 100644 index 00000000..8a405a70 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/serv/run_init_svc.c @@ -0,0 +1,50 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run initial service + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + int status; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + logfd = 1; /* FIXME: shouldn't this be some kind of log, like /dev/log? */ + set_signals(ACT_CLIENT); + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ?*/ + if ( run_svc(cinit_svc) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + waitpid(pid, &status,0); + + /* return to init what happened */ + if(WIFEXITED(status)) { + return (! WEXITSTATUS(status) ); + } else { + return 0; + } + } +} diff --git a/software/cinit/browse_source/cinit-0.0.8/serv/sig_child.c b/software/cinit/browse_source/cinit-0.0.8/serv/sig_child.c new file mode 100644 index 00000000..e6af3ead --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/serv/sig_child.c @@ -0,0 +1,22 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * We are called, when a child dies. Remove it. + */ + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_child + * collect the children + */ + +void sig_child(int signal) +{ + do { + signal = waitpid(-1,&signal,WNOHANG); + } while( signal > 0); +} diff --git a/software/cinit/browse_source/cinit-0.0.8/serv/sig_reboot.c b/software/cinit/browse_source/cinit-0.0.8/serv/sig_reboot.c new file mode 100644 index 00000000..e1a9974e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/serv/sig_reboot.c @@ -0,0 +1,146 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * We are called by signal to reboot + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void sig_reboot(int signal) +{ + struct listitem *tmp; + struct timespec ts; + char **cmd; + int i; + + /* Let's disappear, we don't care about clients anymore */ + close(sock); + if(umount(CINIT_TMNT) == -1) { + perror(CINIT_TMNT); + } + + /********* first SIGTERM the respawning processes **********/ + tmp = list->before; + do { + /* kill service watcher, which will kill processes itself */ + if( tmp->status == ST_RESPAWN) { + kill(tmp->pid,SIGTERM); + } + tmp = tmp->before; + } while( tmp != list ); + + /********* now wait for the respawn watchers to return *****/ + tmp = list->before; + do { + if( tmp->status == ST_RESPAWN) { + /* wait until the respawn watcher terminated */ + waitpid(tmp->pid,&i,0); + } + + /* execute shutdown service FIXME: parallelize that?*/ + exec_svc(tmp->abs_path,0); + tmp = tmp->before; + } while( tmp != list ); + + /* now: all services are down, lets kill all other processes */ + if( kill(-1,SIGTERM) == -1) { + perror(MSG_TERMKILL); + } + + ts.tv_sec = SLEEP_KILL; /* defined in conf/sleep_kill */ + nanosleep(&ts,NULL); + + if( kill(-1,SIGKILL) == -1) { + perror(MSG_KILLBILL); + } + D_PRINTF("SIGKILL GESENDET"); + +/* THIS IS FUCKING UNCLEAN AND SHOULD BE CLEANED UP VERY MUCH!!! */ +#define CMD_CNT 4 +#define SWAP_OFF_CMD "/sbin/swapoff" +#define SWAP_OFF_ARG1 "-a" + +#define UMOUNT_CMD "/bin/umount" +#define UMOUNT_ARG1 "-a" + +#define MOUNT_CMD "/bin/mount" +#define MOUNT_ARG1 "-o" +#define MOUNT_ARG2 "remount,ro" +#define MOUNT_ARG3 "/" + +#define RESCUE_CMD "/bin/sh" + + /* now: we are completly alone. umount everything, go to bed */ + cmd = (char **) malloc( (CMD_CNT+1) * ( sizeof (char*) ) ); + if(cmd) { + /* /sbin/swapoff -a */ + cmd[0] = SWAP_OFF_CMD; + cmd[1] = SWAP_OFF_ARG1; + cmd[2] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + /* /bin/umount -a */ + cmd[0] = UMOUNT_CMD; + cmd[1] = UMOUNT_ARG1; + cmd[2] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + + /* /bin/mount -o remount,ro / */ + cmd[0] = MOUNT_CMD; + cmd[1] = MOUNT_ARG1; + cmd[2] = MOUNT_ARG2; + cmd[3] = MOUNT_ARG3; + cmd[4] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + } else { + _exit(1); + } + + switch(signal) { + case SIGTERM: /* power off */ + reboot(RB_POWER_OFF); + break; + case SIGHUP: /* reboot */ + reboot(RB_AUTOBOOT); + break; + case SIGUSR1: /* halt */ + reboot(RB_HALT_SYSTEM); + break; + case SIGUSR2: /* rescue - destroy ourself */ + cmd[0] = RESCUE_CMD; + cmd[1] = NULL; + execv(cmd[0],cmd); + break; + } + + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.0.8/serv/sigio.c b/software/cinit/browse_source/cinit-0.0.8/serv/sigio.c new file mode 100644 index 00000000..1d6273ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/serv/sigio.c @@ -0,0 +1,142 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int signal) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + do { + /* create new socket */ + nsock = accept(sock,(struct sockaddr *) NULL, (socklen_t *) NULL); + + if( nsock == -1) { + if( errno != EAGAIN ) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } + return; + } + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = 0; + } else { + status = ST_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP RESPAWNING *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + D_PRINTF(buf); + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + D_PRINTF("respawner ausschalten"); + kill(list_tmp->pid,SIGTERM); + + D_PRINTF("warten auf pid..."); + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + + D_PRINTF("liste modifizieren"); + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + D_PRINTF("mod-aus fail"); + status = ST_FAIL; + } else { /* return status */ + D_PRINTF("kein respawn"); + status = list_tmp->status; + } + } + } else { /* no service there */ + status = ST_OFF; + } + do_result(nsock,&status); + break; + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + + if(!tmp) break; + + buf[tmp] = 0; /* terminate buf */ + + /* BUUUUUUUUUUUUUUG */ + if(!list_modify(buf,status,pid)) { + D_PRINTF("**** MOD.ERR ***"); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } while ( 1 ); +} diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:41:08 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:41:08 new file mode 100644 index 00000000..d29de765 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:41:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586640 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:46:09 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:46:09 new file mode 100644 index 00000000..7ecb58be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-15:46:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586368 Apr 30 15:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-16:50:05 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-16:50:05 new file mode 100644 index 00000000..d87323e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-16:50:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587818 Apr 30 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-17:03:00 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-17:03:00 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:39:08 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:39:08 new file mode 100644 index 00000000..0c2bb0af --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:39:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586194 May 6 20:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:54:00 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:54:00 new file mode 100644 index 00000000..fe51f37f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:54:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590108 May 6 22:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:55:07 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:55:07 new file mode 100644 index 00000000..4d2854b5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:55:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590108 May 6 22:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-23:00:07 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-23:00:07 new file mode 100644 index 00000000..c0db4814 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-23:00:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 23:00 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:31:01 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:31:01 new file mode 100644 index 00000000..4ad1fccf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:31:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:31 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:39:02 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:39:02 new file mode 100644 index 00000000..16613354 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:39:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:43:08 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:43:08 new file mode 100644 index 00000000..29e5ab44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:43:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:54:04 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:54:04 new file mode 100644 index 00000000..474189e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:54:04 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:18:00 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:18:00 new file mode 100644 index 00000000..960ca358 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:18:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:18 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:14:00 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:14:00 new file mode 100644 index 00000000..7de2bc3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:14:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:14 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:43:08 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:43:08 new file mode 100644 index 00000000..11a18f12 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:43:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597245 May 7 14:43 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:48:01 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:48:01 new file mode 100644 index 00000000..28b127b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:48:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597405 May 7 14:48 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:55:05 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:55:05 new file mode 100644 index 00000000..5d0fa0e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:55:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:55 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:01:01 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:01:01 new file mode 100644 index 00000000..7c8b202b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:01:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 15:01 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:27:00 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:27:00 new file mode 100644 index 00000000..a2d19633 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:27:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:27 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:20:02 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:20:02 new file mode 100644 index 00000000..23608225 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:20:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602184 May 7 16:20 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:31:09 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:31:09 new file mode 100644 index 00000000..40f890cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:31:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:31 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-17:08:09 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-17:08:09 new file mode 100644 index 00000000..22b48319 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-17:08:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-10:44:00 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-10:44:00 new file mode 100644 index 00000000..4dad0f2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-10:44:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 64935 May 8 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-12:42:08 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-12:42:08 new file mode 100644 index 00000000..a356e57e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-12:42:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 23195 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-19:25:05 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-19:25:05 new file mode 100644 index 00000000..0b5026c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-19:25:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:30:03 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:30:03 new file mode 100644 index 00000000..7377ee59 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:30:03 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-21:54:00 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-21:54:00 new file mode 100644 index 00000000..41ed8e4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-21:54:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604637 May 10 21:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-22:07:06 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-22:07:06 new file mode 100644 index 00000000..9579bf3d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-22:07:06 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95212 May 10 22:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-00:14:02 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-00:14:02 new file mode 100644 index 00000000..86483ada --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-00:14:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-15-22:32:07 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-15-22:32:07 new file mode 100644 index 00000000..59557c4b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-15-22:32:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 15 22:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-15-23:52:06 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-15-23:52:06 new file mode 100644 index 00000000..757e6dc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-15-23:52:06 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579305 May 15 23:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-15-23:56:00 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-15-23:56:00 new file mode 100644 index 00000000..24c85104 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-15-23:56:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605145 May 15 23:56 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:16:09 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:16:09 new file mode 100644 index 00000000..27254aa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:16:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605205 May 16 00:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-09:58:08 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-09:58:08 new file mode 100644 index 00000000..90a5b698 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-09:58:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605567 May 16 09:58 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:09:00 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:09:00 new file mode 100644 index 00000000..4c34f810 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:09:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605583 May 16 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:13:07 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:13:07 new file mode 100644 index 00000000..b6a851e6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:13:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605619 May 16 10:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:23:05 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:23:05 new file mode 100644 index 00000000..2c4fc649 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:23:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-14:56:01 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-14:56:01 new file mode 100644 index 00000000..c5e08e25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-14:56:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95794 May 21 14:56 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:35:00 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:35:00 new file mode 100644 index 00000000..0f2d5463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:35:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:35 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-08-10:23:04 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-08-10:23:04 new file mode 100644 index 00000000..0858c419 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-08-10:23:04 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53724 Jun 8 10:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-08:44:09 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-08:44:09 new file mode 100644 index 00000000..b96788fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-08:44:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53524 Jun 9 08:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-10:00:08 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-10:00:08 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-11:47:04 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-11:47:04 new file mode 100644 index 00000000..531df2bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-09-11:47:04 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-10-18:14:05 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-10-18:14:05 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-10-18:14:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-12-18:09:08 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-12-18:09:08 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-12-18:09:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-13-08:13:08 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-13-08:13:08 new file mode 100644 index 00000000..eab7486c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-13-08:13:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 13 08:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-10:01:02 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-10:01:02 new file mode 100644 index 00000000..cd4e9dad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-10:01:02 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52380 Jun 14 10:01 cinit +-rwx------ 1 nico users 47356 Jun 14 10:01 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-06:46:05 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-06:46:05 new file mode 100644 index 00000000..e0e1051d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-06:46:05 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:46 cinit +-rwx------ 1 nico users 47324 Jun 15 06:46 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-16-12:18:07 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-16-12:18:07 new file mode 100644 index 00000000..43633af1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-16-12:18:07 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 16 12:18 cinit +-rwx------ 1 nico users 50860 Jun 16 12:18 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.0.8/util/README b/software/cinit/browse_source/cinit-0.0.8/util/README new file mode 100644 index 00000000..782cdc8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/util/README @@ -0,0 +1,2 @@ +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.0.8/util/cservice.c b/software/cinit/browse_source/cinit-0.0.8/util/cservice.c new file mode 100644 index 00000000..6cba27ee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/util/cservice.c @@ -0,0 +1,119 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cservice: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +/* mount */ +#include + +#include +#include +#include + +#include /* nanosleep */ + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock, logfd; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define CSERVICE_BANNER "cservice - control cinit\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncservice -[phears] \n" \ + "\t-e\t- (ein,on) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n" \ + "\n-h, -p, -s and -r need the \"Magic Word\" to do their work: \"thilo\"\n" \ + +/*********************************************************************** + * usage: tell the user what's wrong and a help text + */ +void usage(char *stext) +{ + write(1,CSERVICE_BANNER,strlen(CSERVICE_BANNER)); + write(1,stext,strlen(stext)); + write(1,USAGE_TEXT,strlen(USAGE_TEXT)); + _exit(1); + +} + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 3) usage("Too less arguments!"); + if(argv[1][0] != '-') usage("Wrong arguments"); + if(strlen(argv[1]) != 2) usage("Wrong parameter length"); + + switch(argv[1][1]) { + case 'e': /* ein */ + if(run_svc(argv[2])) { + mini_printf("Successfully started.",1); + } else { + mini_printf("An error occured",1); + } + break; + + case 'a': /* aus */ + if(msg_svc_on_off(argv[2],0) ) { + mini_printf("Successfully stoped.",1); + } else { + mini_printf("An error occured",1); + } + break; + + case 'p': /* power off */ + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + msg_reboot(CMD_RESCUE); + break; + + default: + usage("Unknown parameter"); + break; + } + D_PRINTF("wir beenden uns");; + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.0.8/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.0.8/util/msg_reboot.c new file mode 100644 index 00000000..931bfc58 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.0.8/util/msg_reboot.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + D_PRINTF("aus damit"); + if(!begin_msg(cmd)) return 0; + D_PRINTF("abschliessen"); + close(sock); + D_PRINTF("und programm terminieren"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.1/ b/software/cinit/browse_source/cinit-0.1/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.1/COPYING b/software/cinit/browse_source/cinit-0.1/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.1/CREDITS b/software/cinit/browse_source/cinit-0.1/CREDITS new file mode 100644 index 00000000..b3a9701b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/CREDITS @@ -0,0 +1,18 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: 2005-06-17) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) +Sandro Koechli + * testing, testing, testing cinit and cinit documentation diff --git a/software/cinit/browse_source/cinit-0.1/Changelog b/software/cinit/browse_source/cinit-0.1/Changelog new file mode 100644 index 00000000..47142a97 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/Changelog @@ -0,0 +1,8 @@ +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.1/MT/debug b/software/cinit/browse_source/cinit-0.1/MT/debug new file mode 100644 index 00000000..bc085cb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/MT/debug @@ -0,0 +1,228 @@ +started up on Linux 2.6.11.11 #2 Thu Jun 16 11:02:54 CEST 2005 ppc +command line: 'monotone-0.18', 'drop', 'old/add_mod_svc.c', 'old/cerr.c', 'old/chk_svc.c', 'old/cinit.add.shutdown.reboot.poweroff', 'old/cinit.c01', 'old/cinit.c02', 'old/cinit.c03', 'old/cinit.c04', 'old/cinit.c05', 'old/cinit.c06', 'old/cinit.commands +set locale: LC_CTYPE=C, LC_MESSAGES=C +initial path is /home/user/nico/cinit-0.1 +converting 13 bytes from ANSI_X3.4-1968 to UTF-8 +converting 4 bytes from ANSI_X3.4-1968 to UTF-8 +converting 17 bytes from ANSI_X3.4-1968 to UTF-8 +converting 10 bytes from ANSI_X3.4-1968 to UTF-8 +converting 13 bytes from ANSI_X3.4-1968 to UTF-8 +converting 38 bytes from ANSI_X3.4-1968 to UTF-8 +converting 13 bytes from ANSI_X3.4-1968 to UTF-8 +converting 13 bytes from ANSI_X3.4-1968 to UTF-8 +converting 13 bytes from ANSI_X3.4-1968 to UTF-8 +converting 13 bytes from ANSI_X3.4-1968 to UTF-8 +converting 13 bytes from ANSI_X3.4-1968 to UTF-8 +converting 13 bytes from ANSI_X3.4-1968 to UTF-8 +converting 22 bytes from ANSI_X3.4-1968 to UTF-8 +converting 26 bytes from ANSI_X3.4-1968 to UTF-8 +converting 24 bytes from ANSI_X3.4-1968 to UTF-8 +converting 13 bytes from ANSI_X3.4-1968 to UTF-8 +converting 16 bytes from ANSI_X3.4-1968 to UTF-8 +converting 16 bytes from ANSI_X3.4-1968 to UTF-8 +converting 24 bytes from ANSI_X3.4-1968 to UTF-8 +converting 10 bytes from ANSI_X3.4-1968 to UTF-8 +converting 10 bytes from ANSI_X3.4-1968 to UTF-8 +converting 14 bytes from ANSI_X3.4-1968 to UTF-8 +converting 25 bytes from ANSI_X3.4-1968 to UTF-8 +converting 19 bytes from ANSI_X3.4-1968 to UTF-8 +converting 15 bytes from ANSI_X3.4-1968 to UTF-8 +converting 20 bytes from ANSI_X3.4-1968 to UTF-8 +converting 15 bytes from ANSI_X3.4-1968 to UTF-8 +converting 15 bytes from ANSI_X3.4-1968 to UTF-8 +converting 15 bytes from ANSI_X3.4-1968 to UTF-8 +converting 15 bytes from ANSI_X3.4-1968 to UTF-8 +converting 15 bytes from ANSI_X3.4-1968 to UTF-8 +converting 15 bytes from ANSI_X3.4-1968 to UTF-8 +converting 17 bytes from ANSI_X3.4-1968 to UTF-8 +converting 15 bytes from ANSI_X3.4-1968 to UTF-8 +converting 15 bytes from ANSI_X3.4-1968 to UTF-8 +converting 15 bytes from ANSI_X3.4-1968 to UTF-8 +converting 15 bytes from ANSI_X3.4-1968 to UTF-8 +converting 14 bytes from ANSI_X3.4-1968 to UTF-8 +converting 17 bytes from ANSI_X3.4-1968 to UTF-8 +converting 13 bytes from ANSI_X3.4-1968 to UTF-8 +converting 14 bytes from ANSI_X3.4-1968 to UTF-8 +converting 13 bytes from ANSI_X3.4-1968 to UTF-8 +converting 13 bytes from ANSI_X3.4-1968 to UTF-8 +searching for 'MT' directory with root '/' +search for 'MT' ended at '/home/user/nico/cinit-0.1' with '' removed +initializing from directory /home/user/nico/cinit-0.1 +found working copy directory /home/user/nico/cinit-0.1 +options path is MT/options +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 7 bytes from UTF-8 to ANSI_X3.4-1968 +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 7 bytes from UTF-8 to ANSI_X3.4-1968 +local dump path is MT/debug +setting dump path to MT/debug +opening rcfile '/home/user/nico/.monotonerc' ... +'/home/user/nico/.monotonerc' is ok +skipping nonexistent rcfile 'MT/monotonerc' +executing drop command +options path is MT/options +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 7 bytes from UTF-8 to ANSI_X3.4-1968 +revision path is MT/revision +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 8 bytes from UTF-8 to ANSI_X3.4-1968 +loading revision id from MT/revision +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 8 bytes from UTF-8 to ANSI_X3.4-1968 +db.fetch("SELECT id FROM 'revisions' WHERE id = '961f11f3afa0de0d84ac8e073d3998f6419420c6'") +db.fetch("SELECT data FROM revisions WHERE id = '961f11f3afa0de0d84ac8e073d3998f6419420c6'") +old manifest is 7ead28bc2e63a2eac769cf9998268c9efee68cc2 +db.fetch("SELECT id FROM 'manifest_deltas' WHERE id = '7ead28bc2e63a2eac769cf9998268c9efee68cc2'") +db.fetch("SELECT id FROM 'manifests' WHERE id = '7ead28bc2e63a2eac769cf9998268c9efee68cc2'") +db.fetch("SELECT id FROM 'manifests' WHERE id = '7ead28bc2e63a2eac769cf9998268c9efee68cc2'") +db.fetch("SELECT data FROM 'manifests' WHERE id = '7ead28bc2e63a2eac769cf9998268c9efee68cc2'") +old manifest has 176 entries +work path is MT/work +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 4 bytes from UTF-8 to ANSI_X3.4-1968 +checking for un-committed work file MT/work +converting 2 bytes from UTF-8 to ANSI_X3.4-1968 +converting 4 bytes from UTF-8 to ANSI_X3.4-1968 +read rearrangement from MT/work +'old/add_mod_svc.c' prefixed to 'old/add_mod_svc.c' +'old/cerr.c' prefixed to 'old/cerr.c' +'old/chk_svc.c' prefixed to 'old/chk_svc.c' +'old/cinit.add.shutdown.reboot.poweroff' prefixed to 'old/cinit.add.shutdown.reboot.poweroff' +'old/cinit.c01' prefixed to 'old/cinit.c01' +'old/cinit.c02' prefixed to 'old/cinit.c02' +'old/cinit.c03' prefixed to 'old/cinit.c03' +'old/cinit.c04' prefixed to 'old/cinit.c04' +'old/cinit.c05' prefixed to 'old/cinit.c05' +'old/cinit.c06' prefixed to 'old/cinit.c06' +'old/cinit.commands.v01' prefixed to 'old/cinit.commands.v01' +'old/cinit.create.cinit_dir' prefixed to 'old/cinit.create.cinit_dir' +'old/cinit.create.service' prefixed to 'old/cinit.create.service' +'old/cinit.h01' prefixed to 'old/cinit.h01' +'old/cnt_digits.c' prefixed to 'old/cnt_digits.c' +'old/cservice.c01' prefixed to 'old/cservice.c01' +'old/do_change_status.c01' prefixed to 'old/do_change_status.c01' +'old/idea01' prefixed to 'old/idea01' +'old/idea02' prefixed to 'old/idea02' +'old/kill_svc.c' prefixed to 'old/kill_svc.c' +'old/msg_change_status.c01' prefixed to 'old/msg_change_status.c01' +'old/msg_start_svc.c' prefixed to 'old/msg_start_svc.c' +'old/read_file.c' prefixed to 'old/read_file.c' +'old/run_init_svc.c01' prefixed to 'old/run_init_svc.c01' +'old/run_svc.c00' prefixed to 'old/run_svc.c00' +'old/run_svc.c01' prefixed to 'old/run_svc.c01' +'old/run_svc.c02' prefixed to 'old/run_svc.c02' +'old/run_svc.c03' prefixed to 'old/run_svc.c03' +'old/run_svc.c04' prefixed to 'old/run_svc.c04' +'old/run_svc.c05' prefixed to 'old/run_svc.c05' +'old/run_svc.c05.2' prefixed to 'old/run_svc.c05.2' +'old/run_svc.c06' prefixed to 'old/run_svc.c06' +'old/run_svc.c07' prefixed to 'old/run_svc.c07' +'old/run_svc.c08' prefixed to 'old/run_svc.c08' +'old/run_svc.c09' prefixed to 'old/run_svc.c09' +'old/sig_chld.c' prefixed to 'old/sig_chld.c' +'old/sig_special.c' prefixed to 'old/sig_special.c' +'old/sigio.c01' prefixed to 'old/sigio.c01' +'old/sock_group' prefixed to 'old/sock_group' +'old/sock_mode' prefixed to 'old/sock_mode' +'old/sock_user' prefixed to 'old/sock_user' +analyzing file 1 : '' -> 'CREDITS' +analyzing file 2 : '' -> 'Changelog' +analyzing file 3 : '' -> 'Makefile' +analyzing file 4 : '' -> 'README' +analyzing file 5 : '' -> 'TODO' +analyzing file 7 : '' -> 'bin/cinit.add.dependency' +analyzing file 8 : '' -> 'bin/cinit.add.getty' +analyzing file 9 : '' -> 'bin/cinit.create.empty.service' +analyzing file 10 : '' -> 'bin/cinit.get-confdir' +analyzing file 11 : '' -> 'bin/cinit.install.binary' +analyzing file 12 : '' -> 'bin/cinit.install.conf' +analyzing file 13 : '' -> 'bin/cinit.install.dir' +analyzing file 14 : '' -> 'bin/cinit.install.test' +analyzing file 15 : '' -> 'bin/cinit.mkheader' +analyzing file 16 : '' -> 'bin/cinit.read-conf' +analyzing file 17 : '' -> 'bin/cinit.reboot' +analyzing file 18 : '' -> 'bin/cinit.remove.getty' +analyzing file 19 : '' -> 'bin/cinit.respawn.off' +analyzing file 20 : '' -> 'bin/cinit.respawn.on' +analyzing file 21 : '' -> 'bin/cinit.shutdown' +analyzing file 22 : '' -> 'bin/cinit.uml.test' +analyzing file 23 : '' -> 'bin/cinit.wait.for.daemon' +analyzing file 24 : '' -> 'cinit.h' +analyzing file 26 : '' -> 'client/README' +analyzing file 27 : '' -> 'client/begin_msg.c' +analyzing file 28 : '' -> 'client/connect_sock.c' +analyzing file 29 : '' -> 'client/exec_svc.c' +analyzing file 30 : '' -> 'client/msg_change_status.c' +analyzing file 31 : '' -> 'client/msg_svc_on_off.c' +analyzing file 32 : '' -> 'client/respawn_svc.c' +analyzing file 33 : '' -> 'client/run_run_svcs.c' +analyzing file 34 : '' -> 'client/run_svc.c' +analyzing file 35 : '' -> 'client/sig_terminate.c' +analyzing file 37 : '' -> 'comm/README' +analyzing file 38 : '' -> 'comm/do_change_status.c' +analyzing file 39 : '' -> 'comm/do_result.c' +analyzing file 40 : '' -> 'comm/do_svc_name.c' +analyzing file 42 : '' -> 'conf/.README' +analyzing file 43 : '' -> 'conf/c_delay' +analyzing file 44 : '' -> 'conf/c_env' +analyzing file 45 : '' -> 'conf/c_halt' +analyzing file 46 : '' -> 'conf/c_init' +analyzing file 47 : '' -> 'conf/c_needs' +analyzing file 48 : '' -> 'conf/c_off' +analyzing file 49 : '' -> 'conf/c_on' +analyzing file 50 : '' -> 'conf/c_params' +analyzing file 51 : '' -> 'conf/c_poweroff' +analyzing file 52 : '' -> 'conf/c_reboot' +analyzing file 53 : '' -> 'conf/c_respawn' +analyzing file 54 : '' -> 'conf/c_sock' +analyzing file 55 : '' -> 'conf/c_tmp' +analyzing file 56 : '' -> 'conf/c_tmpfs' +analyzing file 57 : '' -> 'conf/c_tmpmount' +analyzing file 58 : '' -> 'conf/c_wants' +analyzing file 59 : '' -> 'conf/cinit_dir' +analyzing file 60 : '' -> 'conf/destdir' +analyzing file 61 : '' -> 'conf/getty_dir' +analyzing file 62 : '' -> 'conf/install_directory' +analyzing file 63 : '' -> 'conf/install_prog' +analyzing file 64 : '' -> 'conf/max_delay' +analyzing file 65 : '' -> 'conf/max_deps' +analyzing file 66 : '' -> 'conf/prefix' +analyzing file 67 : '' -> 'conf/profile' +analyzing file 68 : '' -> 'conf/sleep_kill' +analyzing file 69 : '' -> 'conf/sleep_kill_svc' +analyzing file 70 : '' -> 'conf/sleep_rerun' +analyzing file 71 : '' -> 'conf/sleep_svc' +analyzing file 72 : '' -> 'conf/sock_queue' +analyzing file 73 : '' -> 'conf/sulogin' +analyzing file 75 : '' -> 'doc/.buildwarn' +analyzing file 76 : '' -> 'doc/FAQ' +analyzing file 77 : '' -> 'doc/caveats' +analyzing file 78 : '' -> 'doc/intern/cinit.commands' +analyzing file 79 : '' -> 'doc/compiles.on' +analyzing file 80 : '' -> 'doc/configuring.cinit' +analyzing file 81 : '' -> 'doc/cservice' +analyzing file 82 : '' -> 'doc/daemons.backgrounding' +analyzing file 83 : '' -> 'doc/debugging.configuration' +analyzing file 85 : '' -> 'doc/extern/ipc.thoughts' +analyzing file 86 : '' -> 'doc/extern/ipc.usenet.posting' +analyzing file 87 : '' -> 'doc/extern/linux.kernel.eats.arguments' +analyzing file 88 : '' -> 'doc/extern/posix.aardvark.bug.report' +analyzing file 90 : '' -> 'doc/fun/testing01' +analyzing file 92 : '' -> 'doc/intern/README' +analyzing file 93 : '' -> 'doc/intern/how_it_works_internally' +analyzing file 94 : '' -> 'doc/intern/socket.poll_vs_o_async' +analyzing file 95 : '' -> 'doc/merging.other.initsystems' +analyzing file 96 : '' -> 'doc/meta.dependencies' +analyzing file 97 : '' -> 'doc/optimising.cinit' +analyzing file 98 : '' -> 'doc/porting.to.other.os' +analyzing file 99 : '' -> 'doc/profile.support' +analyzing file 100 : '' -> 'doc/removing.zombies' +analyzing file 101 : '' -> 'doc/replacing.init' +analyzing file 102 : '' -> 'doc/security' +analyzing file 103 : '' -> 'doc/testing.cinit.in.uml' +analyzing file 104 : '' -> 'doc/thoughts.closed' +analyzing file 105 : '' -> 'doc/updating.cinit' +analyzing file 106 : '' -> 'doc/using.rescue' +analyzing file 108 : '' -> 'generic/mini_printf.c' +analyzing file 109 : '' -> 'generic/set_signals.c' +path_component.cc:53: invariant 'I(!null_name(*i))' violated diff --git a/software/cinit/browse_source/cinit-0.1/MT/log b/software/cinit/browse_source/cinit-0.1/MT/log new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.1/MT/options b/software/cinit/browse_source/cinit-0.1/MT/options new file mode 100644 index 00000000..33960254 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/MT/options @@ -0,0 +1,3 @@ + branch "info.clinux.cinit" +database "/home/user/nico/monotone.db" + key "" diff --git a/software/cinit/browse_source/cinit-0.1/MT/revision b/software/cinit/browse_source/cinit-0.1/MT/revision new file mode 100644 index 00000000..adf3ce2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/MT/revision @@ -0,0 +1 @@ +5ea29233555d7715f4935224eef7421a311c5af0 diff --git a/software/cinit/browse_source/cinit-0.1/Makefile b/software/cinit/browse_source/cinit-0.1/Makefile new file mode 100644 index 00000000..8228031b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/Makefile @@ -0,0 +1,106 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +#DEBUG=-g -DDEBUG +OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! +LDFLAGS=-static + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. +LD=gcc +STRIP=strip -R .comment -R .note.ABI-tag + +# monotone +MT=monotone-0.18 + +# directories and files +SDIRS=bin client conf comm doc generic serv util +FILES=Changelog Makefile README TODO cinit.h + +# objects +SERV=serv/sigio.o serv/cinit.o serv/list.o \ + serv/run_init_svc.o serv/panic.o serv/sig_reboot.o \ + serv/sig_child.o + +CLIENT=client/msg_svc_on_off.o client/msg_change_status.o client/run_svc.o \ + client/exec_svc.o client/respawn_svc.o client/run_run_svcs.o \ + client/connect_sock.o client/begin_msg.o client/sig_terminate.o + +COMMUNICATION=comm/do_change_status.o comm/do_result.o comm/do_svc_name.o + +BOTH=generic/set_signals.o generic/mini_printf.o + +OBJ=$(SERV) $(CLIENT) $(BOTH) $(COMMUNICATION) + +CSVC_OBJ=util/cservice.o generic/mini_printf.o util/msg_reboot.o \ + $(CLIENT) $(COMMUNICATION) + +# DO NOT CHANGE THIS. +SBIN=sbin +CINIT_BIN=$(SBIN)/cinit + +# targets +warn: + @cat doc/.buildwarn + +all: cinit cservice sizecheck + +cinit: $(CINIT_BIN) + +$(CSVC_OBJ) $(OBJ): config.h + +$(CINIT_BIN): $(SBIN) $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +$(SBIN): + mkdir $(SBIN) + +sizecheck: cinit cservice + FILE="size/`date +%Y-%m-%d-%T`"; ls -l sbin/ > $$FILE; cat $$FILE + @echo -n "Source size (in KiB): " + @du -s $(SDIRS) | awk '{ sum+=$$1 } END { print sum }' +# @du -s bin client comm conf doc generic serv | awk '{ sum+=$1 } END { print sum }' +clean: + rm -f *.o */*.o sbin/cinit config.h + +config.h: conf/* + ./bin/cinit.mkheader > config.h + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +# monotone +mt-update: + $(MT) add $(SDIRS) $(FILES) 2>/dev/null +mt-commit: + $(MT) commit +mt-sync: + $(MT) sync linux.schottelius.org info.clinux.cinit + +install: install-dir + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-dir: + ./bin/cinit.install.dir + +install-test: + @echo "***> Please get a sample from http://linux.schottelius.org/cinit/" + @echo "***\ This make target is no longer supported" diff --git a/software/cinit/browse_source/cinit-0.1/README b/software/cinit/browse_source/cinit-0.1/README new file mode 100644 index 00000000..8b6cf8f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/README @@ -0,0 +1,110 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via monotone. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.1/TODO b/software/cinit/browse_source/cinit-0.1/TODO new file mode 100644 index 00000000..d83746d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/TODO @@ -0,0 +1,51 @@ +-------------------------------------------------------------------------------- +- Source Logic issues + - remove FIXME entries (and what should be fixed, too) + - cleanup sig_reboot.c + - memset for timespecs? + - move umount, swapoff and remount to off of init? + -> cleanup sig_reboot.c + - run_svc: + o we have many strcat()s, perhaps save length of pathbuf and strncat at + pathtmp[strlen(pathbuf)] ? + - do we really need swapoff? +-------------------------------------------------------------------------------- +- Documentation + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml +-------------------------------------------------------------------------------- +create_mini_cinit / configuration samples + -> use a tarball? (samples/*) + -> create something which should be runnable + -> mount, fsck, getty + --> for dev in `read /etc/fstab` ... + fsck $dev + --> getty from /etc/inittab or /sbin/*getty + -> find out, which gettys with which params + -> use it on 'make install' +-------------------------------------------------------------------------------- +Optional tasks: + + - check for other possibilities to create a smaller binary + - strip options + - gcc options + - ld options + - alternative libc (uclibc and dietlibc work fine!) + +-------------------------------------------------------------------------------- +Things I did not do and I don't know whether we have to care about: + +- Porting + - add porting code to other unices? + - like openssh guys do? + +- close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? +- logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? diff --git a/software/cinit/browse_source/cinit-0.1/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.1/bin/cinit.add.dependency new file mode 100644 index 00000000..a47844fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/bin/cinit.add.dependency @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or wants Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +case $DEP in + wants) DEP=$C_WANTS ;; + needs) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could some PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEST="${BASEDIR}/${SVC_A}/${DEP}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.1/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.1/bin/cinit.add.getty new file mode 100644 index 00000000..cd8aab55 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/bin/cinit.add.getty @@ -0,0 +1,66 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +read -p "Getty to use [$mygetty]: " rgetty +read -p "Parameters to pass [$params]: " rparams + +[ "$rgetty" ] && mygetty=$rgetty +[ "$rparams" ] && params=$rparams + +if [ ! "$mygetty" -o ! "$params" ]; then + echo "No useable getty and parameters found, exiting." + exit 1 +fi + +echo -n "Putting $mygetty $params into $DDIR ... " +mkdir -p "$DDIR" +ln -s $mygetty "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.1/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.1/bin/cinit.create.empty.service new file mode 100644 index 00000000..365c4bc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/bin/cinit.create.empty.service @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.1/bin/cinit.get-confdir b/software/cinit/browse_source/cinit-0.1/bin/cinit.get-confdir new file mode 100644 index 00000000..a36c52f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/bin/cinit.get-confdir @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# 2005-05-24 + +# try environment first +if [ "$CINIT_DIR" ]; then + CONFDIR=$CINIT_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +elif [ -d /etc/cinit ]; then + CONFDIR=/etc/cinit +else + echo Did not find cinit configuration 1>&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.1/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.1/bin/cinit.install.binary new file mode 100644 index 00000000..f65b3487 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/bin/cinit.install.binary @@ -0,0 +1,29 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# + + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice +"$INSTALL_PROG" bin/cinit.reboot $DESTDIR/$PREFIX/sbin/cinit.reboot +"$INSTALL_PROG" bin/cinit.shutdown $DESTDIR/$PREFIX/sbin/cinit.shutdown +"$INSTALL_PROG" bin/cinit.wait.for.daemon \ + $DESTDIR/$PREFIX/sbin/cinit.wait.for.daemon + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $DESTDIR/$PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi + +# install as /sbin/shutdown, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/shutdown ]; then + ln -s $DESTDIR/$PREFIX/sbin/cinit.shutdown $DESTDIR/$PREFIX/sbin/shutdown +fi + +# install as /sbin/reboot, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/reboot ]; then + ln -s $DESTDIR/$PREFIX/sbin/cinit.reboot $DESTDIR/$PREFIX/sbin/reboot +fi diff --git a/software/cinit/browse_source/cinit-0.1/bin/cinit.install.conf b/software/cinit/browse_source/cinit-0.1/bin/cinit.install.conf new file mode 100644 index 00000000..bd6fadc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/bin/cinit.install.conf @@ -0,0 +1,11 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# + + +. $(dirname $0)/cinit.read-conf + +echo "*** > Currently missing, sorry." + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.1/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.1/bin/cinit.install.dir new file mode 100644 index 00000000..69f8a00f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/bin/cinit.install.dir @@ -0,0 +1,10 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install configuration directory +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/sbin" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/$CINIT_DIR" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/$CINIT_DIR/$C_TMP" diff --git a/software/cinit/browse_source/cinit-0.1/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.1/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.1/bin/cinit.mkheader b/software/cinit/browse_source/cinit-0.1/bin/cinit.mkheader new file mode 100644 index 00000000..e1f35d07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/bin/cinit.mkheader @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric - no I didn't see an easier way + numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + + [ "$numeric" ] || value="\"$value\"" + + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.1/bin/cinit.read-conf b/software/cinit/browse_source/cinit-0.1/bin/cinit.read-conf new file mode 100644 index 00000000..39d4ba06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/bin/cinit.read-conf @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# + +CONFS=$($(dirname $0)/cinit.get-confdir)/* + +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + if eval test -z \$$NAME; then + eval $NAME="$(head -n 1 $conf)" + eval export $NAME + fi +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.1/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.1/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.1/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.1/bin/cinit.remove.getty new file mode 100644 index 00000000..e7b1a6ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/bin/cinit.remove.getty @@ -0,0 +1,23 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + + +[ ! "$NUMBER" ] && exit 1 + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r $DDIR +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.1/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.1/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.1/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.1/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.1/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.1/bin/cinit.shutdown new file mode 100644 index 00000000..0134ed3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/bin/cinit.shutdown @@ -0,0 +1,29 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# 2005-05-24 (Last changed: 2005-06-18) + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -p|--power-off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " -s|--rescue: Rescue mode" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -p|--power-off`) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + -s|--rescue) kill -USR2 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.1/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.1/bin/cinit.uml.test new file mode 100644 index 00000000..f6ea7fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.1 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG umid=cinit$$ init=/sbin/cinit" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.1/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.1/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..7f027455 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 (Last Changed: 2005-06-17) + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +PIDFILE=$1; shift +DAEMON=$1; shift + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.1/cinit.h b/software/cinit/browse_source/cinit-0.1/cinit.h new file mode 100644 index 00000000..e8ab63da --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/cinit.h @@ -0,0 +1,138 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * header of cinit + */ + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* paths */ +#define C_ONARG C_ON C_PARAMS +#define C_OFFARG C_OFF C_PARAMS +#define C_ONENV C_ON C_ENV +#define C_OFFENV C_OFF C_ENV + +#define SLASH "/" + +#define CINIT_INIT CINIT_DIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK +#define CINIT_BIN PREFIX SLASH "sbin" SLASH "cinit" + +/* commands (maximum: 2^8 = 256)*/ +#define CMD_START_SVC 1 +#define CMD_CHG_STATUS 2 +#define CMD_STOP_SVC 3 +#define CMD_RESCUE 4 +#define CMD_HALT 5 +#define CMD_REBOOT 6 +#define CMD_POWEROFF 7 +#define CMD_UPDATE 8 + +/* status of a service - DO NOT USE 0! */ +#define ST_TMP 1 /* currently working on it */ +#define ST_ONCE 2 /* executed once */ +#define ST_RESPAWN 3 /* running and respawning */ +#define ST_FAIL 4 /* failed to start service */ +#define ST_TMPNOW 5 /* now you are on it - only for clients */ +#define ST_OFF 6 /* Switching service off */ + +/* actions for i/o handlers (see comm/do_*) */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* Messages to the outside */ +#define MSG_CINIT "cinit-0.1 booting..." +#define MSG_ERR_OPEN "open" +#define MSG_ERR_READ "read" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_FORK "fork" +#define MSG_BIND "bind" +#define MSG_LISTEN "listen" +#define MSG_SOCKET "socket" +#define MSG_CONNECT "connect" +#define MSG_FCNTL "fcntl" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_TERMKILL "sigterm" +#define MSG_KILLBILL "sigkill" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" +#define MSG_ERR_DEPS "Too many dependencies" +#define MSG_ERR_ACCEPT "accept" +#define MSG_ERR_WAITPID "waitpid" +#define MSG_ERR_POLL "poll" +#define MSG_ERR_MODIFY "modify list failed" + +#define LOG_SVC_FAIL "Service failed" +#define LOG_NEED_FAIL "One or more need failed" + +struct listitem { + char *abs_path; /* name of service */ + int status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + struct listitem *before; /* previous item */ + struct listitem *after; /* next item */ +}; + +/* variables */ +extern struct listitem *list; /* the process linked chain */ +extern int sock; /* current writing/reading socket */ +extern pid_t cpid; /* used by main() and reused be respaw_svc() */ + +/* functions (used by server and client) */ +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +#define LOG(s) mini_printf(s,1) + +int do_svc_name(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* server functions */ +int list_insert(char *path, int status); +struct listitem *list_search(char *path); +int list_delete(char *path); +int run_init_svc(char *cinit_svc); +void sigio(int socket); +void sig_reboot(int signal); +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +int msg_svc_on_off(char *svc, int action); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +int run_run_svcs(char *abspath); +pid_t exec_svc(char *abspath, int on); +pid_t respawn_svc(char *abspath); +int connect_sock(int socke); +char **read_file(char *file); +void sig_terminate(int signal); + +/* listing functions (server only) */ +int list_insert(char *path, int status); +struct listitem *list_search(char *path); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); + +/* util */ +int msg_reboot(char cmd); + +/* DEBUG */ +#ifdef DEBUG +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) +#endif diff --git a/software/cinit/browse_source/cinit-0.1/client/README b/software/cinit/browse_source/cinit-0.1/client/README new file mode 100644 index 00000000..0a5b8d0c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/client/README @@ -0,0 +1,2 @@ +client/ + These sources are used by the children which are spawned by cinit. diff --git a/software/cinit/browse_source/cinit-0.1/client/begin_msg.c b/software/cinit/browse_source/cinit-0.1/client/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/client/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.1/client/connect_sock.c b/software/cinit/browse_source/cinit-0.1/client/connect_sock.c new file mode 100644 index 00000000..de161327 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/client/connect_sock.c @@ -0,0 +1,37 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.1/client/exec_svc.c b/software/cinit/browse_source/cinit-0.1/client/exec_svc.c new file mode 100644 index 00000000..a0914545 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/client/exec_svc.c @@ -0,0 +1,265 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +pid_t exec_svc(char *abspath, int on) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + D_PRINTF(abspath); + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + LOG(abspath); + LOG(LOG_SVC_FAIL); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(on) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(on) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(on) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(on) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* if a file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + perror(MSG_ERR_EXECVE); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.1/client/msg_change_status.c b/software/cinit/browse_source/cinit-0.1/client/msg_change_status.c new file mode 100644 index 00000000..5338d6c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/client/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +int msg_change_status(char *svc, char status, pid_t pid) +{ + D_PRINTF(svc); + + if(!begin_msg(CMD_CHG_STATUS)) { + return 0; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.1/client/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.1/client/msg_svc_on_off.c new file mode 100644 index 00000000..71351043 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/client/msg_svc_on_off.c @@ -0,0 +1,32 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, int action) +{ + char cmd; + + D_PRINTF(svc); + + if(action) { + cmd = CMD_START_SVC; + } else { + cmd = CMD_STOP_SVC; + } + + if(!begin_msg(cmd)) return 0; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return 0; + return (int) do_result(sock,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.1/client/respawn_svc.c b/software/cinit/browse_source/cinit-0.1/client/respawn_svc.c new file mode 100644 index 00000000..2b68944f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/client/respawn_svc.c @@ -0,0 +1,98 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + D_PRINTF(abspath); + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, 1) ) { + /* only sleep if the service exited itself and is not + killed by sig_term */ + if(cpid != 0) { + sleep(SLEEP_SVC); + } + } + } while( cpid ); /* cpid is reset by sig_terminate() */ + + /* start off task */ + exec_svc(abspath,0); + + D_PRINTF("jetzt weg"); + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.1/client/run_run_svcs.c b/software/cinit/browse_source/cinit-0.1/client/run_run_svcs.c new file mode 100644 index 00000000..3ad819a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/client/run_run_svcs.c @@ -0,0 +1,85 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.1/client/run_svc.c b/software/cinit/browse_source/cinit-0.1/client/run_svc.c new file mode 100644 index 00000000..a4474176 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/client/run_svc.c @@ -0,0 +1,133 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and beforeo all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + struct timespec ts; + + D_PRINTF(rpath); + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return 0; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return 0; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return 0; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return 0; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,1); /* check status */ + + switch(tmp) { + case 0: /* failed to communicate */ + case ST_FAIL: /* somebody failed, we won't retry */ + D_PRINTF("fail"); + return 0; + break; + case ST_TMP: /* someone is working on it */ + D_PRINTF("schon tmp"); + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case ST_RESPAWN: /* somebody does our work */ + D_PRINTF("schon erledigt"); + return 1; + break; + case ST_TMPNOW: /* we are on it! */ + D_PRINTF("wir sind dran"); + break; + } + } while(tmp != ST_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + D_PRINTF(pathtmp); + + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + LOG(abspath); + LOG(LOG_NEED_FAIL); + msg_change_status(abspath, ST_FAIL, 0); + return 0; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + D_PRINTF(pathtmp); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, 1); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return 0; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.1/client/sig_terminate.c b/software/cinit/browse_source/cinit-0.1/client/sig_terminate.c new file mode 100644 index 00000000..f169e4b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/client/sig_terminate.c @@ -0,0 +1,61 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + D_PRINTF("ausssachalten"); + + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + status = kill(cpid,SIGKILL); + if( status == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + D_PRINTF("muesste weg sein"); + return; +} diff --git a/software/cinit/browse_source/cinit-0.1/comm/README b/software/cinit/browse_source/cinit-0.1/comm/README new file mode 100644 index 00000000..840c9742 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/comm/README @@ -0,0 +1,3 @@ +comm/ + The communication part of cinit. + The functions are used in client and in server code. diff --git a/software/cinit/browse_source/cinit-0.1/comm/do_change_status.c b/software/cinit/browse_source/cinit-0.1/comm/do_change_status.c new file mode 100644 index 00000000..a1b7dfd4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/comm/do_change_status.c @@ -0,0 +1,71 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_SERV) { + fpoint = read; + } else { + D_PRINTF(svc); + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.1/comm/do_result.c b/software/cinit/browse_source/cinit-0.1/comm/do_result.c new file mode 100644 index 00000000..5ee9cece --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/comm/do_result.c @@ -0,0 +1,32 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return 0; + } + + return *value; +} diff --git a/software/cinit/browse_source/cinit-0.1/comm/do_svc_name.c b/software/cinit/browse_source/cinit-0.1/comm/do_svc_name.c new file mode 100644 index 00000000..aad24e15 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/comm/do_svc_name.c @@ -0,0 +1,54 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + D_PRINTF(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + D_PRINTF("zu gross"); + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.1/conf/.README b/software/cinit/browse_source/cinit-0.1/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.1/conf/c_delay b/software/cinit/browse_source/cinit-0.1/conf/c_delay new file mode 100644 index 00000000..dc30f147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGTERM for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.1/conf/c_env b/software/cinit/browse_source/cinit-0.1/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.1/conf/c_halt b/software/cinit/browse_source/cinit-0.1/conf/c_halt new file mode 100644 index 00000000..bc062a2c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/c_halt @@ -0,0 +1,4 @@ +halt + +Name of the service we should start when 'halting' (system stop, but no +power off). diff --git a/software/cinit/browse_source/cinit-0.1/conf/c_init b/software/cinit/browse_source/cinit-0.1/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.1/conf/c_needs b/software/cinit/browse_source/cinit-0.1/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.1/conf/c_off b/software/cinit/browse_source/cinit-0.1/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.1/conf/c_on b/software/cinit/browse_source/cinit-0.1/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.1/conf/c_params b/software/cinit/browse_source/cinit-0.1/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.1/conf/c_poweroff b/software/cinit/browse_source/cinit-0.1/conf/c_poweroff new file mode 100644 index 00000000..273d4bec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/c_poweroff @@ -0,0 +1,3 @@ +poweroff + +Name of the service we should start, when system power-off is called. diff --git a/software/cinit/browse_source/cinit-0.1/conf/c_reboot b/software/cinit/browse_source/cinit-0.1/conf/c_reboot new file mode 100644 index 00000000..17937b4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/c_reboot @@ -0,0 +1,3 @@ +reboot + +Name of the service we should start on reboot. diff --git a/software/cinit/browse_source/cinit-0.1/conf/c_respawn b/software/cinit/browse_source/cinit-0.1/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.1/conf/c_sock b/software/cinit/browse_source/cinit-0.1/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.1/conf/c_tmp b/software/cinit/browse_source/cinit-0.1/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.1/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.1/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.1/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.1/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.1/conf/c_wants b/software/cinit/browse_source/cinit-0.1/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.1/conf/cinit_dir b/software/cinit/browse_source/cinit-0.1/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.1/conf/destdir b/software/cinit/browse_source/cinit-0.1/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.1/conf/getty_dir b/software/cinit/browse_source/cinit-0.1/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.1/conf/install_directory b/software/cinit/browse_source/cinit-0.1/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.1/conf/install_prog b/software/cinit/browse_source/cinit-0.1/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.1/conf/max_delay b/software/cinit/browse_source/cinit-0.1/conf/max_delay new file mode 100644 index 00000000..149fa16c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/max_delay @@ -0,0 +1,7 @@ +4 + +Maximum number of digits which may be in the delay file. +If there are more, the string "12345678901" will be cut to the +right length "1234567890". I don't think you'll ever need +a timeout greater 4 digits (9999 seconds are 166,65~ minutes, are +2 hours, 46 minutes and 39 seconds). See doc/configuring.cinit. diff --git a/software/cinit/browse_source/cinit-0.1/conf/max_deps b/software/cinit/browse_source/cinit-0.1/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.1/conf/prefix b/software/cinit/browse_source/cinit-0.1/conf/prefix new file mode 100644 index 00000000..c22ff3ee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/prefix @@ -0,0 +1,5 @@ + + +Where to install cinit. Normally this will be /, but you can put it anywhere. +The subdirectory 'sbin' under this prefix must be reabable by the kernel. +This is normally either empty or "/". diff --git a/software/cinit/browse_source/cinit-0.1/conf/profile b/software/cinit/browse_source/cinit-0.1/conf/profile new file mode 100644 index 00000000..b9104bf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/profile @@ -0,0 +1,9 @@ +cprofile: + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile:" is the standard, as +the Linux kernel eats everything in the form 'var=parm'. +The old (pre cinit-0.1) option "cprofile=" should therefore +NOT be used. + +Under Linux you tell it the bootloader like grub or LILO. diff --git a/software/cinit/browse_source/cinit-0.1/conf/sleep_kill b/software/cinit/browse_source/cinit-0.1/conf/sleep_kill new file mode 100644 index 00000000..de1fd006 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/sleep_kill @@ -0,0 +1,5 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. diff --git a/software/cinit/browse_source/cinit-0.1/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.1/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.1/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.1/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.1/conf/sleep_svc b/software/cinit/browse_source/cinit-0.1/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.1/conf/sock_queue b/software/cinit/browse_source/cinit-0.1/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.1/conf/sulogin b/software/cinit/browse_source/cinit-0.1/conf/sulogin new file mode 100644 index 00000000..4f003994 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/conf/sulogin @@ -0,0 +1,4 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it only if we panic(). +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.1/doc/.buildwarn b/software/cinit/browse_source/cinit-0.1/doc/.buildwarn new file mode 100644 index 00000000..e6182137 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/.buildwarn @@ -0,0 +1,17 @@ +**************************************************************************** +First of all configure cinit through the configuration files found in conf/. + +The documentation can be found in doc/, read + + README and doc/configuring.cinit + +_before_ first use. + +After reading and configuring use: + + "make all" - to build cinit + "make install" - to install cinit + +After that you'll have to configure it. Some sample configuratios can be +fuond on the cinit homepage http://linux.schottelius.org/cinit/. +**************************************************************************** diff --git a/software/cinit/browse_source/cinit-0.1/doc/FAQ b/software/cinit/browse_source/cinit-0.1/doc/FAQ new file mode 100644 index 00000000..53494f73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile:home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.1/doc/caveats b/software/cinit/browse_source/cinit-0.1/doc/caveats new file mode 100644 index 00000000..5ab123e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/caveats @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.1/doc/compiles.on b/software/cinit/browse_source/cinit-0.1/doc/compiles.on new file mode 100644 index 00000000..3fe83479 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/compiles.on @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +compiles.on, +Nico Schottelius 2005-06-09 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit is known to compile on: + +x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 + +Please report your configuration, if it's not listed here. diff --git a/software/cinit/browse_source/cinit-0.1/doc/configuring.cinit b/software/cinit/browse_source/cinit-0.1/doc/configuring.cinit new file mode 100644 index 00000000..a88ba00f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/configuring.cinit @@ -0,0 +1,189 @@ +-------------------------------------------------------------------------------- +configuring cinit, +Nico Schottelius 2005-05-28 (Last Modified: 2005-06-05) +-------------------------------------------------------------------------------- + +0. Pre-compile configuration +1. General configuration layout +2. Hints +2.0 Service executing / parameters +2.1 Daemons +2.2 Logging +2.3 Using prepared scripts +3. Profiles + + +0. Pre-compile configuration + +Have a look at conf/*. Those variable will mostly be used when +compiling cinit. Some will be read later (like destdir). + + +1. General configuration layout + +/etc/cinit (configurable via conf/cinit_dir) stores the complete +cinit configuration. + +cinit is service based. +A service consists of + - a base directory (like /etc/cinit/getty/1) + - dependency configuration: + + ./wants - services it wants to be started before (but it + will work anyway) + + ./needs/ - services it needs. If those services fail, this service + won't be started. + + - a flag indicating whether to respawn the service: + + ./respawn (simply touch it) + + - a delay: how long to wait for the service (in seconds) before + sending SIGKILL after the SIGTERM (only for respawning processes): + + ./delay (one line with only the digits) + + If delay is non-existing or not readable, the delay from + conf/sleep_kill_svc is taken. The maximum length of this + number ("9999" uses length 4, "42" needs 2 bytes) can be adjusted + at compile time in conf/max_delay. Internally this is a signed + integer, so the maximum size depends on your system. Though + I don't think anybody will want to wait for a service as long as + an integer would allow. + + - the program to run when switching the service on and off: + + ./on (a link to a program or a shell script) + ./on.params (see conf/c_params, the parameters to pass to the program) + ./on.env (see conf/c_env, the environment to pass to the program) + + ./off (call that when shutting down the service) + ./off.params (the parameters to pass to the program) + ./on.env (the environment to pass to the program) + +You should have a look at the samples/ directory for examples. + +If things are missing, cinit will continue with what's available. +This way you only need the files you use. Some examples: + + /etc/cinit/init: + ./wants -> services it wants + ./needs -> services it needs + That's everything + + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it + That's everything, as it has no dependencies + + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn on service + delay -> wait this time before sending SIGKILL after SIGTERM + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting + + +2. Hints + +2.0 Service executing / parameters + +The on and off files can and should be links to the programs you want +to execute. This way you save yourself loading the big shell (which is +on many Linux systems bash, why so ever, dash does the job as good, still +beeing small). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. The on script +could look like: + + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). + + +2.1 Daemons + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking (Please have a look at +daemons.backgrounding for a list of known daemons and their switches +to avoid backgrounding). + +The other possibility is to use a program, which will + a) start the daemon + b) look into the pidfile of the daemon + c) will then wait until that pid does not exist anymore + d) and then it exits and cinit will restart it (goto a) now) + +Such a program is included into this cinit release, +though I do not recommend using it. You should better contact the +authors and make them implement a clean non-forking mode. + +The name of the program (actually a shell script) is "cinit.wait.for.daemon". + +You will use it as the "on" part of the service and you have to add + + a) the pidfile to on.params + b) the daemon binary + +Thus the service would look like: + + svc-broken-daemon/ + on -> /sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + + +2.2 Logging + +Currently there's no special logging support. +When programs write to stdout, it will be displayed on +the same stdout cinit is connected to +(we don't even open /dev/console - we are too lazy currently). + + +2.3 Using prepared scripts + +In the bin/ directory of this tarball you'll find at least: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + + +3. Profiles + +Since cinit-0.0.6 there is profile in cinit. +Profiles are described in doc/profile.support. + +X. Examples + +Can be found in the tarballs below samples/. diff --git a/software/cinit/browse_source/cinit-0.1/doc/cservice b/software/cinit/browse_source/cinit-0.1/doc/cservice new file mode 100644 index 00000000..8dae0c2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/cservice @@ -0,0 +1,34 @@ +-------------------------------------------------------------------------------- +cservice, +Nico Schottelius, 2005-06-10 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +cservice - control cinit + +cservice -[phearsu] + -e - (ein) start a service (including all needed dependencies) + -a - (aus) stop a respawing service, don't care about other services + + -r - reboot + -h - halt + -p - poweroff (on some systems the same as halt) + -s - reScue mode - only a shell + + -u - update: hot reboot - shutdown system and execute /sbin/cinit + +A service may be specified either as relative or as absolute path. + +-h, -p, -r, -s and -u need the "Magic Word" to do their work: "thilo" + +-------------------------------------------------------------------------------- + +Some examples: + + cservice -e /etc/cinit/getty/8 # fire up getty/8 + cd /etc/cinit/getty; cservice -a ./8 # shut down getty/8 + cservice -h thilo # halt + cservice -r thilo # reboot + cservice -s thilo # rescue + cservice -u thilo # update + +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.1/doc/daemons.backgrounding b/software/cinit/browse_source/cinit-0.1/doc/daemons.backgrounding new file mode 100644 index 00000000..1af6741b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/daemons.backgrounding @@ -0,0 +1,57 @@ +-------------------------------------------------------------------------------- +daemons backgrounding, +Nico Schottelius 2005-06-12 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +0. Definition + +A daemon is a program which runs in the background, not having a tty +associated necesserally. Running in background does not mean it has +to background (fork()) itself, but that you cannot control it directly +from a shell. + +1. Daemons and cinit + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking + +The following daemons / servers are known to avoid backgrounding easily: + + bind [dns server/caching]: -f + cron (vixie) [schedular]: -f + cupsd [printer server]: -f or -F + dhcp3 (isc) [dhcp server]: -f + distccd [compile server]: normal behaviour + frox [ftp proxy]: "NoDetach" in config + mini-lpd [printer server]: normal behaviour + metalog [log server]: normal behaviour + monotone [vcs]: normal behaviour + nessusd ["security server"]: normal behaviour + ntpd [time server]: -n + oops [http proxy]: normal behaviour + openssh [ssh server]: -D + openvpn [vpn server]: normal behaviour + pbbuttonsd [power management]:normal behaviour + proftpd [ftp server]: -n + qmail [mta]: normal behaviour + rsync ["file server"]: --no-detach + slapd [ldap]: -d + snmpd [snmp daemon]: -f + svnserve [vcs]: --foreground + syslogd [log server]: -n + tcpserver [super server]: normal behaviour + vsftpd [ftp server]: normal behaviour (or: config: background=no) + xinetd [super server]: -dontfork + +Those are the daemons that do not offer the possibility (as of release 0.0.8): + + - apache (only with debug mode) + - atd (no switch, no configuraton option) + - inetd (some variants) + - nscd (no switch, no configuraton option) + - portmap (only with debug mode) diff --git a/software/cinit/browse_source/cinit-0.1/doc/debugging.configuration b/software/cinit/browse_source/cinit-0.1/doc/debugging.configuration new file mode 100644 index 00000000..1289865e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/debugging.configuration @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +Debugging your init configuration, +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +As writing an init configuration is not the easiest thing, +here are some problems (P) and debugging hints (H): + +P: There's no output! +H: If you don't start a service which outputs something there won't be any, + cinit starts up silently. + +P: Service XYZ seems not to work? +H: Try the following in your shell: + cd /etc/cinit/the-service; ./on "$(on.params)" + If that succeeds it has perhaps something missing which should have been + started before. +H: Create a test-service, which contains the following: + on: link to /bin/echo + on.params: "A test string" (with or without the quotes) + Now add the test-service to the needs directory of service XYZ. + If you see output the next time, the service is started. + Otherwise you forgot to make another service dependent on service + XYZ. + +P: How can I test if a non-outputting service successfully started? +H: Create another service, which depends on your service and make + it echo something. + +P: Does that profile support really work? +H: Try that: cprofile:NONEXISTENT and you'll see. + diff --git a/software/cinit/browse_source/cinit-0.1/doc/extern/README b/software/cinit/browse_source/cinit-0.1/doc/extern/README new file mode 100644 index 00000000..e734d6d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/extern/README @@ -0,0 +1,2 @@ +doc/extern/ + Some things related to cinit from the outside world. diff --git a/software/cinit/browse_source/cinit-0.1/doc/extern/ipc.thoughts b/software/cinit/browse_source/cinit-0.1/doc/extern/ipc.thoughts new file mode 100644 index 00000000..e2619d34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/extern/ipc.thoughts @@ -0,0 +1,83 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2 ), +1024 is the maximum opened file deskriptors, +minus 3 (stdin/stdout/stderr) already opened, divided +by two, because two fds needed per client. + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt, + - poweroff, + - update itself (hot-reboot) + - and to start a rescue mode (see using.rescue). + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + CONT: update + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.1/doc/extern/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.1/doc/extern/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/extern/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.1/doc/extern/linux.kernel.eats.arguments b/software/cinit/browse_source/cinit-0.1/doc/extern/linux.kernel.eats.arguments new file mode 100644 index 00000000..dbaf57d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/extern/linux.kernel.eats.arguments @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +Linux, the kernel, eats arguments +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +If you specify + + variable=value + +to the Linux kernel, the argument will NOT be passed to cinit. + +Here's the relevant code block from init/main.c of the Linux kernel: + +------------------------------------------------------------------------------- + +From init(void * unused) the function run_init_process(char *init_filename) +is called, which passes argv_init (char * argv_init[MAX_INIT_ARGS+2]) to init. + +First init_setup(char *str) resets all elements of the argv_init to NULL. + +The function unknown_bootoption(char *param, char *val) fills the +argv_init array, but only with parameters, which have no value +(val). + +The function parse_args calls unknown_bootoption with the unknown options. + +------------------------------------------------------------------------------- + +This way the profile support in all cinit versions below cinit-0.1 will +only work if you change conf/profile, because "cprofile=value" will +not be given to cinit, because it's not treated as a command line option. + +The original value "cprofile=" is replaced by "cprofile:" as of cinit-0.1. diff --git a/software/cinit/browse_source/cinit-0.1/doc/extern/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.1/doc/extern/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/extern/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.1/doc/fun/testing01 b/software/cinit/browse_source/cinit-0.1/doc/fun/testing01 new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/fun/testing01 @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.1/doc/intern/README b/software/cinit/browse_source/cinit-0.1/doc/intern/README new file mode 100644 index 00000000..af6f9e9d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/intern/README @@ -0,0 +1,2 @@ +doc/intern/ + The documentation in this directory describes cinit internals. diff --git a/software/cinit/browse_source/cinit-0.1/doc/intern/cinit.commands b/software/cinit/browse_source/cinit-0.1/doc/intern/cinit.commands new file mode 100644 index 00000000..d34d13bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/intern/cinit.commands @@ -0,0 +1,73 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (using SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. +CMD_UPDATE: Update cinit, hot-reboot the system. diff --git a/software/cinit/browse_source/cinit-0.1/doc/intern/how_it_works_internally b/software/cinit/browse_source/cinit-0.1/doc/intern/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/intern/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.1/doc/intern/socket.poll_vs_o_async b/software/cinit/browse_source/cinit-0.1/doc/intern/socket.poll_vs_o_async new file mode 100644 index 00000000..477f2bff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/intern/socket.poll_vs_o_async @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------------- +Socket: poll(2) vs. O_ASYNC, +Nico Schottelius 2005-06-22 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +0. General problem +1. O_ASYNC +2. poll(2) + + +0. General problem + +cinit has to react, as soon as there's data on the socket. + +1. O_ASYNC + +When you open a socket with O_ASYNC (or specify it with fcntl(2)) under +Linux, your process recieves the SIGIO signal from the kernel, as soon +as data is available. + +The problem is the handling of signals seems not to be serialised: + +The function, which is called on the SIGIO signal (called sigio() here) +calls other functions. Those functions way recieve SIGIO while working, +so the first data stream is not yet finished, though the next +stream is beeing read. + +This gives very nice race-conditions, which are very nice to debug. + +2. poll(2) + +poll(2) is a standard Unix-call (XPG4-UNIX), which waits a specific +timeout (or infinite time if you specify a value less that zero) for +the socket (or the fd in general) to be in a state where +data is available to read (in fact poll can do much more, but we are +not interested only in POLLIN and POLLPRI). + +While poll(2) seems to be a very bit slower than sigio it works reliable. + diff --git a/software/cinit/browse_source/cinit-0.1/doc/merging.other.initsystems b/software/cinit/browse_source/cinit-0.1/doc/merging.other.initsystems new file mode 100644 index 00000000..c324a935 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/merging.other.initsystems @@ -0,0 +1,64 @@ +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not mean that he does not accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated! + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.1/doc/meta.dependencies b/software/cinit/browse_source/cinit-0.1/doc/meta.dependencies new file mode 100644 index 00000000..fe743c48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/meta.dependencies @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, one would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation (see profile.support). + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +why it does not even need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ + +This way you have the indirection (meta-dependencies) in the filesystem +and cinit does not need any additional code. diff --git a/software/cinit/browse_source/cinit-0.1/doc/optimising.cinit b/software/cinit/browse_source/cinit-0.1/doc/optimising.cinit new file mode 100644 index 00000000..4f4b5c02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/optimising.cinit @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options +2. striping + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + +The current standard for cinit is: (see CFLAGS in the Makefile). + + +2. striping + +With strip(1) you can remove specific sections of object files. +You have to find out, which ones you can remove safely +(for instance with objdump(1)). + +The current standard for cinit is: (see STRIP in the Makefile) diff --git a/software/cinit/browse_source/cinit-0.1/doc/porting.to.other.os b/software/cinit/browse_source/cinit-0.1/doc/porting.to.other.os new file mode 100644 index 00000000..65fdc07b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will perhaps become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.1/doc/profile.support b/software/cinit/browse_source/cinit-0.1/doc/profile.support new file mode 100644 index 00000000..7bc607b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/profile.support @@ -0,0 +1,72 @@ +-------------------------------------------------------------------------------- +Profiles, +Nico Schottelius, 2005-06-04 +-------------------------------------------------------------------------------- + +1. What are profiles? +2. How to use profiles? +3. How to configure profiles? +4. Some examples + + +1. What are profiles? + +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +2. How to use profiles? + +Simply pass 'cprofile:PROFILENAME' (like cprofile:home) to cinit. +How to pass argumenents to cinit? Under Linux the init-system +gets the kernel arguments (see linux.kernel.eats.arguments) as arguments. +So you can use + + kernel /usr/src/linux/vmlinuz cprofile:work (grub1,grub2) + append="cprofile:work" (LILO,yaboot) + +Other Unices should work like Linux, please consult your local +documentation. + + +3. How to configure profiles? + +It's very simple: Normally cinit would call /etc/cinit/init as +primary service and solve all dependencies. If you pass +cprofile=wireless to it, cinit will start /etc/cinit/wireless as +primary service instead. + + [Note: /etc/cinit/yourprofile is the service that will be started. + You need/should/must NOT create /etc/cinit/yourprofile/init!] + +So the only thing you have to do is to create a service directory +below /etc/cinit with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/init; tar c . | (mkdir ../yp; cd ../yp; tar x ) + +That's it! + + +4. Some examples + +Here are some examples we found in #cLinux: + + profile name what it does + + musibox only start mp3blaster + terminal start only minicom, which opens the serial line + net-terminal start a respawning shell script, which starts + ssh to the selected host + video start X+mplayer, which plays the dvd/cdrom + wireless What to start when beeing in an unknown wlan + home/work selected services (nfs, ip, ...) for home or work + diff --git a/software/cinit/browse_source/cinit-0.1/doc/removing.zombies b/software/cinit/browse_source/cinit-0.1/doc/removing.zombies new file mode 100644 index 00000000..9527e652 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + cinit in general will keep the behaviour of reaping the vestiges, + which broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.1/doc/replacing.init b/software/cinit/browse_source/cinit-0.1/doc/replacing.init new file mode 100644 index 00000000..2858c56c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/replacing.init @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and link, move or copy cinit to init (ln -s /sbin/cinit /sbin/init), reboot. + +That's everything in general, the biggest part will be to configuring cinit. + +See also doc/merging.other.initsystems. diff --git a/software/cinit/browse_source/cinit-0.1/doc/security b/software/cinit/browse_source/cinit-0.1/doc/security new file mode 100644 index 00000000..f1dac591 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/security @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation, which will not accept connect() +by others than root. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console then! + +For extra parnoid settings you can do the following: + + ei # chmod 700 /etc/cinit/tmp/coala + ei # chown root:root /etc/cinit/tmp/coala diff --git a/software/cinit/browse_source/cinit-0.1/doc/testing.cinit.in.uml b/software/cinit/browse_source/cinit-0.1/doc/testing.cinit.in.uml new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/testing.cinit.in.uml @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.1/doc/thoughts.closed b/software/cinit/browse_source/cinit-0.1/doc/thoughts.closed new file mode 100644 index 00000000..91a8e080 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/thoughts.closed @@ -0,0 +1,52 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c + +7. Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. As this is not needed + currently, it's not implemented. diff --git a/software/cinit/browse_source/cinit-0.1/doc/updating.cinit b/software/cinit/browse_source/cinit-0.1/doc/updating.cinit new file mode 100644 index 00000000..fc0d3fef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/updating.cinit @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. call cservice -u thilo (if you have cinit-0.1 or later) + + For older versions: + + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything running and restart as if you would just + have booted. diff --git a/software/cinit/browse_source/cinit-0.1/doc/using.rescue b/software/cinit/browse_source/cinit-0.1/doc/using.rescue new file mode 100644 index 00000000..f58ff512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/doc/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user"). + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.1/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.1/generic/mini_printf.c new file mode 100644 index 00000000..669d663a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/generic/mini_printf.c @@ -0,0 +1,20 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * print string + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + p = str; + while ( *p != '\0') { + write(fd,p,1); + ++p; + } + + write(fd,"\n",1); /* FIXME: only when console */ +} diff --git a/software/cinit/browse_source/cinit-0.1/generic/set_signals.c b/software/cinit/browse_source/cinit-0.1/generic/set_signals.c new file mode 100644 index 00000000..cc8bb12d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/generic/set_signals.c @@ -0,0 +1,49 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +#include +#include +#include "cinit.h" + +void set_signals(int action) +{ + struct sigaction sa; + + if(action == ACT_SERV) { + sa.sa_handler=SIG_IGN; + } else { + sa.sa_handler=SIG_DFL; + } + sigaction(SIGINT,&sa,NULL); /* ignore ctr+c and ctr+alt+del */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + sigaction(SIGQUIT,&sa,NULL); /* QUIT... */ + sigaction(SIGTTIN,&sa,NULL); + sigaction(SIGTTOU,&sa,NULL); + sigaction(SIGSTOP,&sa,NULL); + + /* cleaning dead processes */ + if(action == ACT_SERV) { + sa.sa_handler=sig_child; + } + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + /* sigio is called to act on the socket */ + if(action == ACT_SERV) { + sa.sa_handler=sigio; + } + sigaction(SIGIO,&sa,NULL); + + /* signal handlers to do special things with: reboot */ + if(action == ACT_SERV) { + sa.sa_handler=sig_reboot; + } + sigaction(SIGUSR1,&sa,NULL); /* halt */ + sigaction(SIGUSR2,&sa,NULL); /* Rescue */ + sigaction(SIGTERM,&sa,NULL); /* poweroff */ + sigaction(SIGHUP,&sa,NULL); /* reboot */ + sigaction(SIGCONT,&sa,NULL); /* update */ + +} diff --git a/software/cinit/browse_source/cinit-0.1/generic/set_signals.c01 b/software/cinit/browse_source/cinit-0.1/generic/set_signals.c01 new file mode 100644 index 00000000..ff35a78a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/generic/set_signals.c01 @@ -0,0 +1,40 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +#include +#include +#include "cinit.h" + +void set_signals(int action) +{ + struct sigaction sa; + + D_PRINTF("Signale setzen"); + + if(action == ACT_SERV) { + sa.sa_handler=SIG_IGN; + } else { + sa.sa_handler=SIG_DFL; + } + sigaction(SIGINT,&sa,NULL); /* ignore ctr+c and ctr+alt+del */ + + /* what todo when a child exited, cleaning dead processes */ + if(action == ACT_SERV) { + sa.sa_handler=sig_child; +// SA_NOCLDSTOP + } + sigaction(SIGCHLD,&sa,NULL); + + /* signal handlers to do special things with: reboot */ + if(action == ACT_SERV) { + sa.sa_handler=sig_reboot; + } + sigaction(SIGUSR1,&sa,NULL); /* halt */ + sigaction(SIGUSR2,&sa,NULL); /* rescue */ + sigaction(SIGTERM,&sa,NULL); /* poweroff */ + sigaction(SIGHUP,&sa,NULL); /* reboot */ + +} diff --git a/software/cinit/browse_source/cinit-0.1/sbin/cservice b/software/cinit/browse_source/cinit-0.1/sbin/cservice new file mode 100644 index 00000000..ce3090c7 Binary files /dev/null and b/software/cinit/browse_source/cinit-0.1/sbin/cservice differ diff --git a/software/cinit/browse_source/cinit-0.1/serv/cinit.c b/software/cinit/browse_source/cinit-0.1/serv/cinit.c new file mode 100644 index 00000000..234150c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/serv/cinit.c @@ -0,0 +1,145 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +/* mount */ +#include + +#include +#include + +#include /* poll */ + +#include "cinit.h" + +/* global variables */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * the main procedure + */ + +int main(int argc, char **argv) +{ + struct sockaddr_un addr; + struct pollfd plist; + char *initdir; + + list = NULL; /* list of services is empty currently */ + initdir = CINIT_INIT; /* default init dir */ + + set_signals(ACT_SERV); /* set signal handlers */ + + /* tell the world we are there */ + LOG(MSG_CINIT); + + /* read args, profile support */ + while(argc > 1) { +#ifdef DEBUG + printf("argc=%d\n, argv=%s",argc,argv[argc-1]); +#endif + D_PRINTF(argv[argc-1]); + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + D_PRINTF(initdir); + + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if ( fcntl(sock,F_SETFL,O_ASYNC|O_NONBLOCK) == -1) { + perror(MSG_FCNTL); + panic(); + } + + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + /* look if a packet reached us */ + D_PRINTF("sigio starten"); + sigio(sock); + } + } + } + D_PRINTF("hier sollte man nicht sein"); +} diff --git a/software/cinit/browse_source/cinit-0.1/serv/list.c b/software/cinit/browse_source/cinit-0.1/serv/list.c new file mode 100644 index 00000000..50f863a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/serv/list.c @@ -0,0 +1,106 @@ +/* (c) 2005 by Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * list handling: the processes cinit will execute/executed + * part of cinit + * changed some formatting, Nico Schottelius + */ + +#include +#include +#include "cinit.h" + + +int list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc( sizeof(struct listitem) ); + + if( tmp == NULL ) { + return 0; + } + + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members, add this one */ + tmp->after = list; /* after the new element comes the begin */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first element has us as previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if( list == NULL ) { /* think positive */ + return NULL; + } else { + tmp = list; + } + + do { + if( !strcmp(path, tmp->abs_path) ) { + return tmp; + } + tmp = tmp->before; + } while(tmp != list); + + return NULL; +} + +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if( tmp == NULL ) { + return 0; + } + + tmp->after->before = tmp->before; + tmp->before->after = tmp->after; + free(tmp->abs_path); + free(tmp); + return 1; +} + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + +// D_PRINTF(path); + + tmp = list_search(path); + if( tmp == NULL ) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.1/serv/panic.c b/software/cinit/browse_source/cinit-0.1/serv/panic.c new file mode 100644 index 00000000..a130945f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/serv/panic.c @@ -0,0 +1,20 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * panic: if cinit fails, start sulogin + * part of cinit + */ + +#include "cinit.h" +#include + +void panic(void) +{ + char *nargv[2]; + + nargv[0] = SULOGIN; + nargv[1] = NULL; + + /* FIXME: perhaps fork before? And return to standard after? */ + execv(SULOGIN,nargv); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.1/serv/run_init_svc.c b/software/cinit/browse_source/cinit-0.1/serv/run_init_svc.c new file mode 100644 index 00000000..873bb9bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/serv/run_init_svc.c @@ -0,0 +1,44 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run initial service + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + D_PRINTF(cinit_svc); + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + close(sock); + set_signals(ACT_CLIENT); + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ?*/ + if ( run_svc(cinit_svc) ) + _exit(0); + else + _exit(1); + } + /* parent exits, we don't care about our children */ + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.1/serv/sig_child.c b/software/cinit/browse_source/cinit-0.1/serv/sig_child.c new file mode 100644 index 00000000..e941a1ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/serv/sig_child.c @@ -0,0 +1,23 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * We are called, when a child dies. Remove it. + */ + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_child + * collect the children + */ + +void sig_child(int signal) +{ + do { + D_PRINTF("kind entfernen"); + signal = waitpid(-1,&signal,WNOHANG); + } while( signal > 0); +} diff --git a/software/cinit/browse_source/cinit-0.1/serv/sig_reboot.c b/software/cinit/browse_source/cinit-0.1/serv/sig_reboot.c new file mode 100644 index 00000000..8a2d0c0b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/serv/sig_reboot.c @@ -0,0 +1,158 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * We are called by signal to reboot + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void sig_reboot(int signal) +{ + struct listitem *tmp; + struct timespec ts; + char **cmd; + int i; + + /* Let's disappear, we don't care about clients anymore */ + close(sock); + /********* first SIGTERM the respawning processes **********/ + tmp = list->before; + do { + /* kill service watcher, which will kill processes itself */ + if( tmp->status == ST_RESPAWN) { + kill(tmp->pid,SIGTERM); + } + tmp = tmp->before; + } while( tmp != list ); + + /********* now wait for the respawn watchers to return *****/ + tmp = list->before; + do { + if( tmp->status == ST_RESPAWN) { + /* wait until the respawn watcher terminated */ + waitpid(tmp->pid,&i,0); + } + + /* execute shutdown service FIXME: parallelize that?*/ + exec_svc(tmp->abs_path,0); + tmp = tmp->before; + } while( tmp != list ); + + /* now: all services are down, let's kill all other processes */ + if( kill(-1,SIGTERM) == -1) { + perror(MSG_TERMKILL); + } + + ts.tv_sec = SLEEP_KILL; /* defined in conf/sleep_kill */ + nanosleep(&ts,NULL); + + if( kill(-1,SIGKILL) == -1) { + perror(MSG_KILLBILL); + } + D_PRINTF("SIGKILL GESENDET"); + + /* release tmp */ + if(umount(CINIT_TMNT) == -1) { + perror(CINIT_TMNT); + } + + +/* THIS IS FUCKING UNCLEAN AND SHOULD BE CLEANED UP VERY MUCH!!! */ +#define CMD_CNT 4 +#define SWAP_OFF_CMD "/sbin/swapoff" +#define SWAP_OFF_ARG1 "-a" + +#define UMOUNT_CMD "/bin/umount" +#define UMOUNT_ARG1 "-arfd" + +#define MOUNT_CMD "/bin/mount" +#define MOUNT_ARG1 "-o" +#define MOUNT_ARG2 "remount,ro" +#define MOUNT_ARG3 "/" + +#define RESCUE_CMD "/bin/sh" + + /* now: we are completley alone. umount everything, go to bed */ + cmd = (char **) malloc( (CMD_CNT+1) * ( sizeof (char*) ) ); + if(cmd) { + /* /sbin/swapoff -a */ + cmd[0] = SWAP_OFF_CMD; + cmd[1] = SWAP_OFF_ARG1; + cmd[2] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + /* /bin/umount -a */ + cmd[0] = UMOUNT_CMD; + cmd[1] = UMOUNT_ARG1; + cmd[2] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + + /* /bin/mount -o remount,ro / */ + cmd[0] = MOUNT_CMD; + cmd[1] = MOUNT_ARG1; + cmd[2] = MOUNT_ARG2; + cmd[3] = MOUNT_ARG3; + cmd[4] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + } else { + _exit(1); + } + + switch(signal) { + case SIGTERM: /* power off */ + D_PRINTF("ausmachen"); + reboot(RB_POWER_OFF); + break; + case SIGHUP: /* reboot */ + D_PRINTF("reboot"); + reboot(RB_AUTOBOOT); + break; + case SIGUSR1: /* halt */ + D_PRINTF("halten"); + reboot(RB_HALT_SYSTEM); + break; + case SIGUSR2: /* rescue - destroy ourself */ + D_PRINTF("rescue"); + cmd[0] = RESCUE_CMD; + cmd[1] = NULL; + execv(cmd[0],cmd); + break; + case SIGCONT: /* update */ + D_PRINTF(CINIT_BIN); + cmd[0] = CINIT_BIN; + cmd[1] = NULL; + execv(cmd[0],cmd); + break; + } + + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.1/serv/sigio.c b/software/cinit/browse_source/cinit-0.1/serv/sigio.c new file mode 100644 index 00000000..b8237f48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/serv/sigio.c @@ -0,0 +1,151 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int socket) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + while ( + (nsock = accept(socket,(struct sockaddr *) NULL, (socklen_t *) NULL) ) + != -1) { + + D_PRINTF("sigio..."); + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + +#ifdef DEBUG + printf("CMD: %d\n",buf[0]); +#endif + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + D_PRINTF(buf); + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = 0; + } else { + status = ST_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP RESPAWNING *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; + D_PRINTF(buf); + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + D_PRINTF("respawner ausschalten"); + kill(list_tmp->pid,SIGTERM); + +#ifdef DEBUG + printf("pid=%d\n",list_tmp->pid); +#endif + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + + D_PRINTF("liste modifizieren"); + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + D_PRINTF("mod-aus fail"); + status = ST_FAIL; + } else { /* return status */ + D_PRINTF("kein respawn"); + status = list_tmp->status; + } + } + } else { /* no service there */ + status = ST_OFF; + } + do_result(nsock,&status); + break; + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; /* terminate buf */ + + D_PRINTF(buf); + + if(!list_modify(buf,status,pid)) { + LOG(MSG_ERR_MODIFY); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + case CMD_UPDATE: + sig_reboot(SIGCONT); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } + + if( errno != EAGAIN ) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } + + D_PRINTF("ENDE"); +} diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.1/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.1/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.1/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.1/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.1/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.1/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.1/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.1/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:41:08 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:41:08 new file mode 100644 index 00000000..d29de765 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:41:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586640 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:46:09 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:46:09 new file mode 100644 index 00000000..7ecb58be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-15:46:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586368 Apr 30 15:46 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-16:50:05 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-16:50:05 new file mode 100644 index 00000000..d87323e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-16:50:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587818 Apr 30 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-17:03:00 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-17:03:00 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:39:08 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:39:08 new file mode 100644 index 00000000..0c2bb0af --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:39:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586194 May 6 20:39 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:54:00 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:54:00 new file mode 100644 index 00000000..fe51f37f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:54:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590108 May 6 22:54 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:55:07 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:55:07 new file mode 100644 index 00000000..4d2854b5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:55:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590108 May 6 22:55 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-23:00:07 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-23:00:07 new file mode 100644 index 00000000..c0db4814 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-23:00:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 23:00 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:31:01 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:31:01 new file mode 100644 index 00000000..4ad1fccf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:31:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:31 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:39:02 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:39:02 new file mode 100644 index 00000000..16613354 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:39:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:43:08 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:43:08 new file mode 100644 index 00000000..29e5ab44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:43:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:43 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:54:04 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:54:04 new file mode 100644 index 00000000..474189e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:54:04 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:54 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:18:00 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:18:00 new file mode 100644 index 00000000..960ca358 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:18:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:18 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:14:00 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:14:00 new file mode 100644 index 00000000..7de2bc3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:14:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:14 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:43:08 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:43:08 new file mode 100644 index 00000000..11a18f12 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:43:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597245 May 7 14:43 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:48:01 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:48:01 new file mode 100644 index 00000000..28b127b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:48:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597405 May 7 14:48 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:55:05 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:55:05 new file mode 100644 index 00000000..5d0fa0e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:55:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:55 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:01:01 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:01:01 new file mode 100644 index 00000000..7c8b202b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:01:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 15:01 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:27:00 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:27:00 new file mode 100644 index 00000000..a2d19633 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:27:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:27 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:20:02 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:20:02 new file mode 100644 index 00000000..23608225 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:20:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602184 May 7 16:20 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:31:09 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:31:09 new file mode 100644 index 00000000..40f890cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:31:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:31 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-17:08:09 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-17:08:09 new file mode 100644 index 00000000..22b48319 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-17:08:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-08-10:44:00 b/software/cinit/browse_source/cinit-0.1/size/2005-05-08-10:44:00 new file mode 100644 index 00000000..4dad0f2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-08-10:44:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 64935 May 8 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.1/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-08-12:42:08 b/software/cinit/browse_source/cinit-0.1/size/2005-05-08-12:42:08 new file mode 100644 index 00000000..a356e57e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-08-12:42:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 23195 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.1/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.1/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.1/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.1/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.1/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.1/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.1/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-19:25:05 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-19:25:05 new file mode 100644 index 00000000..0b5026c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-19:25:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:30:03 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:30:03 new file mode 100644 index 00000000..7377ee59 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:30:03 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-21:54:00 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-21:54:00 new file mode 100644 index 00000000..41ed8e4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-21:54:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604637 May 10 21:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-22:07:06 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-22:07:06 new file mode 100644 index 00000000..9579bf3d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-22:07:06 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95212 May 10 22:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-11-00:14:02 b/software/cinit/browse_source/cinit-0.1/size/2005-05-11-00:14:02 new file mode 100644 index 00000000..86483ada --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-11-00:14:02 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.1/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.1/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.1/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.1/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.1/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.1/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.1/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.1/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-15-22:32:07 b/software/cinit/browse_source/cinit-0.1/size/2005-05-15-22:32:07 new file mode 100644 index 00000000..59557c4b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-15-22:32:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 15 22:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-15-23:52:06 b/software/cinit/browse_source/cinit-0.1/size/2005-05-15-23:52:06 new file mode 100644 index 00000000..757e6dc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-15-23:52:06 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579305 May 15 23:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-15-23:56:00 b/software/cinit/browse_source/cinit-0.1/size/2005-05-15-23:56:00 new file mode 100644 index 00000000..24c85104 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-15-23:56:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605145 May 15 23:56 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:16:09 b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:16:09 new file mode 100644 index 00000000..27254aa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:16:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605205 May 16 00:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-16-09:58:08 b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-09:58:08 new file mode 100644 index 00000000..90a5b698 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-09:58:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605567 May 16 09:58 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:09:00 b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:09:00 new file mode 100644 index 00000000..4c34f810 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:09:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605583 May 16 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:13:07 b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:13:07 new file mode 100644 index 00000000..b6a851e6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:13:07 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605619 May 16 10:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:23:05 b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:23:05 new file mode 100644 index 00000000..2c4fc649 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:23:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.1/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.1/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-14:56:01 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-14:56:01 new file mode 100644 index 00000000..c5e08e25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-14:56:01 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95794 May 21 14:56 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:35:00 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:35:00 new file mode 100644 index 00000000..0f2d5463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:35:00 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:35 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.1/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.1/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.1/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.1/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.1/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.1/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.1/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.1/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.1/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.1/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.1/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.1/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.1/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-08-10:23:04 b/software/cinit/browse_source/cinit-0.1/size/2005-06-08-10:23:04 new file mode 100644 index 00000000..0858c419 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-08-10:23:04 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53724 Jun 8 10:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-09-08:44:09 b/software/cinit/browse_source/cinit-0.1/size/2005-06-09-08:44:09 new file mode 100644 index 00000000..b96788fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-09-08:44:09 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53524 Jun 9 08:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.1/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-09-10:00:08 b/software/cinit/browse_source/cinit-0.1/size/2005-06-09-10:00:08 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.1/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.1/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.1/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.1/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-09-11:47:04 b/software/cinit/browse_source/cinit-0.1/size/2005-06-09-11:47:04 new file mode 100644 index 00000000..531df2bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-09-11:47:04 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.1/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-10-18:14:05 b/software/cinit/browse_source/cinit-0.1/size/2005-06-10-18:14:05 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-10-18:14:05 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.1/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.1/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.1/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.1/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.1/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.1/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-12-18:09:08 b/software/cinit/browse_source/cinit-0.1/size/2005-06-12-18:09:08 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-12-18:09:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.1/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-13-08:13:08 b/software/cinit/browse_source/cinit-0.1/size/2005-06-13-08:13:08 new file mode 100644 index 00000000..eab7486c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-13-08:13:08 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 13 08:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.1/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.1/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.1/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.1/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.1/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.1/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.1/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-14-10:01:02 b/software/cinit/browse_source/cinit-0.1/size/2005-06-14-10:01:02 new file mode 100644 index 00000000..cd4e9dad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-14-10:01:02 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52380 Jun 14 10:01 cinit +-rwx------ 1 nico users 47356 Jun 14 10:01 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.1/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.1/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.1/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-15-06:46:05 b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-06:46:05 new file mode 100644 index 00000000..e0e1051d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-06:46:05 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:46 cinit +-rwx------ 1 nico users 47324 Jun 15 06:46 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-16-12:18:07 b/software/cinit/browse_source/cinit-0.1/size/2005-06-16-12:18:07 new file mode 100644 index 00000000..43633af1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-16-12:18:07 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 16 12:18 cinit +-rwx------ 1 nico users 50860 Jun 16 12:18 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.1/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.1/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-17-19:03:48 b/software/cinit/browse_source/cinit-0.1/size/2005-06-17-19:03:48 new file mode 100644 index 00000000..e379e004 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-17-19:03:48 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 17 19:03 cinit +-rwx------ 1 nico users 46760 Jun 17 19:03 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-20-12:16:40 b/software/cinit/browse_source/cinit-0.1/size/2005-06-20-12:16:40 new file mode 100644 index 00000000..1f0c3325 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-20-12:16:40 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 20 12:16 cinit +-rwx------ 1 nico users 50860 Jun 20 12:16 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-20-15:16:31 b/software/cinit/browse_source/cinit-0.1/size/2005-06-20-15:16:31 new file mode 100644 index 00000000..75dc3e7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-20-15:16:31 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 15:16 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-20-16:29:28 b/software/cinit/browse_source/cinit-0.1/size/2005-06-20-16:29:28 new file mode 100644 index 00000000..1294bde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-20-16:29:28 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-20-16:29:50 b/software/cinit/browse_source/cinit-0.1/size/2005-06-20-16:29:50 new file mode 100644 index 00000000..69fe7490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-20-16:29:50 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 16:29 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-21-11:53:35 b/software/cinit/browse_source/cinit-0.1/size/2005-06-21-11:53:35 new file mode 100644 index 00000000..4a1e7b6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-21-11:53:35 @@ -0,0 +1,3 @@ +total 192 +-rwx------ 1 nico users 102039 Jun 21 11:53 cinit +-rwx------ 1 nico users 87871 Jun 21 11:53 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-22-07:33:11 b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-07:33:11 new file mode 100644 index 00000000..e6c8ff14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-07:33:11 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47544 Jun 22 07:33 cinit +-rwx------ 1 nico users 46760 Jun 22 07:33 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-22-07:57:13 b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-07:57:13 new file mode 100644 index 00000000..17161d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-07:57:13 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47536 Jun 22 07:57 cinit +-rwx------ 1 nico users 46760 Jun 22 07:57 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-22-08:08:40 b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-08:08:40 new file mode 100644 index 00000000..770083f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-08:08:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47424 Jun 22 08:08 cinit +-rwx------ 1 nico users 46760 Jun 22 08:08 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-22-08:30:42 b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-08:30:42 new file mode 100644 index 00000000..aa95fb3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-08:30:42 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47360 Jun 22 08:30 cinit +-rwx------ 1 nico users 46760 Jun 22 08:30 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-22-09:19:42 b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-09:19:42 new file mode 100644 index 00000000..70c261bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-09:19:42 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 09:19 cinit +-rwx------ 1 nico users 50860 Jun 22 09:19 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-22-10:35:02 b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-10:35:02 new file mode 100644 index 00000000..41fcadb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-10:35:02 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47584 Jun 22 10:35 cinit +-rwx------ 1 nico users 46760 Jun 22 10:35 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-22-10:43:24 b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-10:43:24 new file mode 100644 index 00000000..b8bc4076 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-10:43:24 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 10:43 cinit +-rwx------ 1 nico users 50860 Jun 22 10:43 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-22-12:42:57 b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-12:42:57 new file mode 100644 index 00000000..c8119859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-12:42:57 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 22 12:42 cinit +-rwx------ 1 nico users 46760 Jun 22 12:42 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-22-13:52:41 b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-13:52:41 new file mode 100644 index 00000000..793b92fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-13:52:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:52 cinit +-rwx------ 1 nico users 46760 Jun 22 13:52 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-22-13:59:40 b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-13:59:40 new file mode 100644 index 00000000..d114c557 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-13:59:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:59 cinit +-rwx------ 1 nico users 46760 Jun 22 13:59 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-22-14:19:41 b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-14:19:41 new file mode 100644 index 00000000..8d56882f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-14:19:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47640 Jun 22 14:19 cinit +-rwx------ 1 nico users 46760 Jun 22 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-22-14:37:18 b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-14:37:18 new file mode 100644 index 00000000..b7c3e4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-22-14:37:18 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 22 14:37 cinit +-rwx------ 1 nico users 46760 Jun 22 14:37 cservice diff --git a/software/cinit/browse_source/cinit-0.1/size/2005-06-23-06:22:23 b/software/cinit/browse_source/cinit-0.1/size/2005-06-23-06:22:23 new file mode 100644 index 00000000..9e38a5e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/size/2005-06-23-06:22:23 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 23 06:22 cinit +-rwx------ 1 nico users 46760 Jun 23 06:22 cservice diff --git a/software/cinit/browse_source/cinit-0.1/util/README b/software/cinit/browse_source/cinit-0.1/util/README new file mode 100644 index 00000000..782cdc8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/util/README @@ -0,0 +1,2 @@ +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.1/util/cservice.c b/software/cinit/browse_source/cinit-0.1/util/cservice.c new file mode 100644 index 00000000..28cfb5c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/util/cservice.c @@ -0,0 +1,156 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cservice: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +/* mount */ +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define CSERVICE_BANNER "cservice - control cinit\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncservice -[phearsu] \n" \ + "\t-e\t- (ein,on) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n" \ + "\t-u\t- (update) Hot-Reboot system and update cinit\n" \ + "\n-h, -p, -r, -s and -u need the \"Magic Word\" to do their work: \"thilo\"\n" \ + +/*********************************************************************** + * fuzzy_path: allow other kinds of path specification .. + */ +char *fuzzy_path(char *rpath) +{ + char pathtmp[PATH_MAX]; + char *re = NULL; + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return NULL; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return NULL; + } + + re = malloc( strlen(pathtmp) + 1); + if(re == NULL) return NULL; + + strcpy(re,pathtmp); + + return re; +} + +/*********************************************************************** + * usage: tell the user what's wrong and a help text + */ +void usage(char *stext) +{ + write(1,CSERVICE_BANNER,strlen(CSERVICE_BANNER)); + write(1,stext,strlen(stext)); + write(1,USAGE_TEXT,strlen(USAGE_TEXT)); + _exit(1); +} + + + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 3) usage("Too less arguments!"); + if(argv[1][0] != '-') usage("Wrong arguments"); + if(strlen(argv[1]) != 2) usage("Wrong parameter length"); + + switch(argv[1][1]) { + case 'e': /* ein */ + if(run_svc(argv[2])) { + mini_printf("Successfully started.",1); + } else { + mini_printf("An error occured",1); + } + break; + + case 'a': /* aus */ + if( msg_svc_on_off( fuzzy_path(argv[2]),0 ) ) { + mini_printf("Successfully stoped.",1); + } else { + mini_printf("An error occured",1); + } + break; + + case 'p': /* power off */ + mini_printf("Powering off...",1); + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + mini_printf("Halting...",1); + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + mini_printf("Rebooting...",1); + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + mini_printf("Rescue mode...",1); + msg_reboot(CMD_RESCUE); + break; + + case 'u': /* update */ + mini_printf("Update and hot reboot in progress...",1); + msg_reboot(CMD_UPDATE); + break; + + default: + usage("Unknown parameter"); + break; + } + D_PRINTF("wir beenden uns");; + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.1/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.1/util/msg_reboot.c new file mode 100644 index 00000000..931bfc58 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.1/util/msg_reboot.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + D_PRINTF("aus damit"); + if(!begin_msg(cmd)) return 0; + D_PRINTF("abschliessen"); + close(sock); + D_PRINTF("und programm terminieren"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.2.1/ b/software/cinit/browse_source/cinit-0.2.1/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.2.1/.exclude b/software/cinit/browse_source/cinit-0.2.1/.exclude new file mode 100644 index 00000000..1a2d31e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/.exclude @@ -0,0 +1,2 @@ +tmp +.git diff --git a/software/cinit/browse_source/cinit-0.2.1/.gitignore b/software/cinit/browse_source/cinit-0.2.1/.gitignore new file mode 100644 index 00000000..68048ad3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/.gitignore @@ -0,0 +1,10 @@ +MT +*.o +*.a +ccontrol +cservice +cinit +*0? +config.h +ddoc +tmp diff --git a/software/cinit/browse_source/cinit-0.2.1/CHANGES b/software/cinit/browse_source/cinit-0.2.1/CHANGES new file mode 100644 index 00000000..f42f47a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/CHANGES @@ -0,0 +1,27 @@ +cinit-0.2.1: (Bugfix release) +- Fixed problem in contrib+tools/Makefile when installing +- added many new scripts to convert sys-v-init, which are still early beta + (see bin/cinit.merge.sysvinit-debian-sid) +cinit-0.2: +- Much more verbose error reporting +- You can now also disable 'once ran' services, +- You can restart services with csevice -r +- Online speech in German is available +- C_DELAY support - variable delay for sending SIGKILL after SIGTERM +- First /etc/csys configuration example (wasserstoff) is available +- a Mailing list was created +- Added tools to analyze cinit configuration + (cinit-vis.pl, cinit.graph.text.c) +- Added tools to import and export configuration to XML + (make.cconfig.from.xml.rb,cconfig.graph.xml.rb) +- Removed unecessary signalling +- Added many helper scripts to install services (cinit.install.service*) +- Fixed many small bugs in old helper scripts (cinit.add.getty, cinit.get-conf, ...) +- Added ccontrol, which allows to control cinit +- Added update (-u) via ccontrol +- Stripped cservice, which now "only" controls services +- Removed swapoff from cinit code, should be handled by off +- Much better error and processing descriptions +- A bit more verbose reporting +- Restructured run_svc, now with better error detection +- Removed Kernel panic, when halting system diff --git a/software/cinit/browse_source/cinit-0.2.1/COPYING b/software/cinit/browse_source/cinit-0.2.1/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.2.1/CREDITS b/software/cinit/browse_source/cinit-0.2.1/CREDITS new file mode 100644 index 00000000..b009a48c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/CREDITS @@ -0,0 +1,23 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: 2005-09-25) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete + * providing cinit-vs.pl to visualize the cinit-tree +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) +Sandro Koechli + * testing, testing and testing cinit and cinit documentation +Marcus Wagner + * building and maintaining the Debian package +Peter Portmann + * testing cinit and documentation, writing cinit.graph.text in C, other coding diff --git a/software/cinit/browse_source/cinit-0.2.1/Changelog b/software/cinit/browse_source/cinit-0.2.1/Changelog new file mode 100644 index 00000000..0fbf76f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/Changelog @@ -0,0 +1,10 @@ +Mo Okt 3 00:19:40 CEST 2005 + *Changelog can now be found in git database (cg-log) +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.2.1/Makefile b/software/cinit/browse_source/cinit-0.2.1/Makefile new file mode 100644 index 00000000..a2f373af --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/Makefile @@ -0,0 +1,106 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +include Makefile.include + +# directories and files +DDOC=ddoc +SDIRS=bin client conf comm doc generic serv util +CDIRS=contrib+tools +FILES=Changelog Makefile README TODO cinit.h + +# objects +SERV=serv/sigio.o serv/cinit.o serv/list.o \ + serv/run_init_svc.o serv/panic.o serv/sig_reboot.o \ + serv/sig_child.o + +CLIENT=client/msg_svc_on_off.o client/msg_change_status.o client/run_svc.o \ + client/exec_svc.o client/respawn_svc.o client/run_run_svcs.o \ + client/connect_sock.o client/begin_msg.o client/sig_terminate.o + +COMMUNICATION=comm/do_change_status.o comm/do_result.o comm/do_svc_name.o + +BOTH=generic/set_signals.o generic/mini_printf.o generic/usage.o + +OBJ=$(SERV) $(CLIENT) $(BOTH) $(COMMUNICATION) + +CSVC_OBJ=util/cservice.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +CCO_OBJ=util/ccontrol.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +# DO NOT CHANGE THIS. +SBIN=sbin +CINIT_BIN=$(SBIN)/cinit + +# targets +warn: + @cat doc/.buildwarn + +all:: cinit cservice ccontrol sizecheck docs + +cinit: $(CINIT_BIN) + +docs: $(DDOC) bin/cdoc-man.sh + ./bin/cdoc-man.sh doc/cinit-doc > $(DDOC)/cinit.8 + ./bin/cdoc-man.sh doc/cservice-doc > $(DDOC)/cservice.8 + +$(DDOC): + mkdir $(DDOC) + +$(CSVC_OBJ) $(OBJ): config.h + +$(CINIT_BIN): $(SBIN) $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +$(SBIN): + mkdir $(SBIN) + +sizecheck: cinit cservice + FILE="size/`date +%Y-%m-%d-%T`"; ls -l sbin/ > $$FILE; cat $$FILE + @echo -n "Source size (in KiB): " + @du -s $(SDIRS) | awk '{ sum+=$$1 } END { print sum }' +# @du -s bin client comm conf doc generic serv | awk '{ sum+=$1 } END { print sum }' + +clean:: + rm -f *.o */*.o sbin/* config.h ddoc/* + +config.h: conf/* + ./bin/cinit.mkheader > config.h + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +ccontrol: $(SBIN)/ccontrol + +$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) + $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ + $(STRIP) $@ + +install:: install-dir cinit cservice ccontrol + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + +all install clean:: + @for subdir in $(CDIRS); do \ + echo "Making $@ in $$subdir"; \ + (cd $$subdir && $(MAKE) $(MAKEFLAGS) $@) \ + || exit 1;\ + done; diff --git a/software/cinit/browse_source/cinit-0.2.1/Makefile.include b/software/cinit/browse_source/cinit-0.2.1/Makefile.include new file mode 100644 index 00000000..fe1813c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/Makefile.include @@ -0,0 +1,24 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +OPTIMIZE=-Werror +#DEBUG=-g -DDEBUG +OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! - but not the other programs! +CINIT_LDFLAGS=-static + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. +LD=gcc +STRIP=strip -R .comment -R .note diff --git a/software/cinit/browse_source/cinit-0.2.1/README b/software/cinit/browse_source/cinit-0.2.1/README new file mode 100644 index 00000000..27f07c12 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/README @@ -0,0 +1,110 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.2.1/TODO b/software/cinit/browse_source/cinit-0.2.1/TODO new file mode 100644 index 00000000..a53193ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/TODO @@ -0,0 +1,116 @@ +- change client handler (SIGCHILD!) code +- perhaps use dnotify? +- recheck warm reboot +- fix cservice +- print service name or cinit: before _everything_ WE print + +TESTING: + - does cinit eat zombies? + - is the reporting ok? + - does cservice and ccontrol what's expected? + +# cinit.create.empty.service: can only be started from the bin directory + +- compile cinit static and other tools dynamically per default + +- Fix Switching services off !! +- Remove RUN_RUN_SVCs, move code to run_svc so one can determine which + services failed? + --> sequentieller ablauf! + --> parallel ablauf, struct-array mit namen und ergebnis? + --> for dep in deps/*; do fork(run_svc() ); done + -----> while(any_is_running) { sleep } + -------> array durchsuchen, ergebnis nutzen. + - ueberpruefen von wo aus run_svc() aufgerufen wird + +- Fix SIGCHILD problem: + - exec_svc wants to waitpid() itself, so SIG_CHILD makes problems + - respawn_svc: does that need to act on SIGCHLD if the master process + is still running? + - kill respawn -> sigchild cleans up, we do not get waitpid perhaps? +- remove umount code? +- remove zombies, but keep away from SIGCHILD problems +- remove mount /etc/cinit/tmp code + -> how to replace? +- fix bug in Makefile: linking happens twice +- do not kill respawing service, if off exists +- ccontrol +- manpages +- Error codes when shutting down a service? +- Delay dokumentieren +- no_kill dokumentieren +- ddoc zuendefuehren + +- remove umount, swapoff? +--> to services? + +- on.out, on.err, on.in? + -> reading/writing from/to files + +--> Wenn kein ReSPAWN und der Prozess beendet sich nicht, + dann haengt init! +- implement "no_kill" until cinit-0.2 or 0.3? + +Doku!!! + +-------------------------------------------------------------------------------- +- Source Logic issues + - remove FIXME entries (and what should be fixed, too) + - memset for timespecs? + - move umount, swapoff and remount to off of init? + -> cleanup sig_reboot.c + - run_svc: + o we have many strcat()s, perhaps save length of pathbuf and strncat at + pathtmp[strlen(pathbuf)] ? + - do we really need swapoff? +-------------------------------------------------------------------------------- +- Documentation + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml +-------------------------------------------------------------------------------- +Things I did not do and I don't know whether we have to care about: + +- Porting + - add porting code to other unices? + - like openssh guys do? + +- close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? +- logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? +-------------------------------------------------------------------------------- +[OLD BUGS] +- remove cinit watcher? + -> sig_child -> cycle through list? +- DOKU: what happens when a service does not terminate.... + und er als once drin ist +- MANPAGE! +- execve() fails -> no sleep!! +- multiple zombies sometimes - problemservices + -> zombies of respawn watchers are not caught! + -> sig_chld also therein + -> problematic due to wait for child +-doubled cinit instance + - nur einmal +- free() everything before starting child +- cservice! + - prozess nur einmal -> WARTET! cinit auch! +doku: + cservice einmal starten -> wartet auf ende + cint ersetzt init bei gentoo + an error occuerd-> verbose + multuicall probleme -> busysbox --> GIBT ES NICHT!! + ---> DOKU DAZU! mit links, doppelt links, aus test + ---> erklaeren, dass es unproblematisch ist! + +11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet + werden konnte. +11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0 + zurueckgeworfen. +11:09 < folken23> telmich: oder service allready started. diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cdoc-man.sh b/software/cinit/browse_source/cinit-0.2.1/bin/cdoc-man.sh new file mode 100644 index 00000000..fc1adde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cdoc-man.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Nico Schottelius +# Date: 21-Aug-2005 +# Last Modified: - +# + +set -e + +[ $# -ne 1 ] && exit 23 + +SRC=$1 + +cd "$SRC" + +# +# Title heading +# +echo .TH $(cat "meta/name" "meta/man_section" "meta/date") + +# +# Name +# +echo .SH NAME +echo $(cat meta/name) - $(cat meta/short_description) + +# +# Synopsis +# +echo .SH SYNOPSIS +echo $(cat path) $(cat parameters) + +# +# description +# +echo .SH DESCRIPTION +echo $(cat long_description) + +# +# availability +# +for section in availability examples "see also" author; do + if [ -f "$section" ]; then + echo .SH $section | tr '[a-z]' '[A-Z]' + cat "$section" + fi +done + +# +# files +# +if [ -f files ]; then + echo .SH FILES + cat files | sed 's/\(.*\)/.IP "\1" /' +fi + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.add.dependency new file mode 100644 index 00000000..7bc9cc65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.add.dependency @@ -0,0 +1,51 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or wants Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +# adding 'wishes' for x-mas and requires for 'the mass' and 'tv' +case $DEP in + wishes|wants) DEP=$C_WANTS ;; + needs|requires) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could someone PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEP_DIR="${BASEDIR}/${SVC_A}/${DEP}" + +if [ ! -d "$DEP_DIR" ]; then + echo "$DEP_DIR does not exist, creating..." + mkdir "$DEP_DIR" + if [ $? -ne 0 ]; then + echo "Error occured due to creating directory. Exiting." + exit 1 + fi +fi + +DEST="${DEP_DIR}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.add.getty new file mode 100644 index 00000000..987a5bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.add.getty @@ -0,0 +1,75 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# Date: 2005-05-24 (Last changed: 2005-08-07) +# + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | sort -n | tail -n 1) + +[ ! "$LAST_NUMBER" ] && LAST_NUMBER=0 + +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +#echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + */mgetty) + mygetty=$getty + params="38400 tty${NUMBER}" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +# check input +if [ ! "$mygetty" ]; then + read -p "Getty to use [$mygetty]: " rgetty +fi +if [ ! "$params" ]; then + read -p "Parameters to pass [$params]: " rparams +fi +if [ ! "$params" -o ! "$mygetty" ]; then + echo "Sorry, either getty or parameters are not supplied." + exit 23 +fi + +echo -n "Creating $mygetty ($params) in $DDIR ... " +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DDIR" +ln -s "$mygetty" "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.create.empty.service new file mode 100644 index 00000000..365c4bc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.create.empty.service @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.get-confdir b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.get-confdir new file mode 100644 index 00000000..38d8572d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.get-confdir @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# Date: 2005-05-24 (Last Changed: 2005-08-08) + +# try environment first +if [ "$CINIT_CONF_DIR" ]; then + CONFDIR=$CINIT_CONF_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +else + echo 'Did not find cinit configuration!' >&2 + echo "Please set the variable CINIT_CONF_DIR" >&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.binary new file mode 100644 index 00000000..026395c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.binary @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: - +# + + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice +"$INSTALL_PROG" sbin/ccontrol $DESTDIR/$PREFIX/sbin/ccontrol +"$INSTALL_PROG" bin/cinit.reboot $DESTDIR/$PREFIX/sbin/cinit.reboot +"$INSTALL_PROG" bin/cinit.shutdown $DESTDIR/$PREFIX/sbin/cinit.shutdown +"$INSTALL_PROG" bin/cinit.wait.for.daemon \ + $DESTDIR/$PREFIX/sbin/cinit.wait.for.daemon + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $DESTDIR/$PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi + +# install as /sbin/shutdown, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/shutdown ]; then + ln -s $DESTDIR/$PREFIX/sbin/cinit.shutdown $DESTDIR/$PREFIX/sbin/shutdown +fi + +# install as /sbin/reboot, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/reboot ]; then + ln -s $DESTDIR/$PREFIX/sbin/cinit.reboot $DESTDIR/$PREFIX/sbin/reboot +fi diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.config-dir b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.config-dir new file mode 100644 index 00000000..c9adb70f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.config-dir @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.dir new file mode 100644 index 00000000..5e16f690 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.dir @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/sbin" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.fsck b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.fsck new file mode 100644 index 00000000..4508860a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.fsck @@ -0,0 +1,36 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 3 ]; then + echo "$(basename $0): name device filesystem-type" + exit 1 +fi + +NAME=$1 +DEVICE=$2 +FS_TYPE=$3 + +FSCK=/sbin/fsck.$FS_TYPE + +if [ ! -f "$FSCK" ]; then + echo "Missing $FSCK, abort." + exit 1 +fi + +if [ ! -e "$DEVICE" ]; then + echo "Missing $DEVICE abort." + exit 1 +fi + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME" +ln -sf "$FSCK" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON" +echo "$DEVICE" > "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.miniconf b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.miniconf new file mode 100644 index 00000000..45dcc632 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.miniconf @@ -0,0 +1,103 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: 2005-08-07 +# + + +. $(dirname $0)/cinit.read-conf + +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" +echo "" +echo "This will install a minimal cinit configuration." +echo "This configuration _SHOULD_ be able to run on _MOST_ systems." +echo "Still, it's highly EXPERIEMENTAL, use with CAUTION." +echo "" +echo "Please make sure, that" +echo " - you are using a journaling filesystem (fsck is not used)" +echo " - you have agetty, fgetty or mingetty installed" +echo " - you are runnig Linux 2.6 (sysfs is used)" +echo " - you have udev or static device nodes (you need /dev/tty*)" +echo " - getties will run on tty2-tty7, tty1 is used or logging" +echo "" +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" + +notosoftwarepatents="Please keep an eye on software patents, they are evil." +read -p "Do you really want to continue? [y/N] " notosoftwarepatents + +if [ "$notosoftwarepatents" = "y" -o "$notosoftwarepatents" = "Y" ]; then + echo "Let us try it ..." +else + echo 'Bye bye!' + exit 0 +fi + +set -e + +# Create basic layout +$(dirname $0)/cinit.install.standard-dirs + +# Install services: +# - mount root r/w +# - mount /proc +# - mount /sys +# - install getties on tty2-tty7 +# - add cleanup for /etc/mtab +# - add loopback device +# - init service + echo + +################################### mount ##################################### +# mount root read/write +$(dirname $0)/cinit.install.service.mount-root + +# - mount /proc +$(dirname $0)/cinit.install.service.mount-proc + +# - mount /sys +$(dirname $0)/cinit.install.service.mount-sys + +# mount needs everything below it +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/root" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/proc" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/sys" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" + +################################### getty ##################################### +# mount root read/write +# install getties +begin_getty=2 +end_getty=7 +i=$begin_getty + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" +while [ "$i" -le "$end_getty" ]; do + $(dirname $0)/cinit.add.getty + ln -sf "${DESTDIR}/${CINIT_DIR}/getty/$i" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" + i=$(($i+1)) +done + +################################### mtab ##################################### +# - add cleanup for /etc/mtab +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" +$(dirname $0)/cinit.install.service.cleanup-mtab +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" + +################################### lo ##################################### +# - add loopback device +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" +$(dirname $0)/cinit.install.service.network-lo +ln -sf "${DESTDIR}/${CINIT_DIR}/network/lo" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" + +# - init service + echo +# init depends on mount, getty -> everything from base-layout +$(dirname $0)/cinit.install.service.init +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" + +ln -sf "${DESTDIR}/${CINIT_DIR}/local-services/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/getty/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/network/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.cleanup-mtab b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.cleanup-mtab new file mode 100644 index 00000000..30a8dd48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.cleanup-mtab @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: cleanup mtab +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" +echo '#!/bin/sh' > "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'rm -f /etc/mtab' >>"${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'ln -s /proc/mounts /etc/mtab' \ + >> "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +chmod 0700 "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.hostname.generic b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.hostname.generic new file mode 100644 index 00000000..2d72f50e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.hostname.generic @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service, which sets the hostname +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): hostname" + exit 1 +fi + +HOSTNAME=$1 +HOSTNAME_BIN=${HOSTNAME_BIN:-/bin/hostname} + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/network/hostname" +ln -sf "$HOSTNAME_BIN" "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON" +echo "$HOSTNAME" > "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.init b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.init new file mode 100644 index 00000000..c3a10931 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.init @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +ln -sf /bin/echo "${DESTDIR}/${CINIT_DIR}/${C_INIT}/$C_ON" +echo '*** cinit initial service successfully started ***' \ + > "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.keymap.c_keymap b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.keymap.c_keymap new file mode 100644 index 00000000..235a329e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.keymap.c_keymap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install keymap from environment setting +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +if [ -z "$C_KEYMAP" ]; then + echo "Set C_KEPMAP to the wanted keymap." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" ]; then + echo "Service keymap already exists." + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find loadkeys) + +if [ $? -ne 0 ]; then + echo "Did not find binary loadkeys." + exit 1 +fi + +echo -n "Installing keymap to ${DESTDIR}/${CINIT_DIR}/local-tuning/keymap ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON" + +echo "$C_KEYMAP" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.mount-proc b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.mount-proc new file mode 100644 index 00000000..024847a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.mount-proc @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /proc +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/proc" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/proc/$C_ON" +echo proc > "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo /proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.mount-root b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.mount-root new file mode 100644 index 00000000..a1bd56ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.mount-root @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount root r/w +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# mount root read/write +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/root" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/root/$C_ON" +echo -n > "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo -o >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo remount,rw >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo / >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.mount-sys b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.mount-sys new file mode 100644 index 00000000..8c8191aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.mount-sys @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /sys +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /sys +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/sys" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/sys/$C_ON" +echo sys > "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo sysfs >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo /sys >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.network-lo b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.network-lo new file mode 100644 index 00000000..45bff6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.network-lo @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: loopback device +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/lo" +ln -sf /sbin/ifconfig "${DESTDIR}/${CINIT_DIR}/network/lo/$C_ON" +echo lo > "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo 127.0.0.1/8 >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo up >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.ntpdate.debian b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.ntpdate.debian new file mode 100644 index 00000000..2af2ee4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.ntpdate.debian @@ -0,0 +1,47 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install ntpdate +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +. /etc/default/ntpdate + +if [ -z "$NTPSERVERS" ]; then + echo "No ntp servers found, aborting" + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find ntpdate) + +if [ $? -ne 0 ]; then + echo "Did not find binary ntpdate." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" ]; then + echo "Service ntpdate already exists." + exit 1 +fi + +echo -n "Installing ntpdate to ${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON" + +for server in $NTPSERVERS; do + echo "$server" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON$C_PARAMS" +done + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.udev b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.udev new file mode 100644 index 00000000..d91f01cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.service.udev @@ -0,0 +1,64 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install udev +# Date: 2005-10-15 +# Comment: DO NOT RSYNC TO THE WRONG SIDE! +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BIN_UDEVSEND=$($(dirname $0)/cinit.path-find udevsend) +BIN_UDEVSTART=$($(dirname $0)/cinit.path-find udevstart) +BIN_SYSCTL=$($(dirname $0)/cinit.path-find sysctl) +BIN_MOUNT=$($(dirname $0)/cinit.path-find mount) +SERVICE="local-tuning/udev" + +if [ -z "$BIN_UDEVSEND" -o -z "$BIN_UDEVSTART" -o -z "$BIN_SYSCTL" -o -z "$BIN_MOUNT" ]; then + echo "Did not find a binary." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo "Installing ${SERVICE} to ${DESTDIR}/${CINIT_DIR}/ ..." + +# 0. general udev +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}" +# 1. udevmount +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/mount/udev" +ln -sf "$BIN_MOUNT" "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON" +echo "udev" > "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "-t" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "tmpfs" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "/dev" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" + +# 2. udevstart +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart" +ln -sf "$BIN_UDEVSTART" "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart/$C_ON" + +# dependencies +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/sys +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/udev + +# 3. udev to hotplug +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug" +ln -sf "$BIN_SYSCTL" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug/$C_ON" +echo "$BIN_UDEVSEND" > "${DESTDIR}${CINIT_DIR}/${SERVICE}/hotplug/$C_ON$C_PARAMS" + +$(dirname $0)/cinit.add.dependency ${SERVICE}/hotplug needs mount/proc + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.standard.dirs b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.standard.dirs new file mode 100644 index 00000000..9829b68e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.standard.dirs @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install standard sub-configuration directories +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/getty" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/local-services" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/local-tuning" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/mount" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/network" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.standard.init.deps b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.standard.init.deps new file mode 100644 index 00000000..dcc5cd07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.standard.init.deps @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add standard sub-configuration directories to init wants +# Date: 2005-10-11 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.standard.mounts b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.standard.mounts new file mode 100644 index 00000000..bb1fc0c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.standard.mounts @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create normal mounts +# Date: 2005-10-16 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.swap b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.swap new file mode 100644 index 00000000..84e6c928 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.swap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install swap +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +SERVICE=mount/swap + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BINARY=swapon +BINARY_PATH=$($(dirname $0)/cinit.path-find $BINARY) +if [ $? -ne 0 ]; then + echo "Did not find binary $BINARY." + exit 1 +fi + +HAS_SWAP=$(awk '$3 ~ /swap/ { print $3 }' /etc/fstab) +if [ -z "$HAS_SWAP" ]; then + echo "Seems you have no swap, service not installing" + exit 1 +fi +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo -n "Installing ${SERVICE} to ${DESTDIR}${CINIT_DIR}/${SERVICE} ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON" + +echo "-a" >> "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.merge.sysvinit-debian-sid b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.merge.sysvinit-debian-sid new file mode 100644 index 00000000..3ef0ce03 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.merge.sysvinit-debian-sid @@ -0,0 +1,137 @@ +#!/bin/sh +# Nico Schottelius +# Date: Sun Oct 16 16:57:03 CEST 2005 +# cLinux/cinit +# Automagically convert Debian-Sysv-Iinit +# THIS IS NOT CLEAN. +# THIS IS NOT EVEN INTENTED TO BE CLEAN. +# This is just a small hack, because my girlfriend wants her notebook back. + +echo "***> $(basename $0): converting Debian-Sys-V-Init" + +# read standard values, may be overwritten from outside +. $(dirname $0)/cinit.read-conf + +echo "***> Finding standard config ..." +# variables, which can be set from the outside +ROOT_DEV=${ROOT_DEV:-$(awk '$2 ~ /^\/$/ { print $1 }' /etc/fstab)} +ROOT_FSCK=${ROOT_FSCK:-$(awk '$2 ~ /^\/$/ { print $6 }' /etc/fstab)} +ROOT_FS=${ROOT_FS:-$(awk '$2 ~ /^\/$/ { print $3 }' /etc/fstab)} +RUNLEVEL=${RUNLEVEL:-$(runlevel | awk '{ print $2 }')} + +echo "***> Detecting keymap (this may take some time)" + +if [ -z "$C_KEYMAP" ]; then + echo "Please set the variable C_KEYMAP to your keymap." + echo "It is impossible to detect reliable your keymap in Debian." + exit 1 +fi + + +echo "***> Configuration" +echo "Hostname (\$HOSTNAME): $HOSTNAME" +echo "Keymap (\$C_KEYMAP): $C_KEYMAP" +echo "Root device (\$ROOT_DEV): $ROOT_DEV" +echo "Root fsck (\$ROOT_FSCK): $ROOT_FSCK" +echo "Root FS (\$ROOT_FS): $ROOT_FS" +echo "Runlevel (\$RUNLEVEL): $RUNLEVEL" +echo "Destdir: (\$DESTDIR): $DESTDIR" +echo "Config-Dir: (\$CINIT_DIR): $CINIT_DIR" +read -p "Is this correct (Y/n) " correct + +if [ "$correct" != "y" -a "$correct" != "Y" ]; then + echo "***> Abort." + exit 1 +fi + +if [ -d "${DESTDIR}${CINIT_DIR}" ]; then + echo "ERROR: Configuration already exists at ${DESTDIR}${CINIT_DIR}." + exit 1 +fi + +echo "***> Installing standard structure and dependencies" +set -e +$(dirname $0)/cinit.install.config-dir +$(dirname $0)/cinit.install.standard.dirs +$(dirname $0)/cinit.install.standard.init.deps + +echo "***> Adding mount / r/w" +$(dirname $0)/cinit.install.service.mount-root + +if [ "$ROOT_FSCK" = "1" ]; then + echo "***> Adding fsck for $ROOT_DEV ..." + $(dirname $0)/cinit.install.fsck root "$ROOT_DEV" "$ROOT_FS" + echo "***> Adding dependency" + $(dirname $0)/cinit.add.dependency mount/root needs fsck/root +else + echo "***> Skipping fsck for $ROOT_DEV ..." +fi + +echo "***> Setting up standard mounts ..." +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up hostname: $HOSTNAME" +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up keymap" +$(dirname $0)/cinit.install.service.keymap.c_keymap + +echo "***> Creating getties (tty1-8)" +for i in `seq 1 8`; do + $(dirname $0)/cinit.add.getty + + # each getty needs: + # - root r/w + $(dirname $0)/cinit.add.dependency getty/$i needs mount/root + # - hostname + $(dirname $0)/cinit.add.dependency getty/$i needs network/hostname +done + +echo "***> Enabling getties (tty2-8)" +for i in `seq 2 8`; do + # add getties to getty/ + $(dirname $0)/cinit.add.dependency getty wants getty/$i +done + +# +# Convert services: check /etc/rcS.d and /etc/rcX.d +# +echo "***> Converting services ..." +for script in $(cd /etc/rcS.d/; ls S*; cd /etc/rc${RUNLEVEL}.d/; ls S*); do + echo -n "$script: " + case $script in + # SCRIPTS READY + *ntpdate) + $(dirname $0)/cinit.install.service.ntpdate.debian + $(dirname $0)/cinit.add.dependency local-tuning/ntpdate needs network + ;; + *udev*) + $(dirname $0)/cinit.install.service.udev + + # SCRIPTS NEVER READY + *glibc.sh|*module-init-tools|*modutils|*procps.sh|*hotplug-net|*bootmisc.sh|*nviboot|*screen-cleanup|*x11-common|*sudo|*makedev|*rmnologin) + echo "Ignoring (useless)." + ;; + + # SCRIPTS NOT YET READY + *mountvirtfs|*checkroot.sh|*ifupdown-clean|*checkfs.sh|*mountall.sh|*ifupdown|*hostname*|*mountnfs.sh|*alsa|*rsync|*ssh|*fam|*cron|*gdm) + echo "converting planned later." + ;; + + # SCRIPTS LATER TO DO + *bootlogd|*keymap.sh|*hwclock*|*discover|*pppd-dns|*dns-clean|*networking|*portmap|*console-screen.sh|*urandom|*klogd|*apmd|*dbus-1|*exim4|*pcmcia|*nfs-common|*stop-bootlogd) + echo "unsupported currently (FIXME PLEASE)." + ;; + *sysklogd|*ppp|*inetd|*lpd|*aumix|*atd) + echo "unsupported (choose a better alternative)." + ;; + *initrd-tools.sh|*libdevmapper*|*hotplug) + echo "Ignoring (general or bloated script)." + ;; + *) + echo "Ignoring (unknown)" + ;; + esac +done + +echo "***> Finished." diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.mkheader b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.mkheader new file mode 100644 index 00000000..e1f35d07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.mkheader @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric - no I didn't see an easier way + numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + + [ "$numeric" ] || value="\"$value\"" + + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.path-find b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.path-find new file mode 100644 index 00000000..0d0f362b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.path-find @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: find binary in path +# Date: 2005-10-15 +# + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): searched binary" + exit 1 +fi + +binary=$1 + +# this is NOT really clean, paths can also contain spaces +for pfad in $(echo $PATH | sed 's/:/ /g'); do + fullname=$pfad/$binary + if [ -f "$fullname" ]; then + echo "$fullname" + exit 0 + fi +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.read-conf b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.read-conf new file mode 100644 index 00000000..eb63e69a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.read-conf @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# + +CONFS=$($(dirname $0)/cinit.get-confdir)/* + +set -e + +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + if eval test -z \$$NAME; then + eval $NAME="$(head -n 1 $conf)" + eval export $NAME + fi +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.release b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.release new file mode 100644 index 00000000..dba81edd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.release @@ -0,0 +1,36 @@ +#!/bin/sh +# Nico Schottelius +# Build release tar +# Date: Sat Oct 15 21:38:29 CEST 2005 +# Last Changed: Fr Okt 28 01:24:58 CEST 2005 + + +if [ $# -ne 2 ]; then + echo $(basename $0): source-dir version + exit 1 +fi + +DIR=$1 +VERSION=$2 +OUT_NAME=cinit-${VERSION}.tar.bz2 +D_HOST=creme.schottelius.org +D_DIR=www/org/schottelius/linux/cinit/archives/ +D_SOURCE=www/org/schottelius/linux/cinit/browse_source/ + +if [ ! -d "$DIR" ]; then + echo "$DIR is not a directory" + exit 1 +fi + +( cd "$DIR" && make clean ) || exit 1 + +echo "Creating bzip2 compressed tar" +tar cj -X $DIR/.exclude -f "$OUT_NAME" $DIR +chmod 0644 "$OUT_NAME" +echo "Transfering to $D_HOST" +scp "$OUT_NAME" "$D_HOST:$D_DIR" +echo "Extracting to $D_SOURCE" +ssh "$D_HOST" "tar xfj $D_DIR/$OUT_NAME -C $D_SOURCE" +echo "Correcting paranoid permissions" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type f -exec chmod 0644 {} \\;" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type d -exec chmod 0755 {} \\;" diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.remove.getty new file mode 100644 index 00000000..4950eeed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.remove.getty @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + +if [ ! "$NUMBER" ]; then + echo "There is no getty to remove." + exit 1 +fi + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r "$DDIR" +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.shutdown new file mode 100644 index 00000000..702c8a17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.shutdown @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# TODO: use ccontrol! +# 2005-05-24 (Last changed: 2005-06-18) + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -p|--power-off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " -s|--rescue: Rescue mode" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -p|--power-off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + -s|--rescue) kill -USR2 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.uml.test new file mode 100644 index 00000000..f6ea7fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.1 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG umid=cinit$$ init=/sbin/cinit" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.2.1/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..7f027455 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 (Last Changed: 2005-06-17) + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +PIDFILE=$1; shift +DAEMON=$1; shift + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.2.1/cinit-conf/FRAMEWORK b/software/cinit/browse_source/cinit-0.2.1/cinit-conf/FRAMEWORK new file mode 100644 index 00000000..45421810 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/cinit-conf/FRAMEWORK @@ -0,0 +1,5 @@ +welcome-screen [optional] + | +display_standard_layout + | + ... diff --git a/software/cinit/browse_source/cinit-0.2.1/cinit-conf/bin/cinit-conf.sh b/software/cinit/browse_source/cinit-0.2.1/cinit-conf/bin/cinit-conf.sh new file mode 100644 index 00000000..0e29816e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/cinit-conf/bin/cinit-conf.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# Nico Schottelius +# Date: 2005-08-08 +# cinit-conf + +LIBEXEC=$(dirname $0)/../libexec/cinit-conf/ + +. ${LIBEXEC}/dialog-alias.sh + +dialog --calendar "Test" 0 0 18 12 1982 +dialog --checklist "Checktest" 0 0 0 item1 on item2 off item3 on +dialog --infobox "Infotext" 0 0 +dialog --inputbox "inputbox" 0 0 "vorgegebener text" +dialog --menu "menu" 0 0 0 tag1 item1 tag2 item2 bla blub +dialog --infobox "Infotext" 0 0 +dialog --msgbox "Infotext" 0 0 +dialog --radiolist "Infotext" 0 0 0 tag1 item1 on tag2 item2 off +dialog --textbox ~/.bashrc 0 0 +dialog --yesno "Ja oder nein?" 0 0 + +dialog --gauge "Checktest" 0 0 10 + +#dialog --inputmenu "Infotext" 0 0 0 tag1 item1 tag2 item2 bla blub diff --git a/software/cinit/browse_source/cinit-0.2.1/cinit-conf/libexec/cinit-conf/dialog-alias.sh b/software/cinit/browse_source/cinit-0.2.1/cinit-conf/libexec/cinit-conf/dialog-alias.sh new file mode 100644 index 00000000..89813726 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/cinit-conf/libexec/cinit-conf/dialog-alias.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# the cLinux project +# Created: 2004-12-25 +# Last-Modified: +# choose the correct dialog version + +if [ -z "$DISPLAY" ]; then + alias dialog="dialog --shadow --backtitle \"$full_version\"" +else + alias dialog="Xdialog --backtitle \"$full_version\"" +fi diff --git a/software/cinit/browse_source/cinit-0.2.1/cinit.h b/software/cinit/browse_source/cinit-0.2.1/cinit.h new file mode 100644 index 00000000..5aa5a0e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/cinit.h @@ -0,0 +1,191 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * header of cinit + */ + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* paths */ +#define C_ONARG C_ON C_PARAMS +#define C_OFFARG C_OFF C_PARAMS +#define C_ONENV C_ON C_ENV +#define C_OFFENV C_OFF C_ENV + +#define SLASH "/" +#define MSG_DP ": " + +#define CINIT_INIT CINIT_DIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK +#define CINIT_BIN PREFIX SLASH "sbin" SLASH "cinit" + +/* commands (maximum: 2^8 = 256, because we use a single byte)*/ +enum commands { CMD_START_SVC=1, + CMD_STOP_SVC, + CMD_CHG_STATUS, + CMD_RESCUE, + CMD_HALT, + CMD_REBOOT, + CMD_POWEROFF, + CMD_UPDATE, + CMD_WBOOT }; + +/* status of a service and return codes - errors and success */ +enum svc_status { RT_TMPNOW=1, /* now you are on it - only for clients */ + RT_ERR_COMM, /* communication failed */ + RT_ERR, /* service starting failed */ + RT_SVC_FAILED, /* tried earlier, service failed, won't retry */ + RT_UNSPEC, /* some kind of error, unspecified */ + RT_SUCCESS, /* successfully started: respawning or once */ + RT_NOTEXIST, /* service does not exist */ + + ST_NEED_FAIL, /* failed to start a need for this service */ + ST_FAIL, /* failed to start service */ + ST_OFF, /* service is off */ + + ST_TMP, /* currently working on it */ + ST_ONCE, /* executed once */ + ST_RESPAWN /* running and respawning */ + }; + + +/* actions for i/o handlers (see comm/do_*) */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* Messages to the outside */ +#define MSG_CINIT "cinit-0.2: Booting from " +#define MSG_NOT_ONE "cinit should not be started directly, but by your kernel." +#define MSG_USAGE "cinit: [cprofile:profile]\n" +#define MSG_ERR_OPEN "open" +#define MSG_ERR_READ "read" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_FORK "fork" +#define MSG_BIND "bind" +#define MSG_LISTEN "listen" +#define MSG_SOCKET "socket" +#define MSG_CONNECT "connect" +#define MSG_FCNTL "fcntl" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_TERMKILL "sigterm" +#define MSG_KILLBILL "sigkill" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" +#define MSG_ERR_DEPS "Too many dependencies" +#define MSG_ERR_ACCEPT "accept" +#define MSG_ERR_WAITPID "waitpid" +#define MSG_ERR_POLL "poll" +#define MSG_ERR_MODIFY "modify list failed" +#define MSG_ERR_COMM "Communication failed" + +#define MSG_ERR_LESS_ARGS "Too less arguments!" +#define MSG_ERR_BAD_ARGS "Wrong arguments / parameter" +#define MSG_ERR_ARGS_LEN "Wrong parameter length" + +#define LOG_SVC_STOPED "Service stoped" +#define LOG_SVC_ONCE "Started once" +#define LOG_SVC_RESPAWN "Respawns now" +#define LOG_SVC_FAIL "Service failed" +#define LOG_NEED_FAIL "One or more need failed" +#define LOG_SVC_FAILED "Service already failed, not starting." +#define LOG_SVC_NOTEXIST "Service does not exist" + +#define MSG_START_SVC "Starting " +#define MSG_STOP_SVC "Stoping " +#define MSG_EXEC_FAILED "Failed to execute " + +#define MSG_POWER_OFF "Powering off..." +#define MSG_HALT "Halting system ..." +#define MSG_REBOOT "Rebooting ..." +#define MSG_RESCUE "Switching to rescue mode ..." +#define MSG_UPDATE "Updating cinit ..." +#define MSG_HOT_REBOOT "Hot reboot in progress ..." + +#define MSG_SHOULD_NOT_HAPPEN "This should not happen, I do not know what todo!" + + +struct listitem { + char *abs_path; /* name of service */ + int status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + struct listitem *before; /* previous item */ + struct listitem *after; /* next item */ +}; + +/* variables */ +extern struct listitem *list; /* the process linked chain */ +extern int sock; /* current writing/reading socket */ +extern pid_t cpid; /* used by main() and reused be respaw_svc() */ + +/* functions (used by server and client) */ +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +void usage(char *banner, char *stext); + +int do_svc_name(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* server functions */ +int list_insert(char *path, int status); +struct listitem *list_search(char *path); +int list_delete(char *path); +int run_init_svc(char *cinit_svc); +void sigio(int socket); +void sig_reboot(int signal); +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +int msg_svc_on_off(char *svc, char action); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +int run_run_svcs(char *abspath); +pid_t exec_svc(char *abspath, int on); +pid_t respawn_svc(char *abspath); +int connect_sock(int socke); +char **read_file(char *file); +void sig_terminate(int signal); + +/* listing functions (server only) */ +int list_insert(char *path, int status); +struct listitem *list_search(char *path); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); + +/* util */ +int msg_reboot(char cmd); + +/* DEBUG */ +#ifdef DEBUG +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) +#endif + +/* macros */ +#define SERVICE_LOG(svc,message) { \ + mini_printf(svc,1); \ + mini_printf(MSG_DP,1); \ + mini_printf(message,1); \ + mini_printf("\n",1); \ +} +#define LOG(s) { \ + mini_printf(s,1); \ + mini_printf("\n",1); \ +} +#define P_START_SERVICE(name) { mini_printf(MSG_START_SVC,1); mini_printf(name,1); mini_printf("\n",1); } +#define P_EXEC_FAILED(name) { mini_printf(MSG_EXEC_FAILED,1); mini_printf(name,1); mini_printf("\n",1); } diff --git a/software/cinit/browse_source/cinit-0.2.1/client/README b/software/cinit/browse_source/cinit-0.2.1/client/README new file mode 100644 index 00000000..0a5b8d0c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/client/README @@ -0,0 +1,2 @@ +client/ + These sources are used by the children which are spawned by cinit. diff --git a/software/cinit/browse_source/cinit-0.2.1/client/begin_msg.c b/software/cinit/browse_source/cinit-0.2.1/client/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/client/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.2.1/client/connect_sock.c b/software/cinit/browse_source/cinit-0.2.1/client/connect_sock.c new file mode 100644 index 00000000..de161327 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/client/connect_sock.c @@ -0,0 +1,37 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.2.1/client/exec_svc.c b/software/cinit/browse_source/cinit-0.2.1/client/exec_svc.c new file mode 100644 index 00000000..0734a512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/client/exec_svc.c @@ -0,0 +1,264 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +pid_t exec_svc(char *abspath, int action) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + SERVICE_LOG(abspath,LOG_SVC_FAIL); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + P_EXEC_FAILED(nargv[0]); + perror(MSG_ERR_EXECVE); + /* FIXME: remove debug, remove double printing without loosing info */ + sleep(3); /* debug */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.2.1/client/msg_change_status.c b/software/cinit/browse_source/cinit-0.2.1/client/msg_change_status.c new file mode 100644 index 00000000..836a0fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/client/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* FIXME: change return code validation */ + +int msg_change_status(char *svc, char status, pid_t pid) +{ + if(!begin_msg(CMD_CHG_STATUS)) { + return RT_ERR_COMM; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.2.1/client/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.2.1/client/msg_svc_on_off.c new file mode 100644 index 00000000..02948f2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/client/msg_svc_on_off.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, char action) +{ + if(!begin_msg(action)) return RT_ERR_COMM; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return RT_ERR_COMM; + return (int) do_result(sock,NULL); +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.2.1/client/respawn_svc.c b/software/cinit/browse_source/cinit-0.2.1/client/respawn_svc.c new file mode 100644 index 00000000..2bef057f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/client/respawn_svc.c @@ -0,0 +1,100 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + D_PRINTF(abspath); + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, CMD_START_SVC) ) { + if(cpid != 0) { + D_PRINTF("sloefen"); + sleep(SLEEP_SVC); + D_PRINTF("Zuende geschlafen"); + } + } + } while( cpid ); /* cpid is reset by sig_terminate() */ + + /* FIXME: put most code of sig_terminate here, look for no_kill */ + + /* start off task */ + exec_svc(abspath,CMD_STOP_SVC); + + D_PRINTF("jetzt weg"); + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.2.1/client/run_run_svcs.c b/software/cinit/browse_source/cinit-0.2.1/client/run_run_svcs.c new file mode 100644 index 00000000..3ad819a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/client/run_run_svcs.c @@ -0,0 +1,85 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.2.1/client/run_svc.c b/software/cinit/browse_source/cinit-0.2.1/client/run_svc.c new file mode 100644 index 00000000..5ece19d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/client/run_svc.c @@ -0,0 +1,129 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.2.1/client/sig_terminate.c b/software/cinit/browse_source/cinit-0.2.1/client/sig_terminate.c new file mode 100644 index 00000000..9b23e349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/client/sig_terminate.c @@ -0,0 +1,60 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + /* FIXME: only send SIGTERM, if not_kill does not exist */ + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + status = kill(cpid,SIGKILL); + if( status == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + D_PRINTF("muesste weg sein"); + return; +} diff --git a/software/cinit/browse_source/cinit-0.2.1/comm/README b/software/cinit/browse_source/cinit-0.2.1/comm/README new file mode 100644 index 00000000..840c9742 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/comm/README @@ -0,0 +1,3 @@ +comm/ + The communication part of cinit. + The functions are used in client and in server code. diff --git a/software/cinit/browse_source/cinit-0.2.1/comm/do_change_status.c b/software/cinit/browse_source/cinit-0.2.1/comm/do_change_status.c new file mode 100644 index 00000000..94b9be76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/comm/do_change_status.c @@ -0,0 +1,70 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.2.1/comm/do_result.c b/software/cinit/browse_source/cinit-0.2.1/comm/do_result.c new file mode 100644 index 00000000..cb51161b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/comm/do_result.c @@ -0,0 +1,33 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return RT_ERR_COMM; + } + + return *value; +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.2.1/comm/do_svc_name.c b/software/cinit/browse_source/cinit-0.2.1/comm/do_svc_name.c new file mode 100644 index 00000000..d427365f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/comm/do_svc_name.c @@ -0,0 +1,51 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/.README b/software/cinit/browse_source/cinit-0.2.1/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/c_delay b/software/cinit/browse_source/cinit-0.2.1/conf/c_delay new file mode 100644 index 00000000..dc30f147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGTERM for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/c_env b/software/cinit/browse_source/cinit-0.2.1/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/c_halt b/software/cinit/browse_source/cinit-0.2.1/conf/c_halt new file mode 100644 index 00000000..bc062a2c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/c_halt @@ -0,0 +1,4 @@ +halt + +Name of the service we should start when 'halting' (system stop, but no +power off). diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/c_init b/software/cinit/browse_source/cinit-0.2.1/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/c_needs b/software/cinit/browse_source/cinit-0.2.1/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/c_off b/software/cinit/browse_source/cinit-0.2.1/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/c_on b/software/cinit/browse_source/cinit-0.2.1/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/c_params b/software/cinit/browse_source/cinit-0.2.1/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/c_poweroff b/software/cinit/browse_source/cinit-0.2.1/conf/c_poweroff new file mode 100644 index 00000000..273d4bec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/c_poweroff @@ -0,0 +1,3 @@ +poweroff + +Name of the service we should start, when system power-off is called. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/c_reboot b/software/cinit/browse_source/cinit-0.2.1/conf/c_reboot new file mode 100644 index 00000000..17937b4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/c_reboot @@ -0,0 +1,3 @@ +reboot + +Name of the service we should start on reboot. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/c_respawn b/software/cinit/browse_source/cinit-0.2.1/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/c_sock b/software/cinit/browse_source/cinit-0.2.1/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/c_tmp b/software/cinit/browse_source/cinit-0.2.1/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.2.1/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.2.1/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/c_wants b/software/cinit/browse_source/cinit-0.2.1/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/cinit_dir b/software/cinit/browse_source/cinit-0.2.1/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/destdir b/software/cinit/browse_source/cinit-0.2.1/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/getty_dir b/software/cinit/browse_source/cinit-0.2.1/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/install_directory b/software/cinit/browse_source/cinit-0.2.1/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/install_prog b/software/cinit/browse_source/cinit-0.2.1/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/max_delay b/software/cinit/browse_source/cinit-0.2.1/conf/max_delay new file mode 100644 index 00000000..149fa16c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/max_delay @@ -0,0 +1,7 @@ +4 + +Maximum number of digits which may be in the delay file. +If there are more, the string "12345678901" will be cut to the +right length "1234567890". I don't think you'll ever need +a timeout greater 4 digits (9999 seconds are 166,65~ minutes, are +2 hours, 46 minutes and 39 seconds). See doc/configuring.cinit. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/max_deps b/software/cinit/browse_source/cinit-0.2.1/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/prefix b/software/cinit/browse_source/cinit-0.2.1/conf/prefix new file mode 100644 index 00000000..6b90469f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/prefix @@ -0,0 +1,5 @@ + + +Where to install cinit. Normally this will be /, but you can put it anywhere. +The subdirectory 'sbin' under this prefix must be readable by the kernel. +This is normally either empty or "/". diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/profile b/software/cinit/browse_source/cinit-0.2.1/conf/profile new file mode 100644 index 00000000..b9104bf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/profile @@ -0,0 +1,9 @@ +cprofile: + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile:" is the standard, as +the Linux kernel eats everything in the form 'var=parm'. +The old (pre cinit-0.1) option "cprofile=" should therefore +NOT be used. + +Under Linux you tell it the bootloader like grub or LILO. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/sleep_kill b/software/cinit/browse_source/cinit-0.2.1/conf/sleep_kill new file mode 100644 index 00000000..de1fd006 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/sleep_kill @@ -0,0 +1,5 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.2.1/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.2.1/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/sleep_svc b/software/cinit/browse_source/cinit-0.2.1/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/sock_queue b/software/cinit/browse_source/cinit-0.2.1/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.2.1/conf/sulogin b/software/cinit/browse_source/cinit-0.2.1/conf/sulogin new file mode 100644 index 00000000..4f003994 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/conf/sulogin @@ -0,0 +1,4 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it only if we panic(). +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.2.1/contrib+tools/Makefile b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/Makefile new file mode 100644 index 00000000..1de8214d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/Makefile @@ -0,0 +1,70 @@ +# +# (c) 2005 Peter Portmann (pp at bluewin.ch) +# cinit/contrib+tools +# +# This script is written for the clinux-System and published +# under the terms of GPL 2.0 +# +# Version: 0.2 +# clean with a single command instead of two commands. +# +# ChangeLog: +# 0.1 initial version +# +# Todo: +# +# Features: + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +#DEBUG=-g -DDEBUG +OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! +LDFLAGS= + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. -I../ +LD=gcc +STRIP=strip -R .comment -R .note + +INSTALL = install + +prefix = $(HOME) +bindir = $(prefix)/bin + +# objects + +CLIENT=cinit.graph.text.o + +COMMUNICATION=error.o ../generic/usage.o ../generic/mini_printf.o + +OBJ=$(CLIENT) $(COMMUNICATION) + +# +PROGRAMS=cinit.graph.text +SCRIPTS=cconfig.graph.xml.rb \ + make.cconfig.from.xml.rb \ + cinit-vis.pl + +# targets +all: $(PROGRAMS) + +cinit.graph.text: $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +clean: + rm -f *.o $(PROGRAMS) + +install: all + @echo '*** Installing contrib+tools ***' + $(INSTALL) -d -m755 $(DESTDIR)$(bindir) + for bin in $(SCRIPTS) $(PROGRAMS); do \ + $(INSTALL) $$bin $(DESTDIR)/$(bindir); \ + done diff --git a/software/cinit/browse_source/cinit-0.2.1/contrib+tools/README b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/README new file mode 100644 index 00000000..85fa2f5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/README @@ -0,0 +1,11 @@ +contrib+tools/ + programs written by others and external tools not necessary + needed but (very) nice to have + + + cinit-vis.pl - draw an ascii graph of cinit configuration [perl] + cinit.graph.text - draw an ascii graph of cinit configuration [c] + + cconfig.graph.xml.rb - creates a xml file from a cconfig [ruby] + make.cconfig.from.xml.rb - creates a cconfig from a xml file [ruby] + diff --git a/software/cinit/browse_source/cinit-0.2.1/contrib+tools/README.ruby b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/README.ruby new file mode 100644 index 00000000..ed210cee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/README.ruby @@ -0,0 +1,7 @@ +The ruby tools for general cconfig [0] are written by René Nussbaumer [1]. +You can find the documentation for them at [2]. + + +[0]: http://nico.schotteli.us/papers/linux/cconfig/ +[1]: http://killerfox.forkbomb.ch/ +[2]: http://killerfox.forkbomb.ch/articles/cconfig/tools diff --git a/software/cinit/browse_source/cinit-0.2.1/contrib+tools/cconfig.graph.xml.rb b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/cconfig.graph.xml.rb new file mode 100644 index 00000000..d18ba422 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/cconfig.graph.xml.rb @@ -0,0 +1,117 @@ +#!/usr/bin/env ruby + +=begin + + Writes an XML-Tree for a cconfig directory + Idea by Nico Schottelius aka telmich + Implemented and (C) by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added support for binary files + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Changed checking order: symlink, directory, file. Because of + a logical bug -> directory follows symlink so, when a symlink + points to a directory no «link» element is created. + + Version 0.1 (René Nussbaumer): + * Holy hack for directory scanning (needs to be optimized) + * Hack for rexml to print out «lost» tags. This rexml sux. + + Todo: + * Optimize scanning. + * Use another xml library instead of rexml crap. + Problem: Produce dependencies -> no std-lib + + Features: + * Create a flat (no deepnes without directory) and 1:1 image + of an cconfig directory + +=end + +require 'rexml/document' +require 'base64' +require 'digest/sha1' + +require 'filemagic' + +@version = '0.3' + +def determineTarget(entry) + return 'external' if(!File.expand_path(entry).index(@initpath)) + return 'link' if(FileTest.symlink?(entry)) + return 'object' if(FileTest.directory?(entry)) + return 'attribute' if(FileTest.file?(entry)) + return 'unknown' # Should never be reached +end + +def createTree(dir, parent) + dir.each { |entry| + next if(entry =~ /^(\.|\.\.)$/) + + if(FileTest.symlink?(entry)) + e = parent.add_element('link') + + # Much fun with links + e.add_attributes( { 'name' => entry, 'target' => determineTarget(File.readlink(entry)) } ) + e.add_text(File.readlink(entry)) + elsif(FileTest.directory?(entry)) + e = parent.add_element('object') + e.add_attribute('name', entry) + + # Bad, that we need to change the directory every time. + oldPwd = Dir.pwd + Dir.chdir(entry) + createTree(Dir.new('.'), e) + Dir.chdir(oldPwd) + elsif(FileTest.file?(entry)) + e = parent.add_element('attribute') + e.add_attribute('name', entry) + if(File.stat(entry).size?) + # Yeah, we got one WITH content! W00h00, let's party. + + fm = FileMagic.new(FileMagic::MAGIC_MIME) + if(fm.file(entry) =~ /executable/) + e.add_attribute('type', 'binary') + text = File.new(entry).read + e.add_attribute('sha1', Digest::SHA1.hexdigest(text)) + e.add_text(Base64.encode64(text)) + else + e.add_text(File.new(entry).read) + end + fm.close() + end + end + } +end + + +if(!ARGV[0] || !FileTest.directory?(ARGV[0])) + puts 'You need to specify a directory' + Kernel.exit(-1) +end + +doc = REXML::Document.new + +e = doc.add_element('cconfig') +e.add_attribute('name', File.basename(ARGV[0])) +e.add_attribute('version', @version) + +@initpath = File.expand_path(ARGV[0]) +Dir.chdir(ARGV[0]) +createTree(Dir.new('.'), doc.root) + +out = '' +doc.write(out, 0, false, true) + +REXML::XMLDecl.new('1.0', 'utf-8').write($stdout) # This should automatically printed by rexml. Damn bugs. +puts '' +puts out # Workaround for a buggy rexml + diff --git a/software/cinit/browse_source/cinit-0.2.1/contrib+tools/cinit-vis.pl b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/cinit-vis.pl new file mode 100644 index 00000000..3956ff47 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/cinit-vis.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# (c) by Marcus Przyklink (downhill-clinux@burningchaos.org) +# written for cinit and published under GPL +# beautified a bit by Nico Schottelius +# optimized by René Nussbaumer +# Version: 0.1 + +use strict; +use warnings; + +# +# Variables for location and output +# +# cinit-directory +my $path = "/etc/cinit/"; +# started profile +my $starting_point = "init"; +# the spaces for each level (integer: amount of spaces) +my $space = 3; +# marker for need +my $need = "-->"; +# marker for want +my $want = "==>"; + +# +# main function, recursively list the components of the cinit system +# +if (@ARGV) { + if( $ARGV[0] =~ /-(h|-help)/ ) { + print "Usage: " . __FILE__ . " without parameters for standard-use (check variables in file)\n"; + print " Parameters:\n"; + print " -h for this help\n"; + print " profile-name for a profile\n"; + exit(0); + } + else { + $starting_point = $ARGV[0]; + } +} + +# +# start first instance +# +sub get_deeper { + my ($point, $tmp_counter, $need_want) = splice @_; + + print " " x ($space * $tmp_counter) . ($need_want ? $need : $want) . " " . $point . "\n"; + + opendir(DIR, "${path}${point}/needs") and + my @next_need = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + opendir(DIR, "${path}${point}/wants") and + my @next_want = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + + for(@next_need) { + get_deeper($_, $tmp_counter + 1, 1); + } + for(@next_want) { + get_deeper($_, $tmp_counter + 1, 0); + } +} + +# +# start first instance +# +get_deeper($starting_point, 0, 0); + +# +# work done, go home +# +exit(0); diff --git a/software/cinit/browse_source/cinit-0.2.1/contrib+tools/cinit.graph.text.c b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/cinit.graph.text.c new file mode 100644 index 00000000..ffd33c39 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/cinit.graph.text.c @@ -0,0 +1,200 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + cinit.graph.text.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.2 + + ChangeLog: + Version 0.2 (Peter Portmann): + * Not assigned link destinies are marked by (!). + * Not readable directories are marked by "directory not readable". + + Version 0.1 (Peter Portmann): + * Print of the directory structure of the contained files and links + without following the links. + + Todo: + + Features: +*/ + +//#include +#include +#include +//#include +#include +#include +#include +#include +#include "cinit.h" +#include "error.h" + +#define FTW_F 1 /* file isn't a directory */ +#define FTW_D 2 /* file is a directory */ +#define FTW_DNR 3 /* not readable directory */ +#define FTW_NS 4 /* unsuccesfully stat on this file */ +#define MAX_CHAR 4096 + +/*********************************************************************** + * cinit.gaph.text - textual representatio of the cinitdirectory + */ + +#define CSERVICE_BANNER "cinit.gaph.text - textual representatio of the cinitdirectory\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncinit.gaph.text \n" \ + "\tpath\t- cinit installationpath\n" + +typedef int EACH_ENTRY(const char *, const struct stat *, int); +typedef enum { FALSE=0, TRUE=1 } bool; + +static char dirpath[PATH_MAX]; +static int depth = 0; +static long int filecount = 0; + +static EACH_ENTRY each_entry; +static int pp_ftw(char *, EACH_ENTRY *); +static int each_getinfo(EACH_ENTRY *); + +/*********************************************************************** + * pp_ftw: file tree walk + */ +static int pp_ftw(char *filepath, EACH_ENTRY *function) +{ + int n; + + if(chdir(filepath) < 0) /* In angegebenen Pfad wechseln */ + err_msg(FATAL_SYS, "can't change to %s", filepath); + + if(getcwd(dirpath, PATH_MAX) == 0) /* Absoluten Pfadnamen ermitteln */ + err_msg(FATAL_SYS, "error using getcwd for %s", filepath); + + n = each_getinfo(function); + + return(n); +} + +/*********************************************************************** + * each_getinfo: get more info for each file. + */ +static int each_getinfo(EACH_ENTRY *function) +{ + struct stat statpuff; + struct dirent *direntz; + DIR *dirz; + int n; + char *zgr; + + if(lstat(dirpath, &statpuff) < 0) + return(function(dirpath, &statpuff, FTW_NS)); /* Error on stat */ + + if(S_ISDIR(statpuff.st_mode) == 0) + return(function(dirpath, &statpuff, FTW_F)); /* no directory */ + + /* It's a directory. + * Call function() for it. After that handel each file in the directory. */ + + if((dirz = opendir(dirpath)) == NULL) { /* Directory not readable */ + closedir(dirz); + return(function(dirpath, &statpuff, FTW_DNR)); + } + + if((n = function(dirpath, &statpuff, FTW_D)) != 0) /* return the directorydirpath */ + return(n); + + zgr = dirpath + strlen(dirpath); /* append slash to the dirpathname */ + *zgr++ = '/'; + *zgr = '\0'; + + while((direntz = readdir(dirz)) != NULL) { + /* ignor . and .. */ + if(strcmp(direntz->d_name, ".") && strcmp(direntz->d_name, "..")) { + strcpy(zgr, direntz->d_name); /* append filename after slash */ + depth++; + if(each_getinfo(function) != 0) { /* Recursion */ + depth--; + break; + } + depth--; + } + } + *(zgr-1) = '\0'; /* deleting evrything after the slash */ + + if(closedir(dirz) < 0) + err_msg(WARNING, "closedir for %s failed", dirpath); + + return(n); +} + +/*********************************************************************** + * each_entry: handling each file and build the graph step by step. + */ +static int each_entry(const char *filepath, const struct stat *statzgr, int filetype) +{ + struct stat statpuff; + static bool erstemal=TRUE; + int i; + + char link[MAX_CHAR]; + + filecount++; + if(!erstemal) { + for(i=1 ; i<=depth ; i++) + printf("%4c|", ' '); + printf("----%s", strrchr(filepath, '/')+1); + } else { + printf("%s", filepath); + erstemal = FALSE; + } + + switch(filetype) { + case FTW_F: + switch(statzgr->st_mode & S_IFMT) { + case S_IFREG: break; + case S_IFCHR: printf(" c"); break; + case S_IFBLK: printf(" b"); break; + case S_IFIFO: printf(" f"); break; + case S_IFLNK: + printf(" -> "); + if(( i=readlink(filepath, link, MAX_CHAR)) != -1) + printf("%.*s", i, link); + if(stat(filepath, &statpuff) < 0) + printf(" (!)"); + break; + case S_IFSOCK: printf(" s"); break; + default: printf(" ?"); break; + } + printf("\n"); + break; + + case FTW_D: + printf("/\n"); + break; + + case FTW_DNR: + printf("/ directory not readable\n"); + break; + + case FTW_NS: + err_msg(WARNING_SYS, "Error using 'stat' on file %s", filepath); + break; + + default: + err_msg(FATAL_SYS, "Unknown Filetype (%d) by file %s", filetype, filepath); + break; + } + + return(0); +} + +/*********************************************************************** + * main: + */ +int main(int argc, char *argv[]) +{ + if(argc != 2) + usage(CSERVICE_BANNER, USAGE_TEXT); + + exit(pp_ftw(argv[1], each_entry)); +} diff --git a/software/cinit/browse_source/cinit-0.2.1/contrib+tools/error.c b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/error.c new file mode 100644 index 00000000..8174c702 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/error.c @@ -0,0 +1,124 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#include "error.h" +#include +#include +#include +#include +#include +#include + +#define MAX_CHAR 4096 + +int debug; /* Aufrufer von log_msg oder log_open muss debug setzen: + 0, wenn interaktiv; 1, wenn Daemon-Prozess */ + +/*---- Lokale Routinen zur Abarbeitung der Argumentliste --------------------*/ +static void msg_err(int sys_msg, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + return; +} + +static void msg_log(int sys_msg, int prio, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + if (debug) { + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + } else { + strcat(puffer, "\n"); + syslog(prio, puffer); + } + return; +} + +/*---- Global aufrufbare Fehlerroutinen -------------------------------------*/ +void err_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_err(0, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + case DUMP: + msg_err(1, fmt, az); + break; + default: + msg_err(1, "Falscher Aufruf von err_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + else if (kennung==DUMP) + abort(); /* core dump */ + exit(1); +} + +void log_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_log(0, LOG_ERR, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + msg_log(1, LOG_ERR, fmt, az); + break; + default: + msg_log(1, LOG_ERR, "Falscher Aufruf von log_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + exit(2); +} + +/*---- log_open --------------------------------------------------------------- + initialisiert syslog() bei einem Daemon-Prozess */ +void log_open(const char *kennung, int option, int facility) +{ + if (debug==0) + openlog(kennung, option, facility); +} diff --git a/software/cinit/browse_source/cinit-0.2.1/contrib+tools/error.h b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/error.h new file mode 100644 index 00000000..a55690fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/error.h @@ -0,0 +1,29 @@ +#ifndef ERROR_H +#define ERROR_H +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.h + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#define WARNING 0 +#define WARNING_SYS 1 +#define FATAL 2 +#define FATAL_SYS 3 +#define DUMP 4 + +void log_msg(int kennung, const char *fmt, ...); +void err_msg(int kennung, const char *fmt, ...); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.2.1/contrib+tools/make.cconfig.from.xml.rb b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/make.cconfig.from.xml.rb new file mode 100644 index 00000000..05f35cc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/contrib+tools/make.cconfig.from.xml.rb @@ -0,0 +1,227 @@ +#!/usr/bin/env ruby + +=begin + + Create a cconfig directory based on a xml input. + (C) 2005 by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added binary file support + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Added some commandline options + * Added «level» so control the restrictivity of the program + * Added more «intelligence» to the program, to detect internal broken dependcies. + * Support «debug»-Levels. + * Print statistic at the end of the programs about warnings and errors. + + Version 0.1 (René Nussbaumer): + * Initial + + Todo: + * Use an rexml alternative + * Some cleanup + * Optimize + * Testing? + + Features: + * Create a cconfig directory based on a xml + +=end + +require 'rexml/document' +require 'getoptlong' +require 'base64' +require 'digest/sha1' + +@verbose = 0 +@level = 1 +@version = '0.3' + +@warnings = 0 +@errors = 0 +@checklist = Array.new + +def printMsg(prefix, msg) + puts '%-12s %s' % [prefix + ':', msg] +end + +def error(msg, fatal = 0) + @errors += 1 + fatal = 0 if(@level < 1) + fatal = 255 if(@level > 1 && !fatal) + printMsg(fatal != 0 ? 'PANIC' : 'ERROR', msg) + Kernel.exit(-fatal) if(fatal != 0) +end + +def warn(msg) + error(msg, 1) if(@level > 1) + @warnings += 1 + printMsg('WARNING', msg) +end + +def info(msg) + printMsg('INFO', msg) +end + +def debug(msg, verbosity = 1) + if(@verbose >= verbosity) + printMsg("DEBUG(#{verbosity})", msg) + end +end + +def createObject(name) + error("#{name} already exists.", 1) if(FileTest.exists?(name)) + begin + Dir.mkdir(name) + rescue + error("Could not create directory #{name}: #{$!}. Abort.", 7) + end + debug("Object #{File.expand_path(name)} has been created.", 4) +end + +def createAttribute(name, content = nil) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + begin + file = File.new(name, 'w') + file.print content if(content && !content.empty?) + file.close + debug("Attribute #{File.expand_path(name)} has been created", 4) + rescue + error("Could not create file #{name}: #{$!}. Skipped.") + end +end + +def createLink(name, target, type) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + error("Broken dependencies! Please take a look if #{target} exists on your system", 2) if(type == 'external' && !FileTest.exists?(target)) + if(!FileTest.exists?(target) && type != 'external') + #info("Possible break. But maybe the target #{target} does not yet exists. Checking later.") + exptarget = File.expand_path(target) + @checklist << exptarget + debug("Adding #{target} to the list of internal dependcies to check.", 2) + end + begin + error('You\'ve a system which does not support symbolic links. Abort.', 3) if(File.symlink(target, name) != 0) + rescue + error("Could not create symlink #{name} => #{target}: #{$!}.", 3) + end + debug("Link #{File.expand_path(name)} has been created", 4) +end + +def doWork(elm) + name = elm.name + attrname = elm.attributes['name'] + error("XML Tag with missing name attribute!", 5) if(!attrname) + if(name =~ /(object|cconfig)/) + if(name == 'cconfig') + if(elm.attributes['version']) + info("Found a version string: #{elm.attributes['version']}") + warn("This XML is maybe incompatible with this programm. I'm a version #{@version} script. The XML is generated with a version #{elm.attributes['version']} script. Please update.") if(elm.attributes['version'] > @version) + end + end + createObject(attrname) + if(elm.has_elements?) + pwd = Dir.pwd + Dir.chdir(attrname) + elm.each_element { |e| + doWork(e) + } + Dir.chdir(pwd) + end + elsif(name == 'attribute') + text = nil + e = nil + text = e.value if((e = elm.get_text)) + if(text && elm.attributes['type'] && elm.attributes['type'] == 'binary') + text = Base64.decode64(text) + if(Digest::SHA1.hexdigest(text) != elm.attributes['sha1']) + warn("SHA1 differs from file: #{Dir.pwd}#{attrname}") + end + end + createAttribute(attrname, text) + elsif(name == 'link') + error("link-Tag without content.", 6) if(!elm.has_text?) + error("link with missing target. Skipped.") if(!elm.attributes['target']) + createLink(attrname, elm.get_text.value, elm.attributes['target']) + end +end + +puts "This is #{File.basename(__FILE__)} v#{@version} by René Nussbaumer" +puts + +opts = GetoptLong.new( + ['--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT], + ['--level', '-l', GetoptLong::REQUIRED_ARGUMENT], + ['--version', '-V', GetoptLong::NO_ARGUMENT] +) + +opts.each { |arg,value| + case arg + when '--verbose' + @verbose += 1 + value.each_byte { |x| + if(x.chr == 'v') + @verbose += 1 + end + } + debug("Verbosity set to: #{@verbose}") + when '--level' + debug("Setting level to: #{value}", 3) + case value + when 'low' + @level = 0 + when 'normal' + @level = 1 + when 'paranoid' + @level = 2 + else + warn('Unknown level: ' + value) + end + when '--version' + Kernel.exit(0) + else + warn("Unknown option #{arg}#{value && !value.empty? ? ('with value ' + value) : ''}") + end +} + +if(!ARGV[0]) + puts 'Need at least one argument' + puts "Usage: #{__FILE__} " + Kernel.exit(1) +end + + +filedesc = $stdin + +if(ARGV[0] != '-') + filedesc = File.new(ARGV[0]) +end + +doc = REXML::Document.new filedesc + +doWork(doc.root) + +if(!@checklist.empty?) + info('Now checking all broken internal dependcies again') + broken = 0 + @checklist.each { |path| + debug("Checking #{path}.", 2) + if(!FileTest.exists?(path)) + broken += 1 + warn("Broken dependcies. #{path} does not exist. Please fix.") + end + } + info('Looks good.') if(broken == 0) + info('Bad, bad.') if(broken > 0) +end + +info("Successed. #{@warnings} warnings, #{@errors} errors") + diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/.buildwarn b/software/cinit/browse_source/cinit-0.2.1/doc/.buildwarn new file mode 100644 index 00000000..72ebaf6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/.buildwarn @@ -0,0 +1,18 @@ +**************************************************************************** +First of all configure cinit through the configuration files found in conf/. + +The documentation can be found in doc/, read + + README and doc/configuring.cinit + +_before_ first use. + +After reading and configuring use: + + "make all" - to build cinit + "make install" - to install cinit + "make install-miniconf" - to install a minimal cinit-configuration + +After that you'll have to configure it. Some sample configurations can be +found on the cinit homepage at http://linux.schottelius.org/cinit/. +**************************************************************************** diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/FAQ b/software/cinit/browse_source/cinit-0.2.1/doc/FAQ new file mode 100644 index 00000000..53494f73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile:home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/caveats b/software/cinit/browse_source/cinit-0.2.1/doc/caveats new file mode 100644 index 00000000..5ab123e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/caveats @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/author b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/availability b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/availability new file mode 100644 index 00000000..cfb3f8a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/availability @@ -0,0 +1 @@ +cinit is currently Linux-specific. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/examples b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/examples new file mode 100644 index 00000000..1a7d2dcb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/examples @@ -0,0 +1 @@ +See http://linux.schottelius.org/cinit/#config diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/files b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/files new file mode 100644 index 00000000..4d6c0921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/files @@ -0,0 +1,5 @@ +/sbin/cinit - the init system +/sbin/cservice - control cinit +/sbin/cinit.reboot (/sbin/reboot if non-existent before) +/sbin/cinit.shutdown (/sbin/shutdown if non-existent before) +/etc/cinit - configuration directory diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/long_description b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/long_description new file mode 100644 index 00000000..18c3c082 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/long_description @@ -0,0 +1,5 @@ +cinit is a fast executing, small and simple init with support for profiles. It +minds dependencies (hard and soft, 'needs' and 'wants') and executes processes +in parallel. And it has a simple configuration, which makes many shell-scripts +unecessary (but you still could use them if you really want), which leads to +better performance and less memory using. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/meta/date b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/meta/man_section b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/meta/name b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/meta/name new file mode 100644 index 00000000..b853da25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/meta/name @@ -0,0 +1 @@ +cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/meta/short_description b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/parameters b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/parameters new file mode 100644 index 00000000..54df4727 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/parameters @@ -0,0 +1 @@ +cprofile: diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/path b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/path new file mode 100644 index 00000000..37edf339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/path @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/see also b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/synopsis b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cinit-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/compiles.on b/software/cinit/browse_source/cinit-0.2.1/doc/compiles.on new file mode 100644 index 00000000..3fe83479 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/compiles.on @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +compiles.on, +Nico Schottelius 2005-06-09 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit is known to compile on: + +x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 + +Please report your configuration, if it's not listed here. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/configuring.cinit b/software/cinit/browse_source/cinit-0.2.1/doc/configuring.cinit new file mode 100644 index 00000000..a88ba00f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/configuring.cinit @@ -0,0 +1,189 @@ +-------------------------------------------------------------------------------- +configuring cinit, +Nico Schottelius 2005-05-28 (Last Modified: 2005-06-05) +-------------------------------------------------------------------------------- + +0. Pre-compile configuration +1. General configuration layout +2. Hints +2.0 Service executing / parameters +2.1 Daemons +2.2 Logging +2.3 Using prepared scripts +3. Profiles + + +0. Pre-compile configuration + +Have a look at conf/*. Those variable will mostly be used when +compiling cinit. Some will be read later (like destdir). + + +1. General configuration layout + +/etc/cinit (configurable via conf/cinit_dir) stores the complete +cinit configuration. + +cinit is service based. +A service consists of + - a base directory (like /etc/cinit/getty/1) + - dependency configuration: + + ./wants - services it wants to be started before (but it + will work anyway) + + ./needs/ - services it needs. If those services fail, this service + won't be started. + + - a flag indicating whether to respawn the service: + + ./respawn (simply touch it) + + - a delay: how long to wait for the service (in seconds) before + sending SIGKILL after the SIGTERM (only for respawning processes): + + ./delay (one line with only the digits) + + If delay is non-existing or not readable, the delay from + conf/sleep_kill_svc is taken. The maximum length of this + number ("9999" uses length 4, "42" needs 2 bytes) can be adjusted + at compile time in conf/max_delay. Internally this is a signed + integer, so the maximum size depends on your system. Though + I don't think anybody will want to wait for a service as long as + an integer would allow. + + - the program to run when switching the service on and off: + + ./on (a link to a program or a shell script) + ./on.params (see conf/c_params, the parameters to pass to the program) + ./on.env (see conf/c_env, the environment to pass to the program) + + ./off (call that when shutting down the service) + ./off.params (the parameters to pass to the program) + ./on.env (the environment to pass to the program) + +You should have a look at the samples/ directory for examples. + +If things are missing, cinit will continue with what's available. +This way you only need the files you use. Some examples: + + /etc/cinit/init: + ./wants -> services it wants + ./needs -> services it needs + That's everything + + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it + That's everything, as it has no dependencies + + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn on service + delay -> wait this time before sending SIGKILL after SIGTERM + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting + + +2. Hints + +2.0 Service executing / parameters + +The on and off files can and should be links to the programs you want +to execute. This way you save yourself loading the big shell (which is +on many Linux systems bash, why so ever, dash does the job as good, still +beeing small). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. The on script +could look like: + + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). + + +2.1 Daemons + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking (Please have a look at +daemons.backgrounding for a list of known daemons and their switches +to avoid backgrounding). + +The other possibility is to use a program, which will + a) start the daemon + b) look into the pidfile of the daemon + c) will then wait until that pid does not exist anymore + d) and then it exits and cinit will restart it (goto a) now) + +Such a program is included into this cinit release, +though I do not recommend using it. You should better contact the +authors and make them implement a clean non-forking mode. + +The name of the program (actually a shell script) is "cinit.wait.for.daemon". + +You will use it as the "on" part of the service and you have to add + + a) the pidfile to on.params + b) the daemon binary + +Thus the service would look like: + + svc-broken-daemon/ + on -> /sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + + +2.2 Logging + +Currently there's no special logging support. +When programs write to stdout, it will be displayed on +the same stdout cinit is connected to +(we don't even open /dev/console - we are too lazy currently). + + +2.3 Using prepared scripts + +In the bin/ directory of this tarball you'll find at least: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + + +3. Profiles + +Since cinit-0.0.6 there is profile in cinit. +Profiles are described in doc/profile.support. + +X. Examples + +Can be found in the tarballs below samples/. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/author b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/long_description b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/long_description new file mode 100644 index 00000000..82818a93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/long_description @@ -0,0 +1 @@ +cservice controls cinit. Please use cservice -h for help. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/meta/date b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/meta/man_section b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/meta/name b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/meta/name new file mode 100644 index 00000000..49c847bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/meta/name @@ -0,0 +1 @@ +cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/meta/short_description b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/parameters b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/parameters new file mode 100644 index 00000000..605b08b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/parameters @@ -0,0 +1 @@ +[-eaphru] [thilo] diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/path b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/path new file mode 100644 index 00000000..85b0cb56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/path @@ -0,0 +1 @@ +/sbin/cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/see also b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/synopsis b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/cservice-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/daemons.backgrounding b/software/cinit/browse_source/cinit-0.2.1/doc/daemons.backgrounding new file mode 100644 index 00000000..c021fdb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/daemons.backgrounding @@ -0,0 +1,71 @@ +-------------------------------------------------------------------------------- +daemons backgrounding, +Nico Schottelius 2005-06-12 (Last Modified: 2005-10-15) +-------------------------------------------------------------------------------- + +0. Definition + +A daemon is a program which runs in the background, not having a tty +associated necesserally. Running in background does not mean it has +to background (fork()) itself, but that you cannot control it directly +from a shell. + +1. Daemons and cinit + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking + +The following daemons / servers are known to avoid backgrounding easily: + + acpid [x86 power management]: -f (undocumentated but works) + asterisk [pbx]: -f + bind [dns server/caching]: -f + cardmgr [pcmcia/cardbus]: -f + cron (vixie) [schedular]: -f + cupsd [printer server]: -f or -F + dhclient [dhcp client]: -d + dhcp3 (isc) [dhcp server]: -f + distccd [compile server]: normal behaviour + fam [file alteration monitor]:-f + fcron [schedular]: -f + frox [ftp proxy]: "NoDetach" in config + gdm [display manager]: -nodaemon + hybrid [irc server]: -foreground + icecast2 [sound streamer]: normal behaviour + mini-lpd [printer server]: normal behaviour + metalog [log server]: normal behaviour + monotone [vcs]: normal behaviour + mpd [music server]: --no-daemon + nessusd ["security server"]: normal behaviour + ntpd [time server]: -n + oidentd [identd server]: -i + oops [http proxy]: normal behaviour + openssh [ssh server]: -D + openvpn [vpn server]: normal behaviour + pbbuttonsd [power management]:normal behaviour + proftpd [ftp server]: -n + qmail [mta]: normal behaviour + rsync ["file server"]: --no-detach + silcd ["secure chat server"]: -F, --foreground + slapd [ldap]: -d + snmpd [snmp daemon]: -f + svnserve [vcs]: --foreground + syslogd [log server]: -n + syslog-ng [log server]: -F + tcpserver [super server]: normal behaviour + udhcpc [dhcp client]: normal behaviour + vsftpd [ftp server]: normal behaviour (or: config: background=no) + xinetd [super server]: -dontfork + +Those are the daemons that do not offer the possibility (as of release 0.2): + + apache (only with debug mode) + atd (no switch, no configuraton option) + inetd (some variants) + nscd (no switch, no configuraton option) + portmap (only with debug mode) diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/debugging.configuration b/software/cinit/browse_source/cinit-0.2.1/doc/debugging.configuration new file mode 100644 index 00000000..1289865e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/debugging.configuration @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +Debugging your init configuration, +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +As writing an init configuration is not the easiest thing, +here are some problems (P) and debugging hints (H): + +P: There's no output! +H: If you don't start a service which outputs something there won't be any, + cinit starts up silently. + +P: Service XYZ seems not to work? +H: Try the following in your shell: + cd /etc/cinit/the-service; ./on "$(on.params)" + If that succeeds it has perhaps something missing which should have been + started before. +H: Create a test-service, which contains the following: + on: link to /bin/echo + on.params: "A test string" (with or without the quotes) + Now add the test-service to the needs directory of service XYZ. + If you see output the next time, the service is started. + Otherwise you forgot to make another service dependent on service + XYZ. + +P: How can I test if a non-outputting service successfully started? +H: Create another service, which depends on your service and make + it echo something. + +P: Does that profile support really work? +H: Try that: cprofile:NONEXISTENT and you'll see. + diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/extern/README b/software/cinit/browse_source/cinit-0.2.1/doc/extern/README new file mode 100644 index 00000000..e734d6d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/extern/README @@ -0,0 +1,2 @@ +doc/extern/ + Some things related to cinit from the outside world. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/extern/ipc.thoughts b/software/cinit/browse_source/cinit-0.2.1/doc/extern/ipc.thoughts new file mode 100644 index 00000000..e2619d34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/extern/ipc.thoughts @@ -0,0 +1,83 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2 ), +1024 is the maximum opened file deskriptors, +minus 3 (stdin/stdout/stderr) already opened, divided +by two, because two fds needed per client. + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt, + - poweroff, + - update itself (hot-reboot) + - and to start a rescue mode (see using.rescue). + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + CONT: update + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/extern/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.2.1/doc/extern/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/extern/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/extern/linux.kernel.eats.arguments b/software/cinit/browse_source/cinit-0.2.1/doc/extern/linux.kernel.eats.arguments new file mode 100644 index 00000000..dbaf57d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/extern/linux.kernel.eats.arguments @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +Linux, the kernel, eats arguments +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +If you specify + + variable=value + +to the Linux kernel, the argument will NOT be passed to cinit. + +Here's the relevant code block from init/main.c of the Linux kernel: + +------------------------------------------------------------------------------- + +From init(void * unused) the function run_init_process(char *init_filename) +is called, which passes argv_init (char * argv_init[MAX_INIT_ARGS+2]) to init. + +First init_setup(char *str) resets all elements of the argv_init to NULL. + +The function unknown_bootoption(char *param, char *val) fills the +argv_init array, but only with parameters, which have no value +(val). + +The function parse_args calls unknown_bootoption with the unknown options. + +------------------------------------------------------------------------------- + +This way the profile support in all cinit versions below cinit-0.1 will +only work if you change conf/profile, because "cprofile=value" will +not be given to cinit, because it's not treated as a command line option. + +The original value "cprofile=" is replaced by "cprofile:" as of cinit-0.1. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/extern/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.2.1/doc/extern/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/extern/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/intern/README b/software/cinit/browse_source/cinit-0.2.1/doc/intern/README new file mode 100644 index 00000000..af6f9e9d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/intern/README @@ -0,0 +1,2 @@ +doc/intern/ + The documentation in this directory describes cinit internals. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/intern/cinit.commands b/software/cinit/browse_source/cinit-0.2.1/doc/intern/cinit.commands new file mode 100644 index 00000000..d34d13bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/intern/cinit.commands @@ -0,0 +1,73 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (using SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. +CMD_UPDATE: Update cinit, hot-reboot the system. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/intern/how_it_works_internally b/software/cinit/browse_source/cinit-0.2.1/doc/intern/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/intern/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/intern/service.status b/software/cinit/browse_source/cinit-0.2.1/doc/intern/service.status new file mode 100644 index 00000000..7bfaff81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/intern/service.status @@ -0,0 +1,26 @@ +-------------------------------------------------------------------------------- +service status (cinit), +Nico Schottelius 2005-09-29 (Last Modified: -) +-------------------------------------------------------------------------------- + +There are service status and service returns. Service status is a status +a service can have. A service return is a value from a function that +describes what happened with the service. + +Status has ST_ prefix, return has RT_ prefix. +See cinit.h for most up to date versions. + + +ST_NEED_FAIL - this service will not be started, until the needs are started +ST_FAIL - this service failed to start +ST_UNSPEC - some unknown error. This should never happen. +ST_ERR - ??? /* tried earlier, service failed, won't retry */ + +ST_SUCCESS - service was successfully started - senseful? +ST_TMP - some instance is currently working on it +ST_ONCE - executed once sucessfully +ST_RESPAWN - service is running and respawning + +ST_TMPNOW 55 /* now you are on it - only for clients */ +#define ST_OFF 56 /* Switching service off */ + diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/intern/socket.poll_vs_o_async b/software/cinit/browse_source/cinit-0.2.1/doc/intern/socket.poll_vs_o_async new file mode 100644 index 00000000..477f2bff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/intern/socket.poll_vs_o_async @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------------- +Socket: poll(2) vs. O_ASYNC, +Nico Schottelius 2005-06-22 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +0. General problem +1. O_ASYNC +2. poll(2) + + +0. General problem + +cinit has to react, as soon as there's data on the socket. + +1. O_ASYNC + +When you open a socket with O_ASYNC (or specify it with fcntl(2)) under +Linux, your process recieves the SIGIO signal from the kernel, as soon +as data is available. + +The problem is the handling of signals seems not to be serialised: + +The function, which is called on the SIGIO signal (called sigio() here) +calls other functions. Those functions way recieve SIGIO while working, +so the first data stream is not yet finished, though the next +stream is beeing read. + +This gives very nice race-conditions, which are very nice to debug. + +2. poll(2) + +poll(2) is a standard Unix-call (XPG4-UNIX), which waits a specific +timeout (or infinite time if you specify a value less that zero) for +the socket (or the fd in general) to be in a state where +data is available to read (in fact poll can do much more, but we are +not interested only in POLLIN and POLLPRI). + +While poll(2) seems to be a very bit slower than sigio it works reliable. + diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/merging.other.initsystems b/software/cinit/browse_source/cinit-0.2.1/doc/merging.other.initsystems new file mode 100644 index 00000000..c324a935 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/merging.other.initsystems @@ -0,0 +1,64 @@ +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not mean that he does not accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated! + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/meta.dependencies b/software/cinit/browse_source/cinit-0.2.1/doc/meta.dependencies new file mode 100644 index 00000000..fe743c48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/meta.dependencies @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, one would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation (see profile.support). + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +why it does not even need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ + +This way you have the indirection (meta-dependencies) in the filesystem +and cinit does not need any additional code. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/optimising.cinit b/software/cinit/browse_source/cinit-0.2.1/doc/optimising.cinit new file mode 100644 index 00000000..4f4b5c02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/optimising.cinit @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options +2. striping + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + +The current standard for cinit is: (see CFLAGS in the Makefile). + + +2. striping + +With strip(1) you can remove specific sections of object files. +You have to find out, which ones you can remove safely +(for instance with objdump(1)). + +The current standard for cinit is: (see STRIP in the Makefile) diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/porting.to.other.os b/software/cinit/browse_source/cinit-0.2.1/doc/porting.to.other.os new file mode 100644 index 00000000..65fdc07b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will perhaps become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/problems b/software/cinit/browse_source/cinit-0.2.1/doc/problems new file mode 100644 index 00000000..a3440a3a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/problems @@ -0,0 +1,9 @@ +fsck: + returns non-zero if it repaired something. + You have to wrap it into a shell-script :-( + + #!/bin/sh + fsck $@ + [ $? -le 1 ] && exit 0 + exit 1 + diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/profile.support b/software/cinit/browse_source/cinit-0.2.1/doc/profile.support new file mode 100644 index 00000000..7bc607b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/profile.support @@ -0,0 +1,72 @@ +-------------------------------------------------------------------------------- +Profiles, +Nico Schottelius, 2005-06-04 +-------------------------------------------------------------------------------- + +1. What are profiles? +2. How to use profiles? +3. How to configure profiles? +4. Some examples + + +1. What are profiles? + +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +2. How to use profiles? + +Simply pass 'cprofile:PROFILENAME' (like cprofile:home) to cinit. +How to pass argumenents to cinit? Under Linux the init-system +gets the kernel arguments (see linux.kernel.eats.arguments) as arguments. +So you can use + + kernel /usr/src/linux/vmlinuz cprofile:work (grub1,grub2) + append="cprofile:work" (LILO,yaboot) + +Other Unices should work like Linux, please consult your local +documentation. + + +3. How to configure profiles? + +It's very simple: Normally cinit would call /etc/cinit/init as +primary service and solve all dependencies. If you pass +cprofile=wireless to it, cinit will start /etc/cinit/wireless as +primary service instead. + + [Note: /etc/cinit/yourprofile is the service that will be started. + You need/should/must NOT create /etc/cinit/yourprofile/init!] + +So the only thing you have to do is to create a service directory +below /etc/cinit with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/init; tar c . | (mkdir ../yp; cd ../yp; tar x ) + +That's it! + + +4. Some examples + +Here are some examples we found in #cLinux: + + profile name what it does + + musibox only start mp3blaster + terminal start only minicom, which opens the serial line + net-terminal start a respawning shell script, which starts + ssh to the selected host + video start X+mplayer, which plays the dvd/cdrom + wireless What to start when beeing in an unknown wlan + home/work selected services (nfs, ip, ...) for home or work + diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/removing.zombies b/software/cinit/browse_source/cinit-0.2.1/doc/removing.zombies new file mode 100644 index 00000000..9527e652 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + cinit in general will keep the behaviour of reaping the vestiges, + which broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/replacing.init b/software/cinit/browse_source/cinit-0.2.1/doc/replacing.init new file mode 100644 index 00000000..2858c56c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/replacing.init @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and link, move or copy cinit to init (ln -s /sbin/cinit /sbin/init), reboot. + +That's everything in general, the biggest part will be to configuring cinit. + +See also doc/merging.other.initsystems. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/security b/software/cinit/browse_source/cinit-0.2.1/doc/security new file mode 100644 index 00000000..f1dac591 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/security @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation, which will not accept connect() +by others than root. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console then! + +For extra parnoid settings you can do the following: + + ei # chmod 700 /etc/cinit/tmp/coala + ei # chown root:root /etc/cinit/tmp/coala diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/testing.cinit.in.uml b/software/cinit/browse_source/cinit-0.2.1/doc/testing.cinit.in.uml new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/testing.cinit.in.uml @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/thoughts.closed b/software/cinit/browse_source/cinit-0.2.1/doc/thoughts.closed new file mode 100644 index 00000000..91a8e080 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/thoughts.closed @@ -0,0 +1,52 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c + +7. Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. As this is not needed + currently, it's not implemented. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/updating.cinit b/software/cinit/browse_source/cinit-0.2.1/doc/updating.cinit new file mode 100644 index 00000000..fc0d3fef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/updating.cinit @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. call cservice -u thilo (if you have cinit-0.1 or later) + + For older versions: + + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything running and restart as if you would just + have booted. diff --git a/software/cinit/browse_source/cinit-0.2.1/doc/using.rescue b/software/cinit/browse_source/cinit-0.2.1/doc/using.rescue new file mode 100644 index 00000000..f58ff512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/doc/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user"). + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.2.1/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.2.1/generic/mini_printf.c new file mode 100644 index 00000000..91f136c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/generic/mini_printf.c @@ -0,0 +1,22 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * print string + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + size_t length = 0; + + p = str; + while ( *p != '\0') { + ++length; + ++p; + } + write(fd,str,length); + /* \n is put by outside function */ + /* write(fd,"\n",1); */ +} diff --git a/software/cinit/browse_source/cinit-0.2.1/generic/set_signals.c b/software/cinit/browse_source/cinit-0.2.1/generic/set_signals.c new file mode 100644 index 00000000..ee76c724 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/generic/set_signals.c @@ -0,0 +1,45 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +#include +#include +#include "cinit.h" + +void set_signals(int action) +{ + struct sigaction sa; + + if(action == ACT_SERV) { + sa.sa_handler=SIG_IGN; + } else { + sa.sa_handler=SIG_DFL; + } + sigaction(SIGINT,&sa,NULL); /* ignore ctr+c and ctr+alt+del */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + sigaction(SIGTTIN,&sa,NULL); + sigaction(SIGTTOU,&sa,NULL); + sigaction(SIGSTOP,&sa,NULL); + + sigaction(SIGQUIT,&sa,NULL); /* warm reboot??? */ + + /* cleaning dead processes - only process 1 */ + if(action == ACT_SERV) { + sa.sa_handler=sig_child; + } + /* server and client need sig_chld - really??? FIXME in exec_svc then! */ + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + /* signal handlers to do special things with: reboot */ + if(action == ACT_SERV) { + sa.sa_handler=sig_reboot; + } + sigaction(SIGUSR1,&sa,NULL); /* halt */ + sigaction(SIGUSR2,&sa,NULL); /* Rescue */ + sigaction(SIGTERM,&sa,NULL); /* poweroff */ + sigaction(SIGHUP,&sa,NULL); /* reboot */ + sigaction(SIGCONT,&sa,NULL); /* update */ + +} diff --git a/software/cinit/browse_source/cinit-0.2.1/generic/usage.c b/software/cinit/browse_source/cinit-0.2.1/generic/usage.c new file mode 100644 index 00000000..e434bcaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/generic/usage.c @@ -0,0 +1,19 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * usage: tell the world what we want - no capitalism + * part of cLinux/cinit + */ + +#include +#include "cinit.h" + +/*********************************************************************** + * usage: tell the user what's wrong and a help text + */ +void usage(char *banner, char *text) +{ + /* print banner + error message */ + mini_printf(banner,1); + mini_printf(text,1); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.2.1/serv/cinit.c b/software/cinit/browse_source/cinit-0.2.1/serv/cinit.c new file mode 100644 index 00000000..9c1565ab --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/serv/cinit.c @@ -0,0 +1,136 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +/* mount */ +#include + +#include +#include + +#include /* poll */ + +#include "cinit.h" + +/* global variables */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * the main procedure + */ + +int main(int argc, char **argv) +{ + struct sockaddr_un addr; + struct pollfd plist; + char *initdir; + + list = NULL; /* list of services is empty currently */ + initdir = CINIT_INIT; /* default init dir */ + + cpid = getpid(); + if(cpid != 1) { + usage(MSG_USAGE,MSG_NOT_ONE); + } + + set_signals(ACT_SERV); /* set signal handlers */ + + /* read args, profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* tell the world we are there FIXME: do we really need three calls? */ + mini_printf(MSG_CINIT,1); mini_printf(initdir,1); mini_printf("\n",1); + + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.2.1/serv/list.c b/software/cinit/browse_source/cinit-0.2.1/serv/list.c new file mode 100644 index 00000000..f7107d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/serv/list.c @@ -0,0 +1,104 @@ +/* (c) 2005 by Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * list handling: the processes cinit will execute/executed + * part of cinit + * changed some formatting, Nico Schottelius + */ + +#include +#include +#include "cinit.h" + +int list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc( sizeof(struct listitem) ); + + if( tmp == NULL ) { + return 0; + } + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members,add this one */ + tmp->after = list; /* begin after the new element */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if( list == NULL ) { /* think positive */ + return NULL; + } else { + tmp = list; + } + + do { + if( !strcmp(path, tmp->abs_path) ) { + return tmp; + } + tmp = tmp->before; + } while(tmp != list); + + return NULL; +} + +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if( tmp == NULL ) { + return 0; + } + + tmp->after->before = tmp->before; + tmp->before->after = tmp->after; + free(tmp->abs_path); + free(tmp); + return 1; +} + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + +// D_PRINTF(path); + + tmp = list_search(path); + if( tmp == NULL ) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.2.1/serv/panic.c b/software/cinit/browse_source/cinit-0.2.1/serv/panic.c new file mode 100644 index 00000000..2f276fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/serv/panic.c @@ -0,0 +1,19 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * panic: if cinit fails, start sulogin + * part of cinit + */ + +#include "cinit.h" +#include + +void panic(void) +{ + char *nargv[2]; + + nargv[0] = SULOGIN; + nargv[1] = NULL; + + execv(SULOGIN,nargv); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.2.1/serv/run_init_svc.c b/software/cinit/browse_source/cinit-0.2.1/serv/run_init_svc.c new file mode 100644 index 00000000..ad5378f0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/serv/run_init_svc.c @@ -0,0 +1,43 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run initial service + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + close(sock); + set_signals(ACT_CLIENT); + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ?*/ + if ( run_svc(cinit_svc) >= RT_SUCCESS ) + _exit(0); + else + _exit(1); + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.2.1/serv/sig_child.c b/software/cinit/browse_source/cinit-0.2.1/serv/sig_child.c new file mode 100644 index 00000000..c8368b2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/serv/sig_child.c @@ -0,0 +1,21 @@ +/* cinit + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * We are called, when a child dies. Remove it. + */ + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_child + * collect the children + */ + +void sig_child(int signal) +{ + do { + signal = waitpid(-1,&signal,WNOHANG); + } while( signal > 0); +} diff --git a/software/cinit/browse_source/cinit-0.2.1/serv/sig_reboot.c b/software/cinit/browse_source/cinit-0.2.1/serv/sig_reboot.c new file mode 100644 index 00000000..9ef1e663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/serv/sig_reboot.c @@ -0,0 +1,147 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * We are called by signal to reboot + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void sig_reboot(int signal) +{ + struct listitem *tmp; + struct timespec ts; + char **cmd; + int i; + + /* Let's disappear, we don't care about clients anymore */ + close(sock); + /********* first SIGTERM the respawning processes **********/ + tmp = list->before; + do { + /* kill service watcher, which will kill processes itself */ + if( tmp->status == ST_RESPAWN) { + kill(tmp->pid,SIGTERM); + } + tmp = tmp->before; + } while( tmp != list ); + + /********* now wait for the respawn watchers to return *****/ + tmp = list->before; + do { + if( tmp->status == ST_RESPAWN) { + /* wait until the respawn watcher terminated */ + waitpid(tmp->pid,&i,0); + } + + /* execute shutdown service FIXME: parallelize that?*/ + exec_svc(tmp->abs_path,CMD_STOP_SVC); + tmp = tmp->before; + } while( tmp != list ); + + /* now: all services are down, let's kill all other processes */ + if( kill(-1,SIGTERM) == -1) { + perror(MSG_TERMKILL); + } + + ts.tv_sec = SLEEP_KILL; /* defined in conf/sleep_kill */ + nanosleep(&ts,NULL); + + if( kill(-1,SIGKILL) == -1) { + perror(MSG_KILLBILL); + } + D_PRINTF("SIGKILL GESENDET"); + + /* release tmp */ + if(umount(CINIT_TMNT) == -1) { + perror(CINIT_TMNT); + } + +/* THIS IS FUCKING UNCLEAN AND SHOULD BE CLEANED UP VERY MUCH!!! */ +#define CMD_CNT 4 + +#define UMOUNT_CMD "/bin/umount" +#define UMOUNT_ARG1 "-arfd" + +#define MOUNT_CMD "/bin/mount" +#define MOUNT_ARG1 "-o" +#define MOUNT_ARG2 "remount,ro" +#define MOUNT_ARG3 "/" + +#define RESCUE_CMD "/bin/sh" + + /* now: we are completley alone. umount everything, go to bed */ + cmd = (char **) malloc( (CMD_CNT+1) * ( sizeof (char*) ) ); + if(cmd) { + /* /bin/umount -a */ + cmd[0] = UMOUNT_CMD; + cmd[1] = UMOUNT_ARG1; + cmd[2] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + + /* /bin/mount -o remount,ro / */ + cmd[0] = MOUNT_CMD; + cmd[1] = MOUNT_ARG1; + cmd[2] = MOUNT_ARG2; + cmd[3] = MOUNT_ARG3; + cmd[4] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + } else { + _exit(1); + } + + switch(signal) { + case SIGTERM: /* power off */ + LOG(MSG_POWER_OFF); + reboot(RB_POWER_OFF); + break; + case SIGHUP: /* reboot */ + LOG(MSG_REBOOT); + reboot(RB_AUTOBOOT); + break; + case SIGUSR1: /* halt */ + LOG(MSG_HALT); + reboot(RB_HALT_SYSTEM); + break; + case SIGUSR2: /* rescue - destroy ourself */ + LOG(MSG_RESCUE); + cmd[0] = RESCUE_CMD; + cmd[1] = NULL; + execv(cmd[0],cmd); + panic(); + break; + case SIGCONT: /* update */ + LOG(MSG_UPDATE); + cmd[0] = CINIT_BIN; + cmd[1] = NULL; + execv(cmd[0],cmd); + panic(); + break; + } + + /* do not exit, Linux does that for us */ +} diff --git a/software/cinit/browse_source/cinit-0.2.1/serv/sigio.c b/software/cinit/browse_source/cinit-0.2.1/serv/sigio.c new file mode 100644 index 00000000..4ce3b0bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/serv/sigio.c @@ -0,0 +1,142 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int socket) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + while ( + (nsock = accept(socket,(struct sockaddr *) NULL, (socklen_t *) NULL) ) + != -1) { + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = ST_FAIL; + } else { + status = RT_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP (RESPAWNING) *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; + list_tmp = list_search(buf); + + /* FIXME: + - handle off + - handle switching off once services + - perhaps remove old cinit code, which has respawing childs + */ + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + /* kill cinit watcher, which kills the real process */ + kill(list_tmp->pid,SIGTERM); + + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + } + + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + status = ST_FAIL; + } else { /* return status */ + status = list_tmp->status; + } + } else { /* no service there */ + status = RT_NOTEXIST; + } + do_result(nsock,&status); + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + SERVICE_LOG(buf,MSG_ERR_MODIFY); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + case CMD_UPDATE: + sig_reboot(SIGCONT); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } + + /* hier kommt man haeufiger herein, interrupted system call */ + if( errno != EAGAIN && errno != EINTR) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } +} diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-17-19:03:48 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-17-19:03:48 new file mode 100644 index 00000000..e379e004 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-17-19:03:48 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 17 19:03 cinit +-rwx------ 1 nico users 46760 Jun 17 19:03 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-20-12:16:40 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-20-12:16:40 new file mode 100644 index 00000000..1f0c3325 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-20-12:16:40 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 20 12:16 cinit +-rwx------ 1 nico users 50860 Jun 20 12:16 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-20-15:16:31 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-20-15:16:31 new file mode 100644 index 00000000..75dc3e7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-20-15:16:31 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 15:16 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-20-16:29:28 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-20-16:29:28 new file mode 100644 index 00000000..1294bde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-20-16:29:28 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-20-16:29:50 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-20-16:29:50 new file mode 100644 index 00000000..69fe7490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-20-16:29:50 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 16:29 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-21-11:53:35 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-21-11:53:35 new file mode 100644 index 00000000..4a1e7b6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-21-11:53:35 @@ -0,0 +1,3 @@ +total 192 +-rwx------ 1 nico users 102039 Jun 21 11:53 cinit +-rwx------ 1 nico users 87871 Jun 21 11:53 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-07:33:11 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-07:33:11 new file mode 100644 index 00000000..e6c8ff14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-07:33:11 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47544 Jun 22 07:33 cinit +-rwx------ 1 nico users 46760 Jun 22 07:33 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-07:57:13 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-07:57:13 new file mode 100644 index 00000000..17161d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-07:57:13 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47536 Jun 22 07:57 cinit +-rwx------ 1 nico users 46760 Jun 22 07:57 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-08:08:40 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-08:08:40 new file mode 100644 index 00000000..770083f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-08:08:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47424 Jun 22 08:08 cinit +-rwx------ 1 nico users 46760 Jun 22 08:08 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-08:30:42 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-08:30:42 new file mode 100644 index 00000000..aa95fb3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-08:30:42 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47360 Jun 22 08:30 cinit +-rwx------ 1 nico users 46760 Jun 22 08:30 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-09:19:42 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-09:19:42 new file mode 100644 index 00000000..70c261bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-09:19:42 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 09:19 cinit +-rwx------ 1 nico users 50860 Jun 22 09:19 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-10:43:24 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-10:43:24 new file mode 100644 index 00000000..b8bc4076 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-10:43:24 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 10:43 cinit +-rwx------ 1 nico users 50860 Jun 22 10:43 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-12:42:57 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-12:42:57 new file mode 100644 index 00000000..c8119859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-12:42:57 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 22 12:42 cinit +-rwx------ 1 nico users 46760 Jun 22 12:42 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-13:52:41 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-13:52:41 new file mode 100644 index 00000000..793b92fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-13:52:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:52 cinit +-rwx------ 1 nico users 46760 Jun 22 13:52 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-13:59:40 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-13:59:40 new file mode 100644 index 00000000..d114c557 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-13:59:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:59 cinit +-rwx------ 1 nico users 46760 Jun 22 13:59 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-14:19:41 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-14:19:41 new file mode 100644 index 00000000..8d56882f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-14:19:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47640 Jun 22 14:19 cinit +-rwx------ 1 nico users 46760 Jun 22 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-14:37:18 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-14:37:18 new file mode 100644 index 00000000..b7c3e4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-22-14:37:18 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 22 14:37 cinit +-rwx------ 1 nico users 46760 Jun 22 14:37 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-23-06:22:23 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-23-06:22:23 new file mode 100644 index 00000000..9e38a5e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-23-06:22:23 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 23 06:22 cinit +-rwx------ 1 nico users 46760 Jun 23 06:22 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-24-17:53:55 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-24-17:53:55 new file mode 100644 index 00000000..3b750eaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-24-17:53:55 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:53 cinit +-rwx------ 1 nico users 46760 Jun 24 17:53 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-24-17:55:29 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-24-17:55:29 new file mode 100644 index 00000000..c30dcaf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-24-17:55:29 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:55 cinit +-rwx------ 1 nico users 46760 Jun 24 17:55 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-06-26-13:19:49 b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-26-13:19:49 new file mode 100644 index 00000000..a4de830b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-06-26-13:19:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 26 13:19 cinit +-rwx------ 1 nico users 50860 Jun 26 13:19 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:07:13 b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:07:13 new file mode 100644 index 00000000..e2c59ddf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:07:13 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:07 cinit +-rwx------ 1 nico users 50860 Jul 6 08:07 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:12:20 b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:12:20 new file mode 100644 index 00000000..e562350c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:12:20 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:12 cinit +-rwx------ 1 nico users 50860 Jul 6 08:12 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:13:39 b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:13:39 new file mode 100644 index 00000000..32fd8268 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:13:39 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:13 cinit +-rwx------ 1 nico users 50860 Jul 6 08:13 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:14:19 b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:14:19 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:14:19 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:14:59 b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:14:59 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:14:59 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:15:56 b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:15:56 new file mode 100644 index 00000000..cf26e6f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-08:15:56 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:15 cinit +-rwx------ 1 nico users 50860 Jul 6 08:15 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-10:12:22 b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-10:12:22 new file mode 100644 index 00000000..d5f0f2c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-10:12:22 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:08 cinit +-rwx------ 1 nico users 50860 Jul 6 10:08 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-10:12:31 b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-10:12:31 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-10:12:31 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-10:12:49 b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-10:12:49 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-07-06-10:12:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-08-29-21:21:34 b/software/cinit/browse_source/cinit-0.2.1/size/2005-08-29-21:21:34 new file mode 100644 index 00000000..e651a8ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-08-29-21:21:34 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 root root 444508 2005-08-29 21:21 cinit +-rwx------ 1 root root 440412 2005-08-29 21:21 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-08-29-23:50:55 b/software/cinit/browse_source/cinit-0.2.1/size/2005-08-29-23:50:55 new file mode 100644 index 00000000..a279aee3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-08-29-23:50:55 @@ -0,0 +1,3 @@ +insgesamt 856 +-rwx------ 1 nico nico 437564 2005-08-29 23:50 cinit +-rwx------ 1 nico nico 436316 2005-08-29 23:50 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-09-03-03:36:59 b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-03-03:36:59 new file mode 100644 index 00000000..01e555f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-03-03:36:59 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 nico nico 444508 2005-09-03 03:36 cinit +-rwx------ 1 nico nico 440412 2005-09-03 03:36 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-09-03-04:34:35 b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-03-04:34:35 new file mode 100644 index 00000000..1832930a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-03-04:34:35 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 04:34 cinit +-rwx------ 1 nico nico 440412 Sep 3 04:34 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-09-03-05:51:17 b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-03-05:51:17 new file mode 100644 index 00000000..4e465d06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-03-05:51:17 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 05:51 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:51 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-09-03-05:54:20 b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-03-05:54:20 new file mode 100644 index 00000000..9c040d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-03-05:54:20 @@ -0,0 +1,4 @@ +total 1300 +-rwx------ 1 nico nico 440412 Sep 3 05:54 ccontrol +-rwx------ 1 nico nico 444508 Sep 3 05:54 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:54 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-09-03-09:01:59 b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-03-09:01:59 new file mode 100644 index 00000000..880422a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-03-09:01:59 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 3 09:01 cinit +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-09-05-19:41:12 b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-05-19:41:12 new file mode 100644 index 00000000..0f07d86e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-05-19:41:12 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 root root 440412 2005-09-05 19:41 ccontrol +-rwx------ 1 root root 444508 2005-09-05 19:41 cinit +-rwx------ 1 root root 440412 2005-09-05 19:41 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-09-05-19:50:35 b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-05-19:50:35 new file mode 100644 index 00000000..32ff19fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-05-19:50:35 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 5 19:50 cinit +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-09-24-01:42:38 b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-24-01:42:38 new file mode 100644 index 00000000..0da6126e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-24-01:42:38 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-09-24 01:42 ccontrol +-rwx------ 1 nico nico 437628 2005-09-24 01:42 cinit +-rwx------ 1 nico nico 436316 2005-09-24 01:42 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-09-30-22:50:50 b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-30-22:50:50 new file mode 100644 index 00000000..0d510174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-30-22:50:50 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 22:50 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 22:50 cinit +-rwx------ 1 nico nico 436316 2005-09-30 22:50 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-09-30-23:06:39 b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-30-23:06:39 new file mode 100644 index 00000000..23450914 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-09-30-23:06:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 23:06 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 23:06 cinit +-rwx------ 1 nico nico 436316 2005-09-30 23:06 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-10-01-22:09:13 b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-01-22:09:13 new file mode 100644 index 00000000..a62b9eb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-01-22:09:13 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-10-01 22:09 ccontrol +-rwx------ 1 nico nico 437308 2005-10-01 22:09 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:09 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-10-01-22:17:39 b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-01-22:17:39 new file mode 100644 index 00000000..b1d8b11b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-01-22:17:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-01 22:17 ccontrol +-rwx------ 1 nico nico 437532 2005-10-01 22:17 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:17 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-10-02-11:12:29 b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-02-11:12:29 new file mode 100644 index 00000000..e5f7b13d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-02-11:12:29 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:12 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:12 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-10-02-11:13:35 b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-02-11:13:35 new file mode 100644 index 00000000..d7c14471 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-02-11:13:35 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-10-02-11:13:43 b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-02-11:13:43 new file mode 100644 index 00000000..1711d01a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-02-11:13:43 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 11:13 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 436316 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-10-02-16:00:24 b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-02-16:00:24 new file mode 100644 index 00000000..ab23228c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-02-16:00:24 @@ -0,0 +1,4 @@ +total 1284 +-rwx------ 1 nico nico 436316 Oct 2 16:00 ccontrol +-rwx------ 1 nico nico 437884 Oct 2 16:00 cinit +-rwx------ 1 nico nico 436316 Oct 2 16:00 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-10-02-23:17:11 b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-02-23:17:11 new file mode 100644 index 00000000..92041cd9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-02-23:17:11 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 23:17 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 23:17 cinit +-rwx------ 1 nico nico 436316 2005-10-02 23:17 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-10-03-00:54:39 b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-03-00:54:39 new file mode 100644 index 00000000..df47a057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-03-00:54:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:54 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:54 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:54 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-10-03-00:56:29 b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-03-00:56:29 new file mode 100644 index 00000000..08db7fec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-03-00:56:29 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:56 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:56 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:56 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-10-13-09:55:52 b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-13-09:55:52 new file mode 100644 index 00000000..d54a7ff4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-13-09:55:52 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:55 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:55 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:55 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-10-13-09:57:11 b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-13-09:57:11 new file mode 100644 index 00000000..3b1af9ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-13-09:57:11 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:57 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:57 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:57 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-10-13-10:07:28 b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-13-10:07:28 new file mode 100644 index 00000000..58d25315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-13-10:07:28 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 10:07 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 10:07 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 10:07 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-10-15-15:26:52 b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-15-15:26:52 new file mode 100644 index 00000000..a88291e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-15-15:26:52 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 root root 436316 2005-10-15 15:26 ccontrol +-rwx------ 1 root root 437916 2005-10-15 15:26 cinit +-rwx------ 1 root root 436316 2005-10-15 15:26 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/size/2005-10-15-21:23:56 b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-15-21:23:56 new file mode 100644 index 00000000..43a4504d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/size/2005-10-15-21:23:56 @@ -0,0 +1,4 @@ +total 36 +-rwx------ 1 nico nico 9148 Oct 15 21:23 ccontrol +-rwx------ 1 nico nico 11872 Oct 15 21:23 cinit +-rwx------ 1 nico nico 9768 Oct 15 21:23 cservice diff --git a/software/cinit/browse_source/cinit-0.2.1/util/README b/software/cinit/browse_source/cinit-0.2.1/util/README new file mode 100644 index 00000000..782cdc8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/util/README @@ -0,0 +1,2 @@ +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.2.1/util/ccontrol.c b/software/cinit/browse_source/cinit-0.2.1/util/ccontrol.c new file mode 100644 index 00000000..f4876eba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/util/ccontrol.c @@ -0,0 +1,97 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * ccontrol: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +/* mount */ +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define USAGE_TEXT "ccontrol - control cinit\n\n" \ + "Usage:\n\nccontrol -[phurs]\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-u\t- (update) Reboot (warm) and update cinit\n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n\n" \ + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * ccontrol: control cinit + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 2) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + + switch(argv[1][1]) { + case 'p': /* power off */ + LOG(MSG_POWER_OFF); + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + LOG(MSG_HALT); + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + LOG(MSG_REBOOT); + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + LOG(MSG_RESCUE); + msg_reboot(CMD_RESCUE); + break; + + case 'u': /* update */ + LOG(MSG_UPDATE); + msg_reboot(CMD_UPDATE); + break; + + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* cinit-0.2 return codes implemented - nothing changed*/ diff --git a/software/cinit/browse_source/cinit-0.2.1/util/cservice.c b/software/cinit/browse_source/cinit-0.2.1/util/cservice.c new file mode 100644 index 00000000..3cb6828a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/util/cservice.c @@ -0,0 +1,162 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * cservice: control cinit services + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +/* mount */ +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit services + */ + +#define USAGE_TEXT "cservice - start and stop cinit services\n\n" \ + "cservice -[ear] \n" \ + "\t-e\t- (ein,on ) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n" \ + "\t-r\t- (restart) stop and start a service\n" + +/*********************************************************************** + * fuzzy_path: allow other kinds of path specification .. + */ +char *fuzzy_path(char *rpath) +{ + char pathtmp[PATH_MAX]; + char *re = NULL; + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return NULL; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return NULL; + } + + re = malloc( strlen(pathtmp) + 1); + + if(re != NULL) { + strcpy(re,pathtmp); + } + + return re; +} + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + char *real_name = NULL; + + /* argv */ + if(argc != 3) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + if(strlen(argv[1]) != 2) C_USAGE(MSG_ERR_ARGS_LEN); + + real_name = fuzzy_path(argv[2]); + switch(argv[1][1]) { + case 'a': /* aus */ + case 'r': /* restart */ + switch( msg_svc_on_off(real_name,CMD_STOP_SVC) ) { + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_OFF: + SERVICE_LOG(real_name,LOG_SVC_STOPED); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + /* FIX THIS AFTER cinit-0.2 */ + case RT_TMPNOW: + case RT_ERR: + case RT_SVC_FAILED: + case RT_UNSPEC: + case RT_SUCCESS: + case ST_NEED_FAIL: + case ST_TMP: + case ST_ONCE: + case RT_NOTEXIST: + case ST_RESPAWN: +// SERVICE_LOG(real_name,"Ein bekanntest ding"); + break; +/* default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; */ + } + if( argv[1][1] == 'a') break; /* only continue if restarting */ + + case 'e': /* ein */ + switch (run_svc(real_name)) { /* run_svc fuzzys itself */ + case RT_NOTEXIST: + SERVICE_LOG(real_name,LOG_SVC_NOTEXIST); + break; + case RT_SVC_FAILED: + SERVICE_LOG(real_name,LOG_SVC_FAILED); + break; + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_ONCE: + SERVICE_LOG(real_name,LOG_SVC_ONCE); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + case ST_RESPAWN: + SERVICE_LOG(real_name,LOG_SVC_RESPAWN); + break; + case ST_NEED_FAIL: + SERVICE_LOG(real_name,LOG_NEED_FAIL); + break; + default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; + } + break; + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* uses cinit-0.2 return code style */ diff --git a/software/cinit/browse_source/cinit-0.2.1/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.2.1/util/msg_reboot.c new file mode 100644 index 00000000..efe78ec6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2.1/util/msg_reboot.c @@ -0,0 +1,21 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + if(!begin_msg(cmd)) return 0; + close(sock); + return 1; +} +/* clean for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.2/ b/software/cinit/browse_source/cinit-0.2/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.2/.exclude b/software/cinit/browse_source/cinit-0.2/.exclude new file mode 100644 index 00000000..1a2d31e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/.exclude @@ -0,0 +1,2 @@ +tmp +.git diff --git a/software/cinit/browse_source/cinit-0.2/.gitignore b/software/cinit/browse_source/cinit-0.2/.gitignore new file mode 100644 index 00000000..68048ad3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/.gitignore @@ -0,0 +1,10 @@ +MT +*.o +*.a +ccontrol +cservice +cinit +*0? +config.h +ddoc +tmp diff --git a/software/cinit/browse_source/cinit-0.2/CHANGES b/software/cinit/browse_source/cinit-0.2/CHANGES new file mode 100644 index 00000000..a0a33785 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/CHANGES @@ -0,0 +1,23 @@ +cinit-0.2: +- Much more verbose error reporting +- You can now also disable 'once ran' services, +- You can restart services with csevice -r +- Online speech in German is available +- C_DELAY support - variable delay for sending SIGKILL after SIGTERM +- First /etc/csys configuration example (wasserstoff) is available +- a Mailing list was created +- Added tools to analyze cinit configuration + (cinit-vis.pl, cinit.graph.text.c) +- Added tools to import and export configuration to XML + (make.cconfig.from.xml.rb,cconfig.graph.xml.rb) +- Removed unecessary signalling +- Added many helper scripts to install services (cinit.install.service*) +- Fixed many small bugs in old helper scripts (cinit.add.getty, cinit.get-conf, ...) +- Added ccontrol, which allows to control cinit +- Added update (-u) and warm reboot function (-w) via ccontrol +- Stripped cservice, which now "only" controls services +- Removed swapoff from cinit code, should be handled by off +- Much better error and processing descriptions +- A bit more verbose reporting +- Restructured run_svc, now with better error detection +- Removed Kernel panic, when halting system diff --git a/software/cinit/browse_source/cinit-0.2/COPYING b/software/cinit/browse_source/cinit-0.2/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.2/CREDITS b/software/cinit/browse_source/cinit-0.2/CREDITS new file mode 100644 index 00000000..b009a48c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/CREDITS @@ -0,0 +1,23 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: 2005-09-25) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete + * providing cinit-vs.pl to visualize the cinit-tree +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) +Sandro Koechli + * testing, testing and testing cinit and cinit documentation +Marcus Wagner + * building and maintaining the Debian package +Peter Portmann + * testing cinit and documentation, writing cinit.graph.text in C, other coding diff --git a/software/cinit/browse_source/cinit-0.2/Changelog b/software/cinit/browse_source/cinit-0.2/Changelog new file mode 100644 index 00000000..0fbf76f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/Changelog @@ -0,0 +1,10 @@ +Mo Okt 3 00:19:40 CEST 2005 + *Changelog can now be found in git database (cg-log) +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.2/Makefile b/software/cinit/browse_source/cinit-0.2/Makefile new file mode 100644 index 00000000..a2f373af --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/Makefile @@ -0,0 +1,106 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +include Makefile.include + +# directories and files +DDOC=ddoc +SDIRS=bin client conf comm doc generic serv util +CDIRS=contrib+tools +FILES=Changelog Makefile README TODO cinit.h + +# objects +SERV=serv/sigio.o serv/cinit.o serv/list.o \ + serv/run_init_svc.o serv/panic.o serv/sig_reboot.o \ + serv/sig_child.o + +CLIENT=client/msg_svc_on_off.o client/msg_change_status.o client/run_svc.o \ + client/exec_svc.o client/respawn_svc.o client/run_run_svcs.o \ + client/connect_sock.o client/begin_msg.o client/sig_terminate.o + +COMMUNICATION=comm/do_change_status.o comm/do_result.o comm/do_svc_name.o + +BOTH=generic/set_signals.o generic/mini_printf.o generic/usage.o + +OBJ=$(SERV) $(CLIENT) $(BOTH) $(COMMUNICATION) + +CSVC_OBJ=util/cservice.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +CCO_OBJ=util/ccontrol.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +# DO NOT CHANGE THIS. +SBIN=sbin +CINIT_BIN=$(SBIN)/cinit + +# targets +warn: + @cat doc/.buildwarn + +all:: cinit cservice ccontrol sizecheck docs + +cinit: $(CINIT_BIN) + +docs: $(DDOC) bin/cdoc-man.sh + ./bin/cdoc-man.sh doc/cinit-doc > $(DDOC)/cinit.8 + ./bin/cdoc-man.sh doc/cservice-doc > $(DDOC)/cservice.8 + +$(DDOC): + mkdir $(DDOC) + +$(CSVC_OBJ) $(OBJ): config.h + +$(CINIT_BIN): $(SBIN) $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +$(SBIN): + mkdir $(SBIN) + +sizecheck: cinit cservice + FILE="size/`date +%Y-%m-%d-%T`"; ls -l sbin/ > $$FILE; cat $$FILE + @echo -n "Source size (in KiB): " + @du -s $(SDIRS) | awk '{ sum+=$$1 } END { print sum }' +# @du -s bin client comm conf doc generic serv | awk '{ sum+=$1 } END { print sum }' + +clean:: + rm -f *.o */*.o sbin/* config.h ddoc/* + +config.h: conf/* + ./bin/cinit.mkheader > config.h + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +ccontrol: $(SBIN)/ccontrol + +$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) + $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ + $(STRIP) $@ + +install:: install-dir cinit cservice ccontrol + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + +all install clean:: + @for subdir in $(CDIRS); do \ + echo "Making $@ in $$subdir"; \ + (cd $$subdir && $(MAKE) $(MAKEFLAGS) $@) \ + || exit 1;\ + done; diff --git a/software/cinit/browse_source/cinit-0.2/Makefile.include b/software/cinit/browse_source/cinit-0.2/Makefile.include new file mode 100644 index 00000000..fe1813c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/Makefile.include @@ -0,0 +1,24 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +OPTIMIZE=-Werror +#DEBUG=-g -DDEBUG +OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! - but not the other programs! +CINIT_LDFLAGS=-static + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. +LD=gcc +STRIP=strip -R .comment -R .note diff --git a/software/cinit/browse_source/cinit-0.2/README b/software/cinit/browse_source/cinit-0.2/README new file mode 100644 index 00000000..27f07c12 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/README @@ -0,0 +1,110 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.2/TODO b/software/cinit/browse_source/cinit-0.2/TODO new file mode 100644 index 00000000..5c98eb1a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/TODO @@ -0,0 +1,112 @@ +- print service name or cinit: before _everything_ WE print + +TESTING: + - does cinit eat zombies? + - is the reporting ok? + - does cservice and ccontrol what's expected? + +# cinit.create.empty.service: can only be started from the bin directory + +- compile cinit static and other tools dynamically per default + +- Fix Switching services off !! +- Remove RUN_RUN_SVCs, move code to run_svc so one can determine which + services failed? + --> sequentieller ablauf! + --> parallel ablauf, struct-array mit namen und ergebnis? + --> for dep in deps/*; do fork(run_svc() ); done + -----> while(any_is_running) { sleep } + -------> array durchsuchen, ergebnis nutzen. + - ueberpruefen von wo aus run_svc() aufgerufen wird + +- Fix SIGCHILD problem: + - exec_svc wants to waitpid() itself, so SIG_CHILD makes problems + - respawn_svc: does that need to act on SIGCHLD if the master process + is still running? + - kill respawn -> sigchild cleans up, we do not get waitpid perhaps? +- remove umount code? +- remove zombies, but keep away from SIGCHILD problems +- remove mount /etc/cinit/tmp code + -> how to replace? +- fix bug in Makefile: linking happens twice +- do not kill respawing service, if off exists +- ccontrol +- manpages +- Error codes when shutting down a service? +- Delay dokumentieren +- no_kill dokumentieren +- ddoc zuendefuehren + +- remove umount, swapoff? +--> to services? + +- on.out, on.err, on.in? + -> reading/writing from/to files + +--> Wenn kein ReSPAWN und der Prozess beendet sich nicht, + dann haengt init! +- implement "no_kill" until cinit-0.2 or 0.3? + +Doku!!! + +-------------------------------------------------------------------------------- +- Source Logic issues + - remove FIXME entries (and what should be fixed, too) + - memset for timespecs? + - move umount, swapoff and remount to off of init? + -> cleanup sig_reboot.c + - run_svc: + o we have many strcat()s, perhaps save length of pathbuf and strncat at + pathtmp[strlen(pathbuf)] ? + - do we really need swapoff? +-------------------------------------------------------------------------------- +- Documentation + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml +-------------------------------------------------------------------------------- +Things I did not do and I don't know whether we have to care about: + +- Porting + - add porting code to other unices? + - like openssh guys do? + +- close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? +- logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? +-------------------------------------------------------------------------------- +[OLD BUGS] +- remove cinit watcher? + -> sig_child -> cycle through list? +- DOKU: what happens when a service does not terminate.... + und er als once drin ist +- MANPAGE! +- execve() fails -> no sleep!! +- multiple zombies sometimes - problemservices + -> zombies of respawn watchers are not caught! + -> sig_chld also therein + -> problematic due to wait for child +-doubled cinit instance + - nur einmal +- free() everything before starting child +- cservice! + - prozess nur einmal -> WARTET! cinit auch! +doku: + cservice einmal starten -> wartet auf ende + cint ersetzt init bei gentoo + an error occuerd-> verbose + multuicall probleme -> busysbox --> GIBT ES NICHT!! + ---> DOKU DAZU! mit links, doppelt links, aus test + ---> erklaeren, dass es unproblematisch ist! + +11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet + werden konnte. +11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0 + zurueckgeworfen. +11:09 < folken23> telmich: oder service allready started. diff --git a/software/cinit/browse_source/cinit-0.2/bin/cdoc-man.sh b/software/cinit/browse_source/cinit-0.2/bin/cdoc-man.sh new file mode 100644 index 00000000..fc1adde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cdoc-man.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Nico Schottelius +# Date: 21-Aug-2005 +# Last Modified: - +# + +set -e + +[ $# -ne 1 ] && exit 23 + +SRC=$1 + +cd "$SRC" + +# +# Title heading +# +echo .TH $(cat "meta/name" "meta/man_section" "meta/date") + +# +# Name +# +echo .SH NAME +echo $(cat meta/name) - $(cat meta/short_description) + +# +# Synopsis +# +echo .SH SYNOPSIS +echo $(cat path) $(cat parameters) + +# +# description +# +echo .SH DESCRIPTION +echo $(cat long_description) + +# +# availability +# +for section in availability examples "see also" author; do + if [ -f "$section" ]; then + echo .SH $section | tr '[a-z]' '[A-Z]' + cat "$section" + fi +done + +# +# files +# +if [ -f files ]; then + echo .SH FILES + cat files | sed 's/\(.*\)/.IP "\1" /' +fi + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.2/bin/cinit.add.dependency new file mode 100644 index 00000000..a47844fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.add.dependency @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or wants Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +case $DEP in + wants) DEP=$C_WANTS ;; + needs) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could some PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEST="${BASEDIR}/${SVC_A}/${DEP}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.2/bin/cinit.add.getty new file mode 100644 index 00000000..6b3a84df --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.add.getty @@ -0,0 +1,75 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# Date: 2005-05-24 (Last changed: 2005-08-07) +# + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | sort -n | tail -n 1) + +[ ! "$LAST_NUMBER" ] && LAST_NUMBER=0 + +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + */mgetty) + mygetty=$getty + params="38400 tty${NUMBER}" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +# check input +if [ ! "$mygetty" ]; then + read -p "Getty to use [$mygetty]: " rgetty +fi +if [ ! "$params" ]; then + read -p "Parameters to pass [$params]: " rparams +fi +if [ ! "$params" -o ! "$mygetty" ]; then + echo "Sorry, either getty or parameters are not supplied." + exit 23 +fi + +echo "Putting $mygetty $params into $DDIR ... " +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DDIR" +ln -s "$mygetty" "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.2/bin/cinit.create.empty.service new file mode 100644 index 00000000..365c4bc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.create.empty.service @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.get-confdir b/software/cinit/browse_source/cinit-0.2/bin/cinit.get-confdir new file mode 100644 index 00000000..38d8572d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.get-confdir @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# Date: 2005-05-24 (Last Changed: 2005-08-08) + +# try environment first +if [ "$CINIT_CONF_DIR" ]; then + CONFDIR=$CINIT_CONF_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +else + echo 'Did not find cinit configuration!' >&2 + echo "Please set the variable CINIT_CONF_DIR" >&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.binary new file mode 100644 index 00000000..026395c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.binary @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: - +# + + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice +"$INSTALL_PROG" sbin/ccontrol $DESTDIR/$PREFIX/sbin/ccontrol +"$INSTALL_PROG" bin/cinit.reboot $DESTDIR/$PREFIX/sbin/cinit.reboot +"$INSTALL_PROG" bin/cinit.shutdown $DESTDIR/$PREFIX/sbin/cinit.shutdown +"$INSTALL_PROG" bin/cinit.wait.for.daemon \ + $DESTDIR/$PREFIX/sbin/cinit.wait.for.daemon + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $DESTDIR/$PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi + +# install as /sbin/shutdown, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/shutdown ]; then + ln -s $DESTDIR/$PREFIX/sbin/cinit.shutdown $DESTDIR/$PREFIX/sbin/shutdown +fi + +# install as /sbin/reboot, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/reboot ]; then + ln -s $DESTDIR/$PREFIX/sbin/cinit.reboot $DESTDIR/$PREFIX/sbin/reboot +fi diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.dir new file mode 100644 index 00000000..5e16f690 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.dir @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/sbin" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.install.miniconf b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.miniconf new file mode 100644 index 00000000..45dcc632 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.miniconf @@ -0,0 +1,103 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: 2005-08-07 +# + + +. $(dirname $0)/cinit.read-conf + +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" +echo "" +echo "This will install a minimal cinit configuration." +echo "This configuration _SHOULD_ be able to run on _MOST_ systems." +echo "Still, it's highly EXPERIEMENTAL, use with CAUTION." +echo "" +echo "Please make sure, that" +echo " - you are using a journaling filesystem (fsck is not used)" +echo " - you have agetty, fgetty or mingetty installed" +echo " - you are runnig Linux 2.6 (sysfs is used)" +echo " - you have udev or static device nodes (you need /dev/tty*)" +echo " - getties will run on tty2-tty7, tty1 is used or logging" +echo "" +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" + +notosoftwarepatents="Please keep an eye on software patents, they are evil." +read -p "Do you really want to continue? [y/N] " notosoftwarepatents + +if [ "$notosoftwarepatents" = "y" -o "$notosoftwarepatents" = "Y" ]; then + echo "Let us try it ..." +else + echo 'Bye bye!' + exit 0 +fi + +set -e + +# Create basic layout +$(dirname $0)/cinit.install.standard-dirs + +# Install services: +# - mount root r/w +# - mount /proc +# - mount /sys +# - install getties on tty2-tty7 +# - add cleanup for /etc/mtab +# - add loopback device +# - init service + echo + +################################### mount ##################################### +# mount root read/write +$(dirname $0)/cinit.install.service.mount-root + +# - mount /proc +$(dirname $0)/cinit.install.service.mount-proc + +# - mount /sys +$(dirname $0)/cinit.install.service.mount-sys + +# mount needs everything below it +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/root" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/proc" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/sys" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" + +################################### getty ##################################### +# mount root read/write +# install getties +begin_getty=2 +end_getty=7 +i=$begin_getty + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" +while [ "$i" -le "$end_getty" ]; do + $(dirname $0)/cinit.add.getty + ln -sf "${DESTDIR}/${CINIT_DIR}/getty/$i" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" + i=$(($i+1)) +done + +################################### mtab ##################################### +# - add cleanup for /etc/mtab +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" +$(dirname $0)/cinit.install.service.cleanup-mtab +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" + +################################### lo ##################################### +# - add loopback device +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" +$(dirname $0)/cinit.install.service.network-lo +ln -sf "${DESTDIR}/${CINIT_DIR}/network/lo" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" + +# - init service + echo +# init depends on mount, getty -> everything from base-layout +$(dirname $0)/cinit.install.service.init +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" + +ln -sf "${DESTDIR}/${CINIT_DIR}/local-services/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/getty/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/network/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.cleanup-mtab b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.cleanup-mtab new file mode 100644 index 00000000..30a8dd48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.cleanup-mtab @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: cleanup mtab +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" +echo '#!/bin/sh' > "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'rm -f /etc/mtab' >>"${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'ln -s /proc/mounts /etc/mtab' \ + >> "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +chmod 0700 "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.init b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.init new file mode 100644 index 00000000..c3a10931 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.init @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +ln -sf /bin/echo "${DESTDIR}/${CINIT_DIR}/${C_INIT}/$C_ON" +echo '*** cinit initial service successfully started ***' \ + > "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.mount-proc b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.mount-proc new file mode 100644 index 00000000..024847a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.mount-proc @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /proc +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/proc" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/proc/$C_ON" +echo proc > "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo /proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.mount-root b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.mount-root new file mode 100644 index 00000000..a1bd56ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.mount-root @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount root r/w +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# mount root read/write +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/root" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/root/$C_ON" +echo -n > "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo -o >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo remount,rw >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo / >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.mount-sys b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.mount-sys new file mode 100644 index 00000000..8c8191aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.mount-sys @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /sys +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /sys +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/sys" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/sys/$C_ON" +echo sys > "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo sysfs >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo /sys >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.network-lo b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.network-lo new file mode 100644 index 00000000..45bff6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.service.network-lo @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: loopback device +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/lo" +ln -sf /sbin/ifconfig "${DESTDIR}/${CINIT_DIR}/network/lo/$C_ON" +echo lo > "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo 127.0.0.1/8 >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo up >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.install.standard-dirs b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.standard-dirs new file mode 100644 index 00000000..9829b68e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.standard-dirs @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install standard sub-configuration directories +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/getty" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/local-services" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/local-tuning" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/mount" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/network" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.mkheader b/software/cinit/browse_source/cinit-0.2/bin/cinit.mkheader new file mode 100644 index 00000000..e1f35d07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.mkheader @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric - no I didn't see an easier way + numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + + [ "$numeric" ] || value="\"$value\"" + + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.read-conf b/software/cinit/browse_source/cinit-0.2/bin/cinit.read-conf new file mode 100644 index 00000000..eb63e69a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.read-conf @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# + +CONFS=$($(dirname $0)/cinit.get-confdir)/* + +set -e + +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + if eval test -z \$$NAME; then + eval $NAME="$(head -n 1 $conf)" + eval export $NAME + fi +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.2/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.release b/software/cinit/browse_source/cinit-0.2/bin/cinit.release new file mode 100644 index 00000000..5bab3fc5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.release @@ -0,0 +1,22 @@ +#!/bin/sh +# Nico Schottelius +# Build release tar +# Date: Sat Oct 15 21:38:29 CEST 2005 + + +if [ $# -ne 2 ]; then + echo $(basename $0): source-dir version + exit 1 +fi + +DIR=$1 +VERSION=$2 + +if [ ! -d "$DIR" ]; then + echo "$DIR is not a directory" + exit 1 +fi + +( cd "$DIR" && make clean ) || exit 1 + +tar cvj -X $DIR/.exclude -f cinit-${VERSION}.tar.bz2 $DIR diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.2/bin/cinit.remove.getty new file mode 100644 index 00000000..4950eeed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.remove.getty @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + +if [ ! "$NUMBER" ]; then + echo "There is no getty to remove." + exit 1 +fi + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r "$DDIR" +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.2/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.2/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.2/bin/cinit.shutdown new file mode 100644 index 00000000..702c8a17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.shutdown @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# TODO: use ccontrol! +# 2005-05-24 (Last changed: 2005-06-18) + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -p|--power-off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " -s|--rescue: Rescue mode" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -p|--power-off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + -s|--rescue) kill -USR2 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.2/bin/cinit.uml.test new file mode 100644 index 00000000..f6ea7fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.1 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG umid=cinit$$ init=/sbin/cinit" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.2/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.2/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..7f027455 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 (Last Changed: 2005-06-17) + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +PIDFILE=$1; shift +DAEMON=$1; shift + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.2/cinit-conf/FRAMEWORK b/software/cinit/browse_source/cinit-0.2/cinit-conf/FRAMEWORK new file mode 100644 index 00000000..45421810 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/cinit-conf/FRAMEWORK @@ -0,0 +1,5 @@ +welcome-screen [optional] + | +display_standard_layout + | + ... diff --git a/software/cinit/browse_source/cinit-0.2/cinit-conf/bin/cinit-conf.sh b/software/cinit/browse_source/cinit-0.2/cinit-conf/bin/cinit-conf.sh new file mode 100644 index 00000000..0e29816e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/cinit-conf/bin/cinit-conf.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# Nico Schottelius +# Date: 2005-08-08 +# cinit-conf + +LIBEXEC=$(dirname $0)/../libexec/cinit-conf/ + +. ${LIBEXEC}/dialog-alias.sh + +dialog --calendar "Test" 0 0 18 12 1982 +dialog --checklist "Checktest" 0 0 0 item1 on item2 off item3 on +dialog --infobox "Infotext" 0 0 +dialog --inputbox "inputbox" 0 0 "vorgegebener text" +dialog --menu "menu" 0 0 0 tag1 item1 tag2 item2 bla blub +dialog --infobox "Infotext" 0 0 +dialog --msgbox "Infotext" 0 0 +dialog --radiolist "Infotext" 0 0 0 tag1 item1 on tag2 item2 off +dialog --textbox ~/.bashrc 0 0 +dialog --yesno "Ja oder nein?" 0 0 + +dialog --gauge "Checktest" 0 0 10 + +#dialog --inputmenu "Infotext" 0 0 0 tag1 item1 tag2 item2 bla blub diff --git a/software/cinit/browse_source/cinit-0.2/cinit-conf/libexec/cinit-conf/dialog-alias.sh b/software/cinit/browse_source/cinit-0.2/cinit-conf/libexec/cinit-conf/dialog-alias.sh new file mode 100644 index 00000000..89813726 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/cinit-conf/libexec/cinit-conf/dialog-alias.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# the cLinux project +# Created: 2004-12-25 +# Last-Modified: +# choose the correct dialog version + +if [ -z "$DISPLAY" ]; then + alias dialog="dialog --shadow --backtitle \"$full_version\"" +else + alias dialog="Xdialog --backtitle \"$full_version\"" +fi diff --git a/software/cinit/browse_source/cinit-0.2/cinit.h b/software/cinit/browse_source/cinit-0.2/cinit.h new file mode 100644 index 00000000..5aa5a0e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/cinit.h @@ -0,0 +1,191 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * header of cinit + */ + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* paths */ +#define C_ONARG C_ON C_PARAMS +#define C_OFFARG C_OFF C_PARAMS +#define C_ONENV C_ON C_ENV +#define C_OFFENV C_OFF C_ENV + +#define SLASH "/" +#define MSG_DP ": " + +#define CINIT_INIT CINIT_DIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK +#define CINIT_BIN PREFIX SLASH "sbin" SLASH "cinit" + +/* commands (maximum: 2^8 = 256, because we use a single byte)*/ +enum commands { CMD_START_SVC=1, + CMD_STOP_SVC, + CMD_CHG_STATUS, + CMD_RESCUE, + CMD_HALT, + CMD_REBOOT, + CMD_POWEROFF, + CMD_UPDATE, + CMD_WBOOT }; + +/* status of a service and return codes - errors and success */ +enum svc_status { RT_TMPNOW=1, /* now you are on it - only for clients */ + RT_ERR_COMM, /* communication failed */ + RT_ERR, /* service starting failed */ + RT_SVC_FAILED, /* tried earlier, service failed, won't retry */ + RT_UNSPEC, /* some kind of error, unspecified */ + RT_SUCCESS, /* successfully started: respawning or once */ + RT_NOTEXIST, /* service does not exist */ + + ST_NEED_FAIL, /* failed to start a need for this service */ + ST_FAIL, /* failed to start service */ + ST_OFF, /* service is off */ + + ST_TMP, /* currently working on it */ + ST_ONCE, /* executed once */ + ST_RESPAWN /* running and respawning */ + }; + + +/* actions for i/o handlers (see comm/do_*) */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* Messages to the outside */ +#define MSG_CINIT "cinit-0.2: Booting from " +#define MSG_NOT_ONE "cinit should not be started directly, but by your kernel." +#define MSG_USAGE "cinit: [cprofile:profile]\n" +#define MSG_ERR_OPEN "open" +#define MSG_ERR_READ "read" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_FORK "fork" +#define MSG_BIND "bind" +#define MSG_LISTEN "listen" +#define MSG_SOCKET "socket" +#define MSG_CONNECT "connect" +#define MSG_FCNTL "fcntl" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_TERMKILL "sigterm" +#define MSG_KILLBILL "sigkill" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" +#define MSG_ERR_DEPS "Too many dependencies" +#define MSG_ERR_ACCEPT "accept" +#define MSG_ERR_WAITPID "waitpid" +#define MSG_ERR_POLL "poll" +#define MSG_ERR_MODIFY "modify list failed" +#define MSG_ERR_COMM "Communication failed" + +#define MSG_ERR_LESS_ARGS "Too less arguments!" +#define MSG_ERR_BAD_ARGS "Wrong arguments / parameter" +#define MSG_ERR_ARGS_LEN "Wrong parameter length" + +#define LOG_SVC_STOPED "Service stoped" +#define LOG_SVC_ONCE "Started once" +#define LOG_SVC_RESPAWN "Respawns now" +#define LOG_SVC_FAIL "Service failed" +#define LOG_NEED_FAIL "One or more need failed" +#define LOG_SVC_FAILED "Service already failed, not starting." +#define LOG_SVC_NOTEXIST "Service does not exist" + +#define MSG_START_SVC "Starting " +#define MSG_STOP_SVC "Stoping " +#define MSG_EXEC_FAILED "Failed to execute " + +#define MSG_POWER_OFF "Powering off..." +#define MSG_HALT "Halting system ..." +#define MSG_REBOOT "Rebooting ..." +#define MSG_RESCUE "Switching to rescue mode ..." +#define MSG_UPDATE "Updating cinit ..." +#define MSG_HOT_REBOOT "Hot reboot in progress ..." + +#define MSG_SHOULD_NOT_HAPPEN "This should not happen, I do not know what todo!" + + +struct listitem { + char *abs_path; /* name of service */ + int status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + struct listitem *before; /* previous item */ + struct listitem *after; /* next item */ +}; + +/* variables */ +extern struct listitem *list; /* the process linked chain */ +extern int sock; /* current writing/reading socket */ +extern pid_t cpid; /* used by main() and reused be respaw_svc() */ + +/* functions (used by server and client) */ +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +void usage(char *banner, char *stext); + +int do_svc_name(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* server functions */ +int list_insert(char *path, int status); +struct listitem *list_search(char *path); +int list_delete(char *path); +int run_init_svc(char *cinit_svc); +void sigio(int socket); +void sig_reboot(int signal); +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +int msg_svc_on_off(char *svc, char action); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +int run_run_svcs(char *abspath); +pid_t exec_svc(char *abspath, int on); +pid_t respawn_svc(char *abspath); +int connect_sock(int socke); +char **read_file(char *file); +void sig_terminate(int signal); + +/* listing functions (server only) */ +int list_insert(char *path, int status); +struct listitem *list_search(char *path); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); + +/* util */ +int msg_reboot(char cmd); + +/* DEBUG */ +#ifdef DEBUG +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) +#endif + +/* macros */ +#define SERVICE_LOG(svc,message) { \ + mini_printf(svc,1); \ + mini_printf(MSG_DP,1); \ + mini_printf(message,1); \ + mini_printf("\n",1); \ +} +#define LOG(s) { \ + mini_printf(s,1); \ + mini_printf("\n",1); \ +} +#define P_START_SERVICE(name) { mini_printf(MSG_START_SVC,1); mini_printf(name,1); mini_printf("\n",1); } +#define P_EXEC_FAILED(name) { mini_printf(MSG_EXEC_FAILED,1); mini_printf(name,1); mini_printf("\n",1); } diff --git a/software/cinit/browse_source/cinit-0.2/client/README b/software/cinit/browse_source/cinit-0.2/client/README new file mode 100644 index 00000000..0a5b8d0c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/client/README @@ -0,0 +1,2 @@ +client/ + These sources are used by the children which are spawned by cinit. diff --git a/software/cinit/browse_source/cinit-0.2/client/begin_msg.c b/software/cinit/browse_source/cinit-0.2/client/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/client/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.2/client/connect_sock.c b/software/cinit/browse_source/cinit-0.2/client/connect_sock.c new file mode 100644 index 00000000..de161327 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/client/connect_sock.c @@ -0,0 +1,37 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.2/client/exec_svc.c b/software/cinit/browse_source/cinit-0.2/client/exec_svc.c new file mode 100644 index 00000000..0734a512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/client/exec_svc.c @@ -0,0 +1,264 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +pid_t exec_svc(char *abspath, int action) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + SERVICE_LOG(abspath,LOG_SVC_FAIL); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + P_EXEC_FAILED(nargv[0]); + perror(MSG_ERR_EXECVE); + /* FIXME: remove debug, remove double printing without loosing info */ + sleep(3); /* debug */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.2/client/msg_change_status.c b/software/cinit/browse_source/cinit-0.2/client/msg_change_status.c new file mode 100644 index 00000000..836a0fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/client/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* FIXME: change return code validation */ + +int msg_change_status(char *svc, char status, pid_t pid) +{ + if(!begin_msg(CMD_CHG_STATUS)) { + return RT_ERR_COMM; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.2/client/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.2/client/msg_svc_on_off.c new file mode 100644 index 00000000..02948f2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/client/msg_svc_on_off.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, char action) +{ + if(!begin_msg(action)) return RT_ERR_COMM; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return RT_ERR_COMM; + return (int) do_result(sock,NULL); +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.2/client/respawn_svc.c b/software/cinit/browse_source/cinit-0.2/client/respawn_svc.c new file mode 100644 index 00000000..2bef057f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/client/respawn_svc.c @@ -0,0 +1,100 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + D_PRINTF(abspath); + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, CMD_START_SVC) ) { + if(cpid != 0) { + D_PRINTF("sloefen"); + sleep(SLEEP_SVC); + D_PRINTF("Zuende geschlafen"); + } + } + } while( cpid ); /* cpid is reset by sig_terminate() */ + + /* FIXME: put most code of sig_terminate here, look for no_kill */ + + /* start off task */ + exec_svc(abspath,CMD_STOP_SVC); + + D_PRINTF("jetzt weg"); + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.2/client/run_run_svcs.c b/software/cinit/browse_source/cinit-0.2/client/run_run_svcs.c new file mode 100644 index 00000000..3ad819a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/client/run_run_svcs.c @@ -0,0 +1,85 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.2/client/run_svc.c b/software/cinit/browse_source/cinit-0.2/client/run_svc.c new file mode 100644 index 00000000..5ece19d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/client/run_svc.c @@ -0,0 +1,129 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp = use-it-for-all bitch*/ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* get current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.2/client/sig_terminate.c b/software/cinit/browse_source/cinit-0.2/client/sig_terminate.c new file mode 100644 index 00000000..9b23e349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/client/sig_terminate.c @@ -0,0 +1,60 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + /* FIXME: only send SIGTERM, if not_kill does not exist */ + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + status = kill(cpid,SIGKILL); + if( status == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + D_PRINTF("muesste weg sein"); + return; +} diff --git a/software/cinit/browse_source/cinit-0.2/comm/README b/software/cinit/browse_source/cinit-0.2/comm/README new file mode 100644 index 00000000..840c9742 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/comm/README @@ -0,0 +1,3 @@ +comm/ + The communication part of cinit. + The functions are used in client and in server code. diff --git a/software/cinit/browse_source/cinit-0.2/comm/do_change_status.c b/software/cinit/browse_source/cinit-0.2/comm/do_change_status.c new file mode 100644 index 00000000..94b9be76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/comm/do_change_status.c @@ -0,0 +1,70 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.2/comm/do_result.c b/software/cinit/browse_source/cinit-0.2/comm/do_result.c new file mode 100644 index 00000000..cb51161b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/comm/do_result.c @@ -0,0 +1,33 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return RT_ERR_COMM; + } + + return *value; +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.2/comm/do_svc_name.c b/software/cinit/browse_source/cinit-0.2/comm/do_svc_name.c new file mode 100644 index 00000000..d427365f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/comm/do_svc_name.c @@ -0,0 +1,51 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.2/conf/.README b/software/cinit/browse_source/cinit-0.2/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.2/conf/c_delay b/software/cinit/browse_source/cinit-0.2/conf/c_delay new file mode 100644 index 00000000..dc30f147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGTERM for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.2/conf/c_env b/software/cinit/browse_source/cinit-0.2/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.2/conf/c_halt b/software/cinit/browse_source/cinit-0.2/conf/c_halt new file mode 100644 index 00000000..bc062a2c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/c_halt @@ -0,0 +1,4 @@ +halt + +Name of the service we should start when 'halting' (system stop, but no +power off). diff --git a/software/cinit/browse_source/cinit-0.2/conf/c_init b/software/cinit/browse_source/cinit-0.2/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.2/conf/c_needs b/software/cinit/browse_source/cinit-0.2/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.2/conf/c_off b/software/cinit/browse_source/cinit-0.2/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.2/conf/c_on b/software/cinit/browse_source/cinit-0.2/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.2/conf/c_params b/software/cinit/browse_source/cinit-0.2/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.2/conf/c_poweroff b/software/cinit/browse_source/cinit-0.2/conf/c_poweroff new file mode 100644 index 00000000..273d4bec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/c_poweroff @@ -0,0 +1,3 @@ +poweroff + +Name of the service we should start, when system power-off is called. diff --git a/software/cinit/browse_source/cinit-0.2/conf/c_reboot b/software/cinit/browse_source/cinit-0.2/conf/c_reboot new file mode 100644 index 00000000..17937b4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/c_reboot @@ -0,0 +1,3 @@ +reboot + +Name of the service we should start on reboot. diff --git a/software/cinit/browse_source/cinit-0.2/conf/c_respawn b/software/cinit/browse_source/cinit-0.2/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.2/conf/c_sock b/software/cinit/browse_source/cinit-0.2/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.2/conf/c_tmp b/software/cinit/browse_source/cinit-0.2/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.2/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.2/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.2/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.2/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.2/conf/c_wants b/software/cinit/browse_source/cinit-0.2/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.2/conf/cinit_dir b/software/cinit/browse_source/cinit-0.2/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.2/conf/destdir b/software/cinit/browse_source/cinit-0.2/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.2/conf/getty_dir b/software/cinit/browse_source/cinit-0.2/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.2/conf/install_directory b/software/cinit/browse_source/cinit-0.2/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.2/conf/install_prog b/software/cinit/browse_source/cinit-0.2/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.2/conf/max_delay b/software/cinit/browse_source/cinit-0.2/conf/max_delay new file mode 100644 index 00000000..149fa16c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/max_delay @@ -0,0 +1,7 @@ +4 + +Maximum number of digits which may be in the delay file. +If there are more, the string "12345678901" will be cut to the +right length "1234567890". I don't think you'll ever need +a timeout greater 4 digits (9999 seconds are 166,65~ minutes, are +2 hours, 46 minutes and 39 seconds). See doc/configuring.cinit. diff --git a/software/cinit/browse_source/cinit-0.2/conf/max_deps b/software/cinit/browse_source/cinit-0.2/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.2/conf/prefix b/software/cinit/browse_source/cinit-0.2/conf/prefix new file mode 100644 index 00000000..6b90469f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/prefix @@ -0,0 +1,5 @@ + + +Where to install cinit. Normally this will be /, but you can put it anywhere. +The subdirectory 'sbin' under this prefix must be readable by the kernel. +This is normally either empty or "/". diff --git a/software/cinit/browse_source/cinit-0.2/conf/profile b/software/cinit/browse_source/cinit-0.2/conf/profile new file mode 100644 index 00000000..b9104bf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/profile @@ -0,0 +1,9 @@ +cprofile: + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile:" is the standard, as +the Linux kernel eats everything in the form 'var=parm'. +The old (pre cinit-0.1) option "cprofile=" should therefore +NOT be used. + +Under Linux you tell it the bootloader like grub or LILO. diff --git a/software/cinit/browse_source/cinit-0.2/conf/sleep_kill b/software/cinit/browse_source/cinit-0.2/conf/sleep_kill new file mode 100644 index 00000000..de1fd006 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/sleep_kill @@ -0,0 +1,5 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. diff --git a/software/cinit/browse_source/cinit-0.2/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.2/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.2/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.2/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.2/conf/sleep_svc b/software/cinit/browse_source/cinit-0.2/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.2/conf/sock_queue b/software/cinit/browse_source/cinit-0.2/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.2/conf/sulogin b/software/cinit/browse_source/cinit-0.2/conf/sulogin new file mode 100644 index 00000000..4f003994 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/conf/sulogin @@ -0,0 +1,4 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it only if we panic(). +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.2/contrib+tools/Makefile b/software/cinit/browse_source/cinit-0.2/contrib+tools/Makefile new file mode 100644 index 00000000..d9a9ab41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/contrib+tools/Makefile @@ -0,0 +1,69 @@ +# +# (c) 2005 Peter Portmann (pp at bluewin.ch) +# cinit/contrib+tools +# +# This script is written for the clinux-System and published +# under the terms of GPL 2.0 +# +# Version: 0.2 +# clean with a single command instead of two commands. +# +# ChangeLog: +# 0.1 initial version +# +# Todo: +# +# Features: + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +#DEBUG=-g -DDEBUG +OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! +LDFLAGS= + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. -I../ +LD=gcc +STRIP=strip -R .comment -R .note + +INSTALL = install + +prefix = $(HOME) +bindir = $(prefix)/bin + +# objects + +CLIENT=cinit.graph.text.o + +COMMUNICATION=error.o ../generic/usage.o ../generic/mini_printf.o + +OBJ=$(CLIENT) $(COMMUNICATION) + +# +PROGRAMS=cinit.graph.text +SCRIPTS=cconfig.graph.xml.rb \ + make.cconfig.from.xml.rb \ + cinit-vis.pl \ + cinit-vis-killerfox.pl + +# targets +all: $(PROGRAMS) + +cinit.graph.text: $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +clean: + rm -f *.o $(PROGRAMS) + +install: all + @echo '*** Installing contrib+tools ***' + $(INSTALL) -d -m755 $(DESTDIR)$(bindir) + $(INSTALL) $(PROGRAMS) $(SCRIPTS) $(DESTDIR)$(bindir) diff --git a/software/cinit/browse_source/cinit-0.2/contrib+tools/README b/software/cinit/browse_source/cinit-0.2/contrib+tools/README new file mode 100644 index 00000000..85fa2f5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/contrib+tools/README @@ -0,0 +1,11 @@ +contrib+tools/ + programs written by others and external tools not necessary + needed but (very) nice to have + + + cinit-vis.pl - draw an ascii graph of cinit configuration [perl] + cinit.graph.text - draw an ascii graph of cinit configuration [c] + + cconfig.graph.xml.rb - creates a xml file from a cconfig [ruby] + make.cconfig.from.xml.rb - creates a cconfig from a xml file [ruby] + diff --git a/software/cinit/browse_source/cinit-0.2/contrib+tools/README.ruby b/software/cinit/browse_source/cinit-0.2/contrib+tools/README.ruby new file mode 100644 index 00000000..ed210cee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/contrib+tools/README.ruby @@ -0,0 +1,7 @@ +The ruby tools for general cconfig [0] are written by René Nussbaumer [1]. +You can find the documentation for them at [2]. + + +[0]: http://nico.schotteli.us/papers/linux/cconfig/ +[1]: http://killerfox.forkbomb.ch/ +[2]: http://killerfox.forkbomb.ch/articles/cconfig/tools diff --git a/software/cinit/browse_source/cinit-0.2/contrib+tools/cconfig.graph.xml.rb b/software/cinit/browse_source/cinit-0.2/contrib+tools/cconfig.graph.xml.rb new file mode 100644 index 00000000..d18ba422 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/contrib+tools/cconfig.graph.xml.rb @@ -0,0 +1,117 @@ +#!/usr/bin/env ruby + +=begin + + Writes an XML-Tree for a cconfig directory + Idea by Nico Schottelius aka telmich + Implemented and (C) by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added support for binary files + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Changed checking order: symlink, directory, file. Because of + a logical bug -> directory follows symlink so, when a symlink + points to a directory no «link» element is created. + + Version 0.1 (René Nussbaumer): + * Holy hack for directory scanning (needs to be optimized) + * Hack for rexml to print out «lost» tags. This rexml sux. + + Todo: + * Optimize scanning. + * Use another xml library instead of rexml crap. + Problem: Produce dependencies -> no std-lib + + Features: + * Create a flat (no deepnes without directory) and 1:1 image + of an cconfig directory + +=end + +require 'rexml/document' +require 'base64' +require 'digest/sha1' + +require 'filemagic' + +@version = '0.3' + +def determineTarget(entry) + return 'external' if(!File.expand_path(entry).index(@initpath)) + return 'link' if(FileTest.symlink?(entry)) + return 'object' if(FileTest.directory?(entry)) + return 'attribute' if(FileTest.file?(entry)) + return 'unknown' # Should never be reached +end + +def createTree(dir, parent) + dir.each { |entry| + next if(entry =~ /^(\.|\.\.)$/) + + if(FileTest.symlink?(entry)) + e = parent.add_element('link') + + # Much fun with links + e.add_attributes( { 'name' => entry, 'target' => determineTarget(File.readlink(entry)) } ) + e.add_text(File.readlink(entry)) + elsif(FileTest.directory?(entry)) + e = parent.add_element('object') + e.add_attribute('name', entry) + + # Bad, that we need to change the directory every time. + oldPwd = Dir.pwd + Dir.chdir(entry) + createTree(Dir.new('.'), e) + Dir.chdir(oldPwd) + elsif(FileTest.file?(entry)) + e = parent.add_element('attribute') + e.add_attribute('name', entry) + if(File.stat(entry).size?) + # Yeah, we got one WITH content! W00h00, let's party. + + fm = FileMagic.new(FileMagic::MAGIC_MIME) + if(fm.file(entry) =~ /executable/) + e.add_attribute('type', 'binary') + text = File.new(entry).read + e.add_attribute('sha1', Digest::SHA1.hexdigest(text)) + e.add_text(Base64.encode64(text)) + else + e.add_text(File.new(entry).read) + end + fm.close() + end + end + } +end + + +if(!ARGV[0] || !FileTest.directory?(ARGV[0])) + puts 'You need to specify a directory' + Kernel.exit(-1) +end + +doc = REXML::Document.new + +e = doc.add_element('cconfig') +e.add_attribute('name', File.basename(ARGV[0])) +e.add_attribute('version', @version) + +@initpath = File.expand_path(ARGV[0]) +Dir.chdir(ARGV[0]) +createTree(Dir.new('.'), doc.root) + +out = '' +doc.write(out, 0, false, true) + +REXML::XMLDecl.new('1.0', 'utf-8').write($stdout) # This should automatically printed by rexml. Damn bugs. +puts '' +puts out # Workaround for a buggy rexml + diff --git a/software/cinit/browse_source/cinit-0.2/contrib+tools/cinit-vis.pl b/software/cinit/browse_source/cinit-0.2/contrib+tools/cinit-vis.pl new file mode 100644 index 00000000..3956ff47 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/contrib+tools/cinit-vis.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# (c) by Marcus Przyklink (downhill-clinux@burningchaos.org) +# written for cinit and published under GPL +# beautified a bit by Nico Schottelius +# optimized by René Nussbaumer +# Version: 0.1 + +use strict; +use warnings; + +# +# Variables for location and output +# +# cinit-directory +my $path = "/etc/cinit/"; +# started profile +my $starting_point = "init"; +# the spaces for each level (integer: amount of spaces) +my $space = 3; +# marker for need +my $need = "-->"; +# marker for want +my $want = "==>"; + +# +# main function, recursively list the components of the cinit system +# +if (@ARGV) { + if( $ARGV[0] =~ /-(h|-help)/ ) { + print "Usage: " . __FILE__ . " without parameters for standard-use (check variables in file)\n"; + print " Parameters:\n"; + print " -h for this help\n"; + print " profile-name for a profile\n"; + exit(0); + } + else { + $starting_point = $ARGV[0]; + } +} + +# +# start first instance +# +sub get_deeper { + my ($point, $tmp_counter, $need_want) = splice @_; + + print " " x ($space * $tmp_counter) . ($need_want ? $need : $want) . " " . $point . "\n"; + + opendir(DIR, "${path}${point}/needs") and + my @next_need = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + opendir(DIR, "${path}${point}/wants") and + my @next_want = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + + for(@next_need) { + get_deeper($_, $tmp_counter + 1, 1); + } + for(@next_want) { + get_deeper($_, $tmp_counter + 1, 0); + } +} + +# +# start first instance +# +get_deeper($starting_point, 0, 0); + +# +# work done, go home +# +exit(0); diff --git a/software/cinit/browse_source/cinit-0.2/contrib+tools/cinit.graph.text.c b/software/cinit/browse_source/cinit-0.2/contrib+tools/cinit.graph.text.c new file mode 100644 index 00000000..ffd33c39 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/contrib+tools/cinit.graph.text.c @@ -0,0 +1,200 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + cinit.graph.text.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.2 + + ChangeLog: + Version 0.2 (Peter Portmann): + * Not assigned link destinies are marked by (!). + * Not readable directories are marked by "directory not readable". + + Version 0.1 (Peter Portmann): + * Print of the directory structure of the contained files and links + without following the links. + + Todo: + + Features: +*/ + +//#include +#include +#include +//#include +#include +#include +#include +#include +#include "cinit.h" +#include "error.h" + +#define FTW_F 1 /* file isn't a directory */ +#define FTW_D 2 /* file is a directory */ +#define FTW_DNR 3 /* not readable directory */ +#define FTW_NS 4 /* unsuccesfully stat on this file */ +#define MAX_CHAR 4096 + +/*********************************************************************** + * cinit.gaph.text - textual representatio of the cinitdirectory + */ + +#define CSERVICE_BANNER "cinit.gaph.text - textual representatio of the cinitdirectory\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncinit.gaph.text \n" \ + "\tpath\t- cinit installationpath\n" + +typedef int EACH_ENTRY(const char *, const struct stat *, int); +typedef enum { FALSE=0, TRUE=1 } bool; + +static char dirpath[PATH_MAX]; +static int depth = 0; +static long int filecount = 0; + +static EACH_ENTRY each_entry; +static int pp_ftw(char *, EACH_ENTRY *); +static int each_getinfo(EACH_ENTRY *); + +/*********************************************************************** + * pp_ftw: file tree walk + */ +static int pp_ftw(char *filepath, EACH_ENTRY *function) +{ + int n; + + if(chdir(filepath) < 0) /* In angegebenen Pfad wechseln */ + err_msg(FATAL_SYS, "can't change to %s", filepath); + + if(getcwd(dirpath, PATH_MAX) == 0) /* Absoluten Pfadnamen ermitteln */ + err_msg(FATAL_SYS, "error using getcwd for %s", filepath); + + n = each_getinfo(function); + + return(n); +} + +/*********************************************************************** + * each_getinfo: get more info for each file. + */ +static int each_getinfo(EACH_ENTRY *function) +{ + struct stat statpuff; + struct dirent *direntz; + DIR *dirz; + int n; + char *zgr; + + if(lstat(dirpath, &statpuff) < 0) + return(function(dirpath, &statpuff, FTW_NS)); /* Error on stat */ + + if(S_ISDIR(statpuff.st_mode) == 0) + return(function(dirpath, &statpuff, FTW_F)); /* no directory */ + + /* It's a directory. + * Call function() for it. After that handel each file in the directory. */ + + if((dirz = opendir(dirpath)) == NULL) { /* Directory not readable */ + closedir(dirz); + return(function(dirpath, &statpuff, FTW_DNR)); + } + + if((n = function(dirpath, &statpuff, FTW_D)) != 0) /* return the directorydirpath */ + return(n); + + zgr = dirpath + strlen(dirpath); /* append slash to the dirpathname */ + *zgr++ = '/'; + *zgr = '\0'; + + while((direntz = readdir(dirz)) != NULL) { + /* ignor . and .. */ + if(strcmp(direntz->d_name, ".") && strcmp(direntz->d_name, "..")) { + strcpy(zgr, direntz->d_name); /* append filename after slash */ + depth++; + if(each_getinfo(function) != 0) { /* Recursion */ + depth--; + break; + } + depth--; + } + } + *(zgr-1) = '\0'; /* deleting evrything after the slash */ + + if(closedir(dirz) < 0) + err_msg(WARNING, "closedir for %s failed", dirpath); + + return(n); +} + +/*********************************************************************** + * each_entry: handling each file and build the graph step by step. + */ +static int each_entry(const char *filepath, const struct stat *statzgr, int filetype) +{ + struct stat statpuff; + static bool erstemal=TRUE; + int i; + + char link[MAX_CHAR]; + + filecount++; + if(!erstemal) { + for(i=1 ; i<=depth ; i++) + printf("%4c|", ' '); + printf("----%s", strrchr(filepath, '/')+1); + } else { + printf("%s", filepath); + erstemal = FALSE; + } + + switch(filetype) { + case FTW_F: + switch(statzgr->st_mode & S_IFMT) { + case S_IFREG: break; + case S_IFCHR: printf(" c"); break; + case S_IFBLK: printf(" b"); break; + case S_IFIFO: printf(" f"); break; + case S_IFLNK: + printf(" -> "); + if(( i=readlink(filepath, link, MAX_CHAR)) != -1) + printf("%.*s", i, link); + if(stat(filepath, &statpuff) < 0) + printf(" (!)"); + break; + case S_IFSOCK: printf(" s"); break; + default: printf(" ?"); break; + } + printf("\n"); + break; + + case FTW_D: + printf("/\n"); + break; + + case FTW_DNR: + printf("/ directory not readable\n"); + break; + + case FTW_NS: + err_msg(WARNING_SYS, "Error using 'stat' on file %s", filepath); + break; + + default: + err_msg(FATAL_SYS, "Unknown Filetype (%d) by file %s", filetype, filepath); + break; + } + + return(0); +} + +/*********************************************************************** + * main: + */ +int main(int argc, char *argv[]) +{ + if(argc != 2) + usage(CSERVICE_BANNER, USAGE_TEXT); + + exit(pp_ftw(argv[1], each_entry)); +} diff --git a/software/cinit/browse_source/cinit-0.2/contrib+tools/error.c b/software/cinit/browse_source/cinit-0.2/contrib+tools/error.c new file mode 100644 index 00000000..8174c702 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/contrib+tools/error.c @@ -0,0 +1,124 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#include "error.h" +#include +#include +#include +#include +#include +#include + +#define MAX_CHAR 4096 + +int debug; /* Aufrufer von log_msg oder log_open muss debug setzen: + 0, wenn interaktiv; 1, wenn Daemon-Prozess */ + +/*---- Lokale Routinen zur Abarbeitung der Argumentliste --------------------*/ +static void msg_err(int sys_msg, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + return; +} + +static void msg_log(int sys_msg, int prio, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + if (debug) { + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + } else { + strcat(puffer, "\n"); + syslog(prio, puffer); + } + return; +} + +/*---- Global aufrufbare Fehlerroutinen -------------------------------------*/ +void err_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_err(0, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + case DUMP: + msg_err(1, fmt, az); + break; + default: + msg_err(1, "Falscher Aufruf von err_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + else if (kennung==DUMP) + abort(); /* core dump */ + exit(1); +} + +void log_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_log(0, LOG_ERR, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + msg_log(1, LOG_ERR, fmt, az); + break; + default: + msg_log(1, LOG_ERR, "Falscher Aufruf von log_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + exit(2); +} + +/*---- log_open --------------------------------------------------------------- + initialisiert syslog() bei einem Daemon-Prozess */ +void log_open(const char *kennung, int option, int facility) +{ + if (debug==0) + openlog(kennung, option, facility); +} diff --git a/software/cinit/browse_source/cinit-0.2/contrib+tools/error.h b/software/cinit/browse_source/cinit-0.2/contrib+tools/error.h new file mode 100644 index 00000000..a55690fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/contrib+tools/error.h @@ -0,0 +1,29 @@ +#ifndef ERROR_H +#define ERROR_H +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.h + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#define WARNING 0 +#define WARNING_SYS 1 +#define FATAL 2 +#define FATAL_SYS 3 +#define DUMP 4 + +void log_msg(int kennung, const char *fmt, ...); +void err_msg(int kennung, const char *fmt, ...); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.2/contrib+tools/make.cconfig.from.xml.rb b/software/cinit/browse_source/cinit-0.2/contrib+tools/make.cconfig.from.xml.rb new file mode 100644 index 00000000..05f35cc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/contrib+tools/make.cconfig.from.xml.rb @@ -0,0 +1,227 @@ +#!/usr/bin/env ruby + +=begin + + Create a cconfig directory based on a xml input. + (C) 2005 by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added binary file support + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Added some commandline options + * Added «level» so control the restrictivity of the program + * Added more «intelligence» to the program, to detect internal broken dependcies. + * Support «debug»-Levels. + * Print statistic at the end of the programs about warnings and errors. + + Version 0.1 (René Nussbaumer): + * Initial + + Todo: + * Use an rexml alternative + * Some cleanup + * Optimize + * Testing? + + Features: + * Create a cconfig directory based on a xml + +=end + +require 'rexml/document' +require 'getoptlong' +require 'base64' +require 'digest/sha1' + +@verbose = 0 +@level = 1 +@version = '0.3' + +@warnings = 0 +@errors = 0 +@checklist = Array.new + +def printMsg(prefix, msg) + puts '%-12s %s' % [prefix + ':', msg] +end + +def error(msg, fatal = 0) + @errors += 1 + fatal = 0 if(@level < 1) + fatal = 255 if(@level > 1 && !fatal) + printMsg(fatal != 0 ? 'PANIC' : 'ERROR', msg) + Kernel.exit(-fatal) if(fatal != 0) +end + +def warn(msg) + error(msg, 1) if(@level > 1) + @warnings += 1 + printMsg('WARNING', msg) +end + +def info(msg) + printMsg('INFO', msg) +end + +def debug(msg, verbosity = 1) + if(@verbose >= verbosity) + printMsg("DEBUG(#{verbosity})", msg) + end +end + +def createObject(name) + error("#{name} already exists.", 1) if(FileTest.exists?(name)) + begin + Dir.mkdir(name) + rescue + error("Could not create directory #{name}: #{$!}. Abort.", 7) + end + debug("Object #{File.expand_path(name)} has been created.", 4) +end + +def createAttribute(name, content = nil) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + begin + file = File.new(name, 'w') + file.print content if(content && !content.empty?) + file.close + debug("Attribute #{File.expand_path(name)} has been created", 4) + rescue + error("Could not create file #{name}: #{$!}. Skipped.") + end +end + +def createLink(name, target, type) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + error("Broken dependencies! Please take a look if #{target} exists on your system", 2) if(type == 'external' && !FileTest.exists?(target)) + if(!FileTest.exists?(target) && type != 'external') + #info("Possible break. But maybe the target #{target} does not yet exists. Checking later.") + exptarget = File.expand_path(target) + @checklist << exptarget + debug("Adding #{target} to the list of internal dependcies to check.", 2) + end + begin + error('You\'ve a system which does not support symbolic links. Abort.', 3) if(File.symlink(target, name) != 0) + rescue + error("Could not create symlink #{name} => #{target}: #{$!}.", 3) + end + debug("Link #{File.expand_path(name)} has been created", 4) +end + +def doWork(elm) + name = elm.name + attrname = elm.attributes['name'] + error("XML Tag with missing name attribute!", 5) if(!attrname) + if(name =~ /(object|cconfig)/) + if(name == 'cconfig') + if(elm.attributes['version']) + info("Found a version string: #{elm.attributes['version']}") + warn("This XML is maybe incompatible with this programm. I'm a version #{@version} script. The XML is generated with a version #{elm.attributes['version']} script. Please update.") if(elm.attributes['version'] > @version) + end + end + createObject(attrname) + if(elm.has_elements?) + pwd = Dir.pwd + Dir.chdir(attrname) + elm.each_element { |e| + doWork(e) + } + Dir.chdir(pwd) + end + elsif(name == 'attribute') + text = nil + e = nil + text = e.value if((e = elm.get_text)) + if(text && elm.attributes['type'] && elm.attributes['type'] == 'binary') + text = Base64.decode64(text) + if(Digest::SHA1.hexdigest(text) != elm.attributes['sha1']) + warn("SHA1 differs from file: #{Dir.pwd}#{attrname}") + end + end + createAttribute(attrname, text) + elsif(name == 'link') + error("link-Tag without content.", 6) if(!elm.has_text?) + error("link with missing target. Skipped.") if(!elm.attributes['target']) + createLink(attrname, elm.get_text.value, elm.attributes['target']) + end +end + +puts "This is #{File.basename(__FILE__)} v#{@version} by René Nussbaumer" +puts + +opts = GetoptLong.new( + ['--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT], + ['--level', '-l', GetoptLong::REQUIRED_ARGUMENT], + ['--version', '-V', GetoptLong::NO_ARGUMENT] +) + +opts.each { |arg,value| + case arg + when '--verbose' + @verbose += 1 + value.each_byte { |x| + if(x.chr == 'v') + @verbose += 1 + end + } + debug("Verbosity set to: #{@verbose}") + when '--level' + debug("Setting level to: #{value}", 3) + case value + when 'low' + @level = 0 + when 'normal' + @level = 1 + when 'paranoid' + @level = 2 + else + warn('Unknown level: ' + value) + end + when '--version' + Kernel.exit(0) + else + warn("Unknown option #{arg}#{value && !value.empty? ? ('with value ' + value) : ''}") + end +} + +if(!ARGV[0]) + puts 'Need at least one argument' + puts "Usage: #{__FILE__} " + Kernel.exit(1) +end + + +filedesc = $stdin + +if(ARGV[0] != '-') + filedesc = File.new(ARGV[0]) +end + +doc = REXML::Document.new filedesc + +doWork(doc.root) + +if(!@checklist.empty?) + info('Now checking all broken internal dependcies again') + broken = 0 + @checklist.each { |path| + debug("Checking #{path}.", 2) + if(!FileTest.exists?(path)) + broken += 1 + warn("Broken dependcies. #{path} does not exist. Please fix.") + end + } + info('Looks good.') if(broken == 0) + info('Bad, bad.') if(broken > 0) +end + +info("Successed. #{@warnings} warnings, #{@errors} errors") + diff --git a/software/cinit/browse_source/cinit-0.2/doc/.buildwarn b/software/cinit/browse_source/cinit-0.2/doc/.buildwarn new file mode 100644 index 00000000..72ebaf6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/.buildwarn @@ -0,0 +1,18 @@ +**************************************************************************** +First of all configure cinit through the configuration files found in conf/. + +The documentation can be found in doc/, read + + README and doc/configuring.cinit + +_before_ first use. + +After reading and configuring use: + + "make all" - to build cinit + "make install" - to install cinit + "make install-miniconf" - to install a minimal cinit-configuration + +After that you'll have to configure it. Some sample configurations can be +found on the cinit homepage at http://linux.schottelius.org/cinit/. +**************************************************************************** diff --git a/software/cinit/browse_source/cinit-0.2/doc/FAQ b/software/cinit/browse_source/cinit-0.2/doc/FAQ new file mode 100644 index 00000000..53494f73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile:home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.2/doc/caveats b/software/cinit/browse_source/cinit-0.2/doc/caveats new file mode 100644 index 00000000..5ab123e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/caveats @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/author b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/availability b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/availability new file mode 100644 index 00000000..cfb3f8a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/availability @@ -0,0 +1 @@ +cinit is currently Linux-specific. diff --git a/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/examples b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/examples new file mode 100644 index 00000000..1a7d2dcb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/examples @@ -0,0 +1 @@ +See http://linux.schottelius.org/cinit/#config diff --git a/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/files b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/files new file mode 100644 index 00000000..4d6c0921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/files @@ -0,0 +1,5 @@ +/sbin/cinit - the init system +/sbin/cservice - control cinit +/sbin/cinit.reboot (/sbin/reboot if non-existent before) +/sbin/cinit.shutdown (/sbin/shutdown if non-existent before) +/etc/cinit - configuration directory diff --git a/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/long_description b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/long_description new file mode 100644 index 00000000..18c3c082 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/long_description @@ -0,0 +1,5 @@ +cinit is a fast executing, small and simple init with support for profiles. It +minds dependencies (hard and soft, 'needs' and 'wants') and executes processes +in parallel. And it has a simple configuration, which makes many shell-scripts +unecessary (but you still could use them if you really want), which leads to +better performance and less memory using. diff --git a/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/meta/date b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/meta/man_section b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/meta/name b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/meta/name new file mode 100644 index 00000000..b853da25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/meta/name @@ -0,0 +1 @@ +cinit diff --git a/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/meta/short_description b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/parameters b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/parameters new file mode 100644 index 00000000..54df4727 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/parameters @@ -0,0 +1 @@ +cprofile: diff --git a/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/path b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/path new file mode 100644 index 00000000..37edf339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/path @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/see also b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/synopsis b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cinit-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/doc/compiles.on b/software/cinit/browse_source/cinit-0.2/doc/compiles.on new file mode 100644 index 00000000..3fe83479 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/compiles.on @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +compiles.on, +Nico Schottelius 2005-06-09 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit is known to compile on: + +x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 + +Please report your configuration, if it's not listed here. diff --git a/software/cinit/browse_source/cinit-0.2/doc/configuring.cinit b/software/cinit/browse_source/cinit-0.2/doc/configuring.cinit new file mode 100644 index 00000000..a88ba00f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/configuring.cinit @@ -0,0 +1,189 @@ +-------------------------------------------------------------------------------- +configuring cinit, +Nico Schottelius 2005-05-28 (Last Modified: 2005-06-05) +-------------------------------------------------------------------------------- + +0. Pre-compile configuration +1. General configuration layout +2. Hints +2.0 Service executing / parameters +2.1 Daemons +2.2 Logging +2.3 Using prepared scripts +3. Profiles + + +0. Pre-compile configuration + +Have a look at conf/*. Those variable will mostly be used when +compiling cinit. Some will be read later (like destdir). + + +1. General configuration layout + +/etc/cinit (configurable via conf/cinit_dir) stores the complete +cinit configuration. + +cinit is service based. +A service consists of + - a base directory (like /etc/cinit/getty/1) + - dependency configuration: + + ./wants - services it wants to be started before (but it + will work anyway) + + ./needs/ - services it needs. If those services fail, this service + won't be started. + + - a flag indicating whether to respawn the service: + + ./respawn (simply touch it) + + - a delay: how long to wait for the service (in seconds) before + sending SIGKILL after the SIGTERM (only for respawning processes): + + ./delay (one line with only the digits) + + If delay is non-existing or not readable, the delay from + conf/sleep_kill_svc is taken. The maximum length of this + number ("9999" uses length 4, "42" needs 2 bytes) can be adjusted + at compile time in conf/max_delay. Internally this is a signed + integer, so the maximum size depends on your system. Though + I don't think anybody will want to wait for a service as long as + an integer would allow. + + - the program to run when switching the service on and off: + + ./on (a link to a program or a shell script) + ./on.params (see conf/c_params, the parameters to pass to the program) + ./on.env (see conf/c_env, the environment to pass to the program) + + ./off (call that when shutting down the service) + ./off.params (the parameters to pass to the program) + ./on.env (the environment to pass to the program) + +You should have a look at the samples/ directory for examples. + +If things are missing, cinit will continue with what's available. +This way you only need the files you use. Some examples: + + /etc/cinit/init: + ./wants -> services it wants + ./needs -> services it needs + That's everything + + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it + That's everything, as it has no dependencies + + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn on service + delay -> wait this time before sending SIGKILL after SIGTERM + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting + + +2. Hints + +2.0 Service executing / parameters + +The on and off files can and should be links to the programs you want +to execute. This way you save yourself loading the big shell (which is +on many Linux systems bash, why so ever, dash does the job as good, still +beeing small). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. The on script +could look like: + + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). + + +2.1 Daemons + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking (Please have a look at +daemons.backgrounding for a list of known daemons and their switches +to avoid backgrounding). + +The other possibility is to use a program, which will + a) start the daemon + b) look into the pidfile of the daemon + c) will then wait until that pid does not exist anymore + d) and then it exits and cinit will restart it (goto a) now) + +Such a program is included into this cinit release, +though I do not recommend using it. You should better contact the +authors and make them implement a clean non-forking mode. + +The name of the program (actually a shell script) is "cinit.wait.for.daemon". + +You will use it as the "on" part of the service and you have to add + + a) the pidfile to on.params + b) the daemon binary + +Thus the service would look like: + + svc-broken-daemon/ + on -> /sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + + +2.2 Logging + +Currently there's no special logging support. +When programs write to stdout, it will be displayed on +the same stdout cinit is connected to +(we don't even open /dev/console - we are too lazy currently). + + +2.3 Using prepared scripts + +In the bin/ directory of this tarball you'll find at least: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + + +3. Profiles + +Since cinit-0.0.6 there is profile in cinit. +Profiles are described in doc/profile.support. + +X. Examples + +Can be found in the tarballs below samples/. diff --git a/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/author b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/long_description b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/long_description new file mode 100644 index 00000000..82818a93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/long_description @@ -0,0 +1 @@ +cservice controls cinit. Please use cservice -h for help. diff --git a/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/meta/date b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/meta/man_section b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/meta/name b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/meta/name new file mode 100644 index 00000000..49c847bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/meta/name @@ -0,0 +1 @@ +cservice diff --git a/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/meta/short_description b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/parameters b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/parameters new file mode 100644 index 00000000..605b08b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/parameters @@ -0,0 +1 @@ +[-eaphru] [thilo] diff --git a/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/path b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/path new file mode 100644 index 00000000..85b0cb56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/path @@ -0,0 +1 @@ +/sbin/cservice diff --git a/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/see also b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/synopsis b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/cservice-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/doc/daemons.backgrounding b/software/cinit/browse_source/cinit-0.2/doc/daemons.backgrounding new file mode 100644 index 00000000..3c5e1af1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/daemons.backgrounding @@ -0,0 +1,69 @@ +-------------------------------------------------------------------------------- +daemons backgrounding, +Nico Schottelius 2005-06-12 (Last Modified: 2005-10-02) +-------------------------------------------------------------------------------- + +0. Definition + +A daemon is a program which runs in the background, not having a tty +associated necesserally. Running in background does not mean it has +to background (fork()) itself, but that you cannot control it directly +from a shell. + +1. Daemons and cinit + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking + +The following daemons / servers are known to avoid backgrounding easily: + + acpid [x86 power management]: -f (undocumentated but works) + asterisk [pbx]: -f + bind [dns server/caching]: -f + cardmgr [pcmcia/cardbus]: -f + cron (vixie) [schedular]: -f + cupsd [printer server]: -f or -F + dhclient [dhcp client]: -d + dhcp3 (isc) [dhcp server]: -f + distccd [compile server]: normal behaviour + fcron [schedular]: -f + frox [ftp proxy]: "NoDetach" in config + gdm [display manager]: -nodaemon + hybrid [irc server]: -foreground + icecast2 [sound streamer]: normal behaviour + mini-lpd [printer server]: normal behaviour + metalog [log server]: normal behaviour + monotone [vcs]: normal behaviour + mpd [music server]: --no-daemon + nessusd ["security server"]: normal behaviour + ntpd [time server]: -n + oidentd [identd server]: -i + oops [http proxy]: normal behaviour + openssh [ssh server]: -D + openvpn [vpn server]: normal behaviour + pbbuttonsd [power management]:normal behaviour + proftpd [ftp server]: -n + qmail [mta]: normal behaviour + rsync ["file server"]: --no-detach + slapd [ldap]: -d + snmpd [snmp daemon]: -f + svnserve [vcs]: --foreground + syslogd [log server]: -n + syslog-ng [log server]: -F + tcpserver [super server]: normal behaviour + udhcpc [dhcp client]: normal behaviour + vsftpd [ftp server]: normal behaviour (or: config: background=no) + xinetd [super server]: -dontfork + +Those are the daemons that do not offer the possibility (as of release 0.2): + + apache (only with debug mode) + atd (no switch, no configuraton option) + inetd (some variants) + nscd (no switch, no configuraton option) + portmap (only with debug mode) diff --git a/software/cinit/browse_source/cinit-0.2/doc/debugging.configuration b/software/cinit/browse_source/cinit-0.2/doc/debugging.configuration new file mode 100644 index 00000000..1289865e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/debugging.configuration @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +Debugging your init configuration, +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +As writing an init configuration is not the easiest thing, +here are some problems (P) and debugging hints (H): + +P: There's no output! +H: If you don't start a service which outputs something there won't be any, + cinit starts up silently. + +P: Service XYZ seems not to work? +H: Try the following in your shell: + cd /etc/cinit/the-service; ./on "$(on.params)" + If that succeeds it has perhaps something missing which should have been + started before. +H: Create a test-service, which contains the following: + on: link to /bin/echo + on.params: "A test string" (with or without the quotes) + Now add the test-service to the needs directory of service XYZ. + If you see output the next time, the service is started. + Otherwise you forgot to make another service dependent on service + XYZ. + +P: How can I test if a non-outputting service successfully started? +H: Create another service, which depends on your service and make + it echo something. + +P: Does that profile support really work? +H: Try that: cprofile:NONEXISTENT and you'll see. + diff --git a/software/cinit/browse_source/cinit-0.2/doc/extern/README b/software/cinit/browse_source/cinit-0.2/doc/extern/README new file mode 100644 index 00000000..e734d6d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/extern/README @@ -0,0 +1,2 @@ +doc/extern/ + Some things related to cinit from the outside world. diff --git a/software/cinit/browse_source/cinit-0.2/doc/extern/ipc.thoughts b/software/cinit/browse_source/cinit-0.2/doc/extern/ipc.thoughts new file mode 100644 index 00000000..e2619d34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/extern/ipc.thoughts @@ -0,0 +1,83 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2 ), +1024 is the maximum opened file deskriptors, +minus 3 (stdin/stdout/stderr) already opened, divided +by two, because two fds needed per client. + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt, + - poweroff, + - update itself (hot-reboot) + - and to start a rescue mode (see using.rescue). + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + CONT: update + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.2/doc/extern/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.2/doc/extern/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/extern/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.2/doc/extern/linux.kernel.eats.arguments b/software/cinit/browse_source/cinit-0.2/doc/extern/linux.kernel.eats.arguments new file mode 100644 index 00000000..dbaf57d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/extern/linux.kernel.eats.arguments @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +Linux, the kernel, eats arguments +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +If you specify + + variable=value + +to the Linux kernel, the argument will NOT be passed to cinit. + +Here's the relevant code block from init/main.c of the Linux kernel: + +------------------------------------------------------------------------------- + +From init(void * unused) the function run_init_process(char *init_filename) +is called, which passes argv_init (char * argv_init[MAX_INIT_ARGS+2]) to init. + +First init_setup(char *str) resets all elements of the argv_init to NULL. + +The function unknown_bootoption(char *param, char *val) fills the +argv_init array, but only with parameters, which have no value +(val). + +The function parse_args calls unknown_bootoption with the unknown options. + +------------------------------------------------------------------------------- + +This way the profile support in all cinit versions below cinit-0.1 will +only work if you change conf/profile, because "cprofile=value" will +not be given to cinit, because it's not treated as a command line option. + +The original value "cprofile=" is replaced by "cprofile:" as of cinit-0.1. diff --git a/software/cinit/browse_source/cinit-0.2/doc/extern/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.2/doc/extern/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/extern/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.2/doc/intern/README b/software/cinit/browse_source/cinit-0.2/doc/intern/README new file mode 100644 index 00000000..af6f9e9d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/intern/README @@ -0,0 +1,2 @@ +doc/intern/ + The documentation in this directory describes cinit internals. diff --git a/software/cinit/browse_source/cinit-0.2/doc/intern/cinit.commands b/software/cinit/browse_source/cinit-0.2/doc/intern/cinit.commands new file mode 100644 index 00000000..d34d13bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/intern/cinit.commands @@ -0,0 +1,73 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (using SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. +CMD_UPDATE: Update cinit, hot-reboot the system. diff --git a/software/cinit/browse_source/cinit-0.2/doc/intern/how_it_works_internally b/software/cinit/browse_source/cinit-0.2/doc/intern/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/intern/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.2/doc/intern/service.status b/software/cinit/browse_source/cinit-0.2/doc/intern/service.status new file mode 100644 index 00000000..7bfaff81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/intern/service.status @@ -0,0 +1,26 @@ +-------------------------------------------------------------------------------- +service status (cinit), +Nico Schottelius 2005-09-29 (Last Modified: -) +-------------------------------------------------------------------------------- + +There are service status and service returns. Service status is a status +a service can have. A service return is a value from a function that +describes what happened with the service. + +Status has ST_ prefix, return has RT_ prefix. +See cinit.h for most up to date versions. + + +ST_NEED_FAIL - this service will not be started, until the needs are started +ST_FAIL - this service failed to start +ST_UNSPEC - some unknown error. This should never happen. +ST_ERR - ??? /* tried earlier, service failed, won't retry */ + +ST_SUCCESS - service was successfully started - senseful? +ST_TMP - some instance is currently working on it +ST_ONCE - executed once sucessfully +ST_RESPAWN - service is running and respawning + +ST_TMPNOW 55 /* now you are on it - only for clients */ +#define ST_OFF 56 /* Switching service off */ + diff --git a/software/cinit/browse_source/cinit-0.2/doc/intern/socket.poll_vs_o_async b/software/cinit/browse_source/cinit-0.2/doc/intern/socket.poll_vs_o_async new file mode 100644 index 00000000..477f2bff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/intern/socket.poll_vs_o_async @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------------- +Socket: poll(2) vs. O_ASYNC, +Nico Schottelius 2005-06-22 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +0. General problem +1. O_ASYNC +2. poll(2) + + +0. General problem + +cinit has to react, as soon as there's data on the socket. + +1. O_ASYNC + +When you open a socket with O_ASYNC (or specify it with fcntl(2)) under +Linux, your process recieves the SIGIO signal from the kernel, as soon +as data is available. + +The problem is the handling of signals seems not to be serialised: + +The function, which is called on the SIGIO signal (called sigio() here) +calls other functions. Those functions way recieve SIGIO while working, +so the first data stream is not yet finished, though the next +stream is beeing read. + +This gives very nice race-conditions, which are very nice to debug. + +2. poll(2) + +poll(2) is a standard Unix-call (XPG4-UNIX), which waits a specific +timeout (or infinite time if you specify a value less that zero) for +the socket (or the fd in general) to be in a state where +data is available to read (in fact poll can do much more, but we are +not interested only in POLLIN and POLLPRI). + +While poll(2) seems to be a very bit slower than sigio it works reliable. + diff --git a/software/cinit/browse_source/cinit-0.2/doc/merging.other.initsystems b/software/cinit/browse_source/cinit-0.2/doc/merging.other.initsystems new file mode 100644 index 00000000..c324a935 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/merging.other.initsystems @@ -0,0 +1,64 @@ +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not mean that he does not accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated! + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.2/doc/meta.dependencies b/software/cinit/browse_source/cinit-0.2/doc/meta.dependencies new file mode 100644 index 00000000..fe743c48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/meta.dependencies @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, one would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation (see profile.support). + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +why it does not even need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ + +This way you have the indirection (meta-dependencies) in the filesystem +and cinit does not need any additional code. diff --git a/software/cinit/browse_source/cinit-0.2/doc/optimising.cinit b/software/cinit/browse_source/cinit-0.2/doc/optimising.cinit new file mode 100644 index 00000000..4f4b5c02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/optimising.cinit @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options +2. striping + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + +The current standard for cinit is: (see CFLAGS in the Makefile). + + +2. striping + +With strip(1) you can remove specific sections of object files. +You have to find out, which ones you can remove safely +(for instance with objdump(1)). + +The current standard for cinit is: (see STRIP in the Makefile) diff --git a/software/cinit/browse_source/cinit-0.2/doc/porting.to.other.os b/software/cinit/browse_source/cinit-0.2/doc/porting.to.other.os new file mode 100644 index 00000000..65fdc07b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will perhaps become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.2/doc/problems b/software/cinit/browse_source/cinit-0.2/doc/problems new file mode 100644 index 00000000..a3440a3a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/problems @@ -0,0 +1,9 @@ +fsck: + returns non-zero if it repaired something. + You have to wrap it into a shell-script :-( + + #!/bin/sh + fsck $@ + [ $? -le 1 ] && exit 0 + exit 1 + diff --git a/software/cinit/browse_source/cinit-0.2/doc/profile.support b/software/cinit/browse_source/cinit-0.2/doc/profile.support new file mode 100644 index 00000000..7bc607b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/profile.support @@ -0,0 +1,72 @@ +-------------------------------------------------------------------------------- +Profiles, +Nico Schottelius, 2005-06-04 +-------------------------------------------------------------------------------- + +1. What are profiles? +2. How to use profiles? +3. How to configure profiles? +4. Some examples + + +1. What are profiles? + +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +2. How to use profiles? + +Simply pass 'cprofile:PROFILENAME' (like cprofile:home) to cinit. +How to pass argumenents to cinit? Under Linux the init-system +gets the kernel arguments (see linux.kernel.eats.arguments) as arguments. +So you can use + + kernel /usr/src/linux/vmlinuz cprofile:work (grub1,grub2) + append="cprofile:work" (LILO,yaboot) + +Other Unices should work like Linux, please consult your local +documentation. + + +3. How to configure profiles? + +It's very simple: Normally cinit would call /etc/cinit/init as +primary service and solve all dependencies. If you pass +cprofile=wireless to it, cinit will start /etc/cinit/wireless as +primary service instead. + + [Note: /etc/cinit/yourprofile is the service that will be started. + You need/should/must NOT create /etc/cinit/yourprofile/init!] + +So the only thing you have to do is to create a service directory +below /etc/cinit with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/init; tar c . | (mkdir ../yp; cd ../yp; tar x ) + +That's it! + + +4. Some examples + +Here are some examples we found in #cLinux: + + profile name what it does + + musibox only start mp3blaster + terminal start only minicom, which opens the serial line + net-terminal start a respawning shell script, which starts + ssh to the selected host + video start X+mplayer, which plays the dvd/cdrom + wireless What to start when beeing in an unknown wlan + home/work selected services (nfs, ip, ...) for home or work + diff --git a/software/cinit/browse_source/cinit-0.2/doc/removing.zombies b/software/cinit/browse_source/cinit-0.2/doc/removing.zombies new file mode 100644 index 00000000..9527e652 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + cinit in general will keep the behaviour of reaping the vestiges, + which broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.2/doc/replacing.init b/software/cinit/browse_source/cinit-0.2/doc/replacing.init new file mode 100644 index 00000000..2858c56c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/replacing.init @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and link, move or copy cinit to init (ln -s /sbin/cinit /sbin/init), reboot. + +That's everything in general, the biggest part will be to configuring cinit. + +See also doc/merging.other.initsystems. diff --git a/software/cinit/browse_source/cinit-0.2/doc/security b/software/cinit/browse_source/cinit-0.2/doc/security new file mode 100644 index 00000000..f1dac591 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/security @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation, which will not accept connect() +by others than root. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console then! + +For extra parnoid settings you can do the following: + + ei # chmod 700 /etc/cinit/tmp/coala + ei # chown root:root /etc/cinit/tmp/coala diff --git a/software/cinit/browse_source/cinit-0.2/doc/testing.cinit.in.uml b/software/cinit/browse_source/cinit-0.2/doc/testing.cinit.in.uml new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/testing.cinit.in.uml @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.2/doc/thoughts.closed b/software/cinit/browse_source/cinit-0.2/doc/thoughts.closed new file mode 100644 index 00000000..91a8e080 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/thoughts.closed @@ -0,0 +1,52 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c + +7. Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. As this is not needed + currently, it's not implemented. diff --git a/software/cinit/browse_source/cinit-0.2/doc/updating.cinit b/software/cinit/browse_source/cinit-0.2/doc/updating.cinit new file mode 100644 index 00000000..fc0d3fef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/updating.cinit @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. call cservice -u thilo (if you have cinit-0.1 or later) + + For older versions: + + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything running and restart as if you would just + have booted. diff --git a/software/cinit/browse_source/cinit-0.2/doc/using.rescue b/software/cinit/browse_source/cinit-0.2/doc/using.rescue new file mode 100644 index 00000000..f58ff512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/doc/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user"). + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.2/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.2/generic/mini_printf.c new file mode 100644 index 00000000..91f136c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/generic/mini_printf.c @@ -0,0 +1,22 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * print string + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + size_t length = 0; + + p = str; + while ( *p != '\0') { + ++length; + ++p; + } + write(fd,str,length); + /* \n is put by outside function */ + /* write(fd,"\n",1); */ +} diff --git a/software/cinit/browse_source/cinit-0.2/generic/set_signals.c b/software/cinit/browse_source/cinit-0.2/generic/set_signals.c new file mode 100644 index 00000000..ee76c724 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/generic/set_signals.c @@ -0,0 +1,45 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +#include +#include +#include "cinit.h" + +void set_signals(int action) +{ + struct sigaction sa; + + if(action == ACT_SERV) { + sa.sa_handler=SIG_IGN; + } else { + sa.sa_handler=SIG_DFL; + } + sigaction(SIGINT,&sa,NULL); /* ignore ctr+c and ctr+alt+del */ + sigaction(SIGPIPE,&sa,NULL); /* what todo when pipe/fifo closed */ + sigaction(SIGTTIN,&sa,NULL); + sigaction(SIGTTOU,&sa,NULL); + sigaction(SIGSTOP,&sa,NULL); + + sigaction(SIGQUIT,&sa,NULL); /* warm reboot??? */ + + /* cleaning dead processes - only process 1 */ + if(action == ACT_SERV) { + sa.sa_handler=sig_child; + } + /* server and client need sig_chld - really??? FIXME in exec_svc then! */ + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + /* signal handlers to do special things with: reboot */ + if(action == ACT_SERV) { + sa.sa_handler=sig_reboot; + } + sigaction(SIGUSR1,&sa,NULL); /* halt */ + sigaction(SIGUSR2,&sa,NULL); /* Rescue */ + sigaction(SIGTERM,&sa,NULL); /* poweroff */ + sigaction(SIGHUP,&sa,NULL); /* reboot */ + sigaction(SIGCONT,&sa,NULL); /* update */ + +} diff --git a/software/cinit/browse_source/cinit-0.2/generic/usage.c b/software/cinit/browse_source/cinit-0.2/generic/usage.c new file mode 100644 index 00000000..e434bcaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/generic/usage.c @@ -0,0 +1,19 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * usage: tell the world what we want - no capitalism + * part of cLinux/cinit + */ + +#include +#include "cinit.h" + +/*********************************************************************** + * usage: tell the user what's wrong and a help text + */ +void usage(char *banner, char *text) +{ + /* print banner + error message */ + mini_printf(banner,1); + mini_printf(text,1); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.2/serv/cinit.c b/software/cinit/browse_source/cinit-0.2/serv/cinit.c new file mode 100644 index 00000000..9c1565ab --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/serv/cinit.c @@ -0,0 +1,136 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +/* mount */ +#include + +#include +#include + +#include /* poll */ + +#include "cinit.h" + +/* global variables */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * the main procedure + */ + +int main(int argc, char **argv) +{ + struct sockaddr_un addr; + struct pollfd plist; + char *initdir; + + list = NULL; /* list of services is empty currently */ + initdir = CINIT_INIT; /* default init dir */ + + cpid = getpid(); + if(cpid != 1) { + usage(MSG_USAGE,MSG_NOT_ONE); + } + + set_signals(ACT_SERV); /* set signal handlers */ + + /* read args, profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* tell the world we are there FIXME: do we really need three calls? */ + mini_printf(MSG_CINIT,1); mini_printf(initdir,1); mini_printf("\n",1); + + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.2/serv/list.c b/software/cinit/browse_source/cinit-0.2/serv/list.c new file mode 100644 index 00000000..f7107d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/serv/list.c @@ -0,0 +1,104 @@ +/* (c) 2005 by Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * list handling: the processes cinit will execute/executed + * part of cinit + * changed some formatting, Nico Schottelius + */ + +#include +#include +#include "cinit.h" + +int list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc( sizeof(struct listitem) ); + + if( tmp == NULL ) { + return 0; + } + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members,add this one */ + tmp->after = list; /* begin after the new element */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if( list == NULL ) { /* think positive */ + return NULL; + } else { + tmp = list; + } + + do { + if( !strcmp(path, tmp->abs_path) ) { + return tmp; + } + tmp = tmp->before; + } while(tmp != list); + + return NULL; +} + +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if( tmp == NULL ) { + return 0; + } + + tmp->after->before = tmp->before; + tmp->before->after = tmp->after; + free(tmp->abs_path); + free(tmp); + return 1; +} + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + +// D_PRINTF(path); + + tmp = list_search(path); + if( tmp == NULL ) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.2/serv/panic.c b/software/cinit/browse_source/cinit-0.2/serv/panic.c new file mode 100644 index 00000000..2f276fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/serv/panic.c @@ -0,0 +1,19 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * panic: if cinit fails, start sulogin + * part of cinit + */ + +#include "cinit.h" +#include + +void panic(void) +{ + char *nargv[2]; + + nargv[0] = SULOGIN; + nargv[1] = NULL; + + execv(SULOGIN,nargv); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.2/serv/run_init_svc.c b/software/cinit/browse_source/cinit-0.2/serv/run_init_svc.c new file mode 100644 index 00000000..ad5378f0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/serv/run_init_svc.c @@ -0,0 +1,43 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run initial service + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + close(sock); + set_signals(ACT_CLIENT); + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ?*/ + if ( run_svc(cinit_svc) >= RT_SUCCESS ) + _exit(0); + else + _exit(1); + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.2/serv/sig_child.c b/software/cinit/browse_source/cinit-0.2/serv/sig_child.c new file mode 100644 index 00000000..c8368b2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/serv/sig_child.c @@ -0,0 +1,21 @@ +/* cinit + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * We are called, when a child dies. Remove it. + */ + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_child + * collect the children + */ + +void sig_child(int signal) +{ + do { + signal = waitpid(-1,&signal,WNOHANG); + } while( signal > 0); +} diff --git a/software/cinit/browse_source/cinit-0.2/serv/sig_reboot.c b/software/cinit/browse_source/cinit-0.2/serv/sig_reboot.c new file mode 100644 index 00000000..9ef1e663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/serv/sig_reboot.c @@ -0,0 +1,147 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * We are called by signal to reboot + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void sig_reboot(int signal) +{ + struct listitem *tmp; + struct timespec ts; + char **cmd; + int i; + + /* Let's disappear, we don't care about clients anymore */ + close(sock); + /********* first SIGTERM the respawning processes **********/ + tmp = list->before; + do { + /* kill service watcher, which will kill processes itself */ + if( tmp->status == ST_RESPAWN) { + kill(tmp->pid,SIGTERM); + } + tmp = tmp->before; + } while( tmp != list ); + + /********* now wait for the respawn watchers to return *****/ + tmp = list->before; + do { + if( tmp->status == ST_RESPAWN) { + /* wait until the respawn watcher terminated */ + waitpid(tmp->pid,&i,0); + } + + /* execute shutdown service FIXME: parallelize that?*/ + exec_svc(tmp->abs_path,CMD_STOP_SVC); + tmp = tmp->before; + } while( tmp != list ); + + /* now: all services are down, let's kill all other processes */ + if( kill(-1,SIGTERM) == -1) { + perror(MSG_TERMKILL); + } + + ts.tv_sec = SLEEP_KILL; /* defined in conf/sleep_kill */ + nanosleep(&ts,NULL); + + if( kill(-1,SIGKILL) == -1) { + perror(MSG_KILLBILL); + } + D_PRINTF("SIGKILL GESENDET"); + + /* release tmp */ + if(umount(CINIT_TMNT) == -1) { + perror(CINIT_TMNT); + } + +/* THIS IS FUCKING UNCLEAN AND SHOULD BE CLEANED UP VERY MUCH!!! */ +#define CMD_CNT 4 + +#define UMOUNT_CMD "/bin/umount" +#define UMOUNT_ARG1 "-arfd" + +#define MOUNT_CMD "/bin/mount" +#define MOUNT_ARG1 "-o" +#define MOUNT_ARG2 "remount,ro" +#define MOUNT_ARG3 "/" + +#define RESCUE_CMD "/bin/sh" + + /* now: we are completley alone. umount everything, go to bed */ + cmd = (char **) malloc( (CMD_CNT+1) * ( sizeof (char*) ) ); + if(cmd) { + /* /bin/umount -a */ + cmd[0] = UMOUNT_CMD; + cmd[1] = UMOUNT_ARG1; + cmd[2] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + + /* /bin/mount -o remount,ro / */ + cmd[0] = MOUNT_CMD; + cmd[1] = MOUNT_ARG1; + cmd[2] = MOUNT_ARG2; + cmd[3] = MOUNT_ARG3; + cmd[4] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + } else { + _exit(1); + } + + switch(signal) { + case SIGTERM: /* power off */ + LOG(MSG_POWER_OFF); + reboot(RB_POWER_OFF); + break; + case SIGHUP: /* reboot */ + LOG(MSG_REBOOT); + reboot(RB_AUTOBOOT); + break; + case SIGUSR1: /* halt */ + LOG(MSG_HALT); + reboot(RB_HALT_SYSTEM); + break; + case SIGUSR2: /* rescue - destroy ourself */ + LOG(MSG_RESCUE); + cmd[0] = RESCUE_CMD; + cmd[1] = NULL; + execv(cmd[0],cmd); + panic(); + break; + case SIGCONT: /* update */ + LOG(MSG_UPDATE); + cmd[0] = CINIT_BIN; + cmd[1] = NULL; + execv(cmd[0],cmd); + panic(); + break; + } + + /* do not exit, Linux does that for us */ +} diff --git a/software/cinit/browse_source/cinit-0.2/serv/sigio.c b/software/cinit/browse_source/cinit-0.2/serv/sigio.c new file mode 100644 index 00000000..4ce3b0bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/serv/sigio.c @@ -0,0 +1,142 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int socket) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + while ( + (nsock = accept(socket,(struct sockaddr *) NULL, (socklen_t *) NULL) ) + != -1) { + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = ST_FAIL; + } else { + status = RT_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP (RESPAWNING) *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; + list_tmp = list_search(buf); + + /* FIXME: + - handle off + - handle switching off once services + - perhaps remove old cinit code, which has respawing childs + */ + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + /* kill cinit watcher, which kills the real process */ + kill(list_tmp->pid,SIGTERM); + + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + } + + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + status = ST_FAIL; + } else { /* return status */ + status = list_tmp->status; + } + } else { /* no service there */ + status = RT_NOTEXIST; + } + do_result(nsock,&status); + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + SERVICE_LOG(buf,MSG_ERR_MODIFY); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + case CMD_UPDATE: + sig_reboot(SIGCONT); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } + + /* hier kommt man haeufiger herein, interrupted system call */ + if( errno != EAGAIN && errno != EINTR) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } +} diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.2/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.2/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.2/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.2/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.2/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.2/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.2/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.2/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.2/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.2/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.2/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.2/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.2/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.2/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.2/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.2/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.2/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.2/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.2/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.2/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.2/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.2/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.2/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.2/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.2/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.2/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.2/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.2/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.2/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.2/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.2/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.2/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.2/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.2/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.2/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.2/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.2/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.2/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.2/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.2/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.2/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.2/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.2/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.2/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.2/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.2/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.2/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.2/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.2/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.2/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.2/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.2/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.2/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.2/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.2/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.2/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.2/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.2/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.2/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.2/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.2/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.2/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.2/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.2/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-17-19:03:48 b/software/cinit/browse_source/cinit-0.2/size/2005-06-17-19:03:48 new file mode 100644 index 00000000..e379e004 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-17-19:03:48 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 17 19:03 cinit +-rwx------ 1 nico users 46760 Jun 17 19:03 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-20-12:16:40 b/software/cinit/browse_source/cinit-0.2/size/2005-06-20-12:16:40 new file mode 100644 index 00000000..1f0c3325 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-20-12:16:40 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 20 12:16 cinit +-rwx------ 1 nico users 50860 Jun 20 12:16 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-20-15:16:31 b/software/cinit/browse_source/cinit-0.2/size/2005-06-20-15:16:31 new file mode 100644 index 00000000..75dc3e7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-20-15:16:31 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 15:16 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-20-16:29:28 b/software/cinit/browse_source/cinit-0.2/size/2005-06-20-16:29:28 new file mode 100644 index 00000000..1294bde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-20-16:29:28 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-20-16:29:50 b/software/cinit/browse_source/cinit-0.2/size/2005-06-20-16:29:50 new file mode 100644 index 00000000..69fe7490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-20-16:29:50 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 16:29 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-21-11:53:35 b/software/cinit/browse_source/cinit-0.2/size/2005-06-21-11:53:35 new file mode 100644 index 00000000..4a1e7b6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-21-11:53:35 @@ -0,0 +1,3 @@ +total 192 +-rwx------ 1 nico users 102039 Jun 21 11:53 cinit +-rwx------ 1 nico users 87871 Jun 21 11:53 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-22-07:33:11 b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-07:33:11 new file mode 100644 index 00000000..e6c8ff14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-07:33:11 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47544 Jun 22 07:33 cinit +-rwx------ 1 nico users 46760 Jun 22 07:33 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-22-07:57:13 b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-07:57:13 new file mode 100644 index 00000000..17161d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-07:57:13 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47536 Jun 22 07:57 cinit +-rwx------ 1 nico users 46760 Jun 22 07:57 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-22-08:08:40 b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-08:08:40 new file mode 100644 index 00000000..770083f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-08:08:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47424 Jun 22 08:08 cinit +-rwx------ 1 nico users 46760 Jun 22 08:08 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-22-08:30:42 b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-08:30:42 new file mode 100644 index 00000000..aa95fb3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-08:30:42 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47360 Jun 22 08:30 cinit +-rwx------ 1 nico users 46760 Jun 22 08:30 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-22-09:19:42 b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-09:19:42 new file mode 100644 index 00000000..70c261bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-09:19:42 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 09:19 cinit +-rwx------ 1 nico users 50860 Jun 22 09:19 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-22-10:43:24 b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-10:43:24 new file mode 100644 index 00000000..b8bc4076 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-10:43:24 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 10:43 cinit +-rwx------ 1 nico users 50860 Jun 22 10:43 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-22-12:42:57 b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-12:42:57 new file mode 100644 index 00000000..c8119859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-12:42:57 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 22 12:42 cinit +-rwx------ 1 nico users 46760 Jun 22 12:42 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-22-13:52:41 b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-13:52:41 new file mode 100644 index 00000000..793b92fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-13:52:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:52 cinit +-rwx------ 1 nico users 46760 Jun 22 13:52 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-22-13:59:40 b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-13:59:40 new file mode 100644 index 00000000..d114c557 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-13:59:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:59 cinit +-rwx------ 1 nico users 46760 Jun 22 13:59 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-22-14:19:41 b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-14:19:41 new file mode 100644 index 00000000..8d56882f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-14:19:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47640 Jun 22 14:19 cinit +-rwx------ 1 nico users 46760 Jun 22 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-22-14:37:18 b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-14:37:18 new file mode 100644 index 00000000..b7c3e4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-22-14:37:18 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 22 14:37 cinit +-rwx------ 1 nico users 46760 Jun 22 14:37 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-23-06:22:23 b/software/cinit/browse_source/cinit-0.2/size/2005-06-23-06:22:23 new file mode 100644 index 00000000..9e38a5e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-23-06:22:23 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 23 06:22 cinit +-rwx------ 1 nico users 46760 Jun 23 06:22 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-24-17:53:55 b/software/cinit/browse_source/cinit-0.2/size/2005-06-24-17:53:55 new file mode 100644 index 00000000..3b750eaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-24-17:53:55 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:53 cinit +-rwx------ 1 nico users 46760 Jun 24 17:53 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-24-17:55:29 b/software/cinit/browse_source/cinit-0.2/size/2005-06-24-17:55:29 new file mode 100644 index 00000000..c30dcaf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-24-17:55:29 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:55 cinit +-rwx------ 1 nico users 46760 Jun 24 17:55 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-06-26-13:19:49 b/software/cinit/browse_source/cinit-0.2/size/2005-06-26-13:19:49 new file mode 100644 index 00000000..a4de830b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-06-26-13:19:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 26 13:19 cinit +-rwx------ 1 nico users 50860 Jun 26 13:19 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:07:13 b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:07:13 new file mode 100644 index 00000000..e2c59ddf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:07:13 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:07 cinit +-rwx------ 1 nico users 50860 Jul 6 08:07 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:12:20 b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:12:20 new file mode 100644 index 00000000..e562350c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:12:20 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:12 cinit +-rwx------ 1 nico users 50860 Jul 6 08:12 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:13:39 b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:13:39 new file mode 100644 index 00000000..32fd8268 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:13:39 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:13 cinit +-rwx------ 1 nico users 50860 Jul 6 08:13 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:14:19 b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:14:19 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:14:19 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:14:59 b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:14:59 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:14:59 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:15:56 b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:15:56 new file mode 100644 index 00000000..cf26e6f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-08:15:56 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:15 cinit +-rwx------ 1 nico users 50860 Jul 6 08:15 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-07-06-10:12:22 b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-10:12:22 new file mode 100644 index 00000000..d5f0f2c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-10:12:22 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:08 cinit +-rwx------ 1 nico users 50860 Jul 6 10:08 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-07-06-10:12:31 b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-10:12:31 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-10:12:31 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-07-06-10:12:49 b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-10:12:49 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-07-06-10:12:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-08-29-21:21:34 b/software/cinit/browse_source/cinit-0.2/size/2005-08-29-21:21:34 new file mode 100644 index 00000000..e651a8ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-08-29-21:21:34 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 root root 444508 2005-08-29 21:21 cinit +-rwx------ 1 root root 440412 2005-08-29 21:21 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-08-29-23:50:55 b/software/cinit/browse_source/cinit-0.2/size/2005-08-29-23:50:55 new file mode 100644 index 00000000..a279aee3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-08-29-23:50:55 @@ -0,0 +1,3 @@ +insgesamt 856 +-rwx------ 1 nico nico 437564 2005-08-29 23:50 cinit +-rwx------ 1 nico nico 436316 2005-08-29 23:50 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-09-03-03:36:59 b/software/cinit/browse_source/cinit-0.2/size/2005-09-03-03:36:59 new file mode 100644 index 00000000..01e555f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-09-03-03:36:59 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 nico nico 444508 2005-09-03 03:36 cinit +-rwx------ 1 nico nico 440412 2005-09-03 03:36 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-09-03-04:34:35 b/software/cinit/browse_source/cinit-0.2/size/2005-09-03-04:34:35 new file mode 100644 index 00000000..1832930a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-09-03-04:34:35 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 04:34 cinit +-rwx------ 1 nico nico 440412 Sep 3 04:34 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-09-03-05:51:17 b/software/cinit/browse_source/cinit-0.2/size/2005-09-03-05:51:17 new file mode 100644 index 00000000..4e465d06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-09-03-05:51:17 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 05:51 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:51 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-09-03-05:54:20 b/software/cinit/browse_source/cinit-0.2/size/2005-09-03-05:54:20 new file mode 100644 index 00000000..9c040d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-09-03-05:54:20 @@ -0,0 +1,4 @@ +total 1300 +-rwx------ 1 nico nico 440412 Sep 3 05:54 ccontrol +-rwx------ 1 nico nico 444508 Sep 3 05:54 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:54 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-09-03-09:01:59 b/software/cinit/browse_source/cinit-0.2/size/2005-09-03-09:01:59 new file mode 100644 index 00000000..880422a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-09-03-09:01:59 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 3 09:01 cinit +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-09-05-19:41:12 b/software/cinit/browse_source/cinit-0.2/size/2005-09-05-19:41:12 new file mode 100644 index 00000000..0f07d86e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-09-05-19:41:12 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 root root 440412 2005-09-05 19:41 ccontrol +-rwx------ 1 root root 444508 2005-09-05 19:41 cinit +-rwx------ 1 root root 440412 2005-09-05 19:41 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-09-05-19:50:35 b/software/cinit/browse_source/cinit-0.2/size/2005-09-05-19:50:35 new file mode 100644 index 00000000..32ff19fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-09-05-19:50:35 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 5 19:50 cinit +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-09-24-01:42:38 b/software/cinit/browse_source/cinit-0.2/size/2005-09-24-01:42:38 new file mode 100644 index 00000000..0da6126e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-09-24-01:42:38 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-09-24 01:42 ccontrol +-rwx------ 1 nico nico 437628 2005-09-24 01:42 cinit +-rwx------ 1 nico nico 436316 2005-09-24 01:42 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-09-30-22:50:50 b/software/cinit/browse_source/cinit-0.2/size/2005-09-30-22:50:50 new file mode 100644 index 00000000..0d510174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-09-30-22:50:50 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 22:50 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 22:50 cinit +-rwx------ 1 nico nico 436316 2005-09-30 22:50 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-09-30-23:06:39 b/software/cinit/browse_source/cinit-0.2/size/2005-09-30-23:06:39 new file mode 100644 index 00000000..23450914 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-09-30-23:06:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 23:06 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 23:06 cinit +-rwx------ 1 nico nico 436316 2005-09-30 23:06 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-10-01-22:09:13 b/software/cinit/browse_source/cinit-0.2/size/2005-10-01-22:09:13 new file mode 100644 index 00000000..a62b9eb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-10-01-22:09:13 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-10-01 22:09 ccontrol +-rwx------ 1 nico nico 437308 2005-10-01 22:09 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:09 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-10-01-22:17:39 b/software/cinit/browse_source/cinit-0.2/size/2005-10-01-22:17:39 new file mode 100644 index 00000000..b1d8b11b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-10-01-22:17:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-01 22:17 ccontrol +-rwx------ 1 nico nico 437532 2005-10-01 22:17 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:17 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-10-02-11:12:29 b/software/cinit/browse_source/cinit-0.2/size/2005-10-02-11:12:29 new file mode 100644 index 00000000..e5f7b13d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-10-02-11:12:29 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:12 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:12 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-10-02-11:13:35 b/software/cinit/browse_source/cinit-0.2/size/2005-10-02-11:13:35 new file mode 100644 index 00000000..d7c14471 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-10-02-11:13:35 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-10-02-11:13:43 b/software/cinit/browse_source/cinit-0.2/size/2005-10-02-11:13:43 new file mode 100644 index 00000000..1711d01a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-10-02-11:13:43 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 11:13 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 436316 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-10-02-16:00:24 b/software/cinit/browse_source/cinit-0.2/size/2005-10-02-16:00:24 new file mode 100644 index 00000000..ab23228c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-10-02-16:00:24 @@ -0,0 +1,4 @@ +total 1284 +-rwx------ 1 nico nico 436316 Oct 2 16:00 ccontrol +-rwx------ 1 nico nico 437884 Oct 2 16:00 cinit +-rwx------ 1 nico nico 436316 Oct 2 16:00 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-10-02-23:17:11 b/software/cinit/browse_source/cinit-0.2/size/2005-10-02-23:17:11 new file mode 100644 index 00000000..92041cd9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-10-02-23:17:11 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 23:17 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 23:17 cinit +-rwx------ 1 nico nico 436316 2005-10-02 23:17 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-10-03-00:54:39 b/software/cinit/browse_source/cinit-0.2/size/2005-10-03-00:54:39 new file mode 100644 index 00000000..df47a057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-10-03-00:54:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:54 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:54 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:54 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-10-03-00:56:29 b/software/cinit/browse_source/cinit-0.2/size/2005-10-03-00:56:29 new file mode 100644 index 00000000..08db7fec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-10-03-00:56:29 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:56 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:56 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:56 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-10-13-09:55:52 b/software/cinit/browse_source/cinit-0.2/size/2005-10-13-09:55:52 new file mode 100644 index 00000000..d54a7ff4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-10-13-09:55:52 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:55 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:55 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:55 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-10-13-09:57:11 b/software/cinit/browse_source/cinit-0.2/size/2005-10-13-09:57:11 new file mode 100644 index 00000000..3b1af9ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-10-13-09:57:11 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:57 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:57 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:57 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-10-13-10:07:28 b/software/cinit/browse_source/cinit-0.2/size/2005-10-13-10:07:28 new file mode 100644 index 00000000..58d25315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-10-13-10:07:28 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 10:07 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 10:07 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 10:07 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-10-15-15:26:52 b/software/cinit/browse_source/cinit-0.2/size/2005-10-15-15:26:52 new file mode 100644 index 00000000..a88291e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-10-15-15:26:52 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 root root 436316 2005-10-15 15:26 ccontrol +-rwx------ 1 root root 437916 2005-10-15 15:26 cinit +-rwx------ 1 root root 436316 2005-10-15 15:26 cservice diff --git a/software/cinit/browse_source/cinit-0.2/size/2005-10-15-21:23:56 b/software/cinit/browse_source/cinit-0.2/size/2005-10-15-21:23:56 new file mode 100644 index 00000000..43a4504d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/size/2005-10-15-21:23:56 @@ -0,0 +1,4 @@ +total 36 +-rwx------ 1 nico nico 9148 Oct 15 21:23 ccontrol +-rwx------ 1 nico nico 11872 Oct 15 21:23 cinit +-rwx------ 1 nico nico 9768 Oct 15 21:23 cservice diff --git a/software/cinit/browse_source/cinit-0.2/util/README b/software/cinit/browse_source/cinit-0.2/util/README new file mode 100644 index 00000000..782cdc8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/util/README @@ -0,0 +1,2 @@ +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.2/util/ccontrol.c b/software/cinit/browse_source/cinit-0.2/util/ccontrol.c new file mode 100644 index 00000000..f4876eba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/util/ccontrol.c @@ -0,0 +1,97 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * ccontrol: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +/* mount */ +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define USAGE_TEXT "ccontrol - control cinit\n\n" \ + "Usage:\n\nccontrol -[phurs]\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-u\t- (update) Reboot (warm) and update cinit\n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n\n" \ + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * ccontrol: control cinit + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 2) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + + switch(argv[1][1]) { + case 'p': /* power off */ + LOG(MSG_POWER_OFF); + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + LOG(MSG_HALT); + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + LOG(MSG_REBOOT); + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + LOG(MSG_RESCUE); + msg_reboot(CMD_RESCUE); + break; + + case 'u': /* update */ + LOG(MSG_UPDATE); + msg_reboot(CMD_UPDATE); + break; + + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* cinit-0.2 return codes implemented - nothing changed*/ diff --git a/software/cinit/browse_source/cinit-0.2/util/cservice.c b/software/cinit/browse_source/cinit-0.2/util/cservice.c new file mode 100644 index 00000000..3cb6828a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/util/cservice.c @@ -0,0 +1,162 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * cservice: control cinit services + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +/* mount */ +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit services + */ + +#define USAGE_TEXT "cservice - start and stop cinit services\n\n" \ + "cservice -[ear] \n" \ + "\t-e\t- (ein,on ) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n" \ + "\t-r\t- (restart) stop and start a service\n" + +/*********************************************************************** + * fuzzy_path: allow other kinds of path specification .. + */ +char *fuzzy_path(char *rpath) +{ + char pathtmp[PATH_MAX]; + char *re = NULL; + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return NULL; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return NULL; + } + + re = malloc( strlen(pathtmp) + 1); + + if(re != NULL) { + strcpy(re,pathtmp); + } + + return re; +} + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + char *real_name = NULL; + + /* argv */ + if(argc != 3) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + if(strlen(argv[1]) != 2) C_USAGE(MSG_ERR_ARGS_LEN); + + real_name = fuzzy_path(argv[2]); + switch(argv[1][1]) { + case 'a': /* aus */ + case 'r': /* restart */ + switch( msg_svc_on_off(real_name,CMD_STOP_SVC) ) { + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_OFF: + SERVICE_LOG(real_name,LOG_SVC_STOPED); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + /* FIX THIS AFTER cinit-0.2 */ + case RT_TMPNOW: + case RT_ERR: + case RT_SVC_FAILED: + case RT_UNSPEC: + case RT_SUCCESS: + case ST_NEED_FAIL: + case ST_TMP: + case ST_ONCE: + case RT_NOTEXIST: + case ST_RESPAWN: +// SERVICE_LOG(real_name,"Ein bekanntest ding"); + break; +/* default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; */ + } + if( argv[1][1] == 'a') break; /* only continue if restarting */ + + case 'e': /* ein */ + switch (run_svc(real_name)) { /* run_svc fuzzys itself */ + case RT_NOTEXIST: + SERVICE_LOG(real_name,LOG_SVC_NOTEXIST); + break; + case RT_SVC_FAILED: + SERVICE_LOG(real_name,LOG_SVC_FAILED); + break; + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_ONCE: + SERVICE_LOG(real_name,LOG_SVC_ONCE); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + case ST_RESPAWN: + SERVICE_LOG(real_name,LOG_SVC_RESPAWN); + break; + case ST_NEED_FAIL: + SERVICE_LOG(real_name,LOG_NEED_FAIL); + break; + default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; + } + break; + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* uses cinit-0.2 return code style */ diff --git a/software/cinit/browse_source/cinit-0.2/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.2/util/msg_reboot.c new file mode 100644 index 00000000..efe78ec6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.2/util/msg_reboot.c @@ -0,0 +1,21 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + if(!begin_msg(cmd)) return 0; + close(sock); + return 1; +} +/* clean for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre1/ b/software/cinit/browse_source/cinit-0.3pre1/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.3pre1/.exclude b/software/cinit/browse_source/cinit-0.3pre1/.exclude new file mode 100644 index 00000000..1a2d31e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/.exclude @@ -0,0 +1,2 @@ +tmp +.git diff --git a/software/cinit/browse_source/cinit-0.3pre1/.gitignore b/software/cinit/browse_source/cinit-0.3pre1/.gitignore new file mode 100644 index 00000000..0f53ad16 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/.gitignore @@ -0,0 +1,14 @@ +*.o +*.a +*0? +MT +ddoc +contrib+tools/cinit.graph.text +config.h +sbin +tmp +os/current +tmpbin +src/os/current +src/ipc/current +src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/CHANGES b/software/cinit/browse_source/cinit-0.3pre1/CHANGES new file mode 100644 index 00000000..bb34eb02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/CHANGES @@ -0,0 +1,33 @@ +cinit-0.3pre1: + - cinit should now compile on mostly all unices + - introduced much new code + - THIS IS A DEVELOPER RELEASE, NOT USABLE IN PRODUCTION ENVIRONMENTS. + +cinit-0.2.1: (Bugfix release) + - Fixed problem in contrib+tools/Makefile when installing + - added many new scripts to convert sys-v-init, which are still early beta + (see bin/cinit.merge.sysvinit-debian-sid) + +cinit-0.2: + - Much more verbose error reporting + - You can now also disable 'once ran' services, + - You can restart services with csevice -r + - Online speech in German is available + - C_DELAY support - variable delay for sending SIGKILL after SIGTERM + - First /etc/csys configuration example (wasserstoff) is available + - a Mailing list was created + - Added tools to analyze cinit configuration + (cinit-vis.pl, cinit.graph.text.c) + - Added tools to import and export configuration to XML + (make.cconfig.from.xml.rb,cconfig.graph.xml.rb) + - Removed unecessary signalling + - Added many helper scripts to install services (cinit.install.service*) + - Fixed many small bugs in old helper scripts (cinit.add.getty, cinit.get-conf, ...) + - Added ccontrol, which allows to control cinit + - Added update (-u) via ccontrol + - Stripped cservice, which now "only" controls services + - Removed swapoff from cinit code, should be handled by off + - Much better error and processing descriptions + - A bit more verbose reporting + - Restructured run_svc, now with better error detection + - Removed Kernel panic, when halting system diff --git a/software/cinit/browse_source/cinit-0.3pre1/COPYING b/software/cinit/browse_source/cinit-0.3pre1/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.3pre1/CREDITS b/software/cinit/browse_source/cinit-0.3pre1/CREDITS new file mode 100644 index 00000000..b009a48c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/CREDITS @@ -0,0 +1,23 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: 2005-09-25) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete + * providing cinit-vs.pl to visualize the cinit-tree +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) +Sandro Koechli + * testing, testing and testing cinit and cinit documentation +Marcus Wagner + * building and maintaining the Debian package +Peter Portmann + * testing cinit and documentation, writing cinit.graph.text in C, other coding diff --git a/software/cinit/browse_source/cinit-0.3pre1/Changelog b/software/cinit/browse_source/cinit-0.3pre1/Changelog new file mode 100644 index 00000000..0fbf76f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/Changelog @@ -0,0 +1,10 @@ +Mo Okt 3 00:19:40 CEST 2005 + *Changelog can now be found in git database (cg-log) +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.3pre1/Makefile b/software/cinit/browse_source/cinit-0.3pre1/Makefile new file mode 100644 index 00000000..9c174b63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/Makefile @@ -0,0 +1,85 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# directories and files +DDOC=ddoc +SDIRS=bin client conf comm doc generic serv util +CDIRS=contrib+tools + +# DO NOT CHANGE THIS. +SBIN=sbin +CINIT_BIN=$(SBIN)/cinit + +# targets +warn: + @cat doc/.buildwarn + +%.o: %.c + $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< + +all: sources + +sources: + $(MAKE) -C src all + +docs: $(DDOC) bin/cdoc-man.sh + ./bin/cdoc-man.sh doc/cinit-doc > $(DDOC)/cinit.8 + ./bin/cdoc-man.sh doc/cservice-doc > $(DDOC)/cservice.8 + +$(DDOC): + mkdir $(DDOC) + +$(CSVC_OBJ) $(OBJ): $(CONFIG_H) + +$(SBIN): + mkdir $(SBIN) + +sizecheck: cinit cservice + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l sbin/ > $$FILE; cat $$FILE + @echo -n "Source size (in KiB): " + @du -s $(SDIRS) | awk '{ sum+=$$1 } END { print sum }' +# @du -s bin client comm conf doc generic serv | awk '{ sum+=$1 } END { print sum }' + +clean: + $(MAKE) -C src clean + #rm -f *.o */*.o */*/*.o sbin/* $(CONFIG_H) ddoc/* + rm -f tmpbin/* + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +ccontrol: $(SBIN)/ccontrol + +$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) + $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ + $(STRIP) $@ + +install:: install-dir cinit cservice ccontrol + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + +#all install clean:: +# @for subdir in $(CDIRS); do \ +# echo "Making $@ in $$subdir"; \ +# (cd $$subdir && $(MAKE) $(MAKEFLAGS) $@) \ +# || exit 1;\ +# done; + +config: + @./bin/cinit.configure.os + @./bin/cinit.configure.tools + @./bin/cinit.configure.ipc + @touch src/.configured diff --git a/software/cinit/browse_source/cinit-0.3pre1/NEXTTODO b/software/cinit/browse_source/cinit-0.3pre1/NEXTTODO new file mode 100644 index 00000000..0e74f3ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/NEXTTODO @@ -0,0 +1,20 @@ +- create + * svc_add_needs + - also adds 'needed by'! + * svc_add_wants + - also adds 'wanted by'! + * Same for svc_del_{needs/wants} + * svc_on() that tries to start a service + * svc_off() that tries to stop a service +- define how it should work (doc/braindums/big-picture.text) +- define service status in one document, so repeatition stops! +- define messages + a) human readable + b) binary data? + ? +- replace cinit_ipc_logon with cinit_ipc_init... +- cleanup run_svc +- implement do_reboot.c +- define messages! +- cleanup sig_child +- test and release cinit-0.3rc1 diff --git a/software/cinit/browse_source/cinit-0.3pre1/README b/software/cinit/browse_source/cinit-0.3pre1/README new file mode 100644 index 00000000..27f07c12 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/README @@ -0,0 +1,110 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre1/ROADMAP b/software/cinit/browse_source/cinit-0.3pre1/ROADMAP new file mode 100644 index 00000000..c1df7de8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/ROADMAP @@ -0,0 +1,116 @@ +-------------------------------------------------------------------------------- +THIS DOCUMENT SHOULD VANISH AS SOON AS EVERYTHING IS FINE +-------------------------------------------------------------------------------- + +Timeline +--------- + * ~ End of October 2006: Reunderstand the code, manifest changes + * ~ Mid of November 2006: Have a compile-able cinit + * ~ End of November 2006: Have a testsystem booting cinit + * ~ Mid of December 2006: Have production stable cinit + - Begin with migration scripts + - publish installable pre-releases + * ~ End of December 2006: Have some generic migration scripts + - Have (different) understanable documents + * ~ Mid of January 2007: Begin official release of cinit-0.3 + + + + +Versions +--------- + +0.3: +~~~ + code: Make cinit compile again :) + code: double check to remove Linux specific source from general tree + code: seperate ipc from the rest + code: fix / check signal handlers + code: cleanup makefile + code: add porting code: add support for any unix in general + code: stabilize code, remove experimenting parts + code: remove delay support, let off/off.params do that. + code: add special directory (/etc/cinit/special?) for os specific binaries + -> halt, poweroff, reboot (NOTHING MORE THEY CAN DO) + -> SHOULD NOT BE IN THE PATH + code: move production code to src/ + end user doc: add warning for special binaries and hint for r/o only + amiga alike systems + + doc: begin to merge old documents into new structure and move them + to the doc/ancient directory +0.3.1: + devel doc: how to write merging scripts + devel doc: merging framework: + - minimal (do not look at the current configuration, build minimal) + - use current system (slowly, may use old scripts) + - rebuilt current system (recommened) + + tools: general framework for merging + end user doc: merging old init to cinit + + code: add porting code: add support for freebsd + code: better readable output: + -> starting + [ started once ] + [ respawning ] + [ failed ] (+ REASON!) + [ needs failed ] (which ones) + + -> stopping + [ stopping ] (for dependencies) + [ stopped ] ? + [ not running ] ? + + code: export profile information (CINIT_PROFILE) + end user doc: using different profiles in user space + end user doc: write examples for profiles: + o switch ssh known_hosts based on profile + o different proxy settings in browsers + - environment + - mozilla settings + o start samba (for lan) + o start samba (for company lan) + o use nis and nfs (company profile) + + doc: continue to merge old documents into new structure and move them + to the doc/ancient directory +0.3.2: + end user doc: what to read to use cinit + end user doc: installing cinit + end user doc: configuring cinit + tools: writing cinit-config (graphical (dialog based?) configuration tool) + code: add porting code: add support for openbsd + + code: add reverse dependency chain (or earlier?) + code: better support for external tools + o neustarten + o mit herunterfahren + o mit herunterfahren und allen Diensten, die abhaengen + o ohne herunterfahren + o Statische Daten + o pid vom Daemon + o pid vom einmal ausgefuehrten Programm + + + doc: end to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.3: + devel doc: writing an init system + devel doc: the conf/-configuration system + + code: check conf/ and perhaps rewrite b0rken english sentences + + code / doc: add logging support for services -> use multilog? + code: add porting code: add support for netbsd + +0.4: + first stable, tested, well documented version. + + code: check for optimisation + + other: compare with other init systems + +0.4.x: + code: add porting code: add support for other unices diff --git a/software/cinit/browse_source/cinit-0.3pre1/TODO b/software/cinit/browse_source/cinit-0.3pre1/TODO new file mode 100644 index 00000000..1b2191f1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/TODO @@ -0,0 +1,261 @@ +-------------------------------------------------------------------------------- +Generate automatic asciidoc from conf/* +-------------------------------------------------------------------------------- +Add handler for ctrl+alt+delete + * document in paths +-------------------------------------------------------------------------------- +pre-compile config: conf/* + +-------------------------------------------------------------------------------- +panic: + read configuratio from defaults/panic* + -> write execute_something before! +-------------------------------------------------------------------------------- +comm: + tmpnow: search for pid in list, + save the pid in the list, so we know whether our executer died! +-------------------------------------------------------------------------------- +Logging / cinit: + fuer unsere eigenen ausgaben auch multilog? + + Logger: shared memory? +-------------------------------------------------------------------------------- +Implement full starting logic in server? +-------------------------------------------------------------------------------- +Build full dependency tree at start? And begin from the end? +-------------------------------------------------------------------------------- +comm/*: + int read + int write + --> fuer pipes + +run_init_svc + muss alle services wissen, die gestartet werden + + start_services_with_deps + gibt pointer auf struktur zurueck + -> Anzahl Services (array!) + -> Service: + Name (Pfad) + Ergebniss + -> beim fehler, die nachricht, strerror? + http://www.opengroup.org/onlinepubs/009695399/functions/strerror.html + + +Beim starten werden needs und wants als needs behandelt, weil +jeder starter _alle_ services zurueckgeben muss. + + Ein Prozess kann maximal 512 abhaengigkeiten haben. + -> open files + + +Neues cinit: + Wenn service fehlschlaegt, wird eine Struktur zurueckgegeben. + + Diese enhaelt: + + int success = + enum { SVC_SUCCESS, SVC_FAILED, SVC_NEED_FAILED, ... } + + char *reason; + + Ausgaben nach Beendigung vom Starten des Services. + + [ on ] %s + Ergebnis + [ off ] %s + + Rekursives herunter/rauffahren +-------------------------------------------------------------------------------- +- add error handling to cinit.install.binary +- remove sigio(), create new functions: + - one for cleaning up the socket + - one for doing the communication (specify two fd's) +- put some logic around exec_svc: + o put waiting code herein -> waiting code to structure! +- cleanup serv/sig_reboot.c:7: + o implement os-specific reboot function +-------------------------------------------------------------------------------- +1. Entfernung mount +2. kommunikation ueber + 1. einen fork pro service + fork(fork) +3. Socket wird erst nach einem Signal erstellt + -> Konfiguration sollte SIGWHATEVER senden +4. Vielleicht panicen, wenn init fehlschlaegt? +-------------------------------------------------------------------------------- +Als naechstes: + +- add code do implement stopping / restarting with dependency tree + o add used_by to the list of services + o used_by should be a simple (double?) linked list +-------------------------------------------------------------------------------- +Documentation: + - Installing cinit + o compiling cinit from source + o debian / gentoo + - Configuring +-------------------------------------------------------------------------------- +Add "used" by to each service, so we can track which services to shutdown. +-------------------------------------------------------------------------------- +- perhaps use dnotify? +- recheck warm reboot +- fix cservice +- print service name or cinit: before _everything_ WE print + +TESTING: + - does cinit eat zombies? + - is the reporting ok? + - does cservice and ccontrol what's expected? + +# cinit.create.empty.service: can only be started from the bin directory + +- compile cinit static and other tools dynamically per default + +- Fix Switching services off !! +- Remove RUN_RUN_SVCs, move code to run_svc so one can determine which + services failed? + --> sequentieller ablauf! + --> parallel ablauf, struct-array mit namen und ergebnis? + --> for dep in deps/*; do fork(run_svc() ); done + -----> while(any_is_running) { sleep } + -------> array durchsuchen, ergebnis nutzen. + - ueberpruefen von wo aus run_svc() aufgerufen wird + +- Fix SIGCHILD problem: + - exec_svc wants to waitpid() itself, so SIG_CHILD makes problems + - respawn_svc: does that need to act on SIGCHLD if the master process + is still running? + - kill respawn -> sigchild cleans up, we do not get waitpid perhaps? +- remove umount code? +- remove zombies, but keep away from SIGCHILD problems +- remove mount /etc/cinit/tmp code + -> how to replace? +- fix bug in Makefile: linking happens twice +- do not kill respawing service, if off exists +- ccontrol +- manpages +- Error codes when shutting down a service? +- Delay dokumentieren +- no_kill dokumentieren +- ddoc zuendefuehren + +- remove umount, swapoff? +--> to services? + +- on.out, on.err, on.in? + -> reading/writing from/to files + +--> Wenn kein ReSPAWN und der Prozess beendet sich nicht, + dann haengt init! +- implement "no_kill" until cinit-0.2 or 0.3? + +Doku!!! + +-------------------------------------------------------------------------------- +- Source Logic issues + - remove FIXME entries (and what should be fixed, too) + - memset for timespecs? + - move umount, swapoff and remount to off of init? + -> cleanup sig_reboot.c + - run_svc: + o we have many strcat()s, perhaps save length of pathbuf and strncat at + pathtmp[strlen(pathbuf)] ? + - do we really need swapoff? +-------------------------------------------------------------------------------- +- Documentation + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml +-------------------------------------------------------------------------------- +Things I did not do and I don't know whether we have to care about: + +- Porting + - add porting code to other unices? + - like openssh guys do? + +- close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? +- logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? +-------------------------------------------------------------------------------- +[OLD BUGS] +- remove cinit watcher? + -> sig_child -> cycle through list? +- DOKU: what happens when a service does not terminate.... + und er als once drin ist +- MANPAGE! +- execve() fails -> no sleep!! +- multiple zombies sometimes - problemservices + -> zombies of respawn watchers are not caught! + -> sig_chld also therein + -> problematic due to wait for child +-doubled cinit instance + - nur einmal +- free() everything before starting child +- cservice! + - prozess nur einmal -> WARTET! cinit auch! +doku: + cservice einmal starten -> wartet auf ende + cint ersetzt init bei gentoo + an error occuerd-> verbose + multuicall probleme -> busysbox --> GIBT ES NICHT!! + ---> DOKU DAZU! mit links, doppelt links, aus test + ---> erklaeren, dass es unproblematisch ist! + +11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet + werden konnte. +11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0 + zurueckgeworfen. +11:09 < folken23> telmich: oder service allready started. +-------------------------------------------------------------------------------- +possible BUGS: + +[14:44] freelsd:cinit-0.2.2% ./sbin/cservice -e ein + +ein: No such file or directory +Bad address +: Service does not exist + +cinit-0.2.2: +USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND +root 1 96.7 0.0 1580 336 ? R 18:59 5:49 /sbin/cinit +root 2 0.0 0.0 0 0 ? SN 18:59 0:00 [ksoftirqd/0] +root 3 0.0 0.0 0 0 ? S 18:59 0:00 [watchdog/0] +root 4 0.0 0.0 0 0 ? S< 18:59 0:00 [events/0] +root 5 0.0 0.0 0 0 ? S< 18:59 0:00 [khelper] +root 6 0.0 0.0 0 0 ? S< 18:59 0:00 [kthread] +root 10 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [khubd] +root 12 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [kblockd/0] +root 99 0.0 0.0 0 0 ? S 18:59 0:00 \_ [pdflush] +root 100 0.0 0.0 0 0 ? S 18:59 0:00 \_ [pdflush] +root 102 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [aio/0] +root 727 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [kseriod] +root 101 0.0 0.0 0 0 ? S 18:59 0:00 [kswapd0] +root 800 0.0 0.0 0 0 ? S 18:59 0:00 [khpsbpkt] +root 803 0.0 0.0 0 0 ? S 18:59 0:00 [pccardd] +root 838 0.0 0.0 0 0 ? S 18:59 0:00 [kjournald] +root 1923 0.0 0.0 1584 200 ? S 18:59 0:00 /sbin/cinit +root 1924 0.0 0.3 3624 1936 tty2 Rs 18:59 0:00 \_ -zsh +root 1969 0.0 0.0 1580 320 tty2 S 19:05 0:00 \_ cservice -e 3 +root 1972 0.0 0.1 2604 828 tty2 R+ 19:05 0:00 \_ ps axuwwf +root 1945 0.0 0.0 0 0 tty2 Z 19:01 0:00 [loadkeys] +cinit: [cprofile:profile] +cinit should not be started directly, but by your kernel. +umount raus +/etc/cinit/specials/... rein + +1. Doku auf asciidoc umstellen +2. den signalhandler code fixen +3. den tempmount entfernen + +--> cinit-0.3-rc1 +-------------------------------------------------------------------------------- +Check: use of perror, strerror+write? +-------------------------------------------------------------------------------- +Check: tuning of ipc-code? +local-services schlaegt fehl, ist aber nichts drin! diff --git a/software/cinit/browse_source/cinit-0.3pre1/TODO.doc b/software/cinit/browse_source/cinit-0.3pre1/TODO.doc new file mode 100644 index 00000000..71ed721d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/TODO.doc @@ -0,0 +1,12 @@ +- doc/user/paths.text + * finish + * add examples +- add cross-compilation howto +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cdoc-man.sh b/software/cinit/browse_source/cinit-0.3pre1/bin/cdoc-man.sh new file mode 100644 index 00000000..fc1adde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cdoc-man.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Nico Schottelius +# Date: 21-Aug-2005 +# Last Modified: - +# + +set -e + +[ $# -ne 1 ] && exit 23 + +SRC=$1 + +cd "$SRC" + +# +# Title heading +# +echo .TH $(cat "meta/name" "meta/man_section" "meta/date") + +# +# Name +# +echo .SH NAME +echo $(cat meta/name) - $(cat meta/short_description) + +# +# Synopsis +# +echo .SH SYNOPSIS +echo $(cat path) $(cat parameters) + +# +# description +# +echo .SH DESCRIPTION +echo $(cat long_description) + +# +# availability +# +for section in availability examples "see also" author; do + if [ -f "$section" ]; then + echo .SH $section | tr '[a-z]' '[A-Z]' + cat "$section" + fi +done + +# +# files +# +if [ -f files ]; then + echo .SH FILES + cat files | sed 's/\(.*\)/.IP "\1" /' +fi + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.add.dependency new file mode 100644 index 00000000..7bc9cc65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.add.dependency @@ -0,0 +1,51 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or wants Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +# adding 'wishes' for x-mas and requires for 'the mass' and 'tv' +case $DEP in + wishes|wants) DEP=$C_WANTS ;; + needs|requires) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could someone PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEP_DIR="${BASEDIR}/${SVC_A}/${DEP}" + +if [ ! -d "$DEP_DIR" ]; then + echo "$DEP_DIR does not exist, creating..." + mkdir "$DEP_DIR" + if [ $? -ne 0 ]; then + echo "Error occured due to creating directory. Exiting." + exit 1 + fi +fi + +DEST="${DEP_DIR}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.add.getty new file mode 100644 index 00000000..987a5bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.add.getty @@ -0,0 +1,75 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# Date: 2005-05-24 (Last changed: 2005-08-07) +# + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | sort -n | tail -n 1) + +[ ! "$LAST_NUMBER" ] && LAST_NUMBER=0 + +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +#echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + */mgetty) + mygetty=$getty + params="38400 tty${NUMBER}" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +# check input +if [ ! "$mygetty" ]; then + read -p "Getty to use [$mygetty]: " rgetty +fi +if [ ! "$params" ]; then + read -p "Parameters to pass [$params]: " rparams +fi +if [ ! "$params" -o ! "$mygetty" ]; then + echo "Sorry, either getty or parameters are not supplied." + exit 23 +fi + +echo -n "Creating $mygetty ($params) in $DDIR ... " +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DDIR" +ln -s "$mygetty" "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.configure.ipc b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.configure.ipc new file mode 100644 index 00000000..65190baa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.configure.ipc @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius, 2006-07-28 +# +# cinit: configure the ipc method to use +# + +HIER=$(dirname $0) +DDIR=$HIER/../src/ipc +DFILE=${DDIR}/current +IPC_METHOD=$(head -n 1 "$HIER/../conf/ipc_method") + +echo "Configure: IPC: Using \"$IPC_METHOD\" as IPC method" + +# always remove link before, as ln seems to be broken +# Doing ln -sf src/ipc/$method current twice, will create the file +# "current" _BELOW_ src/ipc/$method and not overwrite the link +# src/ipc/current + +rm -f "${DFILE}" +ln -sf "${IPC_METHOD}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.configure.mark b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.configure.mark new file mode 100644 index 00000000..aa648411 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.configure.mark @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: touch a file to mark everything configured +# 2006-08-27 +# + +echo "Configure: MK: Marking directory as configured" +touch .configured diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.configure.os b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.configure.os new file mode 100644 index 00000000..d5b8e6e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.configure.os @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups symlinks for the os +# + +DDIR=$(dirname $0)/../src/os +DFILE="$DDIR/current" +OSCONFIG=$(dirname $0)/../conf/os + +OS=$(head -n 1 "$OSCONFIG") + +echo "Configure: OS: Binaries are created for $OS ..." + +rm -f "${DFILE}" +ln -sf "${OS}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.configure.tools b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.configure.tools new file mode 100644 index 00000000..43242a01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.configure.tools @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups scripts for compiling and linking +# + +HIER=$(dirname $0) +DDIR=$HIER/../tmpbin/ +CC=$(head -n 1 "$HIER/../conf/cc") +CFLAGS=$(head -n 1 "$HIER/../conf/cflags") +LD=$(head -n 1 "$HIER/../conf/ld") +LDFLAGS=$(head -n 1 "$HIER/../conf/ldflags") +STRIP=$(head -n 1 "$HIER/../conf/strip") + +echo "Configure: CC: Creating cc, ld and strip ..." + +mkdir -p "$DDIR" +cd "$DDIR" + +echo "$CC $CFLAGS \"\$@\"" > cc +echo "$LD $LDFLAGS \"\$@\"" > ld +echo "$STRIP \"\$@\"" > strip + +# set correct permissions +chmod 0700 * diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.create.empty.service new file mode 100644 index 00000000..365c4bc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.create.empty.service @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.binary new file mode 100644 index 00000000..a368ac23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.binary @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: - +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice +"$INSTALL_PROG" sbin/ccontrol $DESTDIR/$PREFIX/sbin/ccontrol +"$INSTALL_PROG" bin/cinit.reboot $DESTDIR/$PREFIX/sbin/cinit.reboot +"$INSTALL_PROG" bin/cinit.shutdown $DESTDIR/$PREFIX/sbin/cinit.shutdown +"$INSTALL_PROG" bin/cinit.wait.for.daemon \ + $DESTDIR/$PREFIX/sbin/cinit.wait.for.daemon + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi + +# install as /sbin/shutdown, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/shutdown ]; then + ln -s $PREFIX/sbin/cinit.shutdown $DESTDIR/$PREFIX/sbin/shutdown +fi + +# install as /sbin/reboot, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/reboot ]; then + ln -s $PREFIX/sbin/cinit.reboot $DESTDIR/$PREFIX/sbin/reboot +fi diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.config-dir b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.config-dir new file mode 100644 index 00000000..c9adb70f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.config-dir @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.dir new file mode 100644 index 00000000..5e16f690 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.dir @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/sbin" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.fsck b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.fsck new file mode 100644 index 00000000..4508860a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.fsck @@ -0,0 +1,36 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 3 ]; then + echo "$(basename $0): name device filesystem-type" + exit 1 +fi + +NAME=$1 +DEVICE=$2 +FS_TYPE=$3 + +FSCK=/sbin/fsck.$FS_TYPE + +if [ ! -f "$FSCK" ]; then + echo "Missing $FSCK, abort." + exit 1 +fi + +if [ ! -e "$DEVICE" ]; then + echo "Missing $DEVICE abort." + exit 1 +fi + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME" +ln -sf "$FSCK" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON" +echo "$DEVICE" > "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.miniconf b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.miniconf new file mode 100644 index 00000000..45dcc632 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.miniconf @@ -0,0 +1,103 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: 2005-08-07 +# + + +. $(dirname $0)/cinit.read-conf + +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" +echo "" +echo "This will install a minimal cinit configuration." +echo "This configuration _SHOULD_ be able to run on _MOST_ systems." +echo "Still, it's highly EXPERIEMENTAL, use with CAUTION." +echo "" +echo "Please make sure, that" +echo " - you are using a journaling filesystem (fsck is not used)" +echo " - you have agetty, fgetty or mingetty installed" +echo " - you are runnig Linux 2.6 (sysfs is used)" +echo " - you have udev or static device nodes (you need /dev/tty*)" +echo " - getties will run on tty2-tty7, tty1 is used or logging" +echo "" +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" + +notosoftwarepatents="Please keep an eye on software patents, they are evil." +read -p "Do you really want to continue? [y/N] " notosoftwarepatents + +if [ "$notosoftwarepatents" = "y" -o "$notosoftwarepatents" = "Y" ]; then + echo "Let us try it ..." +else + echo 'Bye bye!' + exit 0 +fi + +set -e + +# Create basic layout +$(dirname $0)/cinit.install.standard-dirs + +# Install services: +# - mount root r/w +# - mount /proc +# - mount /sys +# - install getties on tty2-tty7 +# - add cleanup for /etc/mtab +# - add loopback device +# - init service + echo + +################################### mount ##################################### +# mount root read/write +$(dirname $0)/cinit.install.service.mount-root + +# - mount /proc +$(dirname $0)/cinit.install.service.mount-proc + +# - mount /sys +$(dirname $0)/cinit.install.service.mount-sys + +# mount needs everything below it +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/root" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/proc" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/sys" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" + +################################### getty ##################################### +# mount root read/write +# install getties +begin_getty=2 +end_getty=7 +i=$begin_getty + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" +while [ "$i" -le "$end_getty" ]; do + $(dirname $0)/cinit.add.getty + ln -sf "${DESTDIR}/${CINIT_DIR}/getty/$i" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" + i=$(($i+1)) +done + +################################### mtab ##################################### +# - add cleanup for /etc/mtab +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" +$(dirname $0)/cinit.install.service.cleanup-mtab +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" + +################################### lo ##################################### +# - add loopback device +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" +$(dirname $0)/cinit.install.service.network-lo +ln -sf "${DESTDIR}/${CINIT_DIR}/network/lo" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" + +# - init service + echo +# init depends on mount, getty -> everything from base-layout +$(dirname $0)/cinit.install.service.init +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" + +ln -sf "${DESTDIR}/${CINIT_DIR}/local-services/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/getty/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/network/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.cleanup-mtab b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.cleanup-mtab new file mode 100644 index 00000000..30a8dd48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.cleanup-mtab @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: cleanup mtab +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" +echo '#!/bin/sh' > "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'rm -f /etc/mtab' >>"${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'ln -s /proc/mounts /etc/mtab' \ + >> "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +chmod 0700 "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.hostname.generic b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.hostname.generic new file mode 100644 index 00000000..2d72f50e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.hostname.generic @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service, which sets the hostname +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): hostname" + exit 1 +fi + +HOSTNAME=$1 +HOSTNAME_BIN=${HOSTNAME_BIN:-/bin/hostname} + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/network/hostname" +ln -sf "$HOSTNAME_BIN" "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON" +echo "$HOSTNAME" > "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.init b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.init new file mode 100644 index 00000000..c3a10931 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.init @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +ln -sf /bin/echo "${DESTDIR}/${CINIT_DIR}/${C_INIT}/$C_ON" +echo '*** cinit initial service successfully started ***' \ + > "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.keymap.c_keymap b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.keymap.c_keymap new file mode 100644 index 00000000..235a329e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.keymap.c_keymap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install keymap from environment setting +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +if [ -z "$C_KEYMAP" ]; then + echo "Set C_KEPMAP to the wanted keymap." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" ]; then + echo "Service keymap already exists." + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find loadkeys) + +if [ $? -ne 0 ]; then + echo "Did not find binary loadkeys." + exit 1 +fi + +echo -n "Installing keymap to ${DESTDIR}/${CINIT_DIR}/local-tuning/keymap ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON" + +echo "$C_KEYMAP" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.mount-proc b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.mount-proc new file mode 100644 index 00000000..024847a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.mount-proc @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /proc +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/proc" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/proc/$C_ON" +echo proc > "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo /proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.mount-root b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.mount-root new file mode 100644 index 00000000..a1bd56ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.mount-root @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount root r/w +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# mount root read/write +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/root" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/root/$C_ON" +echo -n > "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo -o >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo remount,rw >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo / >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.mount-sys b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.mount-sys new file mode 100644 index 00000000..8c8191aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.mount-sys @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /sys +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /sys +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/sys" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/sys/$C_ON" +echo sys > "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo sysfs >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo /sys >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.network-lo b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.network-lo new file mode 100644 index 00000000..45bff6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.network-lo @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: loopback device +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/lo" +ln -sf /sbin/ifconfig "${DESTDIR}/${CINIT_DIR}/network/lo/$C_ON" +echo lo > "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo 127.0.0.1/8 >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo up >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.ntpdate.debian b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.ntpdate.debian new file mode 100644 index 00000000..2af2ee4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.ntpdate.debian @@ -0,0 +1,47 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install ntpdate +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +. /etc/default/ntpdate + +if [ -z "$NTPSERVERS" ]; then + echo "No ntp servers found, aborting" + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find ntpdate) + +if [ $? -ne 0 ]; then + echo "Did not find binary ntpdate." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" ]; then + echo "Service ntpdate already exists." + exit 1 +fi + +echo -n "Installing ntpdate to ${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON" + +for server in $NTPSERVERS; do + echo "$server" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON$C_PARAMS" +done + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.udev b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.udev new file mode 100644 index 00000000..d91f01cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.service.udev @@ -0,0 +1,64 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install udev +# Date: 2005-10-15 +# Comment: DO NOT RSYNC TO THE WRONG SIDE! +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BIN_UDEVSEND=$($(dirname $0)/cinit.path-find udevsend) +BIN_UDEVSTART=$($(dirname $0)/cinit.path-find udevstart) +BIN_SYSCTL=$($(dirname $0)/cinit.path-find sysctl) +BIN_MOUNT=$($(dirname $0)/cinit.path-find mount) +SERVICE="local-tuning/udev" + +if [ -z "$BIN_UDEVSEND" -o -z "$BIN_UDEVSTART" -o -z "$BIN_SYSCTL" -o -z "$BIN_MOUNT" ]; then + echo "Did not find a binary." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo "Installing ${SERVICE} to ${DESTDIR}/${CINIT_DIR}/ ..." + +# 0. general udev +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}" +# 1. udevmount +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/mount/udev" +ln -sf "$BIN_MOUNT" "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON" +echo "udev" > "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "-t" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "tmpfs" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "/dev" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" + +# 2. udevstart +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart" +ln -sf "$BIN_UDEVSTART" "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart/$C_ON" + +# dependencies +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/sys +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/udev + +# 3. udev to hotplug +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug" +ln -sf "$BIN_SYSCTL" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug/$C_ON" +echo "$BIN_UDEVSEND" > "${DESTDIR}${CINIT_DIR}/${SERVICE}/hotplug/$C_ON$C_PARAMS" + +$(dirname $0)/cinit.add.dependency ${SERVICE}/hotplug needs mount/proc + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.standard.init.deps b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.standard.init.deps new file mode 100644 index 00000000..dcc5cd07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.standard.init.deps @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add standard sub-configuration directories to init wants +# Date: 2005-10-11 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.standard.mounts b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.standard.mounts new file mode 100644 index 00000000..bb1fc0c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.standard.mounts @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create normal mounts +# Date: 2005-10-16 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.swap b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.swap new file mode 100644 index 00000000..84e6c928 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.swap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install swap +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +SERVICE=mount/swap + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BINARY=swapon +BINARY_PATH=$($(dirname $0)/cinit.path-find $BINARY) +if [ $? -ne 0 ]; then + echo "Did not find binary $BINARY." + exit 1 +fi + +HAS_SWAP=$(awk '$3 ~ /swap/ { print $3 }' /etc/fstab) +if [ -z "$HAS_SWAP" ]; then + echo "Seems you have no swap, service not installing" + exit 1 +fi +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo -n "Installing ${SERVICE} to ${DESTDIR}${CINIT_DIR}/${SERVICE} ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON" + +echo "-a" >> "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.merge.sysvinit-debian-sid b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.merge.sysvinit-debian-sid new file mode 100644 index 00000000..3ef0ce03 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.merge.sysvinit-debian-sid @@ -0,0 +1,137 @@ +#!/bin/sh +# Nico Schottelius +# Date: Sun Oct 16 16:57:03 CEST 2005 +# cLinux/cinit +# Automagically convert Debian-Sysv-Iinit +# THIS IS NOT CLEAN. +# THIS IS NOT EVEN INTENTED TO BE CLEAN. +# This is just a small hack, because my girlfriend wants her notebook back. + +echo "***> $(basename $0): converting Debian-Sys-V-Init" + +# read standard values, may be overwritten from outside +. $(dirname $0)/cinit.read-conf + +echo "***> Finding standard config ..." +# variables, which can be set from the outside +ROOT_DEV=${ROOT_DEV:-$(awk '$2 ~ /^\/$/ { print $1 }' /etc/fstab)} +ROOT_FSCK=${ROOT_FSCK:-$(awk '$2 ~ /^\/$/ { print $6 }' /etc/fstab)} +ROOT_FS=${ROOT_FS:-$(awk '$2 ~ /^\/$/ { print $3 }' /etc/fstab)} +RUNLEVEL=${RUNLEVEL:-$(runlevel | awk '{ print $2 }')} + +echo "***> Detecting keymap (this may take some time)" + +if [ -z "$C_KEYMAP" ]; then + echo "Please set the variable C_KEYMAP to your keymap." + echo "It is impossible to detect reliable your keymap in Debian." + exit 1 +fi + + +echo "***> Configuration" +echo "Hostname (\$HOSTNAME): $HOSTNAME" +echo "Keymap (\$C_KEYMAP): $C_KEYMAP" +echo "Root device (\$ROOT_DEV): $ROOT_DEV" +echo "Root fsck (\$ROOT_FSCK): $ROOT_FSCK" +echo "Root FS (\$ROOT_FS): $ROOT_FS" +echo "Runlevel (\$RUNLEVEL): $RUNLEVEL" +echo "Destdir: (\$DESTDIR): $DESTDIR" +echo "Config-Dir: (\$CINIT_DIR): $CINIT_DIR" +read -p "Is this correct (Y/n) " correct + +if [ "$correct" != "y" -a "$correct" != "Y" ]; then + echo "***> Abort." + exit 1 +fi + +if [ -d "${DESTDIR}${CINIT_DIR}" ]; then + echo "ERROR: Configuration already exists at ${DESTDIR}${CINIT_DIR}." + exit 1 +fi + +echo "***> Installing standard structure and dependencies" +set -e +$(dirname $0)/cinit.install.config-dir +$(dirname $0)/cinit.install.standard.dirs +$(dirname $0)/cinit.install.standard.init.deps + +echo "***> Adding mount / r/w" +$(dirname $0)/cinit.install.service.mount-root + +if [ "$ROOT_FSCK" = "1" ]; then + echo "***> Adding fsck for $ROOT_DEV ..." + $(dirname $0)/cinit.install.fsck root "$ROOT_DEV" "$ROOT_FS" + echo "***> Adding dependency" + $(dirname $0)/cinit.add.dependency mount/root needs fsck/root +else + echo "***> Skipping fsck for $ROOT_DEV ..." +fi + +echo "***> Setting up standard mounts ..." +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up hostname: $HOSTNAME" +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up keymap" +$(dirname $0)/cinit.install.service.keymap.c_keymap + +echo "***> Creating getties (tty1-8)" +for i in `seq 1 8`; do + $(dirname $0)/cinit.add.getty + + # each getty needs: + # - root r/w + $(dirname $0)/cinit.add.dependency getty/$i needs mount/root + # - hostname + $(dirname $0)/cinit.add.dependency getty/$i needs network/hostname +done + +echo "***> Enabling getties (tty2-8)" +for i in `seq 2 8`; do + # add getties to getty/ + $(dirname $0)/cinit.add.dependency getty wants getty/$i +done + +# +# Convert services: check /etc/rcS.d and /etc/rcX.d +# +echo "***> Converting services ..." +for script in $(cd /etc/rcS.d/; ls S*; cd /etc/rc${RUNLEVEL}.d/; ls S*); do + echo -n "$script: " + case $script in + # SCRIPTS READY + *ntpdate) + $(dirname $0)/cinit.install.service.ntpdate.debian + $(dirname $0)/cinit.add.dependency local-tuning/ntpdate needs network + ;; + *udev*) + $(dirname $0)/cinit.install.service.udev + + # SCRIPTS NEVER READY + *glibc.sh|*module-init-tools|*modutils|*procps.sh|*hotplug-net|*bootmisc.sh|*nviboot|*screen-cleanup|*x11-common|*sudo|*makedev|*rmnologin) + echo "Ignoring (useless)." + ;; + + # SCRIPTS NOT YET READY + *mountvirtfs|*checkroot.sh|*ifupdown-clean|*checkfs.sh|*mountall.sh|*ifupdown|*hostname*|*mountnfs.sh|*alsa|*rsync|*ssh|*fam|*cron|*gdm) + echo "converting planned later." + ;; + + # SCRIPTS LATER TO DO + *bootlogd|*keymap.sh|*hwclock*|*discover|*pppd-dns|*dns-clean|*networking|*portmap|*console-screen.sh|*urandom|*klogd|*apmd|*dbus-1|*exim4|*pcmcia|*nfs-common|*stop-bootlogd) + echo "unsupported currently (FIXME PLEASE)." + ;; + *sysklogd|*ppp|*inetd|*lpd|*aumix|*atd) + echo "unsupported (choose a better alternative)." + ;; + *initrd-tools.sh|*libdevmapper*|*hotplug) + echo "Ignoring (general or bloated script)." + ;; + *) + echo "Ignoring (unknown)" + ;; + esac +done + +echo "***> Finished." diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.path-find b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.path-find new file mode 100644 index 00000000..0d0f362b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.path-find @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: find binary in path +# Date: 2005-10-15 +# + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): searched binary" + exit 1 +fi + +binary=$1 + +# this is NOT really clean, paths can also contain spaces +for pfad in $(echo $PATH | sed 's/:/ /g'); do + fullname=$pfad/$binary + if [ -f "$fullname" ]; then + echo "$fullname" + exit 0 + fi +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.release b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.release new file mode 100644 index 00000000..c5e15859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.release @@ -0,0 +1,38 @@ +#!/bin/sh +# Nico Schottelius +# Build release tar +# Date: Sat Oct 15 21:38:29 CEST 2005 +# Last Changed: Fr Okt 28 01:24:58 CEST 2005 + + +if [ $# -ne 2 ]; then + echo $(basename $0): source-dir version + exit 1 +fi + +DIR=$1 +VERSION=$2 +OUT_NAME=cinit-${VERSION}.tar.bz2 +D_HOST=home.schottelius.org +D_BASE=www/org/schottelius/unix/www/cinit +D_DIR=${D_BASE}/archives/ +D_SOURCE=${D_BASE}/browse_source/ + +if [ ! -d "$DIR" ]; then + echo "$DIR is not a directory" + exit 1 +fi + +( cd "$DIR" && make clean ) || exit 1 + +echo "Creating bzip2 compressed tar" +tar cj -X $DIR/.exclude -f "$OUT_NAME" $DIR +chmod 0644 "$OUT_NAME" +echo "Transfering to $D_HOST" +scp "$OUT_NAME" "$D_HOST:$D_DIR" +echo "Extracting to $D_SOURCE" +ssh "$D_HOST" "tar xfj $D_DIR/$OUT_NAME -C $D_SOURCE" +echo "Correcting paranoid permissions" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type f -exec chmod 0644 {} \\;" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type d -exec chmod 0755 {} \\;" +echo "Please do not forget to update the website..." diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.remove.getty new file mode 100644 index 00000000..4950eeed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.remove.getty @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + +if [ ! "$NUMBER" ]; then + echo "There is no getty to remove." + exit 1 +fi + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r "$DDIR" +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.shutdown new file mode 100644 index 00000000..702c8a17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.shutdown @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# TODO: use ccontrol! +# 2005-05-24 (Last changed: 2005-06-18) + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -p|--power-off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " -s|--rescue: Rescue mode" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -p|--power-off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + -s|--rescue) kill -USR2 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.uml.test new file mode 100644 index 00000000..f6ea7fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.1 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG umid=cinit$$ init=/sbin/cinit" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..7f027455 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 (Last Changed: 2005-06-17) + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +PIDFILE=$1; shift +DAEMON=$1; shift + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.3pre1/client/README b/software/cinit/browse_source/cinit-0.3pre1/client/README new file mode 100644 index 00000000..0a5b8d0c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/client/README @@ -0,0 +1,2 @@ +client/ + These sources are used by the children which are spawned by cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre1/client/begin_msg.c b/software/cinit/browse_source/cinit-0.3pre1/client/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/client/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/client/connect_sock.c b/software/cinit/browse_source/cinit-0.3pre1/client/connect_sock.c new file mode 100644 index 00000000..2c2d45de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/client/connect_sock.c @@ -0,0 +1,38 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include /* memset, strcpy */ + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/client/exec_svc.c b/software/cinit/browse_source/cinit-0.3pre1/client/exec_svc.c new file mode 100644 index 00000000..f217f9e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/client/exec_svc.c @@ -0,0 +1,264 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +inline pid_t exec_svc(char *abspath, int action) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + SERVICE_LOG(abspath,LOG_SVC_FAIL); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + P_EXEC_FAILED(nargv[0]); + perror(MSG_ERR_EXECVE); + /* FIXME: remove debug, remove double printing without loosing info */ + sleep(3); /* debug */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/client/msg_change_status.c b/software/cinit/browse_source/cinit-0.3pre1/client/msg_change_status.c new file mode 100644 index 00000000..836a0fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/client/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* FIXME: change return code validation */ + +int msg_change_status(char *svc, char status, pid_t pid) +{ + if(!begin_msg(CMD_CHG_STATUS)) { + return RT_ERR_COMM; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/client/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.3pre1/client/msg_svc_on_off.c new file mode 100644 index 00000000..02948f2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/client/msg_svc_on_off.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, char action) +{ + if(!begin_msg(action)) return RT_ERR_COMM; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return RT_ERR_COMM; + return (int) do_result(sock,NULL); +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre1/client/respawn_svc.c b/software/cinit/browse_source/cinit-0.3pre1/client/respawn_svc.c new file mode 100644 index 00000000..5c350045 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/client/respawn_svc.c @@ -0,0 +1,99 @@ +/* + * (c) 2005,2006 Nico Schottelius (nico-linux at schottelius.org) + * respawn_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + D_PRINTF(abspath); + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, CMD_START_SVC) ) { + if(cpid != 0) { + D_PRINTF("sloefen"); + sleep(SLEEP_SVC); + D_PRINTF("Zuende geschlafen"); + } + } + } while(cpid); /* cpid is reset by sig_terminate() */ + + /* FIXME: put most code of sig_terminate here, look for no_kill */ + + /* start off task */ + exec_svc(abspath,CMD_STOP_SVC); + + D_PRINTF("jetzt weg"); + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/client/run_run_svcs.c b/software/cinit/browse_source/cinit-0.3pre1/client/run_run_svcs.c new file mode 100644 index 00000000..6486c76f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/client/run_run_svcs.c @@ -0,0 +1,86 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/client/run_svc.c b/software/cinit/browse_source/cinit-0.3pre1/client/run_svc.c new file mode 100644 index 00000000..7fea6a92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/client/run_svc.c @@ -0,0 +1,129 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre1/client/sig_terminate.c b/software/cinit/browse_source/cinit-0.3pre1/client/sig_terminate.c new file mode 100644 index 00000000..9b23e349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/client/sig_terminate.c @@ -0,0 +1,60 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + /* FIXME: only send SIGTERM, if not_kill does not exist */ + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + status = kill(cpid,SIGKILL); + if( status == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + D_PRINTF("muesste weg sein"); + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/comm/README b/software/cinit/browse_source/cinit-0.3pre1/comm/README new file mode 100644 index 00000000..840c9742 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/comm/README @@ -0,0 +1,3 @@ +comm/ + The communication part of cinit. + The functions are used in client and in server code. diff --git a/software/cinit/browse_source/cinit-0.3pre1/comm/do_change_status.c b/software/cinit/browse_source/cinit-0.3pre1/comm/do_change_status.c new file mode 100644 index 00000000..94b9be76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/comm/do_change_status.c @@ -0,0 +1,70 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/comm/do_result.c b/software/cinit/browse_source/cinit-0.3pre1/comm/do_result.c new file mode 100644 index 00000000..cb51161b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/comm/do_result.c @@ -0,0 +1,33 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return RT_ERR_COMM; + } + + return *value; +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre1/comm/do_svc_name.c b/software/cinit/browse_source/cinit-0.3pre1/comm/do_svc_name.c new file mode 100644 index 00000000..d427365f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/comm/do_svc_name.c @@ -0,0 +1,51 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/.README b/software/cinit/browse_source/cinit-0.3pre1/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_confdir b/software/cinit/browse_source/cinit-0.3pre1/conf/c_confdir new file mode 100644 index 00000000..091e6192 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_confdir @@ -0,0 +1,3 @@ +conf + +The directory below cinit_dir for cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_delay b/software/cinit/browse_source/cinit-0.3pre1/conf/c_delay new file mode 100644 index 00000000..dc30f147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGTERM for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_env b/software/cinit/browse_source/cinit-0.3pre1/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_halt b/software/cinit/browse_source/cinit-0.3pre1/conf/c_halt new file mode 100644 index 00000000..4eed340f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_halt @@ -0,0 +1,4 @@ +halt + +Name of the link belowe c_special, which links to the program +to be executed right before halting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_init b/software/cinit/browse_source/cinit-0.3pre1/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_needs b/software/cinit/browse_source/cinit-0.3pre1/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_off b/software/cinit/browse_source/cinit-0.3pre1/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_on b/software/cinit/browse_source/cinit-0.3pre1/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_panic b/software/cinit/browse_source/cinit-0.3pre1/conf/c_panic new file mode 100644 index 00000000..7fdb77b3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_panic @@ -0,0 +1,5 @@ +panic + +Name of the file below cinit_dir/c_confdir/ to execute on panic. +This name .params (normally panic.params) will be passed as parameters/ +argumunts to panic. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_params b/software/cinit/browse_source/cinit-0.3pre1/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_poweroff b/software/cinit/browse_source/cinit-0.3pre1/conf/c_poweroff new file mode 100644 index 00000000..5b5c9c9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_poweroff @@ -0,0 +1,4 @@ +poweroff + +Name of the link belowe c_special, which links to the program +to be executed right before powering off the system. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_reboot b/software/cinit/browse_source/cinit-0.3pre1/conf/c_reboot new file mode 100644 index 00000000..8702388f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_reboot @@ -0,0 +1,4 @@ +reboot + +Name of the link belowe c_special, which links to the program +to be executed right before rebooting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_respawn b/software/cinit/browse_source/cinit-0.3pre1/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_sock b/software/cinit/browse_source/cinit-0.3pre1/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_tmp b/software/cinit/browse_source/cinit-0.3pre1/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.3pre1/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.3pre1/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_umount b/software/cinit/browse_source/cinit-0.3pre1/conf/c_umount new file mode 100644 index 00000000..ab96b0a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_umount @@ -0,0 +1,6 @@ +umount + +Name of the file below cinit_dir/c_confdir/ to execute right before +reboot/halt/poweroff. + +It should normally be a shellscript with the OS-specific umount procedure. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/c_wants b/software/cinit/browse_source/cinit-0.3pre1/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/cc b/software/cinit/browse_source/cinit-0.3pre1/conf/cc new file mode 100644 index 00000000..b168ae6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/cc @@ -0,0 +1,3 @@ +gcc + +The c-compiler to use. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/cflags b/software/cinit/browse_source/cinit-0.3pre1/conf/cflags new file mode 100644 index 00000000..c0ef65ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/cflags @@ -0,0 +1,3 @@ +-pipe -W -Wall -Werror -Iheaders -g + +Standard flags to pass to (g)cc. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/cinit_dir b/software/cinit/browse_source/cinit-0.3pre1/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/confdir b/software/cinit/browse_source/cinit-0.3pre1/conf/confdir new file mode 100644 index 00000000..55fb65e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/confdir @@ -0,0 +1,3 @@ +conf + +The subdirectory below /etc/cinit to be used for general configurations. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/destdir b/software/cinit/browse_source/cinit-0.3pre1/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/getty_dir b/software/cinit/browse_source/cinit-0.3pre1/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/install_directory b/software/cinit/browse_source/cinit-0.3pre1/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/install_prog b/software/cinit/browse_source/cinit-0.3pre1/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/ipc_method b/software/cinit/browse_source/cinit-0.3pre1/conf/ipc_method new file mode 100644 index 00000000..fc75e273 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/ipc_method @@ -0,0 +1,5 @@ +msgq + +The type of IPC (inter process communication) to use. +Valid values can be optained by issuing `ls src/ipc/`. + diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/ld b/software/cinit/browse_source/cinit-0.3pre1/conf/ld new file mode 100644 index 00000000..b60e4836 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/ld @@ -0,0 +1,3 @@ +gcc + +Comment missing. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/ldflags b/software/cinit/browse_source/cinit-0.3pre1/conf/ldflags new file mode 100644 index 00000000..fc214daf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/ldflags @@ -0,0 +1,3 @@ + + +No flags specified normally. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/max_delay b/software/cinit/browse_source/cinit-0.3pre1/conf/max_delay new file mode 100644 index 00000000..149fa16c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/max_delay @@ -0,0 +1,7 @@ +4 + +Maximum number of digits which may be in the delay file. +If there are more, the string "12345678901" will be cut to the +right length "1234567890". I don't think you'll ever need +a timeout greater 4 digits (9999 seconds are 166,65~ minutes, are +2 hours, 46 minutes and 39 seconds). See doc/configuring.cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/max_deps b/software/cinit/browse_source/cinit-0.3pre1/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/msgq_pathname b/software/cinit/browse_source/cinit-0.3pre1/conf/msgq_pathname new file mode 100644 index 00000000..1bef0b6b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/msgq_pathname @@ -0,0 +1,4 @@ +/bin/sh + +Used to generate an unique identifier for the message queue. +See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/msgq_to_clients b/software/cinit/browse_source/cinit-0.3pre1/conf/msgq_to_clients new file mode 100644 index 00000000..dd15808a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/msgq_to_clients @@ -0,0 +1,4 @@ +o + +This is use in ftok to generate a key_t for the message queue use to write +to the clients. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/msgq_to_server b/software/cinit/browse_source/cinit-0.3pre1/conf/msgq_to_server new file mode 100644 index 00000000..f87ae3f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/msgq_to_server @@ -0,0 +1,4 @@ +i + +This is use in ftok to generate a key_t for the message queue use to write +to the server. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/os b/software/cinit/browse_source/cinit-0.3pre1/conf/os new file mode 100644 index 00000000..ddbf8f9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/os @@ -0,0 +1,14 @@ +linux + +Select the operating system compiling for. + +Current possibilities: + + - linux + + +Currently Planned possibilities: + + - freebsd + - openbsd + - netbsd diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/p_asciidoc b/software/cinit/browse_source/cinit-0.3pre1/conf/p_asciidoc new file mode 100644 index 00000000..52485c86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/p_asciidoc @@ -0,0 +1,6 @@ +asciidoc + +The binary on your system (with or without path) which does what I expect +asciidoc todo. + +Default: asciidoc diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/p_docbooktoman b/software/cinit/browse_source/cinit-0.3pre1/conf/p_docbooktoman new file mode 100644 index 00000000..d62c9015 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/p_docbooktoman @@ -0,0 +1,6 @@ +docbook2x-man + +The binary on your system (with or without path) which converts +docbook to manpages. + +Default: docbook2x-man diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/p_docbooktotexi b/software/cinit/browse_source/cinit-0.3pre1/conf/p_docbooktotexi new file mode 100644 index 00000000..278f6805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/p_docbooktotexi @@ -0,0 +1,6 @@ +docbook2x-texi + +The binary on your system (with or without path) which converts +docbook to texinfo. + +Default: docbook2x-texi diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/prefix b/software/cinit/browse_source/cinit-0.3pre1/conf/prefix new file mode 100644 index 00000000..6b90469f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/prefix @@ -0,0 +1,5 @@ + + +Where to install cinit. Normally this will be /, but you can put it anywhere. +The subdirectory 'sbin' under this prefix must be readable by the kernel. +This is normally either empty or "/". diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/profile b/software/cinit/browse_source/cinit-0.3pre1/conf/profile new file mode 100644 index 00000000..b9104bf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/profile @@ -0,0 +1,9 @@ +cprofile: + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile:" is the standard, as +the Linux kernel eats everything in the form 'var=parm'. +The old (pre cinit-0.1) option "cprofile=" should therefore +NOT be used. + +Under Linux you tell it the bootloader like grub or LILO. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/service_categories b/software/cinit/browse_source/cinit-0.3pre1/conf/service_categories new file mode 100644 index 00000000..d632b875 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/service_categories @@ -0,0 +1,4 @@ +getty local-tuning local-services mount network remote-services + +List of directories normally created below /etc/cinit/svc/ as +'pseudo-services'. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/sleep_kill b/software/cinit/browse_source/cinit-0.3pre1/conf/sleep_kill new file mode 100644 index 00000000..b419241a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/sleep_kill @@ -0,0 +1,8 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. + +Note: This does NOT affect terminating services, they are shutdown by +their own 'off' functions. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.3pre1/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.3pre1/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/sleep_svc b/software/cinit/browse_source/cinit-0.3pre1/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/sock_queue b/software/cinit/browse_source/cinit-0.3pre1/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/strip b/software/cinit/browse_source/cinit-0.3pre1/conf/strip new file mode 100644 index 00000000..08736418 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/strip @@ -0,0 +1,3 @@ +strip -R .comment -R .note + +Strip out unecessary parts of the binaries. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/sulogin b/software/cinit/browse_source/cinit-0.3pre1/conf/sulogin new file mode 100644 index 00000000..24859afc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/sulogin @@ -0,0 +1,6 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it, if the standard panic +action fails (as specified in cinit_dir/c_confdir/panic). + +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/svcdir b/software/cinit/browse_source/cinit-0.3pre1/conf/svcdir new file mode 100644 index 00000000..087a3848 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/svcdir @@ -0,0 +1,3 @@ +svc + +Directory below /etc/cinit that contains the services. diff --git a/software/cinit/browse_source/cinit-0.3pre1/conf/version b/software/cinit/browse_source/cinit-0.3pre1/conf/version new file mode 100644 index 00000000..6fb871b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/conf/version @@ -0,0 +1,3 @@ +"0.3" + +The version. diff --git a/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/Makefile b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/Makefile new file mode 100644 index 00000000..8441c90b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/Makefile @@ -0,0 +1,70 @@ +# +# (c) 2005 Peter Portmann (pp at bluewin.ch) +# cinit/contrib+tools +# +# This script is written for the clinux-System and published +# under the terms of GPL 2.0 +# +# Version: 0.2 +# clean with a single command instead of two commands. +# +# ChangeLog: +# 0.1 initial version +# +# Todo: +# +# Features: + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +DEBUG=-g -DDEBUG +#OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! +LDFLAGS= + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. -I../ +LD=gcc +STRIP=strip -R .comment -R .note + +INSTALL = install + +prefix = /usr +bindir = $(prefix)/bin + +# objects + +CLIENT=cinit.graph.text.o + +COMMUNICATION=error.o ../generic/usage.o ../generic/mini_printf.o + +OBJ=$(CLIENT) $(COMMUNICATION) + +# +PROGRAMS=cinit.graph.text +SCRIPTS=cconfig.graph.xml.rb \ + make.cconfig.from.xml.rb \ + cinit-vis.pl + +# targets +all: $(PROGRAMS) + +cinit.graph.text: $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +clean: + rm -f *.o $(PROGRAMS) + +install: all + @echo '*** Installing contrib+tools ***' + $(INSTALL) -d -m755 $(DESTDIR)$(bindir) + for bin in $(SCRIPTS) $(PROGRAMS); do \ + $(INSTALL) $$bin $(DESTDIR)/$(bindir); \ + done diff --git a/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/README b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/README new file mode 100644 index 00000000..85fa2f5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/README @@ -0,0 +1,11 @@ +contrib+tools/ + programs written by others and external tools not necessary + needed but (very) nice to have + + + cinit-vis.pl - draw an ascii graph of cinit configuration [perl] + cinit.graph.text - draw an ascii graph of cinit configuration [c] + + cconfig.graph.xml.rb - creates a xml file from a cconfig [ruby] + make.cconfig.from.xml.rb - creates a cconfig from a xml file [ruby] + diff --git a/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/README.ruby b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/README.ruby new file mode 100644 index 00000000..ed210cee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/README.ruby @@ -0,0 +1,7 @@ +The ruby tools for general cconfig [0] are written by René Nussbaumer [1]. +You can find the documentation for them at [2]. + + +[0]: http://nico.schotteli.us/papers/linux/cconfig/ +[1]: http://killerfox.forkbomb.ch/ +[2]: http://killerfox.forkbomb.ch/articles/cconfig/tools diff --git a/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/cconfig.graph.xml.rb b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/cconfig.graph.xml.rb new file mode 100644 index 00000000..d18ba422 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/cconfig.graph.xml.rb @@ -0,0 +1,117 @@ +#!/usr/bin/env ruby + +=begin + + Writes an XML-Tree for a cconfig directory + Idea by Nico Schottelius aka telmich + Implemented and (C) by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added support for binary files + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Changed checking order: symlink, directory, file. Because of + a logical bug -> directory follows symlink so, when a symlink + points to a directory no «link» element is created. + + Version 0.1 (René Nussbaumer): + * Holy hack for directory scanning (needs to be optimized) + * Hack for rexml to print out «lost» tags. This rexml sux. + + Todo: + * Optimize scanning. + * Use another xml library instead of rexml crap. + Problem: Produce dependencies -> no std-lib + + Features: + * Create a flat (no deepnes without directory) and 1:1 image + of an cconfig directory + +=end + +require 'rexml/document' +require 'base64' +require 'digest/sha1' + +require 'filemagic' + +@version = '0.3' + +def determineTarget(entry) + return 'external' if(!File.expand_path(entry).index(@initpath)) + return 'link' if(FileTest.symlink?(entry)) + return 'object' if(FileTest.directory?(entry)) + return 'attribute' if(FileTest.file?(entry)) + return 'unknown' # Should never be reached +end + +def createTree(dir, parent) + dir.each { |entry| + next if(entry =~ /^(\.|\.\.)$/) + + if(FileTest.symlink?(entry)) + e = parent.add_element('link') + + # Much fun with links + e.add_attributes( { 'name' => entry, 'target' => determineTarget(File.readlink(entry)) } ) + e.add_text(File.readlink(entry)) + elsif(FileTest.directory?(entry)) + e = parent.add_element('object') + e.add_attribute('name', entry) + + # Bad, that we need to change the directory every time. + oldPwd = Dir.pwd + Dir.chdir(entry) + createTree(Dir.new('.'), e) + Dir.chdir(oldPwd) + elsif(FileTest.file?(entry)) + e = parent.add_element('attribute') + e.add_attribute('name', entry) + if(File.stat(entry).size?) + # Yeah, we got one WITH content! W00h00, let's party. + + fm = FileMagic.new(FileMagic::MAGIC_MIME) + if(fm.file(entry) =~ /executable/) + e.add_attribute('type', 'binary') + text = File.new(entry).read + e.add_attribute('sha1', Digest::SHA1.hexdigest(text)) + e.add_text(Base64.encode64(text)) + else + e.add_text(File.new(entry).read) + end + fm.close() + end + end + } +end + + +if(!ARGV[0] || !FileTest.directory?(ARGV[0])) + puts 'You need to specify a directory' + Kernel.exit(-1) +end + +doc = REXML::Document.new + +e = doc.add_element('cconfig') +e.add_attribute('name', File.basename(ARGV[0])) +e.add_attribute('version', @version) + +@initpath = File.expand_path(ARGV[0]) +Dir.chdir(ARGV[0]) +createTree(Dir.new('.'), doc.root) + +out = '' +doc.write(out, 0, false, true) + +REXML::XMLDecl.new('1.0', 'utf-8').write($stdout) # This should automatically printed by rexml. Damn bugs. +puts '' +puts out # Workaround for a buggy rexml + diff --git a/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/cinit-vis.pl b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/cinit-vis.pl new file mode 100644 index 00000000..3956ff47 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/cinit-vis.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# (c) by Marcus Przyklink (downhill-clinux@burningchaos.org) +# written for cinit and published under GPL +# beautified a bit by Nico Schottelius +# optimized by René Nussbaumer +# Version: 0.1 + +use strict; +use warnings; + +# +# Variables for location and output +# +# cinit-directory +my $path = "/etc/cinit/"; +# started profile +my $starting_point = "init"; +# the spaces for each level (integer: amount of spaces) +my $space = 3; +# marker for need +my $need = "-->"; +# marker for want +my $want = "==>"; + +# +# main function, recursively list the components of the cinit system +# +if (@ARGV) { + if( $ARGV[0] =~ /-(h|-help)/ ) { + print "Usage: " . __FILE__ . " without parameters for standard-use (check variables in file)\n"; + print " Parameters:\n"; + print " -h for this help\n"; + print " profile-name for a profile\n"; + exit(0); + } + else { + $starting_point = $ARGV[0]; + } +} + +# +# start first instance +# +sub get_deeper { + my ($point, $tmp_counter, $need_want) = splice @_; + + print " " x ($space * $tmp_counter) . ($need_want ? $need : $want) . " " . $point . "\n"; + + opendir(DIR, "${path}${point}/needs") and + my @next_need = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + opendir(DIR, "${path}${point}/wants") and + my @next_want = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + + for(@next_need) { + get_deeper($_, $tmp_counter + 1, 1); + } + for(@next_want) { + get_deeper($_, $tmp_counter + 1, 0); + } +} + +# +# start first instance +# +get_deeper($starting_point, 0, 0); + +# +# work done, go home +# +exit(0); diff --git a/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/cinit.graph.text.c b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/cinit.graph.text.c new file mode 100644 index 00000000..bc6fb6ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/cinit.graph.text.c @@ -0,0 +1,200 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + cinit.graph.text.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.2 + + ChangeLog: + Version 0.2 (Peter Portmann): + * Not assigned link destinies are marked by (!). + * Not readable directories are marked by "directory not readable". + + Version 0.1 (Peter Portmann): + * Print of the directory structure of the contained files and links + without following the links. + + Todo: + + Features: +*/ + +//#include +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" +#include "error.h" + +#define FTW_F 1 /* file isn't a directory */ +#define FTW_D 2 /* file is a directory */ +#define FTW_DNR 3 /* not readable directory */ +#define FTW_NS 4 /* unsuccesfully stat on this file */ +#define MAX_CHAR 4096 + +/*********************************************************************** + * cinit.gaph.text - textual representation of the cinit directory + */ + +#define CSERVICE_BANNER "cinit.gaph.text - textual representatio of the cinitdirectory\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncinit.gaph.text \n" \ + "\tpath\t- cinit installationpath\n" + +typedef int EACH_ENTRY(const char *, const struct stat *, int); +typedef enum { FALSE=0, TRUE=1 } bool; + +static char dirpath[PATH_MAX]; +static int depth = 0; +static long int filecount = 0; + +static EACH_ENTRY each_entry; +static int pp_ftw(char *, EACH_ENTRY *); +static int each_getinfo(EACH_ENTRY *); + +/*********************************************************************** + * pp_ftw: file tree walk + */ +static int pp_ftw(char *filepath, EACH_ENTRY *function) +{ + int n; + + if(chdir(filepath) < 0) /* In angegebenen Pfad wechseln */ + err_msg(FATAL_SYS, "can't change to %s", filepath); + + if(getcwd(dirpath, PATH_MAX) == 0) /* Absoluten Pfadnamen ermitteln */ + err_msg(FATAL_SYS, "error using getcwd for %s", filepath); + + n = each_getinfo(function); + + return(n); +} + +/*********************************************************************** + * each_getinfo: get more info for each file. + */ +static int each_getinfo(EACH_ENTRY *function) +{ + struct stat statpuff; + struct dirent *direntz; + DIR *dirz; + int n; + char *zgr; + + if(lstat(dirpath, &statpuff) < 0) + return(function(dirpath, &statpuff, FTW_NS)); /* Error on stat */ + + if(S_ISDIR(statpuff.st_mode) == 0) + return(function(dirpath, &statpuff, FTW_F)); /* no directory */ + + /* It's a directory. + * Call function() for it. After that handel each file in the directory. */ + + if((dirz = opendir(dirpath)) == NULL) { /* Directory not readable */ + closedir(dirz); + return(function(dirpath, &statpuff, FTW_DNR)); + } + + if((n = function(dirpath, &statpuff, FTW_D)) != 0) /* return the directorydirpath */ + return(n); + + zgr = dirpath + strlen(dirpath); /* append slash to the dirpathname */ + *zgr++ = '/'; + *zgr = '\0'; + + while((direntz = readdir(dirz)) != NULL) { + /* ignor . and .. */ + if(strcmp(direntz->d_name, ".") && strcmp(direntz->d_name, "..")) { + strcpy(zgr, direntz->d_name); /* append filename after slash */ + depth++; + if(each_getinfo(function) != 0) { /* Recursion */ + depth--; + break; + } + depth--; + } + } + *(zgr-1) = '\0'; /* deleting evrything after the slash */ + + if(closedir(dirz) < 0) + err_msg(WARNING, "closedir for %s failed", dirpath); + + return(n); +} + +/*********************************************************************** + * each_entry: handling each file and build the graph step by step. + */ +static int each_entry(const char *filepath, const struct stat *statzgr, int filetype) +{ + struct stat statpuff; + static bool erstemal=TRUE; + int i; + + char link[MAX_CHAR]; + + filecount++; + if(!erstemal) { + for(i=1 ; i<=depth ; i++) + printf("%4c|", ' '); + printf("----%s", strrchr(filepath, '/')+1); + } else { + printf("%s", filepath); + erstemal = FALSE; + } + + switch(filetype) { + case FTW_F: + switch(statzgr->st_mode & S_IFMT) { + case S_IFREG: break; + case S_IFCHR: printf(" c"); break; + case S_IFBLK: printf(" b"); break; + case S_IFIFO: printf(" f"); break; + case S_IFLNK: + printf(" -> "); + if(( i=readlink(filepath, link, MAX_CHAR)) != -1) + printf("%.*s", i, link); + if(stat(filepath, &statpuff) < 0) + printf(" (!)"); + break; + case S_IFSOCK: printf(" s"); break; + default: printf(" ?"); break; + } + printf("\n"); + break; + + case FTW_D: + printf("/\n"); + break; + + case FTW_DNR: + printf("/ directory not readable\n"); + break; + + case FTW_NS: + err_msg(WARNING_SYS, "Error using 'stat' on file %s", filepath); + break; + + default: + err_msg(FATAL_SYS, "Unknown Filetype (%d) by file %s", filetype, filepath); + break; + } + + return(0); +} + +/*********************************************************************** + * main: + */ +int main(int argc, char *argv[]) +{ + if(argc != 2) + usage(CSERVICE_BANNER, USAGE_TEXT); + + exit(pp_ftw(argv[1], each_entry)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/error.c b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/error.c new file mode 100644 index 00000000..8174c702 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/error.c @@ -0,0 +1,124 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#include "error.h" +#include +#include +#include +#include +#include +#include + +#define MAX_CHAR 4096 + +int debug; /* Aufrufer von log_msg oder log_open muss debug setzen: + 0, wenn interaktiv; 1, wenn Daemon-Prozess */ + +/*---- Lokale Routinen zur Abarbeitung der Argumentliste --------------------*/ +static void msg_err(int sys_msg, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + return; +} + +static void msg_log(int sys_msg, int prio, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + if (debug) { + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + } else { + strcat(puffer, "\n"); + syslog(prio, puffer); + } + return; +} + +/*---- Global aufrufbare Fehlerroutinen -------------------------------------*/ +void err_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_err(0, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + case DUMP: + msg_err(1, fmt, az); + break; + default: + msg_err(1, "Falscher Aufruf von err_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + else if (kennung==DUMP) + abort(); /* core dump */ + exit(1); +} + +void log_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_log(0, LOG_ERR, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + msg_log(1, LOG_ERR, fmt, az); + break; + default: + msg_log(1, LOG_ERR, "Falscher Aufruf von log_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + exit(2); +} + +/*---- log_open --------------------------------------------------------------- + initialisiert syslog() bei einem Daemon-Prozess */ +void log_open(const char *kennung, int option, int facility) +{ + if (debug==0) + openlog(kennung, option, facility); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/error.h b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/error.h new file mode 100644 index 00000000..a55690fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/error.h @@ -0,0 +1,29 @@ +#ifndef ERROR_H +#define ERROR_H +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.h + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#define WARNING 0 +#define WARNING_SYS 1 +#define FATAL 2 +#define FATAL_SYS 3 +#define DUMP 4 + +void log_msg(int kennung, const char *fmt, ...); +void err_msg(int kennung, const char *fmt, ...); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/make.cconfig.from.xml.rb b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/make.cconfig.from.xml.rb new file mode 100644 index 00000000..05f35cc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/contrib+tools/make.cconfig.from.xml.rb @@ -0,0 +1,227 @@ +#!/usr/bin/env ruby + +=begin + + Create a cconfig directory based on a xml input. + (C) 2005 by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added binary file support + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Added some commandline options + * Added «level» so control the restrictivity of the program + * Added more «intelligence» to the program, to detect internal broken dependcies. + * Support «debug»-Levels. + * Print statistic at the end of the programs about warnings and errors. + + Version 0.1 (René Nussbaumer): + * Initial + + Todo: + * Use an rexml alternative + * Some cleanup + * Optimize + * Testing? + + Features: + * Create a cconfig directory based on a xml + +=end + +require 'rexml/document' +require 'getoptlong' +require 'base64' +require 'digest/sha1' + +@verbose = 0 +@level = 1 +@version = '0.3' + +@warnings = 0 +@errors = 0 +@checklist = Array.new + +def printMsg(prefix, msg) + puts '%-12s %s' % [prefix + ':', msg] +end + +def error(msg, fatal = 0) + @errors += 1 + fatal = 0 if(@level < 1) + fatal = 255 if(@level > 1 && !fatal) + printMsg(fatal != 0 ? 'PANIC' : 'ERROR', msg) + Kernel.exit(-fatal) if(fatal != 0) +end + +def warn(msg) + error(msg, 1) if(@level > 1) + @warnings += 1 + printMsg('WARNING', msg) +end + +def info(msg) + printMsg('INFO', msg) +end + +def debug(msg, verbosity = 1) + if(@verbose >= verbosity) + printMsg("DEBUG(#{verbosity})", msg) + end +end + +def createObject(name) + error("#{name} already exists.", 1) if(FileTest.exists?(name)) + begin + Dir.mkdir(name) + rescue + error("Could not create directory #{name}: #{$!}. Abort.", 7) + end + debug("Object #{File.expand_path(name)} has been created.", 4) +end + +def createAttribute(name, content = nil) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + begin + file = File.new(name, 'w') + file.print content if(content && !content.empty?) + file.close + debug("Attribute #{File.expand_path(name)} has been created", 4) + rescue + error("Could not create file #{name}: #{$!}. Skipped.") + end +end + +def createLink(name, target, type) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + error("Broken dependencies! Please take a look if #{target} exists on your system", 2) if(type == 'external' && !FileTest.exists?(target)) + if(!FileTest.exists?(target) && type != 'external') + #info("Possible break. But maybe the target #{target} does not yet exists. Checking later.") + exptarget = File.expand_path(target) + @checklist << exptarget + debug("Adding #{target} to the list of internal dependcies to check.", 2) + end + begin + error('You\'ve a system which does not support symbolic links. Abort.', 3) if(File.symlink(target, name) != 0) + rescue + error("Could not create symlink #{name} => #{target}: #{$!}.", 3) + end + debug("Link #{File.expand_path(name)} has been created", 4) +end + +def doWork(elm) + name = elm.name + attrname = elm.attributes['name'] + error("XML Tag with missing name attribute!", 5) if(!attrname) + if(name =~ /(object|cconfig)/) + if(name == 'cconfig') + if(elm.attributes['version']) + info("Found a version string: #{elm.attributes['version']}") + warn("This XML is maybe incompatible with this programm. I'm a version #{@version} script. The XML is generated with a version #{elm.attributes['version']} script. Please update.") if(elm.attributes['version'] > @version) + end + end + createObject(attrname) + if(elm.has_elements?) + pwd = Dir.pwd + Dir.chdir(attrname) + elm.each_element { |e| + doWork(e) + } + Dir.chdir(pwd) + end + elsif(name == 'attribute') + text = nil + e = nil + text = e.value if((e = elm.get_text)) + if(text && elm.attributes['type'] && elm.attributes['type'] == 'binary') + text = Base64.decode64(text) + if(Digest::SHA1.hexdigest(text) != elm.attributes['sha1']) + warn("SHA1 differs from file: #{Dir.pwd}#{attrname}") + end + end + createAttribute(attrname, text) + elsif(name == 'link') + error("link-Tag without content.", 6) if(!elm.has_text?) + error("link with missing target. Skipped.") if(!elm.attributes['target']) + createLink(attrname, elm.get_text.value, elm.attributes['target']) + end +end + +puts "This is #{File.basename(__FILE__)} v#{@version} by René Nussbaumer" +puts + +opts = GetoptLong.new( + ['--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT], + ['--level', '-l', GetoptLong::REQUIRED_ARGUMENT], + ['--version', '-V', GetoptLong::NO_ARGUMENT] +) + +opts.each { |arg,value| + case arg + when '--verbose' + @verbose += 1 + value.each_byte { |x| + if(x.chr == 'v') + @verbose += 1 + end + } + debug("Verbosity set to: #{@verbose}") + when '--level' + debug("Setting level to: #{value}", 3) + case value + when 'low' + @level = 0 + when 'normal' + @level = 1 + when 'paranoid' + @level = 2 + else + warn('Unknown level: ' + value) + end + when '--version' + Kernel.exit(0) + else + warn("Unknown option #{arg}#{value && !value.empty? ? ('with value ' + value) : ''}") + end +} + +if(!ARGV[0]) + puts 'Need at least one argument' + puts "Usage: #{__FILE__} " + Kernel.exit(1) +end + + +filedesc = $stdin + +if(ARGV[0] != '-') + filedesc = File.new(ARGV[0]) +end + +doc = REXML::Document.new filedesc + +doWork(doc.root) + +if(!@checklist.empty?) + info('Now checking all broken internal dependcies again') + broken = 0 + @checklist.each { |path| + debug("Checking #{path}.", 2) + if(!FileTest.exists?(path)) + broken += 1 + warn("Broken dependcies. #{path} does not exist. Please fix.") + end + } + info('Looks good.') if(broken == 0) + info('Bad, bad.') if(broken > 0) +end + +info("Successed. #{@warnings} warnings, #{@errors} errors") + diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/.buildwarn b/software/cinit/browse_source/cinit-0.3pre1/doc/.buildwarn new file mode 100644 index 00000000..72ebaf6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/.buildwarn @@ -0,0 +1,18 @@ +**************************************************************************** +First of all configure cinit through the configuration files found in conf/. + +The documentation can be found in doc/, read + + README and doc/configuring.cinit + +_before_ first use. + +After reading and configuring use: + + "make all" - to build cinit + "make install" - to install cinit + "make install-miniconf" - to install a minimal cinit-configuration + +After that you'll have to configure it. Some sample configurations can be +found on the cinit homepage at http://linux.schottelius.org/cinit/. +**************************************************************************** diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/Makefile b/software/cinit/browse_source/cinit-0.3pre1/doc/Makefile new file mode 100644 index 00000000..704903da --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/Makefile @@ -0,0 +1,59 @@ +# +# Makefile stolen from ccollect +# Nico Schottelius, Fri Jan 13 12:13:08 CET 2006 +# + +INSTALL=install +CCOLLECT=ccollect.sh +LN=ln -sf + +prefix=/usr/packages/ccollect-git +bindir=$(prefix)/bin +destination=$(bindir)/$(CCOLLECT) + +path_dir=/usr/local/bin +path_destination=$(path_dir)/$(CCOLLECT) + +# where to publish +host=creme.schottelius.org +dir=www/org/schottelius/linux/ccollect +docdir=$(dir)/doc + +# +# End user targets +# +all: + @echo "Creating asciidoc based documentation" + @asciidoc -n -o ccollect.html doc/ccollect.text + +%.html: %.text + echo asciidoc $< -n $> -o $^.html $^.text $@ + + +install: install-script install-link + +install-link: install-script + $(LN) $(destination) $(path_destination) + +install-script: + $(INSTALL) -D -m 0755 -s $(CCOLLECT) $(destination) + +documentation: + @echo "Generating HTML-documentation (en de) ..." + @asciidoc -n -o doc/ccollect.html doc/ccollect.text + @asciidoc -n -o doc/ccollect-DE.html doc/ccollect-DE.text + +# +# Developer targets +# +update: + @cg-update creme + +push-work: + @cg-push creme + @cg-push sygroup + +publish-doc: documentation + @echo "Transferring files to $(host)" + @chmod a+r doc/*.html doc/*.text + @scp doc/*.text doc/*.html $(host):$(docdir) diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/README b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/README new file mode 100644 index 00000000..45e193f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/README @@ -0,0 +1,16 @@ +Ancient +======= +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 + + +These files may be incorrect, outdated, totally wrong or even trying +to take over world dominance. + + +Why are they still there? +------------------------- + +Just because to document the early days of cinit. If you are +a software archaeologist in the year 2423, you'll be happy that +I saved those files. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/author b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/availability b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/availability new file mode 100644 index 00000000..cfb3f8a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/availability @@ -0,0 +1 @@ +cinit is currently Linux-specific. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/examples b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/examples new file mode 100644 index 00000000..1a7d2dcb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/examples @@ -0,0 +1 @@ +See http://linux.schottelius.org/cinit/#config diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/files b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/files new file mode 100644 index 00000000..4d6c0921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/files @@ -0,0 +1,5 @@ +/sbin/cinit - the init system +/sbin/cservice - control cinit +/sbin/cinit.reboot (/sbin/reboot if non-existent before) +/sbin/cinit.shutdown (/sbin/shutdown if non-existent before) +/etc/cinit - configuration directory diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/long_description b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/long_description new file mode 100644 index 00000000..18c3c082 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/long_description @@ -0,0 +1,5 @@ +cinit is a fast executing, small and simple init with support for profiles. It +minds dependencies (hard and soft, 'needs' and 'wants') and executes processes +in parallel. And it has a simple configuration, which makes many shell-scripts +unecessary (but you still could use them if you really want), which leads to +better performance and less memory using. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/meta/name new file mode 100644 index 00000000..b853da25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/meta/name @@ -0,0 +1 @@ +cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/parameters b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/parameters new file mode 100644 index 00000000..54df4727 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/parameters @@ -0,0 +1 @@ +cprofile: diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/path b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/path new file mode 100644 index 00000000..37edf339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/path @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/see also b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit.commands b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit.commands new file mode 100644 index 00000000..d34d13bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cinit.commands @@ -0,0 +1,73 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (using SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. +CMD_UPDATE: Update cinit, hot-reboot the system. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/author b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/long_description b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/long_description new file mode 100644 index 00000000..82818a93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/long_description @@ -0,0 +1 @@ +cservice controls cinit. Please use cservice -h for help. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/meta/name new file mode 100644 index 00000000..49c847bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/meta/name @@ -0,0 +1 @@ +cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/parameters b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/parameters new file mode 100644 index 00000000..605b08b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/parameters @@ -0,0 +1 @@ +[-eaphru] [thilo] diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/path b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/path new file mode 100644 index 00000000..85b0cb56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/path @@ -0,0 +1 @@ +/sbin/cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/see also b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/cservice-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/extern/README b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/extern/README new file mode 100644 index 00000000..e734d6d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/extern/README @@ -0,0 +1,2 @@ +doc/extern/ + Some things related to cinit from the outside world. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/extern/ipc.thoughts b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/extern/ipc.thoughts new file mode 100644 index 00000000..e2619d34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/extern/ipc.thoughts @@ -0,0 +1,83 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2 ), +1024 is the maximum opened file deskriptors, +minus 3 (stdin/stdout/stderr) already opened, divided +by two, because two fds needed per client. + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt, + - poweroff, + - update itself (hot-reboot) + - and to start a rescue mode (see using.rescue). + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + CONT: update + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/extern/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/extern/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/extern/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/extern/linux.kernel.eats.arguments b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/extern/linux.kernel.eats.arguments new file mode 100644 index 00000000..dbaf57d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/extern/linux.kernel.eats.arguments @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +Linux, the kernel, eats arguments +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +If you specify + + variable=value + +to the Linux kernel, the argument will NOT be passed to cinit. + +Here's the relevant code block from init/main.c of the Linux kernel: + +------------------------------------------------------------------------------- + +From init(void * unused) the function run_init_process(char *init_filename) +is called, which passes argv_init (char * argv_init[MAX_INIT_ARGS+2]) to init. + +First init_setup(char *str) resets all elements of the argv_init to NULL. + +The function unknown_bootoption(char *param, char *val) fills the +argv_init array, but only with parameters, which have no value +(val). + +The function parse_args calls unknown_bootoption with the unknown options. + +------------------------------------------------------------------------------- + +This way the profile support in all cinit versions below cinit-0.1 will +only work if you change conf/profile, because "cprofile=value" will +not be given to cinit, because it's not treated as a command line option. + +The original value "cprofile=" is replaced by "cprofile:" as of cinit-0.1. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/extern/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/extern/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/extern/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/fun-testing b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/fun-testing new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/fun-testing @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/how_it_works_internally b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/init-idea-first b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/init-idea-first new file mode 100644 index 00000000..2d677d8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/init-idea-first @@ -0,0 +1,38 @@ +- restarting/respawning + touch respawn +- dependencies + a needs started b +- clean multiply dependencies +- start & stop dependencies + start_depends + stop_depends +- parallel executation +- start and stop commands + start -> link + start_param -> parameters, like minit + stop -> link + stop_param -> parameters, like minit + + if no stop command is available, try to kill the pid we started at stop + +/startup/ + start_depends=gettys +/shutdown/ + stop_depends=power_off + + +gettys/ + start_depends=getty/1 + start_depends=getty/2 + start_depends=getty/3 + start_depends=getty/4 ... + +getty/1/ + start=/sbin/fgetty + respawn + +power_off/ + stop_depend=umount + +umount/ + stop_depend= diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/porting.to.other.os b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/porting.to.other.os new file mode 100644 index 00000000..65fdc07b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will perhaps become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/removing.zombies b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/removing.zombies new file mode 100644 index 00000000..9527e652 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + cinit in general will keep the behaviour of reaping the vestiges, + which broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/security b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/security new file mode 100644 index 00000000..f1dac591 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/security @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation, which will not accept connect() +by others than root. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console then! + +For extra parnoid settings you can do the following: + + ei # chmod 700 /etc/cinit/tmp/coala + ei # chown root:root /etc/cinit/tmp/coala diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/socket.poll_vs_o_async b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/socket.poll_vs_o_async new file mode 100644 index 00000000..477f2bff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/socket.poll_vs_o_async @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------------- +Socket: poll(2) vs. O_ASYNC, +Nico Schottelius 2005-06-22 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +0. General problem +1. O_ASYNC +2. poll(2) + + +0. General problem + +cinit has to react, as soon as there's data on the socket. + +1. O_ASYNC + +When you open a socket with O_ASYNC (or specify it with fcntl(2)) under +Linux, your process recieves the SIGIO signal from the kernel, as soon +as data is available. + +The problem is the handling of signals seems not to be serialised: + +The function, which is called on the SIGIO signal (called sigio() here) +calls other functions. Those functions way recieve SIGIO while working, +so the first data stream is not yet finished, though the next +stream is beeing read. + +This gives very nice race-conditions, which are very nice to debug. + +2. poll(2) + +poll(2) is a standard Unix-call (XPG4-UNIX), which waits a specific +timeout (or infinite time if you specify a value less that zero) for +the socket (or the fd in general) to be in a state where +data is available to read (in fact poll can do much more, but we are +not interested only in POLLIN and POLLPRI). + +While poll(2) seems to be a very bit slower than sigio it works reliable. + diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/thoughts.closed b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/thoughts.closed new file mode 100644 index 00000000..91a8e080 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/ancient/thoughts.closed @@ -0,0 +1,52 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c + +7. Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. As this is not needed + currently, it's not implemented. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/README.text b/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/README.text new file mode 100644 index 00000000..c4947a13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/README.text @@ -0,0 +1,2 @@ +DO NOT READ CONTENT IN THIS DIRECTORY. +(or at least do not blame me, if you get really confused after reading it) diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/big-picture.text b/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/big-picture.text new file mode 100644 index 00000000..4426c236 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/big-picture.text @@ -0,0 +1,122 @@ +Just a small hint-file for me to see how cinit works: + + - cinit starts + * cinit executes either init or a profile + - the dependency-tree begins + + - now cinit begins to try to execute the dependencies + * first the needs (if those fail, wants are never called) + - fork() for every dependency? + +-------------------------------------------------------------------------------- +another idea: + + - cinit starts + - cinit reads the full depedency tree + * it builds n-depth trees + * it begins at the set init service (profile or init!) + * init is the first entry. always. + * read full service information (like on/off/params/respawn) + * design of each tree element: see below + - add a tree for the needs + - add a tree for the wants + - the elements have links, one service is created only once + - after the tree is created, execution begins + * begin from the bottom + * save a pointer to the last level somehow before? + +Pre calculation: + - need to act on changes (some kind of file watcher) + * need to keep status (?) + * what with now missing needs / wants? + - missing needs: shutdown now missing needs? + - simply ignore them? + - shut them down if not needed (no one has a link in needs?) + * +-------------------------------------------------------------------------------- +Sample dependency tree: + + init + / \ + needs wants + / | \ / | \ + a b c d e f + / | \ / | \ + needs needs needs END needs END + / | \ \ | | | | + b c d c f a e a +-------------------------------------------------------------------------------- +How this would be sorted:: + init: + needs: a b c + wants: d e f + a: + needs: b c d + b: + needs: c f + c: + needs: a e + d: + - + e: + needs: a + f: + - +-------------------------------------------------------------------------------- +So in this case, cinit may start services the following way: + d f + -> Wouldn't be possible in pre-calculation, because of circular dependencies. +-------------------------------------------------------------------------------- + Try a 'real' dependency tree: + a needs b c d + b needs c d + c and d do not need other stuff +-------------------------------------------------------------------------------- +Now cinit would it do the following way: + start c, start d + b will be started, as soon as c and d successfully finish + as soon as b is finished, a will be started +-------------------------------------------------------------------------------- +Now let's think about how this could look like in code... +- when we built up the tree, we have some ends (n to say) +- we can / must start starting (;-) at the end +- we would have more than one line back (z may be needed by c, i, and a) + * like in "c is needed by s, c, o" + * maxdepth counter? + * asynchronous rollback? + +--> to think more about it! +-------------------------------------------------------------------------------- + +tree elements: + * name (= path) + * on, off, +params + * respawn_delay + - -1 if not respawning + - >= 0 time to wait between restart + * status + - NOT STARTED (status on initialisation) + - RESPAWNING (running, respawning) + - RESPAWN_DELAY (waiting to respawn it) + - ONCE (started once) + * errormsg + - pointer to an error message in case of failure + * needs + - List of services we need + * wants + - List of services we want + * used_by + - List of services which use this service +-------------------------------------------------------------------------------- + +Conclusions +------------ + +cinit as the main executor +~~~~~~~~~~~~~~~~~~~~~~~~~~ +If cinit should start all services directly and manage dependencies +only internally, it will need to have build a reverse dependency tree, +so it begins starting at the end. + +cinit could execute all possible parallel running services in parallel +and open pipes to the (dumb) service executors. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/circular-dependencies.text b/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/circular-dependencies.text new file mode 100644 index 00000000..dcc91ea7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/circular-dependencies.text @@ -0,0 +1,35 @@ +What todo with circular dependencies? + a needs b + b needs a + + - try to start them? + status a: is_starting + status b: not_set + a wants b, so a service starter for b starts + status a: is_starting, waiting for b + status b: is_starting + service starter for b sees that a is needed + service starter for b sees that a is already being started + service starter for b begins to execute b + status a: is_starting, waiting for b + status b: is_starting, executing "on" + service starter b finishes + status a: is_starting, waiting for b + status b: FAILED | RESPAWN | ONCE + service a continues + b successful: execute on + b failed: register / print that we do not start, because + b failed + + -> this would only catch possible deadlocks, if the dependency + tree / status check is done dynamically + -> in case of pre-building the dep-tree this situation must + be concerned: + - start both a and b? + - or stop due to circular dependency? + + - Abort on detection of a circular dependency + * possible without pre-calculating? + - perhaps only with direct communication possible? + * pre calculate + - do not start that services? diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/creating-new-configurations b/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/creating-new-configurations new file mode 100644 index 00000000..a251de5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/creating-new-configurations @@ -0,0 +1,6 @@ +scripts/create_baseconfig.sh # create base +scripts/cinit.install.standard.dirs # create common categories + +- create fsck +- set hostname +- create getty(s) diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/possible_service_pre_calculation.text b/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/possible_service_pre_calculation.text new file mode 100644 index 00000000..96ec3a73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/possible_service_pre_calculation.text @@ -0,0 +1,19 @@ +- start at + * create a new service entry (if not exists) <--- + * reads needs | + - follow dependencies ------------------------ + * only if service does not yet exist! | + * read wants | + - follow dependencies ------------------------ + * only if service does not yet exist! + * create + - needed by entry in dependencies + - needs entry in service + - wanted by entry in dependencies + - wants entry in service + + * record + - (on,off)(,.env,.params)? + - alternatively put that code into service starter + * add services without further needs into a special + "begin" structure to be reused at fireing of the services? diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/possible_service_status.text b/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/possible_service_status.text new file mode 100644 index 00000000..eb0f21e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/possible_service_status.text @@ -0,0 +1,14 @@ + + - NOT_SET: this service has not yet been initialized + - RESPAWNING: happily respawning + - RESPAWN_DELAY: waiting delay before restarting + * HINT: using alarm()? + - senseful for single process service watcher + * HINT: using nanosleep()? + - senseful for per service process watcher + - NEED_FAILED + * add a (somehow terminated) list of services that failed? + * use global status to checkout which services failed? + - WANT_FAILED? + * NOT NECESSARY, it is a simple want, we do not need it. + diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/registering_needs_wants.text b/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/registering_needs_wants.text new file mode 100644 index 00000000..ededbd41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/braindumps/registering_needs_wants.text @@ -0,0 +1,55 @@ +Each service has a list of services it + - needs + - is needed by + - wants + - is wanted by + + +Each entry is a service pointer. +The simplest list could look like this: + + service a: + needs: + b f g NULL + +So the needs pointer is NULL terminated: + needs = realloc(count_links) + -> how to get the count? + 0x02 + 0x + + Better: A double linked list (like the main service list)? + +Could look like: + service a: + needs: + *service + *next + *prev + +This design could also be used for wants. + +On the other hand, we've to register us at the needed/wanted service: + + service b: + needed_by: + *service + *next + *prev + + +So each service needs four pointers: + needs + needed_by + wants + wanted_by + +And on each request both lists have to be modified! + +Example: + + Service "a" adds "b" as needed: + + - add "a" needs "b" + - add "b" needed_by "a" + diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/devel/README.text b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/README.text new file mode 100644 index 00000000..20524651 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/README.text @@ -0,0 +1,18 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit development documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +(cinit-)developers. + +Content +------- diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/devel/cinit-0.4.text b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/cinit-0.4.text new file mode 100644 index 00000000..61b718f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/cinit-0.4.text @@ -0,0 +1,115 @@ +cinit 0.4 - Redesign of cinit +============================================ +Nico Schottelius +0.4.0, for cinit 0.4, Initial Version from 2006-03-11 +:Author Initials: NS + + +cinit 0.2 ran fine and the general project of developing a +parallel executing init system is finished. +With cinit 0.4 there are new aims to reach. + + +Introduction +------------ + +. AIMS + - portability: no Linux-dependency anymore + - cleaner signal handling + - better documentation so more people can use it + + +Current problems +---------------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The mount(2) system call is os-specific. +The temporary fs is os-specific. + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Race conditions when multiple signals arrive + + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +serv/sig_reboot.c contains umount, remount hard coded. + + +Solutions +--------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Remove +- the mount call +- do not create an initial socket + +Wait until we recieve a signal, then we create a socket +under the configured socket directory (see `conf/sockdir`). + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +Misc +~~~~ + +- Configuration + /etc/cinit/config/ + init -> link to initial service + pre_boot + pre_boot_args + post_boot + post_boot_args + /etc/cinit/services/ + /etc/cinit/profiles/ + links to the starting services + + + +cinit - Internals +================= +Nico Schottelius +0.1 for cinit-0.3, Initial version: So Feb 19 10:25:46 CET 2006 +:Author Initials: NS + + +Introduction +------------ +This document describes the internals of cinit. It is thought +to be read by developers. + + +Child handler code in cinit-0.3 +------------------------------- + +In cinit versions <= cinit-0.2.1 the respawning services where +handled by an extra child handler, which was a fork of cinit. This +had some problems: + + - We allocated more memory than necessary, unecessary parts of + cinit were copied + - The SIG_CHILD-handler was not written very clean, in some versions + it was completly missing. + + +. So in `cinit-0.3` we changed it the following way: + - no extra child handlers + - handle everything in the SIG_CHILD handling function + - when sig_child is recieved do: + - check against respawn list + - if it is a respawning service, [do the following in a seperate fork?] + check whether it successfully stoped + - if yes: restart immediatly + - if no: sleep $sleep_time and then restart diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/devel/communication.text b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/communication.text new file mode 100644 index 00000000..82f77774 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/communication.text @@ -0,0 +1,221 @@ +cinit - communication +===================== +Nico Schottelius +0.1 for cinit-0.3, Initial version: 2006-08-11 +:Author Initials: NS + +This document describes the internal communication of cinit. +It is thought to be read by developers. + + +Introduction +------------ +This document describes the messages used between cinit, cinit forks +and other programs that want to talk to cinit. It does NOT +describe the communication method, but only the messages sent +(for the communication method read "ipc.text"). + +Document status +~~~~~~~~~~~~~~~ +This document is still being written, it is not finished. + + +About Messages +-------------- + +Order +~~~~~ +The client always initiates the communication. +cinit will begin listening to messages directly after its start. + +Data +~~~~~ +A message always conists of a predefined structure (see src/headers/comm.h). +The byte order is host specific (may be little or big endian). + + +The messages +------------ +The client always uses the same structure (struct msg_client) to contact +cinit. This way cinit does not need to handle dynamic data structures. + +cinit in contrast delivers different data structures to its clients, +depending on the question. + +The questions are issued by any type of client, the internal command used is +noted in square brackets ([]). + +The answers are given by cinit. + + +Question: Start a service (and its dependencies) [CMD_START_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to start the service and its dependencies. + +The client must provide cinit with the following information: +. Name of the service to be started +. Reason why to start it +. eventually additional information (see below) + +The reason +^^^^^^^^^^ +Can be one of: +- RS_NONE (it's a manual start request) +- RS_WANTS (a currently starting service wants to start this service) +- RS_NEEDS (a currently starting service needs to start this service) + +If the reason is RS_WANTS or RS_NEEDS the client must supply the name +of the service, which wants it to be started. + + +Question: Start a service (nothing else) [CMD_START_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to start the service and which will +report the status back. + + +Question: Stop a service (and its dependencies) [CMD_STOP_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to stop the service and each service +that 'needs' it. + +This function works recursively, thus also killing those services, that +need the service that need the current service. + + +Question: Stop a service (nothing else) [CMD_STOP_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to stop this service and which will +report the status back. + + +Question: Stop a service (plus 'needs' and 'wants') [CMD_STOP_SVC_WANTS] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Same as 'Stop a service (and its dependencies)', but also stop the +services that want to have this service. + +This function works recursively, thus also killing those services, that +'need' or 'want' the service that 'need' or 'want' the current service. + + +Question: Could you change the status? [CMD_CHG_STAT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A cinit fork reports the new status of a service. + + +Question: Could you start the rescue mode? [CMD_RESCUE] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +spawn the rescue program. + + +Question: Could you halt the system? [CMD_HALT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +halt the system. + + +Question: Could you reboot the system? [CMD_REBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +reboot the system. + + +Question: Could you poweroff the system? [CMD_POWEROFF] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +poweroff the system. If poweroff is not possible, the system will +be halted. + + +Question: Could you warmboot the system? [CMD_WBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +restart itself and the bootup process. + + +Question: Could you send information about a service? [CMD_INFO] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will respond with detailled information about the service +to the client. + + +Answer: Return short status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Start a service (and its dependencies) + - Question: Start a service (nothing else) + - Question: Stop a service (and its dependencies) + - Question: Stop a service (nothing else) + - Question: Stop a service (plus 'needs' and 'wants') + - Question: Could you change the status? + +cinit only responds the status of the asked service. +The structure send is "asw_sstatus", which only include a status byte. + + +Answer: Return long status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Could you send information about a service? + + +old Messages (to be transferred into this document) +--------------------------------------------------- + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Service status: + +-------------------------------------------------------------------------------- +service status (cinit), +Nico Schottelius 2005-09-29 (Last Modified: -) +-------------------------------------------------------------------------------- + +There are service status and service returns. Service status is a status +a service can have. A service return is a value from a function that +describes what happened with the service. + +Status has ST_ prefix, return has RT_ prefix. +See cinit.h for most up to date versions. + + +ST_NEED_FAIL - this service will not be started, until the needs are started +ST_FAIL - this service failed to start +ST_UNSPEC - some unknown error. This should never happen. +ST_ERR - ??? /* tried earlier, service failed, won't retry */ + +ST_SUCCESS - service was successfully started - senseful? +ST_TMP - some instance is currently working on it +ST_ONCE - executed once sucessfully +ST_RESPAWN - service is running and respawning + +ST_TMPNOW 55 /* now you are on it - only for clients */ +#define ST_OFF 56 /* Switching service off */ + diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/devel/configuring.text b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/configuring.text new file mode 100644 index 00000000..405a4d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/configuring.text @@ -0,0 +1,18 @@ +cinit/doc/devel/using-conf.text +================================ +Nico Schottelius +0.1, Initial Version from 2006-07-28 +:Author Initials: NS + +About conf/* and how to use the configurations. + +Introduction +------------ + +Who should read those documents? +-------------------------------- + +Content +------- + + diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/devel/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/cross-compiling.text new file mode 100644 index 00000000..fdf70564 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/cross-compiling.text @@ -0,0 +1,36 @@ +TODO: + - merge into "Cross compiling" + +cinit - Problems that may arise +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Max open files + OS dependent + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/devel/ipc.text b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/ipc.text new file mode 100644 index 00000000..7013a985 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/ipc.text @@ -0,0 +1,108 @@ +IPC - in cinit and in general +============================= +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +IPC - Inter process communication + +Introduction +------------ +This document describes the IPC methods used and/or tested for +cinit. + +It does not describe in detail, how the different methods work +(this is already done many times, there's great documentation +available online), but more the advantages and disadvantages +(especially for an init system). + +What is IPC? +~~~~~~~~~~~~ +IPC describes methods to communicate between different processes +(programs). + +IPC as described by SUSV3 (The Single UNIX Specification Version 3) +aka IEEE Std 1003.1, 2004 Edition aka POSIX only defines +MSQ, SHM and Semaphores as IPC. This document also covers +Sockets and FIFOs. + + +What is not (yet) covered by this document? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Speed of different IPC methods, different behaviour on different +unices. + + +Why do you need IPC for an init system? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +cinit IPC history + analysis +---------------------------- + + +FIFOs +~~~~~ +First in - first out +File on the filesystem +Always need two files for two way communication + +Hints +^^^^^ +The first idea for IPC in cinit was to use two FIFOs, like minit does. +Wrong assumption: +runit also uses fifos, but two fifos for each services. That way +more parallel transmissions is possible. +You have to pay attention: Maximum number of opened files! +(On Linux 2.6 this is 1024, which makes a maximum of 512 services. +This limit is most likely never reached, but you have to keep it +in mind). + +Sockets +~~~~~~~ +Clean and beautiful. They allow easy two way communication. + +If you created a socket, fs is r/o, you cannot use it, although +there is SO_REUSE. + +First method: Using memory mapped part (tmpfs). +Second method: use interal communication (pipes!) and external after +/etc/cinit/ becomes writable. + + +Current IPC configuration +-------------------------- + +- switchable (conf/ipc_method) +- each ipc implementation needs: + + ipc.h -> for global variables and ipc specific things + prefix variables with ipc_ + int cinit_ipc_init(void); -> general initialization + return 1 on success, 0 on failure + int cinit_ipc_listen(void); -> begin to listen for messages + int cinit_ipc_send(void *data) -> send data to a client + +-------------------------------------------------------------------------------- +TO SORT: + +1. message queues + o clients schreiben rein + o datenpaket gross genug fuer antwort? + +2. shared memory + o client kann direkt rauslesen, was gestartet werden muss + o client kann direkt abhaengigkeiten starten, muss diese aber + eintragen + +Ausprobieren: + - Mutexe + - Message Queues + - + +Ideen: + Message queue + 1. Client geht auf die normale + als id = pid (cast!) + dann rueck via anderer queue + diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/devel/lists.text b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/lists.text new file mode 100644 index 00000000..6360acb3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/lists.text @@ -0,0 +1,22 @@ +Lists in cinit-0.3 are generalized, all have the same general layout: + + - double linked + - have 'prev' and 'next' as pointers + + Add an element to a list + + /--------------------------\ + |<->first<->middle<->last<->| + + + After insert: + + /-------------------------------\ + |<->first<->middle<->last<->new<->| + + We alway have 'first'. + Need to adjust: + - new->prev = last (= first->next) + - new->next = first + - first->prev = new + - first->prev->next (= last->next) = new diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/devel/merging.other.initsystems.text b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/merging.other.initsystems.text new file mode 100644 index 00000000..0baa4789 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/merging.other.initsystems.text @@ -0,0 +1,68 @@ +TODO: + - rewrite to asciidoc + - implement a sample merge + +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not mean that he does not accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated! + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/devel/testing.text b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/testing.text new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/devel/testing.text @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/logs/2006-10-25.config.wasserstoff b/software/cinit/browse_source/cinit-0.3pre1/doc/logs/2006-10-25.config.wasserstoff new file mode 100644 index 00000000..f28bd71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/logs/2006-10-25.config.wasserstoff @@ -0,0 +1,16 @@ +[17:12] wasserstoff:svc# pwd +/etc/cinit/svc +[17:12] wasserstoff:svc# ls +init +17:12] wasserstoff:svc# mkdir getty +[17:12] wasserstoff:svc# mkdir getty/2/ +[17:12] wasserstoff:svc# cd getty/2 +[17:12] wasserstoff:2# ln -s /sbin/getty on +17:12] wasserstoff:2# echo 38400 > on.params +[17:13] wasserstoff:2# echo tty2 >> on.params +[17:13] wasserstoff:2# cd ../../init +[17:14] wasserstoff:init# mkdir needs +[17:14] wasserstoff:init# cd needs +[17:14] wasserstoff:needs# ln -s ../../getty/2 getty-2 +[17:14] wasserstoff:needs# + diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/man/cinit.text b/software/cinit/browse_source/cinit-0.3pre1/doc/man/cinit.text new file mode 100644 index 00000000..11d56be2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/man/cinit.text @@ -0,0 +1,54 @@ +cinit(8) +======== +Nico Schottelius + + +NAME +---- +cinit - fast executing, small and simple init with support for profiles + + +SYNOPSIS +-------- +'cinit' [cprofile:name_of_profile] + + +DESCRIPTION +----------- +ccollect is a backup utility written in the sh-scripting language. +It does not depend on a specific shell, only `/bin/sh` needs to be +bourne shell compatibel (like 'dash', 'ksh', 'zsh', 'bash', ...). + +For more information refer to the texinfo or html documentation. + + +OPTIONS +------- + +cprofile:name_of_profile:: + If specified, cinit will start the named profile instead of the + standard service (which is confdir/init/) + +BUGS +---- +cinit is not tested nor documented very well currently. + +Additionally the porting to other OS is not finished yet. + +Both is work in progress. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + + +COPYING +------- +Copyright \(C) 2006 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/man/cservice b/software/cinit/browse_source/cinit-0.3pre1/doc/man/cservice new file mode 100644 index 00000000..8dae0c2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/man/cservice @@ -0,0 +1,34 @@ +-------------------------------------------------------------------------------- +cservice, +Nico Schottelius, 2005-06-10 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +cservice - control cinit + +cservice -[phearsu] + -e - (ein) start a service (including all needed dependencies) + -a - (aus) stop a respawing service, don't care about other services + + -r - reboot + -h - halt + -p - poweroff (on some systems the same as halt) + -s - reScue mode - only a shell + + -u - update: hot reboot - shutdown system and execute /sbin/cinit + +A service may be specified either as relative or as absolute path. + +-h, -p, -r, -s and -u need the "Magic Word" to do their work: "thilo" + +-------------------------------------------------------------------------------- + +Some examples: + + cservice -e /etc/cinit/getty/8 # fire up getty/8 + cd /etc/cinit/getty; cservice -a ./8 # shut down getty/8 + cservice -h thilo # halt + cservice -r thilo # reboot + cservice -s thilo # rescue + cservice -u thilo # update + +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/FAQ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/FAQ new file mode 100644 index 00000000..53494f73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile:home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/README.text b/software/cinit/browse_source/cinit-0.3pre1/doc/user/README.text new file mode 100644 index 00000000..3467ba63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/README.text @@ -0,0 +1,21 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit user documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +People using cinit. + +Content +------- + +hints.text: Some general hints +tuning.text: Some tuning hints diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/TODO b/software/cinit/browse_source/cinit-0.3pre1/doc/user/TODO new file mode 100644 index 00000000..6044e97a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/TODO @@ -0,0 +1,4 @@ +All the content in this file is unsorted. Reading may harm you. + +Confdir: /etc/cinit/conf/ +panic: /etc/cinit/conf/panic, /etc/cinit/conf/panic.params diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/caveats b/software/cinit/browse_source/cinit-0.3pre1/doc/user/caveats new file mode 100644 index 00000000..5ab123e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/caveats @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/compiles.on b/software/cinit/browse_source/cinit-0.3pre1/doc/user/compiles.on new file mode 100644 index 00000000..3fe83479 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/compiles.on @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +compiles.on, +Nico Schottelius 2005-06-09 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit is known to compile on: + +x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 + +Please report your configuration, if it's not listed here. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/config-dirs b/software/cinit/browse_source/cinit-0.3pre1/doc/user/config-dirs new file mode 100644 index 00000000..4a8fbb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/config-dirs @@ -0,0 +1,19 @@ +configuring + + /etc/cinit/defaults/panic -> link to something to execute on panic + (most likely /sbin/sulogin) + + /etc/cinit/defaults/tmp -> link to a directory where + the socket should be created, + after finishing boot + + What todo right before halting/rebooting/powering off + /etc/cinit/special/ + -> halt + -> reboot + -> poweroff + +Configuration +------------- + +Send kill signal diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/configuring.cinit b/software/cinit/browse_source/cinit-0.3pre1/doc/user/configuring.cinit new file mode 100644 index 00000000..a88ba00f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/configuring.cinit @@ -0,0 +1,189 @@ +-------------------------------------------------------------------------------- +configuring cinit, +Nico Schottelius 2005-05-28 (Last Modified: 2005-06-05) +-------------------------------------------------------------------------------- + +0. Pre-compile configuration +1. General configuration layout +2. Hints +2.0 Service executing / parameters +2.1 Daemons +2.2 Logging +2.3 Using prepared scripts +3. Profiles + + +0. Pre-compile configuration + +Have a look at conf/*. Those variable will mostly be used when +compiling cinit. Some will be read later (like destdir). + + +1. General configuration layout + +/etc/cinit (configurable via conf/cinit_dir) stores the complete +cinit configuration. + +cinit is service based. +A service consists of + - a base directory (like /etc/cinit/getty/1) + - dependency configuration: + + ./wants - services it wants to be started before (but it + will work anyway) + + ./needs/ - services it needs. If those services fail, this service + won't be started. + + - a flag indicating whether to respawn the service: + + ./respawn (simply touch it) + + - a delay: how long to wait for the service (in seconds) before + sending SIGKILL after the SIGTERM (only for respawning processes): + + ./delay (one line with only the digits) + + If delay is non-existing or not readable, the delay from + conf/sleep_kill_svc is taken. The maximum length of this + number ("9999" uses length 4, "42" needs 2 bytes) can be adjusted + at compile time in conf/max_delay. Internally this is a signed + integer, so the maximum size depends on your system. Though + I don't think anybody will want to wait for a service as long as + an integer would allow. + + - the program to run when switching the service on and off: + + ./on (a link to a program or a shell script) + ./on.params (see conf/c_params, the parameters to pass to the program) + ./on.env (see conf/c_env, the environment to pass to the program) + + ./off (call that when shutting down the service) + ./off.params (the parameters to pass to the program) + ./on.env (the environment to pass to the program) + +You should have a look at the samples/ directory for examples. + +If things are missing, cinit will continue with what's available. +This way you only need the files you use. Some examples: + + /etc/cinit/init: + ./wants -> services it wants + ./needs -> services it needs + That's everything + + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it + That's everything, as it has no dependencies + + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn on service + delay -> wait this time before sending SIGKILL after SIGTERM + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting + + +2. Hints + +2.0 Service executing / parameters + +The on and off files can and should be links to the programs you want +to execute. This way you save yourself loading the big shell (which is +on many Linux systems bash, why so ever, dash does the job as good, still +beeing small). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. The on script +could look like: + + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). + + +2.1 Daemons + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking (Please have a look at +daemons.backgrounding for a list of known daemons and their switches +to avoid backgrounding). + +The other possibility is to use a program, which will + a) start the daemon + b) look into the pidfile of the daemon + c) will then wait until that pid does not exist anymore + d) and then it exits and cinit will restart it (goto a) now) + +Such a program is included into this cinit release, +though I do not recommend using it. You should better contact the +authors and make them implement a clean non-forking mode. + +The name of the program (actually a shell script) is "cinit.wait.for.daemon". + +You will use it as the "on" part of the service and you have to add + + a) the pidfile to on.params + b) the daemon binary + +Thus the service would look like: + + svc-broken-daemon/ + on -> /sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + + +2.2 Logging + +Currently there's no special logging support. +When programs write to stdout, it will be displayed on +the same stdout cinit is connected to +(we don't even open /dev/console - we are too lazy currently). + + +2.3 Using prepared scripts + +In the bin/ directory of this tarball you'll find at least: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + + +3. Profiles + +Since cinit-0.0.6 there is profile in cinit. +Profiles are described in doc/profile.support. + +X. Examples + +Can be found in the tarballs below samples/. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre1/doc/user/cross-compiling.text new file mode 100644 index 00000000..67208534 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/cross-compiling.text @@ -0,0 +1,6 @@ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/daemons.backgrounding b/software/cinit/browse_source/cinit-0.3pre1/doc/user/daemons.backgrounding new file mode 100644 index 00000000..f7b7fdf5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/daemons.backgrounding @@ -0,0 +1,71 @@ +-------------------------------------------------------------------------------- +daemons backgrounding, +Nico Schottelius 2005-06-12 (Last Modified: 2005-10-15) +-------------------------------------------------------------------------------- + +0. Definition + +A daemon is a program which runs in the background, not having a tty +associated necesserally. Running in background does not mean it has +to background (fork()) itself, but that you cannot control it directly +from a shell. + +1. Daemons and cinit + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking + +The following daemons / servers are known to avoid backgrounding easily: + + acpid [x86 power management]: -f (undocumentated but works) + apache [webserver]: -DFOREGROUND + asterisk [pbx]: -f + bind [dns server/caching]: -f + cardmgr [pcmcia/cardbus]: -f + cron (vixie) [schedular]: -f + cupsd [printer server]: -f or -F + dhclient [dhcp client]: -d + dhcp3 (isc) [dhcp server]: -f + distccd [compile server]: normal behaviour + fam [file alteration monitor]:-f + fcron [schedular]: -f + frox [ftp proxy]: "NoDetach" in config + gdm [display manager]: -nodaemon + hybrid [irc server]: -foreground + icecast2 [sound streamer]: normal behaviour + mini-lpd [printer server]: normal behaviour + metalog [log server]: normal behaviour + monotone [vcs]: normal behaviour + mpd [music server]: --no-daemon + nessusd ["security server"]: normal behaviour + ntpd [time server]: -n + oidentd [identd server]: -i + oops [http proxy]: normal behaviour + openssh [ssh server]: -D + openvpn [vpn server]: normal behaviour + pbbuttonsd [power management]:normal behaviour + proftpd [ftp server]: -n + qmail [mta]: normal behaviour + rsync ["file server"]: --no-detach + silcd ["secure chat server"]: -F, --foreground + slapd [ldap]: -d + snmpd [snmp daemon]: -f + svnserve [vcs]: --foreground + syslogd [log server]: -n + syslog-ng [log server]: -F + tcpserver [super server]: normal behaviour + udhcpc [dhcp client]: normal behaviour + vsftpd [ftp server]: normal behaviour (or: config: background=no) + xinetd [super server]: -dontfork + +Those are the daemons that do not offer the possibility (as of release 0.2): + + atd (no switch, no configuraton option) + inetd (some variants) + nscd (no switch, no configuraton option) + portmap (only with debug mode) diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/debugging.configuration b/software/cinit/browse_source/cinit-0.3pre1/doc/user/debugging.configuration new file mode 100644 index 00000000..1289865e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/debugging.configuration @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +Debugging your init configuration, +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +As writing an init configuration is not the easiest thing, +here are some problems (P) and debugging hints (H): + +P: There's no output! +H: If you don't start a service which outputs something there won't be any, + cinit starts up silently. + +P: Service XYZ seems not to work? +H: Try the following in your shell: + cd /etc/cinit/the-service; ./on "$(on.params)" + If that succeeds it has perhaps something missing which should have been + started before. +H: Create a test-service, which contains the following: + on: link to /bin/echo + on.params: "A test string" (with or without the quotes) + Now add the test-service to the needs directory of service XYZ. + If you see output the next time, the service is started. + Otherwise you forgot to make another service dependent on service + XYZ. + +P: How can I test if a non-outputting service successfully started? +H: Create another service, which depends on your service and make + it echo something. + +P: Does that profile support really work? +H: Try that: cprofile:NONEXISTENT and you'll see. + diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/ideas b/software/cinit/browse_source/cinit-0.3pre1/doc/user/ideas new file mode 100644 index 00000000..d3f13d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/ideas @@ -0,0 +1,3 @@ +- cinit-multi-machine-daemon: + coordinating bootup with several machines + diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/installing-cinit.text b/software/cinit/browse_source/cinit-0.3pre1/doc/user/installing-cinit.text new file mode 100644 index 00000000..084a225e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/installing-cinit.text @@ -0,0 +1,25 @@ +cinit - Installing +================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 +:Author Initials: NS + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +For cross compiling see 'cross-compiling.text'. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/main.text b/software/cinit/browse_source/cinit-0.3pre1/doc/user/main.text new file mode 100644 index 00000000..6308e4c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/main.text @@ -0,0 +1,113 @@ +cinit - a modern init system +============================= +Nico Schottelius +v0.1, for cinit-0.2.2, 2005-01-18 +:Author Initials: NS + + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/meta.dependencies b/software/cinit/browse_source/cinit-0.3pre1/doc/user/meta.dependencies new file mode 100644 index 00000000..fe743c48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/meta.dependencies @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, one would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation (see profile.support). + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +why it does not even need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ + +This way you have the indirection (meta-dependencies) in the filesystem +and cinit does not need any additional code. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/optimising.cinit b/software/cinit/browse_source/cinit-0.3pre1/doc/user/optimising.cinit new file mode 100644 index 00000000..4f4b5c02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/optimising.cinit @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options +2. striping + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + +The current standard for cinit is: (see CFLAGS in the Makefile). + + +2. striping + +With strip(1) you can remove specific sections of object files. +You have to find out, which ones you can remove safely +(for instance with objdump(1)). + +The current standard for cinit is: (see STRIP in the Makefile) diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/paths.text b/software/cinit/browse_source/cinit-0.3pre1/doc/user/paths.text new file mode 100644 index 00000000..0b8c6b39 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/paths.text @@ -0,0 +1,68 @@ +cinit - Configuration +====================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Configuring cinit - the paths used + + +Introduction +------------ +The base directory under which all configurations are found +is '/etc/cinit'. + +The basic hierarchy is shown below: +---------------------------------------------------------------------- +/etc/cinit + svc -> services + conf -> general configuration +---------------------------------------------------------------------- + + +General pathnames +~~~~~~~~~~~~~~~~~~ +When you create something that cinit should execute (like on +starting a service, on stopping a service, on panic, ...), cinit +will recognize the following extensions: + +. cinit executions extensions + - 'name' - the file that should be executed + - 'name'.params - the parameter to pass to 'name' when executing + - 'name'.env - the environment to pass to 'name' when executing + + +Name.params +^^^^^^^^^^^ +The 'params' file is a simple file containing one argument on each +line. + +Name.env +^^^^^^^^ +The 'env' file contains one assignment on each line. +"testvar=testvalue". + + +The subdirectory 'conf' +~~~~~~~~~~~~~~~~~~~~~~~ +In this directory are general configurations located. + +. The executable files in this directory are: + - panic{.*} + - umount{.*} + +The subdirectory 'svc' +~~~~~~~~~~~~~~~~~~~~~~ +This directory contains the services. A service is a directory +which may contain the following files: + +. List of files + - on - What to execute when starting the service + * on.env - Environment to pass to 'on' + * on.params - Parameters to pass to 'on' + - off - What to execute when stopping the service + * off.env - Environment to pass to 'on' + * off.params - Parameters to pass to 'on' + - respawn - An empty file that tells cinit to restart the service + when it exits + diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/problems b/software/cinit/browse_source/cinit-0.3pre1/doc/user/problems new file mode 100644 index 00000000..a3440a3a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/problems @@ -0,0 +1,9 @@ +fsck: + returns non-zero if it repaired something. + You have to wrap it into a shell-script :-( + + #!/bin/sh + fsck $@ + [ $? -le 1 ] && exit 0 + exit 1 + diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/profile.support b/software/cinit/browse_source/cinit-0.3pre1/doc/user/profile.support new file mode 100644 index 00000000..7bc607b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/profile.support @@ -0,0 +1,72 @@ +-------------------------------------------------------------------------------- +Profiles, +Nico Schottelius, 2005-06-04 +-------------------------------------------------------------------------------- + +1. What are profiles? +2. How to use profiles? +3. How to configure profiles? +4. Some examples + + +1. What are profiles? + +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +2. How to use profiles? + +Simply pass 'cprofile:PROFILENAME' (like cprofile:home) to cinit. +How to pass argumenents to cinit? Under Linux the init-system +gets the kernel arguments (see linux.kernel.eats.arguments) as arguments. +So you can use + + kernel /usr/src/linux/vmlinuz cprofile:work (grub1,grub2) + append="cprofile:work" (LILO,yaboot) + +Other Unices should work like Linux, please consult your local +documentation. + + +3. How to configure profiles? + +It's very simple: Normally cinit would call /etc/cinit/init as +primary service and solve all dependencies. If you pass +cprofile=wireless to it, cinit will start /etc/cinit/wireless as +primary service instead. + + [Note: /etc/cinit/yourprofile is the service that will be started. + You need/should/must NOT create /etc/cinit/yourprofile/init!] + +So the only thing you have to do is to create a service directory +below /etc/cinit with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/init; tar c . | (mkdir ../yp; cd ../yp; tar x ) + +That's it! + + +4. Some examples + +Here are some examples we found in #cLinux: + + profile name what it does + + musibox only start mp3blaster + terminal start only minicom, which opens the serial line + net-terminal start a respawning shell script, which starts + ssh to the selected host + video start X+mplayer, which plays the dvd/cdrom + wireless What to start when beeing in an unknown wlan + home/work selected services (nfs, ip, ...) for home or work + diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/replacing.init b/software/cinit/browse_source/cinit-0.3pre1/doc/user/replacing.init new file mode 100644 index 00000000..2858c56c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/replacing.init @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and link, move or copy cinit to init (ln -s /sbin/cinit /sbin/init), reboot. + +That's everything in general, the biggest part will be to configuring cinit. + +See also doc/merging.other.initsystems. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/updating.cinit b/software/cinit/browse_source/cinit-0.3pre1/doc/user/updating.cinit new file mode 100644 index 00000000..fc0d3fef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/updating.cinit @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. call cservice -u thilo (if you have cinit-0.1 or later) + + For older versions: + + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything running and restart as if you would just + have booted. diff --git a/software/cinit/browse_source/cinit-0.3pre1/doc/user/using.rescue b/software/cinit/browse_source/cinit-0.3pre1/doc/user/using.rescue new file mode 100644 index 00000000..f58ff512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/doc/user/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user"). + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.3pre1/scripts/cinit.build-env b/software/cinit/browse_source/cinit-0.3pre1/scripts/cinit.build-env new file mode 100644 index 00000000..94e093e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/scripts/cinit.build-env @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: build environment to be used in scripts +# * Should be sourced by using scripts +# 2006-10-26 +# + +. $(dirname $0)/cinit.read-conf + +export BASEDIR=${DESTDIR}${CINIT_DIR} +export SERVICES=${BASEDIR}/${SVCDIR} +export CONFIG=${BASEDIR}/${CONFDIR} diff --git a/software/cinit/browse_source/cinit-0.3pre1/scripts/cinit.get-confdir b/software/cinit/browse_source/cinit-0.3pre1/scripts/cinit.get-confdir new file mode 100644 index 00000000..38d8572d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/scripts/cinit.get-confdir @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# Date: 2005-05-24 (Last Changed: 2005-08-08) + +# try environment first +if [ "$CINIT_CONF_DIR" ]; then + CONFDIR=$CINIT_CONF_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +else + echo 'Did not find cinit configuration!' >&2 + echo "Please set the variable CINIT_CONF_DIR" >&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.3pre1/scripts/cinit.install.standard.dirs b/software/cinit/browse_source/cinit-0.3pre1/scripts/cinit.install.standard.dirs new file mode 100644 index 00000000..22cf273d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/scripts/cinit.install.standard.dirs @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install standard sub-configuration directories +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.build-env + +for svc in $SERVICE_CATEGORIES; do + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${SERVICES}/${svc}" +done + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre1/scripts/cinit.mkheader b/software/cinit/browse_source/cinit-0.3pre1/scripts/cinit.mkheader new file mode 100644 index 00000000..80e3f7cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/scripts/cinit.mkheader @@ -0,0 +1,32 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric: no quotes needed + is_numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + is_string="$(echo $value | grep '^"')" + + # + # Check for quote type + # + if [ ! "$is_numeric" -a ! "$is_string" ]; then + one_char=$(echo -n $value | wc -c) + + if [ "$one_char" -eq 1 ]; then + value="'$value'" + else + # is a string + value="\"$value\"" + fi + fi + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.3pre1/scripts/cinit.read-conf b/software/cinit/browse_source/cinit-0.3pre1/scripts/cinit.read-conf new file mode 100644 index 00000000..4f3c1cb7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/scripts/cinit.read-conf @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# ~ 2005 +# + +CONFS=$($(dirname $0)/cinit.get-confdir)/* + +set -e + +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + if eval test -z \$$NAME; then + eval $NAME=\"$(head -n 1 $conf)\" + eval export $NAME + fi +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.3pre1/scripts/create_baseconfig.sh b/software/cinit/browse_source/cinit-0.3pre1/scripts/create_baseconfig.sh new file mode 100644 index 00000000..7c9b69e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/scripts/create_baseconfig.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# 2006-10-23 +# cLinux/cinit + +. $(dirname $0)/cinit.build-env + +set -e + +mkdir -p "${BASEDIR}" + +mkdir -p "${SERVICES}" +mkdir -p "${SERVICES}/${C_INIT}" + +mkdir -p "${CONFIG}" diff --git a/software/cinit/browse_source/cinit-0.3pre1/serv/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre1/serv/run_init_svc.c new file mode 100644 index 00000000..f41c1f4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/serv/run_init_svc.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre1/serv/sig_child.c b/software/cinit/browse_source/cinit-0.3pre1/serv/sig_child.c new file mode 100644 index 00000000..cee8042e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/serv/sig_child.c @@ -0,0 +1,35 @@ +/* cinit + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * We are called, when a child dies. Remove it. + */ + +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_child + * collect the children + * FIXME: check whether we've race conditions when reciieving multiiple + * signals + * Perhaps disable listening to sig_child in meantime? + */ + +void sig_child(int tmp) +{ + struct listitem *svc; + + do { + /* check if it's a watched child */ + tmp = waitpid(-1, &tmp, WNOHANG); + + /* restart service, if we are watching it */ + svc = list_search_pid((pid_t) tmp); + + if( svc != NULL ) { + svc->pid = exec_svc(svc->abs_path, CMD_START_SVC); + } + } while( tmp > 0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-17-19:03:48 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-17-19:03:48 new file mode 100644 index 00000000..e379e004 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-17-19:03:48 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 17 19:03 cinit +-rwx------ 1 nico users 46760 Jun 17 19:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-20-12:16:40 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-20-12:16:40 new file mode 100644 index 00000000..1f0c3325 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-20-12:16:40 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 20 12:16 cinit +-rwx------ 1 nico users 50860 Jun 20 12:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-20-15:16:31 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-20-15:16:31 new file mode 100644 index 00000000..75dc3e7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-20-15:16:31 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 15:16 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-20-16:29:28 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-20-16:29:28 new file mode 100644 index 00000000..1294bde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-20-16:29:28 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-20-16:29:50 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-20-16:29:50 new file mode 100644 index 00000000..69fe7490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-20-16:29:50 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 16:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-21-11:53:35 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-21-11:53:35 new file mode 100644 index 00000000..4a1e7b6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-21-11:53:35 @@ -0,0 +1,3 @@ +total 192 +-rwx------ 1 nico users 102039 Jun 21 11:53 cinit +-rwx------ 1 nico users 87871 Jun 21 11:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-07:33:11 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-07:33:11 new file mode 100644 index 00000000..e6c8ff14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-07:33:11 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47544 Jun 22 07:33 cinit +-rwx------ 1 nico users 46760 Jun 22 07:33 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-07:57:13 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-07:57:13 new file mode 100644 index 00000000..17161d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-07:57:13 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47536 Jun 22 07:57 cinit +-rwx------ 1 nico users 46760 Jun 22 07:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-08:08:40 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-08:08:40 new file mode 100644 index 00000000..770083f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-08:08:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47424 Jun 22 08:08 cinit +-rwx------ 1 nico users 46760 Jun 22 08:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-08:30:42 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-08:30:42 new file mode 100644 index 00000000..aa95fb3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-08:30:42 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47360 Jun 22 08:30 cinit +-rwx------ 1 nico users 46760 Jun 22 08:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-09:19:42 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-09:19:42 new file mode 100644 index 00000000..70c261bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-09:19:42 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 09:19 cinit +-rwx------ 1 nico users 50860 Jun 22 09:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-10:43:24 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-10:43:24 new file mode 100644 index 00000000..b8bc4076 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-10:43:24 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 10:43 cinit +-rwx------ 1 nico users 50860 Jun 22 10:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-12:42:57 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-12:42:57 new file mode 100644 index 00000000..c8119859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-12:42:57 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 22 12:42 cinit +-rwx------ 1 nico users 46760 Jun 22 12:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-13:52:41 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-13:52:41 new file mode 100644 index 00000000..793b92fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-13:52:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:52 cinit +-rwx------ 1 nico users 46760 Jun 22 13:52 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-13:59:40 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-13:59:40 new file mode 100644 index 00000000..d114c557 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-13:59:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:59 cinit +-rwx------ 1 nico users 46760 Jun 22 13:59 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-14:19:41 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-14:19:41 new file mode 100644 index 00000000..8d56882f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-14:19:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47640 Jun 22 14:19 cinit +-rwx------ 1 nico users 46760 Jun 22 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-14:37:18 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-14:37:18 new file mode 100644 index 00000000..b7c3e4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-22-14:37:18 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 22 14:37 cinit +-rwx------ 1 nico users 46760 Jun 22 14:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-23-06:22:23 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-23-06:22:23 new file mode 100644 index 00000000..9e38a5e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-23-06:22:23 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 23 06:22 cinit +-rwx------ 1 nico users 46760 Jun 23 06:22 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-24-17:53:55 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-24-17:53:55 new file mode 100644 index 00000000..3b750eaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-24-17:53:55 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:53 cinit +-rwx------ 1 nico users 46760 Jun 24 17:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-24-17:55:29 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-24-17:55:29 new file mode 100644 index 00000000..c30dcaf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-24-17:55:29 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:55 cinit +-rwx------ 1 nico users 46760 Jun 24 17:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-26-13:19:49 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-26-13:19:49 new file mode 100644 index 00000000..a4de830b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-06-26-13:19:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 26 13:19 cinit +-rwx------ 1 nico users 50860 Jun 26 13:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:07:13 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:07:13 new file mode 100644 index 00000000..e2c59ddf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:07:13 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:07 cinit +-rwx------ 1 nico users 50860 Jul 6 08:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:12:20 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:12:20 new file mode 100644 index 00000000..e562350c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:12:20 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:12 cinit +-rwx------ 1 nico users 50860 Jul 6 08:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:13:39 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:13:39 new file mode 100644 index 00000000..32fd8268 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:13:39 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:13 cinit +-rwx------ 1 nico users 50860 Jul 6 08:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:14:19 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:14:19 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:14:19 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:14:59 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:14:59 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:14:59 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:15:56 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:15:56 new file mode 100644 index 00000000..cf26e6f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-08:15:56 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:15 cinit +-rwx------ 1 nico users 50860 Jul 6 08:15 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-10:12:22 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-10:12:22 new file mode 100644 index 00000000..d5f0f2c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-10:12:22 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:08 cinit +-rwx------ 1 nico users 50860 Jul 6 10:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-10:12:31 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-10:12:31 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-10:12:31 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-10:12:49 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-10:12:49 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-07-06-10:12:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-08-29-21:21:34 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-08-29-21:21:34 new file mode 100644 index 00000000..e651a8ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-08-29-21:21:34 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 root root 444508 2005-08-29 21:21 cinit +-rwx------ 1 root root 440412 2005-08-29 21:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-08-29-23:50:55 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-08-29-23:50:55 new file mode 100644 index 00000000..a279aee3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-08-29-23:50:55 @@ -0,0 +1,3 @@ +insgesamt 856 +-rwx------ 1 nico nico 437564 2005-08-29 23:50 cinit +-rwx------ 1 nico nico 436316 2005-08-29 23:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-03-03:36:59 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-03-03:36:59 new file mode 100644 index 00000000..01e555f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-03-03:36:59 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 nico nico 444508 2005-09-03 03:36 cinit +-rwx------ 1 nico nico 440412 2005-09-03 03:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-03-04:34:35 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-03-04:34:35 new file mode 100644 index 00000000..1832930a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-03-04:34:35 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 04:34 cinit +-rwx------ 1 nico nico 440412 Sep 3 04:34 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-03-05:51:17 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-03-05:51:17 new file mode 100644 index 00000000..4e465d06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-03-05:51:17 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 05:51 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-03-05:54:20 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-03-05:54:20 new file mode 100644 index 00000000..9c040d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-03-05:54:20 @@ -0,0 +1,4 @@ +total 1300 +-rwx------ 1 nico nico 440412 Sep 3 05:54 ccontrol +-rwx------ 1 nico nico 444508 Sep 3 05:54 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-03-09:01:59 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-03-09:01:59 new file mode 100644 index 00000000..880422a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-03-09:01:59 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 3 09:01 cinit +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-05-19:41:12 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-05-19:41:12 new file mode 100644 index 00000000..0f07d86e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-05-19:41:12 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 root root 440412 2005-09-05 19:41 ccontrol +-rwx------ 1 root root 444508 2005-09-05 19:41 cinit +-rwx------ 1 root root 440412 2005-09-05 19:41 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-05-19:50:35 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-05-19:50:35 new file mode 100644 index 00000000..32ff19fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-05-19:50:35 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 5 19:50 cinit +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-24-01:42:38 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-24-01:42:38 new file mode 100644 index 00000000..0da6126e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-24-01:42:38 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-09-24 01:42 ccontrol +-rwx------ 1 nico nico 437628 2005-09-24 01:42 cinit +-rwx------ 1 nico nico 436316 2005-09-24 01:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-30-22:50:50 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-30-22:50:50 new file mode 100644 index 00000000..0d510174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-30-22:50:50 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 22:50 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 22:50 cinit +-rwx------ 1 nico nico 436316 2005-09-30 22:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-30-23:06:39 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-30-23:06:39 new file mode 100644 index 00000000..23450914 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-09-30-23:06:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 23:06 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 23:06 cinit +-rwx------ 1 nico nico 436316 2005-09-30 23:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-01-22:09:13 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-01-22:09:13 new file mode 100644 index 00000000..a62b9eb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-01-22:09:13 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-10-01 22:09 ccontrol +-rwx------ 1 nico nico 437308 2005-10-01 22:09 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-01-22:17:39 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-01-22:17:39 new file mode 100644 index 00000000..b1d8b11b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-01-22:17:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-01 22:17 ccontrol +-rwx------ 1 nico nico 437532 2005-10-01 22:17 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-02-11:12:29 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-02-11:12:29 new file mode 100644 index 00000000..e5f7b13d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-02-11:12:29 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:12 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-02-11:13:35 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-02-11:13:35 new file mode 100644 index 00000000..d7c14471 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-02-11:13:35 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-02-11:13:43 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-02-11:13:43 new file mode 100644 index 00000000..1711d01a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-02-11:13:43 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 11:13 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 436316 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-02-16:00:24 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-02-16:00:24 new file mode 100644 index 00000000..ab23228c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-02-16:00:24 @@ -0,0 +1,4 @@ +total 1284 +-rwx------ 1 nico nico 436316 Oct 2 16:00 ccontrol +-rwx------ 1 nico nico 437884 Oct 2 16:00 cinit +-rwx------ 1 nico nico 436316 Oct 2 16:00 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-02-23:17:11 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-02-23:17:11 new file mode 100644 index 00000000..92041cd9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-02-23:17:11 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 23:17 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 23:17 cinit +-rwx------ 1 nico nico 436316 2005-10-02 23:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-03-00:54:39 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-03-00:54:39 new file mode 100644 index 00000000..df47a057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-03-00:54:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:54 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:54 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-03-00:56:29 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-03-00:56:29 new file mode 100644 index 00000000..08db7fec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-03-00:56:29 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:56 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:56 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:56 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-13-09:55:52 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-13-09:55:52 new file mode 100644 index 00000000..d54a7ff4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-13-09:55:52 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:55 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:55 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-13-09:57:11 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-13-09:57:11 new file mode 100644 index 00000000..3b1af9ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-13-09:57:11 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:57 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:57 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-13-10:07:28 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-13-10:07:28 new file mode 100644 index 00000000..58d25315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-13-10:07:28 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 10:07 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 10:07 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 10:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-15-15:26:52 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-15-15:26:52 new file mode 100644 index 00000000..a88291e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-15-15:26:52 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 root root 436316 2005-10-15 15:26 ccontrol +-rwx------ 1 root root 437916 2005-10-15 15:26 cinit +-rwx------ 1 root root 436316 2005-10-15 15:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-15-21:23:56 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-15-21:23:56 new file mode 100644 index 00000000..43a4504d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-10-15-21:23:56 @@ -0,0 +1,4 @@ +total 36 +-rwx------ 1 nico nico 9148 Oct 15 21:23 ccontrol +-rwx------ 1 nico nico 11872 Oct 15 21:23 cinit +-rwx------ 1 nico nico 9768 Oct 15 21:23 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2005-11-17-17:03:53 b/software/cinit/browse_source/cinit-0.3pre1/size/2005-11-17-17:03:53 new file mode 100644 index 00000000..78543f15 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2005-11-17-17:03:53 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2005-11-17 17:03 ccontrol +-rwx------ 1 nico nico 11872 2005-11-17 17:03 cinit +-rwx------ 1 nico nico 9768 2005-11-17 17:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-11-23:45:54 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-11-23:45:54 new file mode 100644 index 00000000..f4852c81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-11-23:45:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-11 23:45 cinit +-rwx------ 1 nico nico 9768 2006-02-11 23:45 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-12-00:06:11 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-12-00:06:11 new file mode 100644 index 00000000..2fe41351 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-12-00:06:11 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-12-00:06:42 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-12-00:06:42 new file mode 100644 index 00000000..bf2ddc36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-12-00:06:42 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:06 ccontrol +-rwx------ 1 nico nico 11560 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-12-00:08:24 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-12-00:08:24 new file mode 100644 index 00000000..e25a49ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-12-00:08:24 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:08 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:08 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-12-00:09:33 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-12-00:09:33 new file mode 100644 index 00000000..0b64fa00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-12-00:09:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:09 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:09 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-12-00:13:32 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-12-00:13:32 new file mode 100644 index 00000000..b6c5c38e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-12-00:13:32 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:13 ccontrol +-rwx------ 1 nico nico 11500 2006-02-12 00:13 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-16-23:57:29 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-16-23:57:29 new file mode 100644 index 00000000..86b9fda9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-16-23:57:29 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11620 2006-02-16 23:57 cinit +-rwx------ 1 nico nico 9768 2006-02-16 23:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-17-00:16:18 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-17-00:16:18 new file mode 100644 index 00000000..28c853a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-17-00:16:18 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 00:16 cinit +-rwx------ 1 nico nico 9768 2006-02-17 00:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-17-22:48:35 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-17-22:48:35 new file mode 100644 index 00000000..5935acfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-17-22:48:35 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-17 22:48 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 22:48 cinit +-rwx------ 1 nico nico 9768 2006-02-17 22:48 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:03:54 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:03:54 new file mode 100644 index 00000000..9222f0b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:03:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:03 cinit +-rwx------ 1 nico nico 9768 2006-02-20 19:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:04:33 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:04:33 new file mode 100644 index 00000000..c5797edc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:04:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:04:36 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:04:36 new file mode 100644 index 00000000..fbcf9fa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:04:36 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:07:47 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:07:47 new file mode 100644 index 00000000..7e1fe18f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:07:47 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:07 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:12:33 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:12:33 new file mode 100644 index 00000000..2b4fda40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:12:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:12 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:12 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:14:56 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:14:56 new file mode 100644 index 00000000..bccb5d65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-02-20-20:14:56 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:14 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:14 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-01-23:32:43 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-01-23:32:43 new file mode 100644 index 00000000..fcbaf372 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-01-23:32:43 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-01 23:32 ccontrol +-rwx------ 1 nico nico 11640 2006-06-01 23:32 cinit +-rwx------ 1 nico nico 9768 2006-06-01 23:32 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-01:08:28 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-01:08:28 new file mode 100644 index 00000000..7683546c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-01:08:28 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:08 ccontrol +-rwx------ 1 nico nico 11688 2006-06-02 01:08 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-01:29:13 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-01:29:13 new file mode 100644 index 00000000..adbc6846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-01:29:13 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:29 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 01:29 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-11:13:39 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-11:13:39 new file mode 100644 index 00000000..46eaef4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-11:13:39 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:13 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:13 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-11:36:37 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-11:36:37 new file mode 100644 index 00000000..306402f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-11:36:37 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:36 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:36 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-15:17:17 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-15:17:17 new file mode 100644 index 00000000..7bb59095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-15:17:17 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:17 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:17 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-15:19:52 b/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-15:19:52 new file mode 100644 index 00000000..ce65256f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/size/2006-06-02-15:19:52 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:19 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:19 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/Makefile b/software/cinit/browse_source/cinit-0.3pre1/src/Makefile new file mode 100644 index 00000000..13e1a854 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/Makefile @@ -0,0 +1,135 @@ +# +# cinit +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +include Makefile.tests + +# Build tools / locations +CC=../tmpbin/cc +CFLAGS= +LD=../tmpbin/ld +LDFLAGS= +STRIP=../tmpbin/strip +SBIN=../sbin + +# directories and files +CONFIG_H=headers/config.h + +# +# objects for the cinit part +# +CINIT_HEADERS=$(shell cat headers/listing) +CINIT_CORE_OBJ=$(shell cat core/objects) +CINIT_GENERIC_OBJ=$(shell cat generic/objects) +CINIT_SVC_OBJ=$(shell cat svc/objects) + +# +# The current link may be missing in the first run +# +CINIT_IPC_OBJ=$(shell cat ipc/current/objects 2>/dev/null) +CINIT_OS_OBJ=$(shell cat os/current/objects 2>/dev/null) + +CINIT_OBJ=$(CINIT_CORE_OBJ) $(CINIT_IPC_OBJ) $(CINIT_OS_OBJ) \ + $(CINIT_GENERIC_OBJ) $(CINIT_SVC_OBJ) + +# +# Dependencies +# +$(CINIT_OBJ): $(CINIT_HEADERS) + +# +# Client modules +# +CLIENT=client/msg_svc_on_off.o client/msg_change_status.o client/run_svc.o \ + client/exec_svc.o client/respawn_svc.o client/run_run_svcs.o \ + client/connect_sock.o client/begin_msg.o client/sig_terminate.o + +COMMUNICATION=comm/do_change_status.o comm/do_result.o comm/do_svc_name.o + +BOTH=generic/set_signals.o generic/mini_printf.o generic/usage.o + +OBJ=$(SERV) $(SERV_OS) $(CLIENT) $(BOTH) $(COMMUNICATION) + +CSVC_OBJ=util/cservice.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +CCO_OBJ=util/ccontrol.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +%.o: %.c + $(CC) -c -o $@ $< + +# +# End user target +# +#all: cinit cservice ccontrol sizecheck docs +all: cinit + +# +# First do configuration, so we include the right variables +# +Makefile: .configured + +.configured: ../conf/* + @../bin/cinit.configure.os + @../bin/cinit.configure.tools + @../bin/cinit.configure.ipc + @../bin/cinit.configure.mark + +$(CINIT_OBJ): $(CONFIG_H) + +cinit: $(CINIT_OBJ) + $(LD) $^ -o $@ + + +#$(CINIT_BIN): $(SBIN) $(OBJ) +# $(LD) $(LDFLAGS) $(OBJ) -o $@ +# $(STRIP) $@ + +sizecheck: cinit cservice + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l sbin/ > $$FILE; cat $$FILE + @echo -n "Source size (in KiB): " + @du -s $(SDIRS) | awk '{ sum+=$$1 } END { print sum }' +# @du -s bin client comm conf doc generic serv | awk '{ sum+=$1 } END { print sum }' + + + +.PHONY: clean +clean: + rm -f .configured + rm -f $(CINIT_OBJ) + rm -f ../tmpbin/* + +distclean: + rm -f os/current ipc/current + +$(CONFIG_H): ../conf/* + ../scripts/cinit.mkheader > $(CONFIG_H) + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +ccontrol: $(SBIN)/ccontrol + +$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) + $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ + $(STRIP) $@ + +install: install-dir cinit cservice ccontrol + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/Makefile.tests b/software/cinit/browse_source/cinit-0.3pre1/src/Makefile.tests new file mode 100644 index 00000000..88cbb5df --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/Makefile.tests @@ -0,0 +1,25 @@ +# +# Makefile for cinit tests +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +TEST_BUILD_ARGV=test/test_build_argv.o core/build_argv.o + +PROGS=test_build_argv test_build_argv_link + +tests: $(PROGS) + +test_build_argv: test/test_build_argv.o core/build_argv.o +test_build_argv_link: test/test_build_argv+link.o core/build_argv.o + +test_gen_svc_tree: test/test_gen_svc_tree.o svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/gen_svc_tree.o \ + generic/mini_printf.o \ + svc/list_display_all.o diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/core/build_argv.c b/software/cinit/browse_source/cinit-0.3pre1/src/core/build_argv.c new file mode 100644 index 00000000..bb72a9b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/core/build_argv.c @@ -0,0 +1,220 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Build **argv for execution in cinit way: + * 1. check whether cmd is a valid executable + * 2. try to read cmd.params and write paramaters + * 3. try to read cmd.env and setup environment + * + * Returns: + * BA_OK: Everything went well, you can use the struct + * BA_NOTFOUND: Binary executable is not available + * BA_PARAMS: Reading the parameters failed (ignoring non-existence!) + * BA_ENV: Reading the environment failed (same as above) + * BA_OTHER: Other error + */ + +#include /* open() */ +#include /* *alloc() */ +#include /* readlink */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* NULL */ +#include /* strchr */ +#include /* stat() */ + +#include "cinit.h" +#include "build_argv.h" + + /* + * FIXME: we are perhaps loosing a byte, the \0 for the full + * string of argv and envp! too tired to check. + * char *basename: something we should execute + * (*basename) + ".params" will be added as parameters + * (*basename) + ".env" will be added as environment + * + */ + + +int cinit_build_argv(char *basename, struct ba_argv *bav) +{ + int tmp; + int fd; + int argc; + char pathtmp[PATH_MAX+1]; + char *p; + char *sbuf = NULL; + struct stat buf; + + /* sane values */ + bav->argv = NULL; + bav->envp = NULL; + + printf("basename %s\n",basename); + + /*********************************************************************** + * Try to get realname (for links) + */ + if ( ( tmp = readlink(basename,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? */ + if(errno == ENOENT) { + return BA_E_NOTFOUND; + } + if (errno != EINVAL) { + return BA_E_OTHER; + } + tmp=strlen(basename); + strncpy(pathtmp,basename,tmp); + } + pathtmp[tmp] = '\0'; + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /*********************************************************************** + * prepare argv0 + */ + bav->argv = malloc( sizeof(char *) ); + if(bav->argv == NULL) return BA_E_MEM; + + *bav->argv = malloc( tmp ); + if(*(bav->argv) == NULL) return BA_E_MEM; + + strncpy(*(bav->argv),pathtmp,tmp); + + /********************** read params *********************/ + strcat(pathtmp,C_PARAMS); + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + return BA_E_PARAMS; + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + return BA_E_PARAMS; + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /*********************************************************************** + * Now split the string, converting \n to \0 + */ + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + + if(bav->argv == NULL) { + return BA_E_MEM; + } + + bav->argv[argc] = sbuf; /* here begins the current argument */ + + if(p != NULL) { /* found another \n */ + *p = '\0'; + } else { /* end of string */ + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(bav->argv == NULL) { + return BA_E_MEM; + } + bav->argv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,bav->argv[0]); + strcat(pathtmp,C_ENV); + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + return BA_E_ENV; + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + return BA_E_ENV; + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) { + return BA_E_MEM; + } + bav->envp[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) { + return BA_E_MEM; + } + bav->envp[argc] = NULL; + + return BA_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/core/cinit.c b/software/cinit/browse_source/cinit-0.3pre1/src/core/cinit.c new file mode 100644 index 00000000..e99618a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/core/cinit.c @@ -0,0 +1,88 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The main file + * + */ + +#include /* getpid,chdir */ +#include /* str(ncmp,len,cpy,cat) */ +#include /* perror */ +#include /* malloc */ + +#include "cinit.h" /* general things */ +#include "messages.h" /* messages */ +#include "ipc.h" /* general ipc methods */ + +struct listitem *list; +pid_t cpid; + +int main(int argc, char **argv) +{ + char *initdir; + + list = NULL; /* empty list of services */ + initdir = CINIT_INIT; /* default init dir */ + + /* FIXME: RE-ENABLE as SOON AS PRODUCTIVE cpid = getpid(); + if(cpid != 1) { + mini_printf(CINIT_VERSION,2); + mini_printf(MSG_USAGE,2); + return 0; + }*/ + + set_signals(ACT_SERV); + + /* Look whether we should start a profile */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_SVCDIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_SVCDIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* FIXME: do we really need three calls? */ + mini_printf(MSG_BOOTING,1); mini_printf(initdir,1); mini_printf("\n",1); + + if(chdir(initdir) == -1) { + print_errno(initdir); + panic(); + } + + /* initialize ipc method */ + if(!cinit_ipc_init()) { + panic(); + } + + /* pre-calculate service tree */ + gen_svc_tree(initdir); + + mini_printf("test\n",1); + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* listen for incomming messages: should never return */ + if(!cinit_ipc_listen()) { + panic(); + } + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/core/do_reboot.c b/software/cinit/browse_source/cinit-0.3pre1/src/core/do_reboot.c new file mode 100644 index 00000000..c190f634 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/core/do_reboot.c @@ -0,0 +1,74 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "ipc.h" +#include "cinit.h" +#include "os.h" +#include "messages.h" + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void do_reboot(int signal) +{ + //struct listitem *tmp; + struct timespec ts; + //char **cmd; + //int i; + + /* shutdown all services: take care about the dependency tree */ + + /* do not listen to client requests anymore + * FIXME: perhaps before shutdown? */ + cinit_ipc_destroy(); + + /* now: all services are down, let's kill all other processes */ + if( kill(-1,SIGTERM) == -1) { + print_errno(MSG_TERMKILL); + } + + /* FIXME make SLEEP_KILL an optional configuration statement */ + ts.tv_sec = SLEEP_KILL; /* defined in conf/sleep_kill */ + ts.tv_nsec = 0; + nanosleep(&ts,NULL); + + if( kill(-1,SIGKILL) == -1) { + print_errno(MSG_KILLBILL); + } + + /* execute umount, as defined in conf/umount */ + + /* execute_sth(CINIT_UMOUNT); */ + + /* do what we really wanted to do */ + switch(signal) { + case SIGTERM: /* power off */ + LOG(MSG_POWER_OFF); + cinit_poweroff(); + break; + case SIGHUP: /* reboot */ + LOG(MSG_REBOOT); + cinit_reboot(); + break; + case SIGUSR1: /* halt */ + LOG(MSG_HALT); + cinit_halt(); + break; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/core/objects b/software/cinit/browse_source/cinit-0.3pre1/src/core/objects new file mode 100644 index 00000000..fd49e8d3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/core/objects @@ -0,0 +1,6 @@ +core/build_argv.o +core/cinit.o +core/panic.o +core/run_init_svc.o +core/set_signals.o +core/do_reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/core/panic.c b/software/cinit/browse_source/cinit-0.3pre1/src/core/panic.c new file mode 100644 index 00000000..39092aef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/core/panic.c @@ -0,0 +1,30 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something + */ + +#include "cinit.h" +#include + +void panic(void) +{ + char *nargv[2]; + + execute_sth(CINIT_PANIC); + + /*********************************************************************** + * THIS SHOULD NOT HAPPEN, fallback to hardcoded sulogin + * (conf/sulogin) + */ + nargv[0] = SULOGIN; + nargv[1] = NULL; + + execv(SULOGIN,nargv); + + /* there's nothing todo, if everything fails */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/core/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre1/src/core/run_init_svc.c new file mode 100644 index 00000000..42edb167 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/core/run_init_svc.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include /* _exit, fork */ + +#include "cinit.h" +#include "messages.h" +#include "ipc.h" + +int run_svc(char *rpath) { rpath = "test"; return 0; } /* a hack to compile cinit for now */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + if(!cinit_ipc_logon()) _exit(1); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/core/run_svc.c b/software/cinit/browse_source/cinit-0.3pre1/src/core/run_svc.c new file mode 100644 index 00000000..4a7eabf1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/core/run_svc.c @@ -0,0 +1,131 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +#error "needs to be cleaned up" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + print_errno(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + print_errno(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/core/set_signals.c b/software/cinit/browse_source/cinit-0.3pre1/src/core/set_signals.c new file mode 100644 index 00000000..57dfc242 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/core/set_signals.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2006-2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Define signal handlers + */ + + +#include +#include +#include "cinit.h" + +void sig_child(int signal) { signal=2; } /* HACK */ + +void set_signals(int action) +{ + struct sigaction sa; + + if(action == ACT_SERV) { + sa.sa_handler=sig_child; + } + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + if(action == ACT_SERV) { + sa.sa_handler=do_reboot; + } + sigaction(SIGHUP,&sa,NULL); /* reboot */ + sigaction(SIGTERM,&sa,NULL); /* poweroff */ + sigaction(SIGUSR1,&sa,NULL); /* halt */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/generic/execute_sth.c b/software/cinit/browse_source/cinit-0.3pre1/src/generic/execute_sth.c new file mode 100644 index 00000000..d2700fdf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/generic/execute_sth.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Executes something: replaces us + */ + +#include /* _exit */ +#include "cinit.h" +#include "build_argv.h" + +void execute_sth(char *basename) +{ + struct ba_argv bav; + int tmp; + + if( ( tmp = cinit_build_argv(basename,&bav) ) != BA_OK) { + if(tmp != BA_E_MEM) { + print_errno(basename); + } /* do not print something on memory errors */ + _exit(1); /* FIXME: adjust exit code? */ + } + + execve((bav.argv)[0],bav.argv,bav.envp); + print_errno(basename); + _exit(1); /* FIXME: return specific error code, so cinit knows + * what happened! - sure? perhaps this gets non + * standard errors from other programs, too ... */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre1/src/generic/mini_printf.c new file mode 100644 index 00000000..e4e16678 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/generic/mini_printf.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Print to the world! + * + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) return; + + p = str; + while ( *p ) p++; + + write(fd,str,(size_t) (p - str) ); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/generic/objects b/software/cinit/browse_source/cinit-0.3pre1/src/generic/objects new file mode 100644 index 00000000..ba33ac4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/generic/objects @@ -0,0 +1,5 @@ +generic/execute_sth.o +generic/mini_printf.o +generic/path_absolute.o +generic/path_append.o +generic/print_errno.o diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/generic/path_absolute.c b/software/cinit/browse_source/cinit-0.3pre1/src/generic/path_absolute.c new file mode 100644 index 00000000..ae524326 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/generic/path_absolute.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create an absulte path + */ + +#include /* chdir(),getcwd */ +#include /* PATH_MAX */ +#include "cinit.h" /* print_errno */ +#include "messages.h" /* print_errno */ + +int path_absolute(char *relpath, char *newpath, size_t size) +{ + char oldpath[PATH_MAX+1]; + + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_CHDIR); + return 0; + } + + if(chdir(relpath) == -1) { + print_errno(relpath); + return 0; + } + + if(!getcwd(newpath,size)) { + print_errno(relpath); + return 0; + } + + if(chdir(oldpath) == -1) { + print_errno(oldpath); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/generic/path_append.c b/software/cinit/browse_source/cinit-0.3pre1/src/generic/path_append.c new file mode 100644 index 00000000..361b349e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/generic/path_append.c @@ -0,0 +1,29 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create path to needs + */ + +#include /* strlen */ +#include /* PATH_MAX */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +int path_append(char *path, char *append) +{ + size_t end = strlen(path); + + + if(strcmp(&path[end-1],SLASH)) { + if((end + strlen(SLASH) + strlen(append)) > PATH_MAX) return 0; + strcat(path,SLASH); + } else { + if((end + strlen(append)) > PATH_MAX) return 0; + } + strcat(path,append); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/generic/print_errno.c b/software/cinit/browse_source/cinit-0.3pre1/src/generic/print_errno.c new file mode 100644 index 00000000..7415d556 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/generic/print_errno.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * stolen from tcpserver_blocker + * + * Author: Nico Schottelius + * Date: 2006-08-24 + * + * Print the error found in errno + */ + +#include /* strerror */ +#include /* errno */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +void print_errno(char *msg) +{ + if(msg) { + mini_printf(msg, FD_ERR); + mini_printf(": ", FD_ERR); + } + mini_printf(strerror(errno), FD_ERR); + mini_printf("\n", FD_ERR); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/generic/usage.c b/software/cinit/browse_source/cinit-0.3pre1/src/generic/usage.c new file mode 100644 index 00000000..076cfa9b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/generic/usage.c @@ -0,0 +1,23 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * usage: tell the world what we want - seriously no capitalism + * + */ + +#include +#include "cinit.h" + +/*********************************************************************** + * usage: tell the user what's wrong and a help text + */ +void usage(char *banner, char *text) +{ + /* print banner + error message */ + mini_printf(banner,1); + mini_printf(text,1); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/headers/build_argv.h b/software/cinit/browse_source/cinit-0.3pre1/src/headers/build_argv.h new file mode 100644 index 00000000..b61b27a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/headers/build_argv.h @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * build **argv + */ + +#ifndef CINIT_BA_HEADER +#define CINIT_BA_HEADER + +/***************************************************************************** + * Defines: return values + */ +enum { + BA_OK, + BA_E_NOTFOUND, + BA_E_PARAMS, + BA_E_ENV, + BA_E_MEM, + BA_E_OTHER +}; + +/***************************************************************************** + * Structures + */ +struct ba_argv { + char **argv; + char **envp; +}; + +/***************************************************************************** + * Functions + */ +int cinit_build_argv(char *basename, struct ba_argv *bav); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/headers/cinit.h b/software/cinit/browse_source/cinit-0.3pre1/src/headers/cinit.h new file mode 100644 index 00000000..5d4cbdaa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/headers/cinit.h @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_H +#define _CINIT_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/*********************************************************************** + * Defines + */ +#define SLASH "/" +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC + +enum { /* FIXME: there are some default defines somewhere for that */ + FD_IN=0, + FD_OUT=1, + FD_ERR=2 +}; + +/*********************************************************************** + * Paths + */ +#define CINIT_SVCDIR CINIT_DIR SLASH SVCDIR +#define CINIT_INIT CINIT_SVCDIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK +#define CINIT_BIN PREFIX SLASH "sbin" SLASH "cinit" + +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC +#define CINIT_UMOUNT CINIT_CONFDIR SLASH C_UMOUNT + +/* actions for i/o handlers (see comm/do_*) */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +//extern int sock; /* current writing/reading socket */ +//extern pid_t cpid; /* used by main() and reused be respaw_svc() */ + +/* functions (used by server and client) */ +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +void usage(char *banner, char *stext); + +int do_svc_name(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* server functions */ +int run_init_svc(char *cinit_svc); +void sigio(int socket); +void do_reboot(int signal); +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +int msg_svc_on_off(char *svc, char action); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +int run_run_svcs(char *abspath); +pid_t exec_svc(char *abspath, int on); +pid_t respawn_svc(char *abspath); +int connect_sock(int socke); +char **read_file(char *file); +void sig_terminate(int signal); + +/* generic */ +void execute_sth(char *basename); +int path_append(char *path, char *append); +int path_absolute(char *relpath, char *buf, size_t size); + +/* util */ +int msg_reboot(char cmd); +void print_errno(char *text); + +/* service */ +int svc_known(char *svc); +int svc_create(char *svc); +int gen_svc_tree(char *svc); + +/* os-functions */ +void cinit_reboot(void); +void cinit_halt(void); +void cinit_poweroff(void); + +#endif /* _CINIT_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/headers/comm.h b/software/cinit/browse_source/cinit-0.3pre1/src/headers/comm.h new file mode 100644 index 00000000..88f7c4fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/headers/comm.h @@ -0,0 +1,90 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#ifndef CINIT_COMM_HEADER +#define CINIT_COMM_HEADER + +#include /* PATH_MAX */ + +/*********************************************************************** + * Commands the clients may issue to us + * maximum number of commands: 2^8 = 256 + */ +enum commands { + CMD_START_SVC=1, /* the client wants US to start a service */ + CMD_START_SVC_ONLY, /* start this service without dependencies */ + CMD_STOP_SVC, /* stop svc and all svcs that need it */ + CMD_STOP_SVC_ONLY, /* we should stop _only_ this service */ + CMD_STOP_SVC_WANTS, /* stop svc, all svcs that need or want it */ + CMD_CHG_STAT, /* the client reports a status change */ + CMD_RESCUE, /* we should start the rescue mode */ + CMD_HALT, /* halt the system */ + CMD_REBOOT, /* reboot the system */ + CMD_POWEROFF, /* poweroff the system */ + CMD_WBOOT, /* shutdown and restart everything */ + CMD_INFO /* send information about that service */ +}; + +/*********************************************************************** + * status of a service and return codes - errors and success + */ +enum svc_status { + ST_TMPNOW=1, /* the client is now starting the service NEEDED??? */ + ST_NOTEXIST, /* service does not exist */ + + ST_NEED_FAIL, /* failed to start a need for this service */ + ST_FAIL, /* failed to start service */ + + ST_OFF, /* service is off */ + ST_OFF_ALL, /* service and those that need it are off */ + ST_OFF_ALL_F, /* same, but something failed */ + ST_OFF_WANTS, /* service + those that need or want it are off */ + ST_OFF_WANTS_F, /* same, but something failed */ + + ST_TMP, /* currently working on it */ + ST_ONCE, /* executed once */ + ST_RESPAWN /* running and respawning */ +}; + +/* old + RT_ERR_COMM, * communication failed * + RT_ERR, * service starting failed * + RT_UNSPEC, * some kind of error, unspecified * + RT_SUCCESS, * successfully started: respawning or once * + RT_SVC_FAILED, * tried earlier, service failed, won't retry * + +*/ + +/*********************************************************************** + * messages from the client + * Prefix: qst_ (question) + */ +struct msg_client { + pid_t pid; /* pid of the telling client */ + char cmd; /* which cmd is issued to us */ + char status; /* status of the service */ + char svc[PATH_MAX]; /* name of the service */ + char svc_orig[PATH_MAX]; /* the service, which wants to start us */ +}; + +/*********************************************************************** + * messages from the server + * Prefix: asw_ (answer) + */ + +/*********************************************************************** + * return short status + */ +struct asw_sstatus { + long mtype; + char status; + char msg[PATH_MAX]; +}; + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/headers/ipc.h b/software/cinit/browse_source/cinit-0.3pre1/src/headers/ipc.h new file mode 100644 index 00000000..66b3bc86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/headers/ipc.h @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Prototypes for ipc handler + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +/***************************************************************************** + * Functions: in server + */ +int cinit_ipc_init(void); /* init in init */ +int cinit_ipc_listen(void); /* listen in init */ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + +/***************************************************************************** + * Functions: in clients + */ +int cinit_ipc_logon(void); /* logon to init (client init) */ +int cinit_ipc_connect(void); /* connect to init */ +int cinit_ipc_csend(void *data); /* send to the server from a client */ + +/***************************************************************************** + * Functions: shared + */ + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/headers/listing b/software/cinit/browse_source/cinit-0.3pre1/src/headers/listing new file mode 100644 index 00000000..736feba6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/headers/listing @@ -0,0 +1,5 @@ +headers/cinit.h +headers/config.h +headers/ipc.h +headers/messages.h +headers/os.h diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/headers/messages.h b/software/cinit/browse_source/cinit-0.3pre1/src/headers/messages.h new file mode 100644 index 00000000..1ae95e2c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/headers/messages.h @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_MSG_H +#define _CINIT_MSG_H + +/* version */ +#define CINIT_VERSION "cinit-" VERSION +#define MSG_BOOTING CINIT_VERSION ": Booting from " + +#define MSG_DP ": " + +/* Messages to the outside */ +#define MSG_BIND "bind" +#define MSG_CONNECT "connect" +#define MSG_FCNTL "fcntl" +#define MSG_KILLBILL "sigkill" +#define MSG_LISTEN "listen" +#define MSG_SOCKET "socket" +#define MSG_TERMKILL "sigterm" +#define MSG_USAGE_1 ": fast executing, small and simple init " +#define MSG_USAGE_2 "with support for profiles\n" +#define MSG_USAGE_3 "\nError: cinit must be started as PID 1.\n" +#define MSG_USAGE MSG_USAGE_1 MSG_USAGE_2 MSG_USAGE_3 +#define MSG_ERR_FORK "fork" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_OPEN "open" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_READ "read" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" + +#define MSG_ERR_DEPS "Too many dependencies" +#define MSG_ERR_ACCEPT "accept" +#define MSG_ERR_WAITPID "waitpid" +#define MSG_ERR_POLL "poll" +#define MSG_ERR_MODIFY "modify list failed" +#define MSG_ERR_COMM "Communication failed" + +#define MSG_ERR_LESS_ARGS "Too less arguments!" +#define MSG_ERR_BAD_ARGS "Wrong arguments / parameter" +#define MSG_ERR_ARGS_LEN "Wrong parameter length" + +#define LOG_SVC_STOPED "Service stoped" +#define LOG_SVC_ONCE "Started once" +#define LOG_SVC_RESPAWN "Respawns now" +#define LOG_SVC_FAIL "Service failed" +#define LOG_NEED_FAIL "One or more need failed" +#define LOG_SVC_FAILED "Service already failed, not starting." +#define LOG_SVC_NOTEXIST "Service does not exist" + +#define MSG_START_SVC "Starting " +#define MSG_STOP_SVC "Stoping " +#define MSG_EXEC_FAILED "Failed to execute " + +#define MSG_POWER_OFF "Powering off..." +#define MSG_HALT "Halting system ..." +#define MSG_REBOOT "Rebooting ..." +#define MSG_RESCUE "Switching to rescue mode ..." +#define MSG_UPDATE "Updating cinit ..." +#define MSG_HOT_REBOOT "Hot reboot in progress ..." + +#define MSG_SHOULD_NOT_HAPPEN "This should not happen, I do not know what todo!" + +/* DEBUG */ +#ifdef DEBUG +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) +#endif + +/* macros */ +#define SERVICE_LOG(svc,message) { \ + mini_printf(svc,1); \ + mini_printf(MSG_DP,1); \ + mini_printf(message,1); \ + mini_printf("\n",1); \ +} +#define LOG(s) { \ + mini_printf(s,1); \ + mini_printf("\n",1); \ +} +#define P_START_SERVICE(name) { mini_printf(MSG_START_SVC,1); mini_printf(name,1); mini_printf("\n",1); } +#define P_EXEC_FAILED(name) { mini_printf(MSG_EXEC_FAILED,1); mini_printf(name,1); mini_printf("\n",1); } + +#endif /* _CINIT_MSG_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/headers/os.h b/software/cinit/browse_source/cinit-0.3pre1/src/headers/os.h new file mode 100644 index 00000000..e36d5a8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/headers/os.h @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * os specific functions + */ + +#ifndef CINIT_OS_HEADER +#define CINIT_OS_HEADER + +/***************************************************************************** + * Functions + */ +void cinit_halt(void); +void cinit_poweroff(void); +void cinit_reboot(void); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/headers/svc.h b/software/cinit/browse_source/cinit-0.3pre1/src/headers/svc.h new file mode 100644 index 00000000..31496a2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/headers/svc.h @@ -0,0 +1,40 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_SVC_H +#define _CINIT_SVC_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* service list */ +struct listitem { + char *abs_path; /* name of service */ + int status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + struct listitem *before; /* previous item */ + struct listitem *after; /* next item */ + struct listitem *wanted; /* list of services that want this service */ + struct listitem *needed; /* list of services that need this service */ +}; + +/* variables */ +extern struct listitem *list; /* the process linked chain */ + +/* list functions */ +int list_insert(char *path, int status); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); +struct listitem *list_search(char *path); +inline struct listitem *list_search_pid(pid_t pid); +int list_display_all(); + + +/* service */ +int svc_known(char *svc); +int svc_create(char *svc); +int gen_svc_tree(char *svc); + +#endif /* _CINIT_SVC_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/README.text b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/README.text new file mode 100644 index 00000000..c9a1acf2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/README.text @@ -0,0 +1,20 @@ +cinit/src/ipc/msgq: About this msqg implementation +=================================================== +Nico Schottelius +0.1, Initial Version from 2006-08-04 +:Author Initials: NS + +Intro here + +Introduction +------------ + +cinit opens a + +Files +----- +- README.text: This file +- cinit_init_ipc.c: Init +msgq.h +objects + diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_connect.c b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_connect.c new file mode 100644 index 00000000..a744980c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_connect.c @@ -0,0 +1,70 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel */ + k_in = ftok(IPC_KEY,IPC_IN); + k_out = ftok(IPC_KEY,IPC_OUT); + + if(k_in == -1 || k_out == -1) { + perror("ftok"); + exit(1); + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + perror("msgget"); + exit(1); + } + + /* wrong tabsto ;-) */ +while (1) { + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror("msgrcv"); + exit(1); + } + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_csend.c b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_csend.c new file mode 100644 index 00000000..43a0012f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_csend.c @@ -0,0 +1,62 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_logon(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(IPC_KEY,IPC_OUT); + k_out = ftok(IPC_KEY,IPC_IN); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_destroy.c b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_destroy.c new file mode 100644 index 00000000..299885c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_destroy.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Destory ipc mechanism, cinit is gonna die soon. + * + */ + +#include /* msgget */ +#include /* NULL */ + +#include "msgq.h" /* mq_in, mq_out */ +#include "cinit.h" /* print_errno */ + +void cinit_ipc_destroy(void) +{ + if(msgctl(mq_in,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } + if(msgctl(mq_out,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_init.c new file mode 100644 index 00000000..9ae072a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_init.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include /* ftok */ +#include /* msgget */ +#include /* msgget */ + +#include "cinit.h" +#include "config.h" +#include "msgq.h" + +int cinit_ipc_init(void) +{ + key_t k_tmp; + + /* to_server */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + if(k_tmp == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + mq_in = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_in == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + /* to_client */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + if(k_tmp == -1) { + perror(MSG_MSGQ_FTOK); + return 0; + } + mq_out = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_out == -1) { + perror(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_listen.c new file mode 100644 index 00000000..d21e561e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_listen.c @@ -0,0 +1,47 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ +#include /* perror */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + + struct msg_client m_client; + + while (1) { + /* FIXME: change msg structure */ + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror(MSG_MSGQ_MSGRCV); + } + + printf("pid: %d, m_client\n",m_client.pid); + + /* use pid as the message type + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + return 0; + } */ + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_logoff.c b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_logoff.c new file mode 100644 index 00000000..a744980c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_logoff.c @@ -0,0 +1,70 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel */ + k_in = ftok(IPC_KEY,IPC_IN); + k_out = ftok(IPC_KEY,IPC_OUT); + + if(k_in == -1 || k_out == -1) { + perror("ftok"); + exit(1); + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + perror("msgget"); + exit(1); + } + + /* wrong tabsto ;-) */ +while (1) { + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror("msgrcv"); + exit(1); + } + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_logon.c b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_logon.c new file mode 100644 index 00000000..08c0e252 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_logon.c @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "cinit.h" /* print_errno */ +#include "msgq.h" + +int cinit_ipc_logon(void) +{ + key_t k_in, k_out; /* FIXME: remove one variable */ + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + k_out = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_sclose.c b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_sclose.c new file mode 100644 index 00000000..69165e4d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/cinit_ipc_sclose.c @@ -0,0 +1,14 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Close the ressources from the server, clean state for forks. + * + */ + +int cinit_ipc_sclose(void) +{ + return 1; /* nothing to do when using message queues */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/msgq.h b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/msgq.h new file mode 100644 index 00000000..01c6e769 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/msgq.h @@ -0,0 +1,52 @@ +/* + * (c) 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * part of cinit + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +#include /* structures */ + +/*********************************************************************** + * configuration + */ + +#define MSGQ_PATHNAME "/bin/sh" /* should be on every *nix */ +#define MSGQ_TO_SERVER 'i' /* also for ftok */ +#define MSGQ_TO_CLIENT 'o' /* also for ftok */ +#define MSGQ_PERMS 0660 /* queue permissions */ + +/*********************************************************************** + * global variables + */ +int mq_in; /* input */ +int mq_out; /* output */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + pid_t pid; + struct msg_client msg; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server_short { + long mtype; + struct asw_sstatus answer; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_FTOK "ftok" +#define MSG_MSGQ_MSGGET "msgget" +#define MSG_MSGQ_MSGRCV "msgrcv" +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/objects b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/objects new file mode 100644 index 00000000..7c99d09f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/msgq/objects @@ -0,0 +1,5 @@ +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c new file mode 100644 index 00000000..88c310f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c @@ -0,0 +1,125 @@ +/* + * (c) 2005, 2006 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * create a socket, when we recieved a signal + */ +int main(int argc, char **argv) +{ + struct sockaddr_un addr; + struct pollfd plist; + char *initdir; + + list = NULL; /* list of services is empty currently */ + initdir = CINIT_INIT; /* default init dir */ + + cpid = getpid(); + if(cpid != 1) { + usage(MSG_USAGE,MSG_NOT_ONE); + } + + set_signals(ACT_SERV); /* set signal handlers */ + + /* read args, profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* tell the world we are there FIXME: do we really need three calls? */ + mini_printf(MSG_CINIT,1); mini_printf(initdir,1); mini_printf("\n",1); + + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c new file mode 100644 index 00000000..a174d78d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c @@ -0,0 +1,141 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int socket) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + while ( (nsock = accept(socket,(struct sockaddr *) NULL, + (socklen_t *) NULL)) != -1) { + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = ST_FAIL; + } else { + status = RT_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP (RESPAWNING) *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; + list_tmp = list_search(buf); + + /* FIXME: + - handle off + - handle switching off once services + - perhaps remove old cinit code, which has respawing childs + */ + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + /* kill cinit watcher, which kills the real process */ + kill(list_tmp->pid,SIGTERM); + + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + } + + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + status = ST_FAIL; + } else { /* return status */ + status = list_tmp->status; + } + } else { /* no service there */ + status = RT_NOTEXIST; + } + do_result(nsock,&status); + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + SERVICE_LOG(buf,MSG_ERR_MODIFY); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + case CMD_UPDATE: + sig_reboot(SIGCONT); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } + + /* hier kommt man haeufiger herein, interrupted system call */ + if( errno != EAGAIN && errno != EINTR) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/os/freebsd/halt.c b/software/cinit/browse_source/cinit-0.3pre1/src/os/freebsd/halt.c new file mode 100644 index 00000000..cd4dda1f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/os/freebsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/os/freebsd/objects b/software/cinit/browse_source/cinit-0.3pre1/src/os/freebsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/os/freebsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/os/freebsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre1/src/os/freebsd/poweroff.c new file mode 100644 index 00000000..61e5ef5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/os/freebsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWEROFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/os/freebsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre1/src/os/freebsd/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/os/freebsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/os/linux/halt.c b/software/cinit/browse_source/cinit-0.3pre1/src/os/linux/halt.c new file mode 100644 index 00000000..0ecf8ced --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/os/linux/halt.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * How to halt the system + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT_SYSTEM); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/os/linux/objects b/software/cinit/browse_source/cinit-0.3pre1/src/os/linux/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/os/linux/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/os/linux/poweroff.c b/software/cinit/browse_source/cinit-0.3pre1/src/os/linux/poweroff.c new file mode 100644 index 00000000..5f503678 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/os/linux/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff the system + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWER_OFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/os/linux/reboot.c b/software/cinit/browse_source/cinit-0.3pre1/src/os/linux/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/os/linux/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/os/openbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre1/src/os/openbsd/halt.c new file mode 100644 index 00000000..cd4dda1f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/os/openbsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/os/openbsd/objects b/software/cinit/browse_source/cinit-0.3pre1/src/os/openbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/os/openbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/os/openbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre1/src/os/openbsd/poweroff.c new file mode 100644 index 00000000..45168122 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/os/openbsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_HALT | RB_POWERDOWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/os/openbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre1/src/os/openbsd/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/os/openbsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/svc/entry_add.c b/software/cinit/browse_source/cinit-0.3pre1/src/svc/entry_add.c new file mode 100644 index 00000000..08a64e3a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/svc/entry_add.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "messages.h" + +/* + * list: pointer to the list + * new: pointer to data to insert (already filled up) + * size: size of an element in the list (for initialisation) + */ +int entry_add(void *list, void *new) +{ + if( list == NULL ) { /* new list */ + list = new; + list->prev = list; + list->next = list; + } else { /* already existing */ + new->next = list; /* new-> first */ + new->prev = list->prev; /* last <- new */ + list->prev->next = new; /* last -> new */ + list->prev = new; /* new <- first */ + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/svc/gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre1/src/svc/gen_svc_tree.c new file mode 100644 index 00000000..bf04f619 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/svc/gen_svc_tree.c @@ -0,0 +1,96 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +#include +#include +#include /* PATH_MAX */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" +#include "messages.h" + +int gen_svc_tree(char *svc) +{ + char buf[PATH_MAX+1]; + char oldpath[PATH_MAX+1]; + DIR *d_tmp; + struct dirent *tdirent; + + mini_printf("Adding service: ",1); + mini_printf(svc,1); + mini_printf("\n",1); + + /* only do something if the service is not already known */ + if(svc_known(svc)) return 1; + + /* create a template, so other instances won't try to recreate us */ + if(!svc_create(svc)) return 0; + + /* check needs */ + strcpy(buf,svc); + if(!path_append(buf,C_NEEDS)) return 0; + + d_tmp = opendir(buf); + + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_CHDIR); + return 0; + } + + /* if there is no such dir, we are finished */ + if(d_tmp != NULL) { + if(chdir(buf) == -1) { + print_errno(buf); + return 0; + } + + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + mini_printf(tdirent->d_name,1); + mini_printf("\n",1); + + /* skip non-working directories */ + if(!path_absolute(tdirent->d_name,buf,PATH_MAX+1)) continue; + + /* add all needs to our tree (call us recursively) */ + if(!gen_svc_tree(buf)) return 0; + } + if(chdir(svc) == -1) { + print_errno(svc); + return 0; + } + + if(chdir(oldpath) == -1) { + print_errno(buf); + return 0; + } + closedir(d_tmp); + } else { + if(errno != ENOENT) { + print_errno(buf); + return 0; + } + } + /* read service information */ + /* svc_add_needs(svc); */ + + /* check for wants */ + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_delete.c b/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_delete.c new file mode 100644 index 00000000..a8bfc4bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_delete.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "svc.h" + +/* ... */ +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if( tmp == NULL ) { + return 0; + } + + tmp->after->before = tmp->before; + tmp->before->after = tmp->after; + free(tmp->abs_path); + free(tmp); + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_display_all.c b/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_display_all.c new file mode 100644 index 00000000..00077e39 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_display_all.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Show all list elements - mainly for debugging + */ + +#include /* NULL */ +#include "cinit.h" +#include "svc.h" + +int list_display_all() +{ + struct listitem *tmp; + + if( list == NULL ) { + return 0; + } else { + tmp = list; + } + + do { + mini_printf("Service: ",1); + mini_printf(tmp->abs_path,1); + mini_printf("\n",1); + tmp = tmp->before; + } while(tmp != list); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_insert.c b/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_insert.c new file mode 100644 index 00000000..080fecd3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_insert.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "svc.h" +#include "messages.h" + +int list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc( sizeof(struct listitem) ); + + if( tmp == NULL ) { + return 0; + } + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members,add this one */ + tmp->after = list; /* begin after the new element */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_modify.c b/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_modify.c new file mode 100644 index 00000000..4a93c41c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_modify.c @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "comm.h" /* for ST_OFF */ +#include "svc.h" /* for ST_OFF */ + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + +// D_PRINTF(path); + + tmp = list_search(path); + if( tmp == NULL ) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_search.c b/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_search.c new file mode 100644 index 00000000..e9bf1869 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_search.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* NULL */ +#include /* strcmp */ +#include "cinit.h" +#include "svc.h" + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if( list == NULL ) { /* think positive */ + return NULL; + } else { + tmp = list; + } + + do { + if( !strcmp(path, tmp->abs_path) ) { + return tmp; + } + tmp = tmp->before; + } while(tmp != list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_search_pid.c b/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_search_pid.c new file mode 100644 index 00000000..01727884 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/svc/list_search_pid.c @@ -0,0 +1,37 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "svc.h" + +/* find service by pid, needs to be online because it is called + * by a signal handler + */ +inline struct listitem *list_search_pid(pid_t pid) +{ + struct listitem *tmp; + + if( list == NULL ) { + return NULL; + } else { + tmp = list; + } + + do { + if( pid == tmp->pid) { + return tmp; + } + tmp = tmp->before; + } while(tmp != list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/svc/objects b/software/cinit/browse_source/cinit-0.3pre1/src/svc/objects new file mode 100644 index 00000000..3fc2f70c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/svc/objects @@ -0,0 +1,9 @@ +svc/gen_svc_tree.o +svc/list_delete.o +svc/list_display_all.o +svc/list_insert.o +svc/list_modify.o +svc/list_search.o +svc/list_search_pid.o +svc/svc_known.o +svc/svc_create.o diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/svc/svc_add_needs.c b/software/cinit/browse_source/cinit-0.3pre1/src/svc/svc_add_needs.c new file mode 100644 index 00000000..4ec20cc8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/svc/svc_add_needs.c @@ -0,0 +1,66 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +//#include +//#include +#include "cinit.h" +#include "messages.h" + +int svc_add_needs(char *needs, char *is_needed) +{ + struct listitem *svc_needs, *svc_is_needed; + + + /* retrieve service entries in global service list */ + svc_needs = svc_is_needed = NULL; + svc_needs = list_search(needs); + svc_is_needed = list_search(is_needed); + + if( !svc_needs || !svc_is_needed ) { + return 0; + } + + /* first add needs */ + + /* now add needed_by */ + + malloc... /* for adding */ + + if(svc->needs == NULL) { + svc->needs = neu; + } else { + svc->next = neu; + } + + /* write generic function for dependencies or even all lists */ + dep_entry_add(list_pointer,new_entry); + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members,add this one */ + tmp->after = list; /* begin after the new element */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/svc/svc_create.c b/software/cinit/browse_source/cinit-0.3pre1/src/svc/svc_create.c new file mode 100644 index 00000000..58e530db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/svc/svc_create.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include "svc.h" + +int svc_create(char *svc) +{ + /* status is currently -1 -> unset */ + /* FIXME: do NOT use list_insert, as it does not + * check whether the service already exists! + * + * Is that really an issue? We are most likely only called + * from gen_svc_tree, which checks before... + */ + + return list_insert(svc,-1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/svc/svc_known.c b/software/cinit/browse_source/cinit-0.3pre1/src/svc/svc_known.c new file mode 100644 index 00000000..c2baf28e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/svc/svc_known.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include "svc.h" + +int svc_known(char *svc) +{ + return (list_search(svc) != NULL) ? 1 : 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/test/test_build_argv+link.c b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_build_argv+link.c new file mode 100644 index 00000000..e37169fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_build_argv+link.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec_link"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/test/test_build_argv.c b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_build_argv.c new file mode 100644 index 00000000..0b2678be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_build_argv.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec new file mode 100644 index 00000000..e5cf3f01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec @@ -0,0 +1,7 @@ +#!/bin/sh +# Nico Schottelius +# Test-skript for cinit + +echo '$0': "$0" +echo '$@': "$@" +echo 'cinit_is_great:' $cinit_is_great diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec.env b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec.env new file mode 100644 index 00000000..853e0663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec.env @@ -0,0 +1 @@ +cinit_is_great=yes diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec.params b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec.params new file mode 100644 index 00000000..afe0f2ef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec.params @@ -0,0 +1 @@ +Let's see if we read the arguments....YES! diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec_link b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec_link new file mode 120000 index 00000000..c2ec9306 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec_link @@ -0,0 +1 @@ +test_exec \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec_link.env b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec_link.env new file mode 120000 index 00000000..30ea4990 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec_link.env @@ -0,0 +1 @@ +test_exec.env \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec_link.params b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec_link.params new file mode 120000 index 00000000..0b77c256 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_exec_link.params @@ -0,0 +1 @@ +test_exec.params \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre1/src/test/test_gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_gen_svc_tree.c new file mode 100644 index 00000000..93ad54ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/src/test/test_gen_svc_tree.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test gen_svc_tree + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + gen_svc_tree("/etc/cinit/svc/init"); + list_display_all(); +} diff --git a/software/cinit/browse_source/cinit-0.3pre1/util/README b/software/cinit/browse_source/cinit-0.3pre1/util/README new file mode 100644 index 00000000..782cdc8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/util/README @@ -0,0 +1,2 @@ +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.3pre1/util/ccontrol.c b/software/cinit/browse_source/cinit-0.3pre1/util/ccontrol.c new file mode 100644 index 00000000..95bc5212 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/util/ccontrol.c @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * ccontrol: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define USAGE_TEXT "ccontrol - control cinit\n\n" \ + "Usage:\n\nccontrol -[phurs]\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-u\t- (update) Reboot (warm) and update cinit\n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n\n" \ + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * ccontrol: control cinit + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 2) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + + switch(argv[1][1]) { + case 'p': /* power off */ + LOG(MSG_POWER_OFF); + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + LOG(MSG_HALT); + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + LOG(MSG_REBOOT); + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + LOG(MSG_RESCUE); + msg_reboot(CMD_RESCUE); + break; + + case 'u': /* update */ + LOG(MSG_UPDATE); + msg_reboot(CMD_UPDATE); + break; + + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* cinit-0.2 return codes implemented - nothing changed*/ diff --git a/software/cinit/browse_source/cinit-0.3pre1/util/cservice.c b/software/cinit/browse_source/cinit-0.3pre1/util/cservice.c new file mode 100644 index 00000000..66be6563 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/util/cservice.c @@ -0,0 +1,164 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * cservice: control cinit services + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit services + */ + +#define USAGE_TEXT "cservice - start and stop cinit services\n\n" \ + "cservice -[ear] \n" \ + "\t-e\t- (ein,on ) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n" \ + "\t-r\t- (restart) stop and start a service\n" + +/*********************************************************************** + * fuzzy_path: allow other kinds of path specification .. + */ +char *fuzzy_path(char *rpath) +{ + char pathtmp[PATH_MAX]; + char *re = NULL; + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return NULL; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(rpath); + return NULL; + } + + re = malloc( strlen(pathtmp) + 1); + + if(re != NULL) { + strcpy(re,pathtmp); + } + + return re; +} + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + char *real_name = NULL; + + /* argv */ + if(argc != 3) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + if(strlen(argv[1]) != 2) C_USAGE(MSG_ERR_ARGS_LEN); + + real_name = fuzzy_path(argv[2]); + + /* fuzzy path failed, exit! */ + if(real_name == NULL) { + return 1; + } + switch(argv[1][1]) { + case 'a': /* aus */ + case 'r': /* restart */ + switch( msg_svc_on_off(real_name,CMD_STOP_SVC) ) { + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_OFF: + SERVICE_LOG(real_name,LOG_SVC_STOPED); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + /* FIX THIS AFTER cinit-0.2 */ + case RT_TMPNOW: + case RT_ERR: + case RT_SVC_FAILED: + case RT_UNSPEC: + case RT_SUCCESS: + case ST_NEED_FAIL: + case ST_TMP: + case ST_ONCE: + case RT_NOTEXIST: + case ST_RESPAWN: +// SERVICE_LOG(real_name,"Ein bekanntest ding"); + break; +/* default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; */ + } + if( argv[1][1] == 'a') break; /* only continue if restarting */ + + case 'e': /* ein */ + switch (run_svc(real_name)) { /* run_svc fuzzys itself */ + case RT_NOTEXIST: + SERVICE_LOG(real_name,LOG_SVC_NOTEXIST); + break; + case RT_SVC_FAILED: + SERVICE_LOG(real_name,LOG_SVC_FAILED); + break; + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_ONCE: + SERVICE_LOG(real_name,LOG_SVC_ONCE); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + case ST_RESPAWN: + SERVICE_LOG(real_name,LOG_SVC_RESPAWN); + break; + case ST_NEED_FAIL: + SERVICE_LOG(real_name,LOG_NEED_FAIL); + break; + default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; + } + break; + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* uses cinit-0.2 return code style */ diff --git a/software/cinit/browse_source/cinit-0.3pre1/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.3pre1/util/msg_reboot.c new file mode 100644 index 00000000..efe78ec6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre1/util/msg_reboot.c @@ -0,0 +1,21 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + if(!begin_msg(cmd)) return 0; + close(sock); + return 1; +} +/* clean for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre10/ b/software/cinit/browse_source/cinit-0.3pre10/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.3pre10/.exclude b/software/cinit/browse_source/cinit-0.3pre10/.exclude new file mode 100644 index 00000000..1a2d31e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/.exclude @@ -0,0 +1,2 @@ +tmp +.git diff --git a/software/cinit/browse_source/cinit-0.3pre10/.gitignore b/software/cinit/browse_source/cinit-0.3pre10/.gitignore new file mode 100644 index 00000000..29615f14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/.gitignore @@ -0,0 +1,26 @@ +*.o +*.a +*0? +MT +ddoc +contrib+tools/cinit.graph.text +config.h +sbin +tmp +os/current +tmpbin +src/os/current +src/ipc/current +src/cinit +*.html +*.htm +*.man +*.texi +*.texi +*.docbook +src/halt.kill +src/poweroff.kill +src/reboot.kill +doc/man/*.[0-9] +doc/man/*.xml +src/cmd diff --git a/software/cinit/browse_source/cinit-0.3pre10/CHANGES b/software/cinit/browse_source/cinit-0.3pre10/CHANGES new file mode 100644 index 00000000..8a13a003 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/CHANGES @@ -0,0 +1,77 @@ +cinit-0.3pre10: + - Fixed make install target + - Added halt.kill, poweroff.kill and reboot.kill (including manpages!) + - Fixed invalid comparision in core/cinit.c + - Be verbose: Print what we execute + - Updated documentation + +cinit-0.3pre9: 2007-05-15 + - Implemented sleeping before respawn (static delay) + - Report broken links on execution, but ignore empty services + - Cleaned up message queue error reporting + +cinit-0.3pre8: 2007-04-06 + - Updated and merged documentation: Codingstyle and Codingguide + - Cleaned sigaction-code (fixes segfault on glibc) + - Cleaned object listings + - Added notifications at shutdown + - Fixed status check + +cinit-0.3pre7: 2007-02-17 + - Many code cleanups + - Fixed glibc problem with sigaction (for details view src/core/set_signals.c) + - Added general shutdown support (will *NOT* yet stop services, + but still stop your system) + +cinit-0.3pre6: + - Many code cleanups + - Added user documentation and cleaned up documentation in general + +cinit-0.3pre5: + - Finished new SIGCHLD handler + - First cleanups for real release. + - This version is the first 0.3pre version that can handle respawn! + +cinit-0.3pre4: + - Re-implemented execution of services. + - This version is the first 0.3pre version that COULD bootup your system! + +cinit-0.3pre3: + - Finished execution all services via the reversed service tree. + +cinit-0.3pre2: + - Finished generation of the dependency tree. + +cinit-0.3pre1: + - cinit should now compile on mostly all unices + - introduced much new code + - THIS IS A DEVELOPER RELEASE, NOT USABLE IN PRODUCTION ENVIRONMENTS. + +cinit-0.2.1: (Bugfix release) + - Fixed problem in contrib+tools/Makefile when installing + - added many new scripts to convert sys-v-init, which are still early beta + (see bin/cinit.merge.sysvinit-debian-sid) + +cinit-0.2: + - Much more verbose error reporting + - You can now also disable 'once ran' services, + - You can restart services with csevice -r + - Online speech in German is available + - C_DELAY support - variable delay for sending SIGKILL after SIGTERM + - First /etc/csys configuration example (wasserstoff) is available + - a Mailing list was created + - Added tools to analyze cinit configuration + (cinit-vis.pl, cinit.graph.text.c) + - Added tools to import and export configuration to XML + (make.cconfig.from.xml.rb,cconfig.graph.xml.rb) + - Removed unecessary signalling + - Added many helper scripts to install services (cinit.install.service*) + - Fixed many small bugs in old helper scripts (cinit.add.getty, cinit.get-conf, ...) + - Added ccontrol, which allows to control cinit + - Added update (-u) via ccontrol + - Stripped cservice, which now "only" controls services + - Removed swapoff from cinit code, should be handled by off + - Much better error and processing descriptions + - A bit more verbose reporting + - Restructured run_svc, now with better error detection + - Removed Kernel panic, when halting system diff --git a/software/cinit/browse_source/cinit-0.3pre10/COPYING b/software/cinit/browse_source/cinit-0.3pre10/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.3pre10/CREDITS b/software/cinit/browse_source/cinit-0.3pre10/CREDITS new file mode 100644 index 00000000..febdcf4b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/CREDITS @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: ls -l) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete + * providing cinit-vs.pl to visualize the cinit-tree +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) +Sandro Koechli + * testing, testing and testing cinit and cinit documentation +Marcus Wagner + * building and maintaining the Debian package +Peter Portmann + * testing cinit and documentation, writing cinit.graph.text in C, other coding +Tonnerre Lombard + * NetBSD support (host + hints) diff --git a/software/cinit/browse_source/cinit-0.3pre10/Changelog b/software/cinit/browse_source/cinit-0.3pre10/Changelog new file mode 100644 index 00000000..0fbf76f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/Changelog @@ -0,0 +1,10 @@ +Mo Okt 3 00:19:40 CEST 2005 + *Changelog can now be found in git database (cg-log) +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.3pre10/Makefile b/software/cinit/browse_source/cinit-0.3pre10/Makefile new file mode 100644 index 00000000..cce0f217 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/Makefile @@ -0,0 +1,108 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# Directories and files +CDIRS=src doc + +# +# Targets +# + +# +# Warn per default, make sure the user knows what she does +# +warn: + @cat doc/.buildwarn + +all: sources documentation +dev-all: all sizecheck + +install clean dist distclean: + @for subdir in ${CDIRS}; do \ + echo "Making $@ in $$subdir"; \ + (cd $$subdir && ${MAKE} ${MAKEFLAGS} $@) || break; \ + done; + +.PHONY: sources +sources: + ${MAKE} -C src all + +.PHONY: documentation +documentation: + ${MAKE} -C doc documentation + +sizecheck: sources + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l src/cinit > $$FILE; cat $$FILE; \ + cg-add $$FILE + cg-commit $$FILE -m "Size added" + #cg-commit $$FILE -m "Size: $$(awk '{ print $5 }' $$FILE)" + +source-size: clean + @echo -n "Source size (in KiB): " + @du -s src/ | awk '{ sum+=$$1 } END { print sum }' + + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + +config: + @./bin/cinit.configure.os + @./bin/cinit.configure.tools + @./bin/cinit.configure.ipc + @touch src/.configured + + +################################################################################ +# Tests +# +tests: + # does not work, due getting killed, due to design :-) + #./scripts/internal/compile_run_as_compiler.sh + ./scripts/internal/test_on_hosts.sh ./scripts/internal/compile_test.sh + +################################################################################ +# old +#DDOC=ddoc +#SDIRS=bin client conf comm doc generic serv util +# DO NOT CHANGE THIS. +#SBIN=sbin +#CINIT_BIN=$(SBIN)/cinit +# +#%.o: %.c +# $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< +#$(DDOC): +# mkdir $(DDOC) +# +#$(SBIN): +# mkdir $(SBIN) +# +#docs: $(DDOC) bin/cdoc-man.sh +# ./bin/cdoc-man.sh doc/cinit-doc > $(DDOC)/cinit.8 +# ./bin/cdoc-man.sh doc/cservice-doc > $(DDOC)/cservice.8 +#$(CSVC_OBJ) $(OBJ): $(CONFIG_H) +#clean: +# $(MAKE) -C src clean +# rm -f tmpbin/* +################################################################################ +#cservice: $(SBIN)/cservice +# +#$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) +# $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ +# $(STRIP) $@ +# +#ccontrol: $(SBIN)/ccontrol +# +#$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) +# $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ +# $(STRIP) $@ +# +#install:: install-dir cinit cservice ccontrol +# @echo '*** Installing cinit ***' +# ./bin/cinit.install.binary diff --git a/software/cinit/browse_source/cinit-0.3pre10/NEXTTODO b/software/cinit/browse_source/cinit-0.3pre10/NEXTTODO new file mode 100644 index 00000000..a12e1e08 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/NEXTTODO @@ -0,0 +1,14 @@ +- create cmd! + * cinit-0.3 client + * check ipc code in cinit + * check that cinit reads a command + core/cinit.c is ok +- create some boot profiles +- cinit.install.standard.dirs.argv +check needs: + really started, after started or after finished starting? +wants: + are they checked? + +implement commands! +- fix devel/codingguideline.text! diff --git a/software/cinit/browse_source/cinit-0.3pre10/README b/software/cinit/browse_source/cinit-0.3pre10/README new file mode 100644 index 00000000..00f2651b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/README @@ -0,0 +1,106 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Unix +- true dependencies (soft and hard!) +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +FIXME: Add mailing list here + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre10/ROADMAP b/software/cinit/browse_source/cinit-0.3pre10/ROADMAP new file mode 100644 index 00000000..8b0e6526 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/ROADMAP @@ -0,0 +1,115 @@ +-------------------------------------------------------------------------------- +THIS DOCUMENT SHOULD VANISH AS SOON AS EVERYTHING IS FINE +-------------------------------------------------------------------------------- + +Timeline +--------- + * ~ End of October 2006: Reunderstand the code, manifest changes [DONE] + * ~ Mid of November 2006: Have a compile-able cinit [DONE] + * ~ End of November 2006: Have a testsystem booting cinit + * ~ Mid of December 2006: Have production stable cinit + - Begin with migration scripts + - publish installable pre-releases + * ~ End of December 2006: Have some generic migration scripts + - Have (different) understanable documents + * ~ Mid of January 2007: Begin official release of cinit-0.3 + + + + +Versions +--------- + +0.3: +~~~ + code: Make cinit compile again :) [DONE] + code: double check to remove Linux specific source from general tree [DONE] + code: seperate ipc from the rest [DONE] + code: fix / check signal handlers [DONE] + code: cleanup makefile + code: add porting code: add support for any unix in general [DONE] + code: stabilize code, remove experimenting parts + code: remove delay support, let off/off.params do that. [DONE] + code: add special directory (/etc/cinit/conf?) for non-services [DONE] + code: move production code to src/ [DONE] + end user doc: add warning for special binaries and hint for r/o only + amiga alike systems + + doc: begin to merge old documents into new structure and move them + to the doc/ancient directory [DONE] + +0.3.1: + devel doc: how to write merging scripts + devel doc: merging framework: + - minimal (do not look at the current configuration, build minimal) + - use current system (slowly, may use old scripts) + - rebuilt current system (recommened) + + tools: general framework for merging + end user doc: merging old init to cinit + + code: add porting code: add support for freebsd + code: better readable output: + -> starting + [ started once ] + [ respawning ] + [ failed ] (+ REASON!) + [ needs failed ] (which ones) + + -> stopping + [ stopping ] (for dependencies) + [ stopped ] ? + [ not running ] ? + + code: export profile information (CINIT_PROFILE) + end user doc: using different profiles in user space + end user doc: write examples for profiles: + o switch ssh known_hosts based on profile + o different proxy settings in browsers + - environment + - mozilla settings + o start samba (for lan) + o start samba (for company lan) + o use nis and nfs (company profile) + + doc: continue to merge old documents into new structure and move them + to the doc/ancient directory +0.3.2: + end user doc: what to read to use cinit + end user doc: installing cinit + end user doc: configuring cinit + tools: writing cinit-config (graphical (dialog based?) configuration tool) + code: add porting code: add support for openbsd + + code: add reverse dependency chain (or earlier?) + code: better support for external tools + o neustarten + o mit herunterfahren + o mit herunterfahren und allen Diensten, die abhaengen + o ohne herunterfahren + o Statische Daten + o pid vom Daemon + o pid vom einmal ausgefuehrten Programm + + + doc: end to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.3: + devel doc: writing an init system + devel doc: the conf/-configuration system + + code: check conf/ and perhaps rewrite b0rken english sentences + + code / doc: add logging support for services -> use multilog? + code: add porting code: add support for netbsd + +0.4: + first stable, tested, well documented version. + + code: check for optimisation + + other: compare with other init systems + +0.4.x: + code: add porting code: add support for other unices diff --git a/software/cinit/browse_source/cinit-0.3pre10/TODO b/software/cinit/browse_source/cinit-0.3pre10/TODO new file mode 100644 index 00000000..a583a941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/TODO @@ -0,0 +1,327 @@ +-------------------------------------------------------------------------------- +- define how it should work (doc/braindums/big-picture.text) +- define service status in one document, so repeatition stops! +-------------------------------------------------------------------------------- +- remove client/ from top level +-------------------------------------------------------------------------------- +Generate automatic asciidoc from conf/* +-------------------------------------------------------------------------------- + Ausgaben nach Beendigung vom Starten des Services. + + [ on ] %s + Ergebnis + [ off ] %s + + Rekursives herunter/rauffahren +-------------------------------------------------------------------------------- +- add error handling to cinit.install.binary +-------------------------------------------------------------------------------- +1. Entfernung mount + -> Example configuration + -> was man alles machen muss +-------------------------------------------------------------------------------- +- add code do implement stopping / restarting with dependency tree +-------------------------------------------------------------------------------- +- print service name or cinit: before _everything_ WE print + + - is the reporting ok? + +# cinit.create.empty.service: can only be started from the bin directory + +- Fix Switching services off !! +- Error codes when shutting down a service? +- Delay dokumentieren +- no_kill dokumentieren + +- on.out, on.err, on.in? + -> reading/writing from/to files + +- implement "no_kill" until cinit-0.2 or 0.3? + + +-------------------------------------------------------------------------------- +- Source Logic issues + - remove FIXME entries (and what should be fixed, too) +-------------------------------------------------------------------------------- +Helper scripts, rausgenommen aus Der Doku, muessen fuer +cinit-0.3 ueberprueft werden: + +Configure help scripts +~~~~~~~~~~~~~~~~~~~~~~ +cinit-conf later +Using prepared scripts + +In the bin/ directory of this tarball you'll find at least: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +Optimisations +------------- + - Installing cinit + o compiling cinit from source + o debian / gentoo + - Configuring + * add scripts! see below + - define coding guidelines -> general, with url? + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml + +tree_exec +~~~~~~~~~ +- only check dependencies (=needs) after the basic run? + +Documentation +------------- + +developer +~~~~~~~~~ +- ST_IN_LIST == startup marker, used to (NOT) insert services into startup +- dep_needs_wants_add is used to add dependencies of a service to the general + starter list + + +user +---- +- do we really need swapoff? remove umount, swapoff! + * to services! + -> they have to do it! +- dependencies with leading '.' (dot) are ignored. +- about cinit-configuration structure + * cconfig + * svc/ + * special/ (or however we called it) + - panic + - halt + - poweroff + - reboot + +-------------------------------------------------------------------------------- +FAQ +~~~ +- DOKU: what happens when a service does not terminate.... + und er als once drin ist +--> Wenn kein ReSPAWN und der Prozess beendet sich nicht, + dann haengt init! + +- multuicall probleme -> busysbox --> GIBT ES NICHT!! + ---> DOKU DAZU! mit links, doppelt links, aus test + ---> erklaeren, dass es unproblematisch ist! + +-------------------------------------------------------------------------------- +csvc: +11:09 < folken23> telmich: oder service allready started. +-------------------------------------------------------------------------------- +cinit: +11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet + werden konnte. +11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0 + zurueckgeworfen. + ---> errno in execute_sth! + +Child handlin +~~~~~~~~~~~~~g +- free() everything before starting child + +Later +~~~~~ +- close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? + -> yep, clean environment! +- logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? +-------------------------------------------------------------------------------- +- Doc + * main.text -> cleanup / remove / split + * config-dirs + * FAQ + * ideas + * meta.dependencies + - config/hints/meta depps + * optimising + - integrate into other + * README.text + - update + * replacing.init + - update / integrate + * special-services.text + - into configuring/hints? + * TODO + - into paths, if necessary + * updating.cinit + - update as soon as update is possible? + * using.rescue + - update as soon as update is possible? + * 'os-integration.text' + * 'daemons.backgrounding' + * There are some hints on how to migrate to cinit in general and also + some os specific help in the file 'migrating-init-systems.text', +- CODECHECK: + * what happens with the wants of the last services? + - are they added? + - are they added at the correct position? +- scripts + * `cinit.check.config` (doc/user/configuring.cinit.text) + -> circular depedencies! +- Doc.next: + - installing: report! + -> write report script. +- Doc later + * current-init-problems.text + - current-init-problems.text explains why cinit does not use nor recommends the use of shell scripts. + * special-services.text + +- Begin documentation + * Check Makefile + * Integrate Makefile into main Makefile + * create manpage + * Write a small manual + - install + - configure + - boot (different OS) + * generate asciidoc! +- Doc way: + * installing + * configuring + - testconfig! + * booting + - different OS / bootloader + * debugging +- Shutdomn code: + * begin at init, then shutdown wants/needs, ... +- check that the new wants and need elements are nserted the other way round + * we go to next, elements must be put before us! +- replace cinit_ipc_logon with cinit_ipc_init... + * delay ipc code -> after start! + +- Cleanup / create object lists + object-lists/ + cinit + cservice + ccontrol + cinit.halt + cinit.reboot + cinit.shutdown (shell script?!?) + + +TODO.pre9: + + Done: + - pfad korrigieren (home/..../ -> cinit.release) + - cg-add nicht aufrufen beim make all! +ser/nico/oeffentlich/computer/projekte/cinit/cinit-0.3pre8/doc' +FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l src/cinit > $FILE; cat $FILE; \ + cg-add $FILE +-rwx------ 1 nico nico 72601 2007-04-06 17:52 src/cinit +There is no GIT repository here (.git not found) +make: *** [sizecheck] Fehler 1 + - setup VM for testing: qemu/kvm/virtualbox (no commercial bloaty) + -> uml! + - sleep when respawnig! + -> static delay of five seconds + do_reboot.c: + is ipc closed? -> check! => done! + - ignore msgrcv: Interrupted system call +Session terminated, killing shell...msgq-destroy: Invalid argument +msgq-destroy: Invalid argument + - do not print an error if /etc/cinit/conf/last is non-existent! + => print it. Do not not print it, as this can aid debugging. + include locking via shm, remove test on pid1 + => not necessary imho currently + + +TODO.pre10: + Done: + cleanup client/ comm/ contrib+tools/ util/ tmp/ + Debugging cinit-configuration: + ls -lR /etc/cinit + or: cinit.read.... + +TODO.pre11: + Remove some debugging, re-introduce DEBUG() macro.. + Fix doc: + + make dist should cleanup cc / ld to sane values? + or do I experiement in tmp/*? + + http://linux.schottelius.org/cinit/browse_source/current/doc/user/config-dirs + conf/c_halt + + IPC: + * check msqg-code + * documentate the ipc functions: update devel/ipc.text + * check cinit_read_command() (devel/ipc.h) + + do_reboot.c: + write cinit_svc_shutdown + - implement do_reboot() + * so not only booting with cinit works, but also the shutdown + - write libcinit for use in cmd() + - find out why gettimeofday() and time() do strange things when called in SIG_CHLD + => bug opened in glibc, got to code testprogram + - write cinit.conf.check + * report broken links in needs/wants + * report circular dependencies + - pretty print, reporting is ugly! + Add handler for ctrl+alt+delete + * document in paths + * check whether there's an os-unspecific way to do that + cleanup bin/ + - write sys-v-init-shutdown-wrapper + * shutdown + * halt + * reboot + * poweroff + - write manpages for + - *.kill + - cmd + + install: + make install => does not overwrite critical targets + * cinit + * *.kill (see client/*) + * cmd + make force-install => overwrites /sbin/{halt,poweroff,reboot}? + => with script that wraps cmd + make install-template: + * creates categories + make install-miniconf: + * creates categories + * creates one service starting a shell (depending on the OS!) + + cleanup src/ + finish ipc code so clients can access cinit + implement CMD_INFO (see comm.h) + + +TODO.pre12: + Check and clean doc/ + Remove *TODO*+ROADMAP and leave behin doc/TODO + +TODO.pre13: + code cmd=(cservice ccontrol halt reboot shutdown poweroff) + => halt/r/... also with kill ... + Test, release and prepare for final cinit-0.3 + +TODO.0.3.1 + add log support + cinit logs to + -> shm saver + services log to + +TODO unclear + - create migration scripts diff --git a/software/cinit/browse_source/cinit-0.3pre10/TODO.doc b/software/cinit/browse_source/cinit-0.3pre10/TODO.doc new file mode 100644 index 00000000..a170a50d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/TODO.doc @@ -0,0 +1,29 @@ +- doc/user/paths.text + * finish + * add examples +- add cross-compilation howto +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + +caveats +------- + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- cinit ignores the Keyboard request +- Currently there is no support to react on 'ctr+alt+del': +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + diff --git a/software/cinit/browse_source/cinit-0.3pre10/TODO.optimisations b/software/cinit/browse_source/cinit-0.3pre10/TODO.optimisations new file mode 100644 index 00000000..8a686b4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/TODO.optimisations @@ -0,0 +1,19 @@ +This file describes enhancements or optimisations that +could be done / checked. + + +Code +---- + +fork() +~~~~~~ + +Security +^^^^^^^^^ +- Closed fds? +- Close other things? +- IPC? + +Cleanup +^^^^^^^ +- Do we have to reset signals or is that done anyway by fork()? diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cdoc-man.sh b/software/cinit/browse_source/cinit-0.3pre10/bin/cdoc-man.sh new file mode 100644 index 00000000..fc1adde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cdoc-man.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Nico Schottelius +# Date: 21-Aug-2005 +# Last Modified: - +# + +set -e + +[ $# -ne 1 ] && exit 23 + +SRC=$1 + +cd "$SRC" + +# +# Title heading +# +echo .TH $(cat "meta/name" "meta/man_section" "meta/date") + +# +# Name +# +echo .SH NAME +echo $(cat meta/name) - $(cat meta/short_description) + +# +# Synopsis +# +echo .SH SYNOPSIS +echo $(cat path) $(cat parameters) + +# +# description +# +echo .SH DESCRIPTION +echo $(cat long_description) + +# +# availability +# +for section in availability examples "see also" author; do + if [ -f "$section" ]; then + echo .SH $section | tr '[a-z]' '[A-Z]' + cat "$section" + fi +done + +# +# files +# +if [ -f files ]; then + echo .SH FILES + cat files | sed 's/\(.*\)/.IP "\1" /' +fi + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.add.dependency new file mode 100644 index 00000000..7bc9cc65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.add.dependency @@ -0,0 +1,51 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or wants Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +# adding 'wishes' for x-mas and requires for 'the mass' and 'tv' +case $DEP in + wishes|wants) DEP=$C_WANTS ;; + needs|requires) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could someone PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEP_DIR="${BASEDIR}/${SVC_A}/${DEP}" + +if [ ! -d "$DEP_DIR" ]; then + echo "$DEP_DIR does not exist, creating..." + mkdir "$DEP_DIR" + if [ $? -ne 0 ]; then + echo "Error occured due to creating directory. Exiting." + exit 1 + fi +fi + +DEST="${DEP_DIR}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.add.getty new file mode 100644 index 00000000..987a5bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.add.getty @@ -0,0 +1,75 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# Date: 2005-05-24 (Last changed: 2005-08-07) +# + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | sort -n | tail -n 1) + +[ ! "$LAST_NUMBER" ] && LAST_NUMBER=0 + +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +#echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + */mgetty) + mygetty=$getty + params="38400 tty${NUMBER}" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +# check input +if [ ! "$mygetty" ]; then + read -p "Getty to use [$mygetty]: " rgetty +fi +if [ ! "$params" ]; then + read -p "Parameters to pass [$params]: " rparams +fi +if [ ! "$params" -o ! "$mygetty" ]; then + echo "Sorry, either getty or parameters are not supplied." + exit 23 +fi + +echo -n "Creating $mygetty ($params) in $DDIR ... " +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DDIR" +ln -s "$mygetty" "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.configure.ipc b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.configure.ipc new file mode 100644 index 00000000..65190baa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.configure.ipc @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius, 2006-07-28 +# +# cinit: configure the ipc method to use +# + +HIER=$(dirname $0) +DDIR=$HIER/../src/ipc +DFILE=${DDIR}/current +IPC_METHOD=$(head -n 1 "$HIER/../conf/ipc_method") + +echo "Configure: IPC: Using \"$IPC_METHOD\" as IPC method" + +# always remove link before, as ln seems to be broken +# Doing ln -sf src/ipc/$method current twice, will create the file +# "current" _BELOW_ src/ipc/$method and not overwrite the link +# src/ipc/current + +rm -f "${DFILE}" +ln -sf "${IPC_METHOD}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.configure.mark b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.configure.mark new file mode 100644 index 00000000..62454c7f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.configure.mark @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: touch a file to mark everything configured +# 2006-08-27 +# + +echo "Configure: MK: Marking directory as configured" +touch .configured diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.configure.os b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.configure.os new file mode 100644 index 00000000..d5b8e6e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.configure.os @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups symlinks for the os +# + +DDIR=$(dirname $0)/../src/os +DFILE="$DDIR/current" +OSCONFIG=$(dirname $0)/../conf/os + +OS=$(head -n 1 "$OSCONFIG") + +echo "Configure: OS: Binaries are created for $OS ..." + +rm -f "${DFILE}" +ln -sf "${OS}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.configure.tools b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.configure.tools new file mode 100644 index 00000000..43242a01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.configure.tools @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups scripts for compiling and linking +# + +HIER=$(dirname $0) +DDIR=$HIER/../tmpbin/ +CC=$(head -n 1 "$HIER/../conf/cc") +CFLAGS=$(head -n 1 "$HIER/../conf/cflags") +LD=$(head -n 1 "$HIER/../conf/ld") +LDFLAGS=$(head -n 1 "$HIER/../conf/ldflags") +STRIP=$(head -n 1 "$HIER/../conf/strip") + +echo "Configure: CC: Creating cc, ld and strip ..." + +mkdir -p "$DDIR" +cd "$DDIR" + +echo "$CC $CFLAGS \"\$@\"" > cc +echo "$LD $LDFLAGS \"\$@\"" > ld +echo "$STRIP \"\$@\"" > strip + +# set correct permissions +chmod 0700 * diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.create.empty.service new file mode 100644 index 00000000..365c4bc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.create.empty.service @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.binary new file mode 100644 index 00000000..a368ac23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.binary @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: - +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice +"$INSTALL_PROG" sbin/ccontrol $DESTDIR/$PREFIX/sbin/ccontrol +"$INSTALL_PROG" bin/cinit.reboot $DESTDIR/$PREFIX/sbin/cinit.reboot +"$INSTALL_PROG" bin/cinit.shutdown $DESTDIR/$PREFIX/sbin/cinit.shutdown +"$INSTALL_PROG" bin/cinit.wait.for.daemon \ + $DESTDIR/$PREFIX/sbin/cinit.wait.for.daemon + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi + +# install as /sbin/shutdown, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/shutdown ]; then + ln -s $PREFIX/sbin/cinit.shutdown $DESTDIR/$PREFIX/sbin/shutdown +fi + +# install as /sbin/reboot, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/reboot ]; then + ln -s $PREFIX/sbin/cinit.reboot $DESTDIR/$PREFIX/sbin/reboot +fi diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.config-dir b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.config-dir new file mode 100644 index 00000000..c9adb70f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.config-dir @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.dir new file mode 100644 index 00000000..5e16f690 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.dir @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/sbin" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.fsck b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.fsck new file mode 100644 index 00000000..4508860a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.fsck @@ -0,0 +1,36 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 3 ]; then + echo "$(basename $0): name device filesystem-type" + exit 1 +fi + +NAME=$1 +DEVICE=$2 +FS_TYPE=$3 + +FSCK=/sbin/fsck.$FS_TYPE + +if [ ! -f "$FSCK" ]; then + echo "Missing $FSCK, abort." + exit 1 +fi + +if [ ! -e "$DEVICE" ]; then + echo "Missing $DEVICE abort." + exit 1 +fi + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME" +ln -sf "$FSCK" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON" +echo "$DEVICE" > "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.miniconf b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.miniconf new file mode 100644 index 00000000..45dcc632 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.miniconf @@ -0,0 +1,103 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: 2005-08-07 +# + + +. $(dirname $0)/cinit.read-conf + +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" +echo "" +echo "This will install a minimal cinit configuration." +echo "This configuration _SHOULD_ be able to run on _MOST_ systems." +echo "Still, it's highly EXPERIEMENTAL, use with CAUTION." +echo "" +echo "Please make sure, that" +echo " - you are using a journaling filesystem (fsck is not used)" +echo " - you have agetty, fgetty or mingetty installed" +echo " - you are runnig Linux 2.6 (sysfs is used)" +echo " - you have udev or static device nodes (you need /dev/tty*)" +echo " - getties will run on tty2-tty7, tty1 is used or logging" +echo "" +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" + +notosoftwarepatents="Please keep an eye on software patents, they are evil." +read -p "Do you really want to continue? [y/N] " notosoftwarepatents + +if [ "$notosoftwarepatents" = "y" -o "$notosoftwarepatents" = "Y" ]; then + echo "Let us try it ..." +else + echo 'Bye bye!' + exit 0 +fi + +set -e + +# Create basic layout +$(dirname $0)/cinit.install.standard-dirs + +# Install services: +# - mount root r/w +# - mount /proc +# - mount /sys +# - install getties on tty2-tty7 +# - add cleanup for /etc/mtab +# - add loopback device +# - init service + echo + +################################### mount ##################################### +# mount root read/write +$(dirname $0)/cinit.install.service.mount-root + +# - mount /proc +$(dirname $0)/cinit.install.service.mount-proc + +# - mount /sys +$(dirname $0)/cinit.install.service.mount-sys + +# mount needs everything below it +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/root" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/proc" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/sys" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" + +################################### getty ##################################### +# mount root read/write +# install getties +begin_getty=2 +end_getty=7 +i=$begin_getty + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" +while [ "$i" -le "$end_getty" ]; do + $(dirname $0)/cinit.add.getty + ln -sf "${DESTDIR}/${CINIT_DIR}/getty/$i" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" + i=$(($i+1)) +done + +################################### mtab ##################################### +# - add cleanup for /etc/mtab +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" +$(dirname $0)/cinit.install.service.cleanup-mtab +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" + +################################### lo ##################################### +# - add loopback device +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" +$(dirname $0)/cinit.install.service.network-lo +ln -sf "${DESTDIR}/${CINIT_DIR}/network/lo" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" + +# - init service + echo +# init depends on mount, getty -> everything from base-layout +$(dirname $0)/cinit.install.service.init +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" + +ln -sf "${DESTDIR}/${CINIT_DIR}/local-services/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/getty/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/network/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.cleanup-mtab b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.cleanup-mtab new file mode 100644 index 00000000..30a8dd48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.cleanup-mtab @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: cleanup mtab +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" +echo '#!/bin/sh' > "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'rm -f /etc/mtab' >>"${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'ln -s /proc/mounts /etc/mtab' \ + >> "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +chmod 0700 "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.hostname.generic b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.hostname.generic new file mode 100644 index 00000000..2d72f50e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.hostname.generic @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service, which sets the hostname +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): hostname" + exit 1 +fi + +HOSTNAME=$1 +HOSTNAME_BIN=${HOSTNAME_BIN:-/bin/hostname} + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/network/hostname" +ln -sf "$HOSTNAME_BIN" "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON" +echo "$HOSTNAME" > "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.init b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.init new file mode 100644 index 00000000..c3a10931 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.init @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +ln -sf /bin/echo "${DESTDIR}/${CINIT_DIR}/${C_INIT}/$C_ON" +echo '*** cinit initial service successfully started ***' \ + > "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.keymap.c_keymap b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.keymap.c_keymap new file mode 100644 index 00000000..235a329e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.keymap.c_keymap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install keymap from environment setting +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +if [ -z "$C_KEYMAP" ]; then + echo "Set C_KEPMAP to the wanted keymap." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" ]; then + echo "Service keymap already exists." + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find loadkeys) + +if [ $? -ne 0 ]; then + echo "Did not find binary loadkeys." + exit 1 +fi + +echo -n "Installing keymap to ${DESTDIR}/${CINIT_DIR}/local-tuning/keymap ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON" + +echo "$C_KEYMAP" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.mount-proc b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.mount-proc new file mode 100644 index 00000000..024847a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.mount-proc @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /proc +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/proc" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/proc/$C_ON" +echo proc > "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo /proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.mount-root b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.mount-root new file mode 100644 index 00000000..a1bd56ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.mount-root @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount root r/w +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# mount root read/write +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/root" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/root/$C_ON" +echo -n > "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo -o >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo remount,rw >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo / >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.mount-sys b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.mount-sys new file mode 100644 index 00000000..8c8191aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.mount-sys @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /sys +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /sys +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/sys" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/sys/$C_ON" +echo sys > "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo sysfs >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo /sys >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.network-lo b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.network-lo new file mode 100644 index 00000000..45bff6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.network-lo @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: loopback device +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/lo" +ln -sf /sbin/ifconfig "${DESTDIR}/${CINIT_DIR}/network/lo/$C_ON" +echo lo > "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo 127.0.0.1/8 >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo up >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.ntpdate.debian b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.ntpdate.debian new file mode 100644 index 00000000..2af2ee4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.ntpdate.debian @@ -0,0 +1,47 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install ntpdate +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +. /etc/default/ntpdate + +if [ -z "$NTPSERVERS" ]; then + echo "No ntp servers found, aborting" + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find ntpdate) + +if [ $? -ne 0 ]; then + echo "Did not find binary ntpdate." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" ]; then + echo "Service ntpdate already exists." + exit 1 +fi + +echo -n "Installing ntpdate to ${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON" + +for server in $NTPSERVERS; do + echo "$server" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON$C_PARAMS" +done + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.udev b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.udev new file mode 100644 index 00000000..d91f01cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.service.udev @@ -0,0 +1,64 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install udev +# Date: 2005-10-15 +# Comment: DO NOT RSYNC TO THE WRONG SIDE! +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BIN_UDEVSEND=$($(dirname $0)/cinit.path-find udevsend) +BIN_UDEVSTART=$($(dirname $0)/cinit.path-find udevstart) +BIN_SYSCTL=$($(dirname $0)/cinit.path-find sysctl) +BIN_MOUNT=$($(dirname $0)/cinit.path-find mount) +SERVICE="local-tuning/udev" + +if [ -z "$BIN_UDEVSEND" -o -z "$BIN_UDEVSTART" -o -z "$BIN_SYSCTL" -o -z "$BIN_MOUNT" ]; then + echo "Did not find a binary." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo "Installing ${SERVICE} to ${DESTDIR}/${CINIT_DIR}/ ..." + +# 0. general udev +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}" +# 1. udevmount +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/mount/udev" +ln -sf "$BIN_MOUNT" "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON" +echo "udev" > "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "-t" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "tmpfs" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "/dev" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" + +# 2. udevstart +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart" +ln -sf "$BIN_UDEVSTART" "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart/$C_ON" + +# dependencies +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/sys +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/udev + +# 3. udev to hotplug +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug" +ln -sf "$BIN_SYSCTL" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug/$C_ON" +echo "$BIN_UDEVSEND" > "${DESTDIR}${CINIT_DIR}/${SERVICE}/hotplug/$C_ON$C_PARAMS" + +$(dirname $0)/cinit.add.dependency ${SERVICE}/hotplug needs mount/proc + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.standard.init.deps b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.standard.init.deps new file mode 100644 index 00000000..dcc5cd07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.standard.init.deps @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add standard sub-configuration directories to init wants +# Date: 2005-10-11 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.standard.mounts b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.standard.mounts new file mode 100644 index 00000000..bb1fc0c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.standard.mounts @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create normal mounts +# Date: 2005-10-16 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.swap b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.swap new file mode 100644 index 00000000..84e6c928 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.swap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install swap +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +SERVICE=mount/swap + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BINARY=swapon +BINARY_PATH=$($(dirname $0)/cinit.path-find $BINARY) +if [ $? -ne 0 ]; then + echo "Did not find binary $BINARY." + exit 1 +fi + +HAS_SWAP=$(awk '$3 ~ /swap/ { print $3 }' /etc/fstab) +if [ -z "$HAS_SWAP" ]; then + echo "Seems you have no swap, service not installing" + exit 1 +fi +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo -n "Installing ${SERVICE} to ${DESTDIR}${CINIT_DIR}/${SERVICE} ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON" + +echo "-a" >> "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.merge.sysvinit-debian-sid b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.merge.sysvinit-debian-sid new file mode 100644 index 00000000..3ef0ce03 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.merge.sysvinit-debian-sid @@ -0,0 +1,137 @@ +#!/bin/sh +# Nico Schottelius +# Date: Sun Oct 16 16:57:03 CEST 2005 +# cLinux/cinit +# Automagically convert Debian-Sysv-Iinit +# THIS IS NOT CLEAN. +# THIS IS NOT EVEN INTENTED TO BE CLEAN. +# This is just a small hack, because my girlfriend wants her notebook back. + +echo "***> $(basename $0): converting Debian-Sys-V-Init" + +# read standard values, may be overwritten from outside +. $(dirname $0)/cinit.read-conf + +echo "***> Finding standard config ..." +# variables, which can be set from the outside +ROOT_DEV=${ROOT_DEV:-$(awk '$2 ~ /^\/$/ { print $1 }' /etc/fstab)} +ROOT_FSCK=${ROOT_FSCK:-$(awk '$2 ~ /^\/$/ { print $6 }' /etc/fstab)} +ROOT_FS=${ROOT_FS:-$(awk '$2 ~ /^\/$/ { print $3 }' /etc/fstab)} +RUNLEVEL=${RUNLEVEL:-$(runlevel | awk '{ print $2 }')} + +echo "***> Detecting keymap (this may take some time)" + +if [ -z "$C_KEYMAP" ]; then + echo "Please set the variable C_KEYMAP to your keymap." + echo "It is impossible to detect reliable your keymap in Debian." + exit 1 +fi + + +echo "***> Configuration" +echo "Hostname (\$HOSTNAME): $HOSTNAME" +echo "Keymap (\$C_KEYMAP): $C_KEYMAP" +echo "Root device (\$ROOT_DEV): $ROOT_DEV" +echo "Root fsck (\$ROOT_FSCK): $ROOT_FSCK" +echo "Root FS (\$ROOT_FS): $ROOT_FS" +echo "Runlevel (\$RUNLEVEL): $RUNLEVEL" +echo "Destdir: (\$DESTDIR): $DESTDIR" +echo "Config-Dir: (\$CINIT_DIR): $CINIT_DIR" +read -p "Is this correct (Y/n) " correct + +if [ "$correct" != "y" -a "$correct" != "Y" ]; then + echo "***> Abort." + exit 1 +fi + +if [ -d "${DESTDIR}${CINIT_DIR}" ]; then + echo "ERROR: Configuration already exists at ${DESTDIR}${CINIT_DIR}." + exit 1 +fi + +echo "***> Installing standard structure and dependencies" +set -e +$(dirname $0)/cinit.install.config-dir +$(dirname $0)/cinit.install.standard.dirs +$(dirname $0)/cinit.install.standard.init.deps + +echo "***> Adding mount / r/w" +$(dirname $0)/cinit.install.service.mount-root + +if [ "$ROOT_FSCK" = "1" ]; then + echo "***> Adding fsck for $ROOT_DEV ..." + $(dirname $0)/cinit.install.fsck root "$ROOT_DEV" "$ROOT_FS" + echo "***> Adding dependency" + $(dirname $0)/cinit.add.dependency mount/root needs fsck/root +else + echo "***> Skipping fsck for $ROOT_DEV ..." +fi + +echo "***> Setting up standard mounts ..." +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up hostname: $HOSTNAME" +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up keymap" +$(dirname $0)/cinit.install.service.keymap.c_keymap + +echo "***> Creating getties (tty1-8)" +for i in `seq 1 8`; do + $(dirname $0)/cinit.add.getty + + # each getty needs: + # - root r/w + $(dirname $0)/cinit.add.dependency getty/$i needs mount/root + # - hostname + $(dirname $0)/cinit.add.dependency getty/$i needs network/hostname +done + +echo "***> Enabling getties (tty2-8)" +for i in `seq 2 8`; do + # add getties to getty/ + $(dirname $0)/cinit.add.dependency getty wants getty/$i +done + +# +# Convert services: check /etc/rcS.d and /etc/rcX.d +# +echo "***> Converting services ..." +for script in $(cd /etc/rcS.d/; ls S*; cd /etc/rc${RUNLEVEL}.d/; ls S*); do + echo -n "$script: " + case $script in + # SCRIPTS READY + *ntpdate) + $(dirname $0)/cinit.install.service.ntpdate.debian + $(dirname $0)/cinit.add.dependency local-tuning/ntpdate needs network + ;; + *udev*) + $(dirname $0)/cinit.install.service.udev + + # SCRIPTS NEVER READY + *glibc.sh|*module-init-tools|*modutils|*procps.sh|*hotplug-net|*bootmisc.sh|*nviboot|*screen-cleanup|*x11-common|*sudo|*makedev|*rmnologin) + echo "Ignoring (useless)." + ;; + + # SCRIPTS NOT YET READY + *mountvirtfs|*checkroot.sh|*ifupdown-clean|*checkfs.sh|*mountall.sh|*ifupdown|*hostname*|*mountnfs.sh|*alsa|*rsync|*ssh|*fam|*cron|*gdm) + echo "converting planned later." + ;; + + # SCRIPTS LATER TO DO + *bootlogd|*keymap.sh|*hwclock*|*discover|*pppd-dns|*dns-clean|*networking|*portmap|*console-screen.sh|*urandom|*klogd|*apmd|*dbus-1|*exim4|*pcmcia|*nfs-common|*stop-bootlogd) + echo "unsupported currently (FIXME PLEASE)." + ;; + *sysklogd|*ppp|*inetd|*lpd|*aumix|*atd) + echo "unsupported (choose a better alternative)." + ;; + *initrd-tools.sh|*libdevmapper*|*hotplug) + echo "Ignoring (general or bloated script)." + ;; + *) + echo "Ignoring (unknown)" + ;; + esac +done + +echo "***> Finished." diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.path-find b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.path-find new file mode 100644 index 00000000..0d0f362b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.path-find @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: find binary in path +# Date: 2005-10-15 +# + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): searched binary" + exit 1 +fi + +binary=$1 + +# this is NOT really clean, paths can also contain spaces +for pfad in $(echo $PATH | sed 's/:/ /g'); do + fullname=$pfad/$binary + if [ -f "$fullname" ]; then + echo "$fullname" + exit 0 + fi +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.remove.getty new file mode 100644 index 00000000..4950eeed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.remove.getty @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + +if [ ! "$NUMBER" ]; then + echo "There is no getty to remove." + exit 1 +fi + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r "$DDIR" +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.shutdown new file mode 100644 index 00000000..702c8a17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.shutdown @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# TODO: use ccontrol! +# 2005-05-24 (Last changed: 2005-06-18) + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -p|--power-off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " -s|--rescue: Rescue mode" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -p|--power-off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + -s|--rescue) kill -USR2 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.uml.test new file mode 100644 index 00000000..f6ea7fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.1 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG umid=cinit$$ init=/sbin/cinit" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..7f027455 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 (Last Changed: 2005-06-17) + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +PIDFILE=$1; shift +DAEMON=$1; shift + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/.README b/software/cinit/browse_source/cinit-0.3pre10/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/c_confdir b/software/cinit/browse_source/cinit-0.3pre10/conf/c_confdir new file mode 100644 index 00000000..091e6192 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/c_confdir @@ -0,0 +1,3 @@ +conf + +The directory below cinit_dir for cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/c_delay b/software/cinit/browse_source/cinit-0.3pre10/conf/c_delay new file mode 100644 index 00000000..dc30f147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGTERM for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/c_env b/software/cinit/browse_source/cinit-0.3pre10/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/c_init b/software/cinit/browse_source/cinit-0.3pre10/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/c_last b/software/cinit/browse_source/cinit-0.3pre10/conf/c_last new file mode 100644 index 00000000..8debf155 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/c_last @@ -0,0 +1,7 @@ +last + +Name of the file below cinit_dir/c_confdir/ to execute right before +reboot/halt/poweroff. + +This maybe a shellscript with the OS-specific umount procedure (like umount -a), +see doc/user/configuring.cinit for more details. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/c_needs b/software/cinit/browse_source/cinit-0.3pre10/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/c_off b/software/cinit/browse_source/cinit-0.3pre10/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/c_on b/software/cinit/browse_source/cinit-0.3pre10/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/c_panic b/software/cinit/browse_source/cinit-0.3pre10/conf/c_panic new file mode 100644 index 00000000..7fdb77b3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/c_panic @@ -0,0 +1,5 @@ +panic + +Name of the file below cinit_dir/c_confdir/ to execute on panic. +This name .params (normally panic.params) will be passed as parameters/ +argumunts to panic. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/c_params b/software/cinit/browse_source/cinit-0.3pre10/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/c_respawn b/software/cinit/browse_source/cinit-0.3pre10/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/c_sock b/software/cinit/browse_source/cinit-0.3pre10/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/c_tmp b/software/cinit/browse_source/cinit-0.3pre10/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.3pre10/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.3pre10/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/c_wants b/software/cinit/browse_source/cinit-0.3pre10/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/cc b/software/cinit/browse_source/cinit-0.3pre10/conf/cc new file mode 100644 index 00000000..b168ae6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/cc @@ -0,0 +1,3 @@ +gcc + +The c-compiler to use. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/cflags b/software/cinit/browse_source/cinit-0.3pre10/conf/cflags new file mode 100644 index 00000000..f205afb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/cflags @@ -0,0 +1,6 @@ +-pipe -W -Wall -Werror -Iinclude -g -D_XOPEN_SOURCE=600 -D_USE_POSIX + +Standard flags to pass to (g)cc. + +-D_XOPEN_SOURCE=600 must be used on glibc to select the right standard. +-D_USE_POSIX is needed for sigemptyset on glibc diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/cinit_dir b/software/cinit/browse_source/cinit-0.3pre10/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/confdir b/software/cinit/browse_source/cinit-0.3pre10/conf/confdir new file mode 100644 index 00000000..55fb65e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/confdir @@ -0,0 +1,3 @@ +conf + +The subdirectory below /etc/cinit to be used for general configurations. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/destdir b/software/cinit/browse_source/cinit-0.3pre10/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/getty_dir b/software/cinit/browse_source/cinit-0.3pre10/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/install_directory b/software/cinit/browse_source/cinit-0.3pre10/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/install_prog b/software/cinit/browse_source/cinit-0.3pre10/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/ipc_method b/software/cinit/browse_source/cinit-0.3pre10/conf/ipc_method new file mode 100644 index 00000000..fc75e273 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/ipc_method @@ -0,0 +1,5 @@ +msgq + +The type of IPC (inter process communication) to use. +Valid values can be optained by issuing `ls src/ipc/`. + diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/ld b/software/cinit/browse_source/cinit-0.3pre10/conf/ld new file mode 100644 index 00000000..b60e4836 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/ld @@ -0,0 +1,3 @@ +gcc + +Comment missing. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/ldflags b/software/cinit/browse_source/cinit-0.3pre10/conf/ldflags new file mode 100644 index 00000000..fc214daf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/ldflags @@ -0,0 +1,3 @@ + + +No flags specified normally. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/max_delay b/software/cinit/browse_source/cinit-0.3pre10/conf/max_delay new file mode 100644 index 00000000..30725bf8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/max_delay @@ -0,0 +1,4 @@ +30 + +Maximum number of seconds to sleep between retrying to start it +(respawn only). diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/max_deps b/software/cinit/browse_source/cinit-0.3pre10/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/msgq_pathname b/software/cinit/browse_source/cinit-0.3pre10/conf/msgq_pathname new file mode 100644 index 00000000..1bef0b6b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/msgq_pathname @@ -0,0 +1,4 @@ +/bin/sh + +Used to generate an unique identifier for the message queue. +See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/msgq_to_clients b/software/cinit/browse_source/cinit-0.3pre10/conf/msgq_to_clients new file mode 100644 index 00000000..dd15808a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/msgq_to_clients @@ -0,0 +1,4 @@ +o + +This is use in ftok to generate a key_t for the message queue use to write +to the clients. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/msgq_to_server b/software/cinit/browse_source/cinit-0.3pre10/conf/msgq_to_server new file mode 100644 index 00000000..f87ae3f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/msgq_to_server @@ -0,0 +1,4 @@ +i + +This is use in ftok to generate a key_t for the message queue use to write +to the server. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/os b/software/cinit/browse_source/cinit-0.3pre10/conf/os new file mode 100644 index 00000000..ddbf8f9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/os @@ -0,0 +1,14 @@ +linux + +Select the operating system compiling for. + +Current possibilities: + + - linux + + +Currently Planned possibilities: + + - freebsd + - openbsd + - netbsd diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/p_asciidoc b/software/cinit/browse_source/cinit-0.3pre10/conf/p_asciidoc new file mode 100644 index 00000000..52485c86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/p_asciidoc @@ -0,0 +1,6 @@ +asciidoc + +The binary on your system (with or without path) which does what I expect +asciidoc todo. + +Default: asciidoc diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/p_docbooktoman b/software/cinit/browse_source/cinit-0.3pre10/conf/p_docbooktoman new file mode 100644 index 00000000..d62c9015 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/p_docbooktoman @@ -0,0 +1,6 @@ +docbook2x-man + +The binary on your system (with or without path) which converts +docbook to manpages. + +Default: docbook2x-man diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/p_docbooktotexi b/software/cinit/browse_source/cinit-0.3pre10/conf/p_docbooktotexi new file mode 100644 index 00000000..278f6805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/p_docbooktotexi @@ -0,0 +1,6 @@ +docbook2x-texi + +The binary on your system (with or without path) which converts +docbook to texinfo. + +Default: docbook2x-texi diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/prefix b/software/cinit/browse_source/cinit-0.3pre10/conf/prefix new file mode 100644 index 00000000..6b90469f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/prefix @@ -0,0 +1,5 @@ + + +Where to install cinit. Normally this will be /, but you can put it anywhere. +The subdirectory 'sbin' under this prefix must be readable by the kernel. +This is normally either empty or "/". diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/profile b/software/cinit/browse_source/cinit-0.3pre10/conf/profile new file mode 100644 index 00000000..b9104bf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/profile @@ -0,0 +1,9 @@ +cprofile: + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile:" is the standard, as +the Linux kernel eats everything in the form 'var=parm'. +The old (pre cinit-0.1) option "cprofile=" should therefore +NOT be used. + +Under Linux you tell it the bootloader like grub or LILO. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/service_categories b/software/cinit/browse_source/cinit-0.3pre10/conf/service_categories new file mode 100644 index 00000000..2216ea97 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/service_categories @@ -0,0 +1,7 @@ +getty init local-tuning local-services mount network remote-services + +List of directories normally created below /etc/cinit/svc/ as +'pseudo-services'. + +Btw, 'init' is the first service and has always to be there, but it does not really +fit into here, because it's a real one, compraed to the pseudo services. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/sleep_before_kill b/software/cinit/browse_source/cinit-0.3pre10/conf/sleep_before_kill new file mode 100644 index 00000000..2671f22d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/sleep_before_kill @@ -0,0 +1,7 @@ +sleep_before_kill + +The file that specifies how long to sleep after sending SIGTERM, before sending +SIGKILL to every process. If this file is non-existing the builtin value from +'sleep_kill'. + +The file should be located below conf/ diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/sleep_kill b/software/cinit/browse_source/cinit-0.3pre10/conf/sleep_kill new file mode 100644 index 00000000..b419241a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/sleep_kill @@ -0,0 +1,8 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. + +Note: This does NOT affect terminating services, they are shutdown by +their own 'off' functions. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.3pre10/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.3pre10/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/sleep_svc b/software/cinit/browse_source/cinit-0.3pre10/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/sock_queue b/software/cinit/browse_source/cinit-0.3pre10/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/strip b/software/cinit/browse_source/cinit-0.3pre10/conf/strip new file mode 100644 index 00000000..08736418 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/strip @@ -0,0 +1,3 @@ +strip -R .comment -R .note + +Strip out unecessary parts of the binaries. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/sulogin b/software/cinit/browse_source/cinit-0.3pre10/conf/sulogin new file mode 100644 index 00000000..24859afc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/sulogin @@ -0,0 +1,6 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it, if the standard panic +action fails (as specified in cinit_dir/c_confdir/panic). + +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/svcdir b/software/cinit/browse_source/cinit-0.3pre10/conf/svcdir new file mode 100644 index 00000000..087a3848 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/svcdir @@ -0,0 +1,3 @@ +svc + +Directory below /etc/cinit that contains the services. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf/version b/software/cinit/browse_source/cinit-0.3pre10/conf/version new file mode 100644 index 00000000..23ac5f86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf/version @@ -0,0 +1,3 @@ +"0.3pre10" + +The version. diff --git a/software/cinit/browse_source/cinit-0.3pre10/conf2/README b/software/cinit/browse_source/cinit-0.3pre10/conf2/README new file mode 100644 index 00000000..c753107d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/conf2/README @@ -0,0 +1,33 @@ +Migrate conf/ to general conf/-buildsystem (write documentation for it). + +gpm2 may be an example for this! + +conf/targets: + targets to make available in Makefile and their dependencies + + abstract the build-process somehow, so one can create build-targets? + + c-programs/ (includes cc / ld) + cinit (link to conf/object_listings cinit?) +conf/object_listings + lists of dependencies: + conf/object_listings/cinit contains all objects needed for cinit + +conf/programs/ + like cc, ld, install, ... + +conf/built-options/ + like --... in ./configure + +conf/install/ + + options/ + destdir (prefixed before everything) + prefix (standard prefix) + bin (relative to prefix, if not beginning with a /) + sbin (relative to prefix, if not beginning with a /) + lib (relative to prefix, if not beginning with a /) + targets/ + cinit/ + built-target (link to conf/targets/cinit) + destination (relative to diff --git a/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/Makefile b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/Makefile new file mode 100644 index 00000000..23cc41f0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/Makefile @@ -0,0 +1,70 @@ +# +# (c) 2005 Peter Portmann (pp at bluewin.ch) +# cinit/contrib+tools +# +# This script is written for the clinux-System and published +# under the terms of GPL 2.0 +# +# Version: 0.2 +# clean with a single command instead of two commands. +# +# ChangeLog: +# 0.1 initial version +# +# Todo: +# +# Features: + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +DEBUG=-g -DDEBUG +#OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! +LDFLAGS= + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. -I../ +LD=gcc +STRIP=strip -R .comment -R .note + +INSTALL = install + +prefix = /usr +bindir = $(prefix)/bin + +# objects + +CLIENT=cinit.graph.text.o + +COMMUNICATION=error.o usage.o mini_printf.o + +OBJ=$(CLIENT) $(COMMUNICATION) + +# +PROGRAMS=cinit.graph.text +SCRIPTS=cconfig.graph.xml.rb \ + make.cconfig.from.xml.rb \ + cinit-vis.pl + +# targets +all: $(PROGRAMS) + +cinit.graph.text: $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +clean: + rm -f *.o $(PROGRAMS) + +install: all + @echo '*** Installing contrib+tools ***' + $(INSTALL) -d -m755 $(DESTDIR)$(bindir) + for bin in $(SCRIPTS) $(PROGRAMS); do \ + $(INSTALL) $$bin $(DESTDIR)/$(bindir); \ + done diff --git a/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/README b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/README new file mode 100644 index 00000000..85fa2f5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/README @@ -0,0 +1,11 @@ +contrib+tools/ + programs written by others and external tools not necessary + needed but (very) nice to have + + + cinit-vis.pl - draw an ascii graph of cinit configuration [perl] + cinit.graph.text - draw an ascii graph of cinit configuration [c] + + cconfig.graph.xml.rb - creates a xml file from a cconfig [ruby] + make.cconfig.from.xml.rb - creates a cconfig from a xml file [ruby] + diff --git a/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/README.ruby b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/README.ruby new file mode 100644 index 00000000..ed210cee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/README.ruby @@ -0,0 +1,7 @@ +The ruby tools for general cconfig [0] are written by René Nussbaumer [1]. +You can find the documentation for them at [2]. + + +[0]: http://nico.schotteli.us/papers/linux/cconfig/ +[1]: http://killerfox.forkbomb.ch/ +[2]: http://killerfox.forkbomb.ch/articles/cconfig/tools diff --git a/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/cconfig.graph.xml.rb b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/cconfig.graph.xml.rb new file mode 100644 index 00000000..d18ba422 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/cconfig.graph.xml.rb @@ -0,0 +1,117 @@ +#!/usr/bin/env ruby + +=begin + + Writes an XML-Tree for a cconfig directory + Idea by Nico Schottelius aka telmich + Implemented and (C) by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added support for binary files + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Changed checking order: symlink, directory, file. Because of + a logical bug -> directory follows symlink so, when a symlink + points to a directory no «link» element is created. + + Version 0.1 (René Nussbaumer): + * Holy hack for directory scanning (needs to be optimized) + * Hack for rexml to print out «lost» tags. This rexml sux. + + Todo: + * Optimize scanning. + * Use another xml library instead of rexml crap. + Problem: Produce dependencies -> no std-lib + + Features: + * Create a flat (no deepnes without directory) and 1:1 image + of an cconfig directory + +=end + +require 'rexml/document' +require 'base64' +require 'digest/sha1' + +require 'filemagic' + +@version = '0.3' + +def determineTarget(entry) + return 'external' if(!File.expand_path(entry).index(@initpath)) + return 'link' if(FileTest.symlink?(entry)) + return 'object' if(FileTest.directory?(entry)) + return 'attribute' if(FileTest.file?(entry)) + return 'unknown' # Should never be reached +end + +def createTree(dir, parent) + dir.each { |entry| + next if(entry =~ /^(\.|\.\.)$/) + + if(FileTest.symlink?(entry)) + e = parent.add_element('link') + + # Much fun with links + e.add_attributes( { 'name' => entry, 'target' => determineTarget(File.readlink(entry)) } ) + e.add_text(File.readlink(entry)) + elsif(FileTest.directory?(entry)) + e = parent.add_element('object') + e.add_attribute('name', entry) + + # Bad, that we need to change the directory every time. + oldPwd = Dir.pwd + Dir.chdir(entry) + createTree(Dir.new('.'), e) + Dir.chdir(oldPwd) + elsif(FileTest.file?(entry)) + e = parent.add_element('attribute') + e.add_attribute('name', entry) + if(File.stat(entry).size?) + # Yeah, we got one WITH content! W00h00, let's party. + + fm = FileMagic.new(FileMagic::MAGIC_MIME) + if(fm.file(entry) =~ /executable/) + e.add_attribute('type', 'binary') + text = File.new(entry).read + e.add_attribute('sha1', Digest::SHA1.hexdigest(text)) + e.add_text(Base64.encode64(text)) + else + e.add_text(File.new(entry).read) + end + fm.close() + end + end + } +end + + +if(!ARGV[0] || !FileTest.directory?(ARGV[0])) + puts 'You need to specify a directory' + Kernel.exit(-1) +end + +doc = REXML::Document.new + +e = doc.add_element('cconfig') +e.add_attribute('name', File.basename(ARGV[0])) +e.add_attribute('version', @version) + +@initpath = File.expand_path(ARGV[0]) +Dir.chdir(ARGV[0]) +createTree(Dir.new('.'), doc.root) + +out = '' +doc.write(out, 0, false, true) + +REXML::XMLDecl.new('1.0', 'utf-8').write($stdout) # This should automatically printed by rexml. Damn bugs. +puts '' +puts out # Workaround for a buggy rexml + diff --git a/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/cinit-vis.pl b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/cinit-vis.pl new file mode 100644 index 00000000..4a439fc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/cinit-vis.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# (c) by Marcus Przyklink (downhill-clinux@burningchaos.org) +# written for cinit and published under GPL +# beautified a bit by Nico Schottelius +# optimized by René Nussbaumer +# Version: 0.1 + +use strict; +use warnings; + +# +# Variables for location and output +# +# cinit-directory +my $path = "/etc/cinit/svc/"; +# started profile +my $starting_point = "init"; +# the spaces for each level (integer: amount of spaces) +my $space = 3; +# marker for need +my $need = "-->"; +# marker for want +my $want = "==>"; + +# +# main function, recursively list the components of the cinit system +# +if (@ARGV) { + if( $ARGV[0] =~ /-(h|-help)/ ) { + print "Usage: " . __FILE__ . " without parameters for standard-use (check variables in file)\n"; + print " Parameters:\n"; + print " -h for this help\n"; + print " profile-name for a profile\n"; + exit(0); + } + else { + $starting_point = $ARGV[0]; + } +} + +# +# start first instance +# +sub get_deeper { + my ($point, $tmp_counter, $need_want) = splice @_; + + print " " x ($space * $tmp_counter) . ($need_want ? $need : $want) . " " . $point . "\n"; + + opendir(DIR, "${path}${point}/needs") and + my @next_need = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + opendir(DIR, "${path}${point}/wants") and + my @next_want = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + + for(@next_need) { + get_deeper($_, $tmp_counter + 1, 1); + } + for(@next_want) { + get_deeper($_, $tmp_counter + 1, 0); + } +} + +# +# start first instance +# +get_deeper($starting_point, 0, 0); + +# +# work done, go home +# +exit(0); diff --git a/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/cinit.graph.text.c b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/cinit.graph.text.c new file mode 100644 index 00000000..5e5316ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/cinit.graph.text.c @@ -0,0 +1,200 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + cinit.graph.text.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.2 + + ChangeLog: + Version 0.2 (Peter Portmann): + * Not assigned link destinies are marked by (!). + * Not readable directories are marked by "directory not readable". + + Version 0.1 (Peter Portmann): + * Print of the directory structure of the contained files and links + without following the links. + + Todo: + + Features: +*/ + +//#include +#include +#include +#include +#include +#include +#include +#include +//#include "cinit.h" +#include "error.h" + +#define FTW_F 1 /* file isn't a directory */ +#define FTW_D 2 /* file is a directory */ +#define FTW_DNR 3 /* not readable directory */ +#define FTW_NS 4 /* unsuccesfully stat on this file */ +#define MAX_CHAR 4096 + +/*********************************************************************** + * cinit.graph.text - textual representation of the cinit directory + */ + +#define CSERVICE_BANNER "cinit.graph.text - textual representatio of the cinit directory\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncinit.graph.text \n" \ + "\tpath\t- cinit installationpath\n" + +typedef int EACH_ENTRY(const char *, const struct stat *, int); +typedef enum { FALSE=0, TRUE=1 } bool; + +static char dirpath[PATH_MAX]; +static int depth = 0; +static long int filecount = 0; + +static EACH_ENTRY each_entry; +static int pp_ftw(char *, EACH_ENTRY *); +static int each_getinfo(EACH_ENTRY *); + +/*********************************************************************** + * pp_ftw: file tree walk + */ +static int pp_ftw(char *filepath, EACH_ENTRY *function) +{ + int n; + + if(chdir(filepath) < 0) /* In angegebenen Pfad wechseln */ + err_msg(FATAL_SYS, "can't change to %s", filepath); + + if(getcwd(dirpath, PATH_MAX) == 0) /* Absoluten Pfadnamen ermitteln */ + err_msg(FATAL_SYS, "error using getcwd for %s", filepath); + + n = each_getinfo(function); + + return(n); +} + +/*********************************************************************** + * each_getinfo: get more info for each file. + */ +static int each_getinfo(EACH_ENTRY *function) +{ + struct stat statpuff; + struct dirent *direntz; + DIR *dirz; + int n; + char *zgr; + + if(lstat(dirpath, &statpuff) < 0) + return(function(dirpath, &statpuff, FTW_NS)); /* Error on stat */ + + if(S_ISDIR(statpuff.st_mode) == 0) + return(function(dirpath, &statpuff, FTW_F)); /* no directory */ + + /* It's a directory. + * Call function() for it. After that handel each file in the directory. */ + + if((dirz = opendir(dirpath)) == NULL) { /* Directory not readable */ + closedir(dirz); + return(function(dirpath, &statpuff, FTW_DNR)); + } + + if((n = function(dirpath, &statpuff, FTW_D)) != 0) /* return the directorydirpath */ + return(n); + + zgr = dirpath + strlen(dirpath); /* append slash to the dirpathname */ + *zgr++ = '/'; + *zgr = '\0'; + + while((direntz = readdir(dirz)) != NULL) { + /* ignor . and .. */ + if(strcmp(direntz->d_name, ".") && strcmp(direntz->d_name, "..")) { + strcpy(zgr, direntz->d_name); /* append filename after slash */ + depth++; + if(each_getinfo(function) != 0) { /* Recursion */ + depth--; + break; + } + depth--; + } + } + *(zgr-1) = '\0'; /* deleting evrything after the slash */ + + if(closedir(dirz) < 0) + err_msg(WARNING, "closedir for %s failed", dirpath); + + return(n); +} + +/*********************************************************************** + * each_entry: handling each file and build the graph step by step. + */ +static int each_entry(const char *filepath, const struct stat *statzgr, int filetype) +{ + struct stat statpuff; + static bool erstemal=TRUE; + int i; + + char link[MAX_CHAR]; + + filecount++; + if(!erstemal) { + for(i=1 ; i<=depth ; i++) + printf("%4c|", ' '); + printf("----%s", strrchr(filepath, '/')+1); + } else { + printf("%s", filepath); + erstemal = FALSE; + } + + switch(filetype) { + case FTW_F: + switch(statzgr->st_mode & S_IFMT) { + case S_IFREG: break; + case S_IFCHR: printf(" c"); break; + case S_IFBLK: printf(" b"); break; + case S_IFIFO: printf(" f"); break; + case S_IFLNK: + printf(" -> "); + if(( i=readlink(filepath, link, MAX_CHAR)) != -1) + printf("%.*s", i, link); + if(stat(filepath, &statpuff) < 0) + printf(" (!)"); + break; + case S_IFSOCK: printf(" s"); break; + default: printf(" ?"); break; + } + printf("\n"); + break; + + case FTW_D: + printf("/\n"); + break; + + case FTW_DNR: + printf("/ directory not readable\n"); + break; + + case FTW_NS: + err_msg(WARNING_SYS, "Error using 'stat' on file %s", filepath); + break; + + default: + err_msg(FATAL_SYS, "Unknown Filetype (%d) by file %s", filetype, filepath); + break; + } + + return(0); +} + +/*********************************************************************** + * main: + */ +int main(int argc, char *argv[]) +{ + if(argc != 2) + usage(CSERVICE_BANNER, USAGE_TEXT); + + exit(pp_ftw(argv[1], each_entry)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/cinit.h b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/cinit.h new file mode 100644 index 00000000..cbde3195 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/cinit.h @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Dummy header file to intgrate mini_printf and usage + */ + +#ifndef CINIT_DUMMY_HEADER +#define CINIT_DUMMY_HEADER + +void usage(char *banner, char *text); +void mini_printf(char *str,int fd); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/error.c b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/error.c new file mode 100644 index 00000000..8174c702 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/error.c @@ -0,0 +1,124 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#include "error.h" +#include +#include +#include +#include +#include +#include + +#define MAX_CHAR 4096 + +int debug; /* Aufrufer von log_msg oder log_open muss debug setzen: + 0, wenn interaktiv; 1, wenn Daemon-Prozess */ + +/*---- Lokale Routinen zur Abarbeitung der Argumentliste --------------------*/ +static void msg_err(int sys_msg, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + return; +} + +static void msg_log(int sys_msg, int prio, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + if (debug) { + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + } else { + strcat(puffer, "\n"); + syslog(prio, puffer); + } + return; +} + +/*---- Global aufrufbare Fehlerroutinen -------------------------------------*/ +void err_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_err(0, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + case DUMP: + msg_err(1, fmt, az); + break; + default: + msg_err(1, "Falscher Aufruf von err_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + else if (kennung==DUMP) + abort(); /* core dump */ + exit(1); +} + +void log_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_log(0, LOG_ERR, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + msg_log(1, LOG_ERR, fmt, az); + break; + default: + msg_log(1, LOG_ERR, "Falscher Aufruf von log_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + exit(2); +} + +/*---- log_open --------------------------------------------------------------- + initialisiert syslog() bei einem Daemon-Prozess */ +void log_open(const char *kennung, int option, int facility) +{ + if (debug==0) + openlog(kennung, option, facility); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/error.h b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/error.h new file mode 100644 index 00000000..a55690fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/error.h @@ -0,0 +1,29 @@ +#ifndef ERROR_H +#define ERROR_H +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.h + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#define WARNING 0 +#define WARNING_SYS 1 +#define FATAL 2 +#define FATAL_SYS 3 +#define DUMP 4 + +void log_msg(int kennung, const char *fmt, ...); +void err_msg(int kennung, const char *fmt, ...); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/make.cconfig.from.xml.rb b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/make.cconfig.from.xml.rb new file mode 100644 index 00000000..05f35cc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/make.cconfig.from.xml.rb @@ -0,0 +1,227 @@ +#!/usr/bin/env ruby + +=begin + + Create a cconfig directory based on a xml input. + (C) 2005 by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added binary file support + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Added some commandline options + * Added «level» so control the restrictivity of the program + * Added more «intelligence» to the program, to detect internal broken dependcies. + * Support «debug»-Levels. + * Print statistic at the end of the programs about warnings and errors. + + Version 0.1 (René Nussbaumer): + * Initial + + Todo: + * Use an rexml alternative + * Some cleanup + * Optimize + * Testing? + + Features: + * Create a cconfig directory based on a xml + +=end + +require 'rexml/document' +require 'getoptlong' +require 'base64' +require 'digest/sha1' + +@verbose = 0 +@level = 1 +@version = '0.3' + +@warnings = 0 +@errors = 0 +@checklist = Array.new + +def printMsg(prefix, msg) + puts '%-12s %s' % [prefix + ':', msg] +end + +def error(msg, fatal = 0) + @errors += 1 + fatal = 0 if(@level < 1) + fatal = 255 if(@level > 1 && !fatal) + printMsg(fatal != 0 ? 'PANIC' : 'ERROR', msg) + Kernel.exit(-fatal) if(fatal != 0) +end + +def warn(msg) + error(msg, 1) if(@level > 1) + @warnings += 1 + printMsg('WARNING', msg) +end + +def info(msg) + printMsg('INFO', msg) +end + +def debug(msg, verbosity = 1) + if(@verbose >= verbosity) + printMsg("DEBUG(#{verbosity})", msg) + end +end + +def createObject(name) + error("#{name} already exists.", 1) if(FileTest.exists?(name)) + begin + Dir.mkdir(name) + rescue + error("Could not create directory #{name}: #{$!}. Abort.", 7) + end + debug("Object #{File.expand_path(name)} has been created.", 4) +end + +def createAttribute(name, content = nil) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + begin + file = File.new(name, 'w') + file.print content if(content && !content.empty?) + file.close + debug("Attribute #{File.expand_path(name)} has been created", 4) + rescue + error("Could not create file #{name}: #{$!}. Skipped.") + end +end + +def createLink(name, target, type) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + error("Broken dependencies! Please take a look if #{target} exists on your system", 2) if(type == 'external' && !FileTest.exists?(target)) + if(!FileTest.exists?(target) && type != 'external') + #info("Possible break. But maybe the target #{target} does not yet exists. Checking later.") + exptarget = File.expand_path(target) + @checklist << exptarget + debug("Adding #{target} to the list of internal dependcies to check.", 2) + end + begin + error('You\'ve a system which does not support symbolic links. Abort.', 3) if(File.symlink(target, name) != 0) + rescue + error("Could not create symlink #{name} => #{target}: #{$!}.", 3) + end + debug("Link #{File.expand_path(name)} has been created", 4) +end + +def doWork(elm) + name = elm.name + attrname = elm.attributes['name'] + error("XML Tag with missing name attribute!", 5) if(!attrname) + if(name =~ /(object|cconfig)/) + if(name == 'cconfig') + if(elm.attributes['version']) + info("Found a version string: #{elm.attributes['version']}") + warn("This XML is maybe incompatible with this programm. I'm a version #{@version} script. The XML is generated with a version #{elm.attributes['version']} script. Please update.") if(elm.attributes['version'] > @version) + end + end + createObject(attrname) + if(elm.has_elements?) + pwd = Dir.pwd + Dir.chdir(attrname) + elm.each_element { |e| + doWork(e) + } + Dir.chdir(pwd) + end + elsif(name == 'attribute') + text = nil + e = nil + text = e.value if((e = elm.get_text)) + if(text && elm.attributes['type'] && elm.attributes['type'] == 'binary') + text = Base64.decode64(text) + if(Digest::SHA1.hexdigest(text) != elm.attributes['sha1']) + warn("SHA1 differs from file: #{Dir.pwd}#{attrname}") + end + end + createAttribute(attrname, text) + elsif(name == 'link') + error("link-Tag without content.", 6) if(!elm.has_text?) + error("link with missing target. Skipped.") if(!elm.attributes['target']) + createLink(attrname, elm.get_text.value, elm.attributes['target']) + end +end + +puts "This is #{File.basename(__FILE__)} v#{@version} by René Nussbaumer" +puts + +opts = GetoptLong.new( + ['--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT], + ['--level', '-l', GetoptLong::REQUIRED_ARGUMENT], + ['--version', '-V', GetoptLong::NO_ARGUMENT] +) + +opts.each { |arg,value| + case arg + when '--verbose' + @verbose += 1 + value.each_byte { |x| + if(x.chr == 'v') + @verbose += 1 + end + } + debug("Verbosity set to: #{@verbose}") + when '--level' + debug("Setting level to: #{value}", 3) + case value + when 'low' + @level = 0 + when 'normal' + @level = 1 + when 'paranoid' + @level = 2 + else + warn('Unknown level: ' + value) + end + when '--version' + Kernel.exit(0) + else + warn("Unknown option #{arg}#{value && !value.empty? ? ('with value ' + value) : ''}") + end +} + +if(!ARGV[0]) + puts 'Need at least one argument' + puts "Usage: #{__FILE__} " + Kernel.exit(1) +end + + +filedesc = $stdin + +if(ARGV[0] != '-') + filedesc = File.new(ARGV[0]) +end + +doc = REXML::Document.new filedesc + +doWork(doc.root) + +if(!@checklist.empty?) + info('Now checking all broken internal dependcies again') + broken = 0 + @checklist.each { |path| + debug("Checking #{path}.", 2) + if(!FileTest.exists?(path)) + broken += 1 + warn("Broken dependcies. #{path} does not exist. Please fix.") + end + } + info('Looks good.') if(broken == 0) + info('Bad, bad.') if(broken > 0) +end + +info("Successed. #{@warnings} warnings, #{@errors} errors") + diff --git a/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/mini_printf.c new file mode 120000 index 00000000..3e9a596c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/mini_printf.c @@ -0,0 +1 @@ +../src/generic/mini_printf.c \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/usage.c b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/usage.c new file mode 120000 index 00000000..c26691ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/contrib+tools/usage.c @@ -0,0 +1 @@ +../src/generic/usage.c \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/.buildwarn b/software/cinit/browse_source/cinit-0.3pre10/doc/.buildwarn new file mode 100644 index 00000000..3a0354dd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/.buildwarn @@ -0,0 +1,23 @@ +**************************************************************************** +Welcome, cinit greets you. +**************************************************************************** + +Hints: +------ + - Settings used for compiling (not only) can be found in conf/* + - The boot configuration normally resides below /etc/cinit + +Documentation +------------- +The documentation can be found in doc/: + + - doc/user/ contains documentation for users + - doc/devel/ contains documentation for developers + + Please read doc/user/installing-cinit.text _BEFORE_ installing. + +Building cinit +-------------- + + "make all" - to build cinit + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/Makefile b/software/cinit/browse_source/cinit-0.3pre10/doc/Makefile new file mode 100644 index 00000000..abff8b3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/Makefile @@ -0,0 +1,107 @@ +# +# Makefile stolen from ccollect +# Nico Schottelius, Fri Jan 13 12:13:08 CET 2006 +# + +A2X=a2x +ASCIIDOC=asciidoc +DOCBOOKTOTEXI=docbook2x-texi +DOCBOOKTOMAN=docbook2x-man +XSLTPROC=xsltproc +XSL=/usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl + +# +# Asciidoc will be used to generate other formats later +# +MANDOCS = man/cinit.text man/halt.kill.text man/poweroff.kill.text \ + man/reboot.kill.text +USERDOCS = user/compiles.on.text user/configuring.cinit.text \ + user/conf-system.text \ + user/cross-compiling.text user/current-init-problems.text \ + user/daemons.backgrounding.text user/dependencies.text \ + user/example-directory-structure.text \ + user/installing-cinit.text user/paths.text \ + user/profiles.text user/README.text +DEVELDOCS = devel/codingguideline.text +DOCS = $(MANDOCS) $(USERDOCS) $(DEVELDOCS) + +# +# Doku +# +HTMLDOCS = $(DOCS:.text=.html) +DBHTMLDOCS = $(DOCS:.text=.htm) + +#TEXIDOCS = $(DOCS:.text=.texi) + +MANPDOCS = $(MANDOCS:.text=.man) + +DOCBDOCS = $(DOCS:.text=.docbook) + +DOC_ALL = $(HTMLDOCS) $(DBHTMLDOCS) $(TEXIDOCS) $(MANPDOCS) + +# +# End user targets +# +help: + @echo "----------- documentation make targets --------------" + @echo "documentation: generate HTML, Texinfo and manpage" + @echo "html: only generate HTML (via asciidoc/docbook/xsltproc)" + @echo "htm: only generate HTML (via asciidoc)" + @echo "info: only generate Texinfo" + @echo "man: only generate manpages" + @echo "pdf: only generate pdfs (requires: fop)" + +install: $(DOC_ALL) + @echo "===> Copy " man/*.[0-9] "to the correct manpaths" + +# +# Internal targets +# +html: $(HTMLDOCS) +htm: $(DBHTMLDOCS) +info: $(TEXIDOCS) +man: $(MANPDOCS) +documentation: $(DOC_ALL) + + +# +# Generic targets +# + +# docbook gets .htm, asciidoc directly .html (or the other way round) +%.html: %.docbook + ${XSLTPROC} -o $@ ${XSL} $< + +%.htm: %.text + ${ASCIIDOC} -n -o $@ $< + +%.docbook: %.text + ${ASCIIDOC} -n -b docbook -o $@ $< + +%.texi: %.docbook + ${DOCBOOKTOTEXI} --to-stdout $< > $@ + +%.mandocbook: %.text + ${ASCIIDOC} -b docbook -d manpage -o $@ $< + +#%.man: %.mandocbook +# ${DOCBOOKTOMAN} --to-stdout $< > $@ + +%.man: %.text + ${A2X} -f manpage $< + +%.pdf: %.text + ${A2X} -f pdf $< + +# +# Distribution +# +clean distclean: + rm -f $(DOC_ALL) + rm -f man/*.texi man/*.xml man/*.[0-9] + +# +# Be nice with the users and generate documentation for them +# +dist: distclean documentation + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/README.text b/software/cinit/browse_source/cinit-0.3pre10/doc/README.text new file mode 100644 index 00000000..46fe59fe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/README.text @@ -0,0 +1,57 @@ +cinit/doc +========= +Nico Schottelius +0.1, Initial Version from 2006-11-30 +:Author Initials: NS + +This directory contains the cinit documentation. + +Files and directories in this directory +---------------------------------------- + +ancient +~~~~~~~ +Old documents, only thought to irritate you. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +braindumps +~~~~~~~~~~ +Files I used to make the situation clear to myself. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +devel +~~~~~ +Developer related documents. Contains information for adding code, +for developing external tools to cinit or code guidelines for writing +patches to cinit. + + +logs +~~~~ +Logfiles or raw data dumps. + + +Makefile +~~~~~~~~ +The makefile used to generate the documentation. + + +man +~~~ +Manpages. + + +README.text +~~~~~~~~~~~ +This file + + +user +~~~~ +The most important part: Documentation for users (aka sysadmins, +hackers, endusers?): Explains howto install, configure, use and +debug cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/README b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/README new file mode 100644 index 00000000..45e193f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/README @@ -0,0 +1,16 @@ +Ancient +======= +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 + + +These files may be incorrect, outdated, totally wrong or even trying +to take over world dominance. + + +Why are they still there? +------------------------- + +Just because to document the early days of cinit. If you are +a software archaeologist in the year 2423, you'll be happy that +I saved those files. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/caveats b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/caveats new file mode 100644 index 00000000..5ab123e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/caveats @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/author b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/availability b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/availability new file mode 100644 index 00000000..cfb3f8a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/availability @@ -0,0 +1 @@ +cinit is currently Linux-specific. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/examples b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/examples new file mode 100644 index 00000000..1a7d2dcb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/examples @@ -0,0 +1 @@ +See http://linux.schottelius.org/cinit/#config diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/files b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/files new file mode 100644 index 00000000..4d6c0921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/files @@ -0,0 +1,5 @@ +/sbin/cinit - the init system +/sbin/cservice - control cinit +/sbin/cinit.reboot (/sbin/reboot if non-existent before) +/sbin/cinit.shutdown (/sbin/shutdown if non-existent before) +/etc/cinit - configuration directory diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/long_description b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/long_description new file mode 100644 index 00000000..18c3c082 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/long_description @@ -0,0 +1,5 @@ +cinit is a fast executing, small and simple init with support for profiles. It +minds dependencies (hard and soft, 'needs' and 'wants') and executes processes +in parallel. And it has a simple configuration, which makes many shell-scripts +unecessary (but you still could use them if you really want), which leads to +better performance and less memory using. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/meta/name new file mode 100644 index 00000000..b853da25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/meta/name @@ -0,0 +1 @@ +cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/parameters b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/parameters new file mode 100644 index 00000000..54df4727 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/parameters @@ -0,0 +1 @@ +cprofile: diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/path b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/path new file mode 100644 index 00000000..37edf339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/path @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/see also b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit.commands b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit.commands new file mode 100644 index 00000000..d34d13bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cinit.commands @@ -0,0 +1,73 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (using SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. +CMD_UPDATE: Update cinit, hot-reboot the system. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/author b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/long_description b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/long_description new file mode 100644 index 00000000..82818a93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/long_description @@ -0,0 +1 @@ +cservice controls cinit. Please use cservice -h for help. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/meta/name new file mode 100644 index 00000000..49c847bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/meta/name @@ -0,0 +1 @@ +cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/parameters b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/parameters new file mode 100644 index 00000000..605b08b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/parameters @@ -0,0 +1 @@ +[-eaphru] [thilo] diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/path b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/path new file mode 100644 index 00000000..85b0cb56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/path @@ -0,0 +1 @@ +/sbin/cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/see also b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/cservice-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/extern/README b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/extern/README new file mode 100644 index 00000000..e734d6d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/extern/README @@ -0,0 +1,2 @@ +doc/extern/ + Some things related to cinit from the outside world. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/extern/ipc.thoughts b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/extern/ipc.thoughts new file mode 100644 index 00000000..e2619d34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/extern/ipc.thoughts @@ -0,0 +1,83 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2 ), +1024 is the maximum opened file deskriptors, +minus 3 (stdin/stdout/stderr) already opened, divided +by two, because two fds needed per client. + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt, + - poweroff, + - update itself (hot-reboot) + - and to start a rescue mode (see using.rescue). + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + CONT: update + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/extern/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/extern/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/extern/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/extern/linux.kernel.eats.arguments b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/extern/linux.kernel.eats.arguments new file mode 100644 index 00000000..dbaf57d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/extern/linux.kernel.eats.arguments @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +Linux, the kernel, eats arguments +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +If you specify + + variable=value + +to the Linux kernel, the argument will NOT be passed to cinit. + +Here's the relevant code block from init/main.c of the Linux kernel: + +------------------------------------------------------------------------------- + +From init(void * unused) the function run_init_process(char *init_filename) +is called, which passes argv_init (char * argv_init[MAX_INIT_ARGS+2]) to init. + +First init_setup(char *str) resets all elements of the argv_init to NULL. + +The function unknown_bootoption(char *param, char *val) fills the +argv_init array, but only with parameters, which have no value +(val). + +The function parse_args calls unknown_bootoption with the unknown options. + +------------------------------------------------------------------------------- + +This way the profile support in all cinit versions below cinit-0.1 will +only work if you change conf/profile, because "cprofile=value" will +not be given to cinit, because it's not treated as a command line option. + +The original value "cprofile=" is replaced by "cprofile:" as of cinit-0.1. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/extern/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/extern/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/extern/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/fun-testing b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/fun-testing new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/fun-testing @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/how_it_works_internally b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/init-idea-first b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/init-idea-first new file mode 100644 index 00000000..2d677d8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/init-idea-first @@ -0,0 +1,38 @@ +- restarting/respawning + touch respawn +- dependencies + a needs started b +- clean multiply dependencies +- start & stop dependencies + start_depends + stop_depends +- parallel executation +- start and stop commands + start -> link + start_param -> parameters, like minit + stop -> link + stop_param -> parameters, like minit + + if no stop command is available, try to kill the pid we started at stop + +/startup/ + start_depends=gettys +/shutdown/ + stop_depends=power_off + + +gettys/ + start_depends=getty/1 + start_depends=getty/2 + start_depends=getty/3 + start_depends=getty/4 ... + +getty/1/ + start=/sbin/fgetty + respawn + +power_off/ + stop_depend=umount + +umount/ + stop_depend= diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/porting.to.other.os b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/porting.to.other.os new file mode 100644 index 00000000..65fdc07b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will perhaps become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/removing.zombies b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/removing.zombies new file mode 100644 index 00000000..9527e652 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + cinit in general will keep the behaviour of reaping the vestiges, + which broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/security b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/security new file mode 100644 index 00000000..f1dac591 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/security @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation, which will not accept connect() +by others than root. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console then! + +For extra parnoid settings you can do the following: + + ei # chmod 700 /etc/cinit/tmp/coala + ei # chown root:root /etc/cinit/tmp/coala diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/socket.poll_vs_o_async b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/socket.poll_vs_o_async new file mode 100644 index 00000000..477f2bff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/socket.poll_vs_o_async @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------------- +Socket: poll(2) vs. O_ASYNC, +Nico Schottelius 2005-06-22 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +0. General problem +1. O_ASYNC +2. poll(2) + + +0. General problem + +cinit has to react, as soon as there's data on the socket. + +1. O_ASYNC + +When you open a socket with O_ASYNC (or specify it with fcntl(2)) under +Linux, your process recieves the SIGIO signal from the kernel, as soon +as data is available. + +The problem is the handling of signals seems not to be serialised: + +The function, which is called on the SIGIO signal (called sigio() here) +calls other functions. Those functions way recieve SIGIO while working, +so the first data stream is not yet finished, though the next +stream is beeing read. + +This gives very nice race-conditions, which are very nice to debug. + +2. poll(2) + +poll(2) is a standard Unix-call (XPG4-UNIX), which waits a specific +timeout (or infinite time if you specify a value less that zero) for +the socket (or the fd in general) to be in a state where +data is available to read (in fact poll can do much more, but we are +not interested only in POLLIN and POLLPRI). + +While poll(2) seems to be a very bit slower than sigio it works reliable. + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/thoughts.closed b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/thoughts.closed new file mode 100644 index 00000000..91a8e080 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/ancient/thoughts.closed @@ -0,0 +1,52 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c + +7. Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. As this is not needed + currently, it's not implemented. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/README.text b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/README.text new file mode 100644 index 00000000..c4947a13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/README.text @@ -0,0 +1,2 @@ +DO NOT READ CONTENT IN THIS DIRECTORY. +(or at least do not blame me, if you get really confused after reading it) diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/big-picture.text b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/big-picture.text new file mode 100644 index 00000000..4426c236 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/big-picture.text @@ -0,0 +1,122 @@ +Just a small hint-file for me to see how cinit works: + + - cinit starts + * cinit executes either init or a profile + - the dependency-tree begins + + - now cinit begins to try to execute the dependencies + * first the needs (if those fail, wants are never called) + - fork() for every dependency? + +-------------------------------------------------------------------------------- +another idea: + + - cinit starts + - cinit reads the full depedency tree + * it builds n-depth trees + * it begins at the set init service (profile or init!) + * init is the first entry. always. + * read full service information (like on/off/params/respawn) + * design of each tree element: see below + - add a tree for the needs + - add a tree for the wants + - the elements have links, one service is created only once + - after the tree is created, execution begins + * begin from the bottom + * save a pointer to the last level somehow before? + +Pre calculation: + - need to act on changes (some kind of file watcher) + * need to keep status (?) + * what with now missing needs / wants? + - missing needs: shutdown now missing needs? + - simply ignore them? + - shut them down if not needed (no one has a link in needs?) + * +-------------------------------------------------------------------------------- +Sample dependency tree: + + init + / \ + needs wants + / | \ / | \ + a b c d e f + / | \ / | \ + needs needs needs END needs END + / | \ \ | | | | + b c d c f a e a +-------------------------------------------------------------------------------- +How this would be sorted:: + init: + needs: a b c + wants: d e f + a: + needs: b c d + b: + needs: c f + c: + needs: a e + d: + - + e: + needs: a + f: + - +-------------------------------------------------------------------------------- +So in this case, cinit may start services the following way: + d f + -> Wouldn't be possible in pre-calculation, because of circular dependencies. +-------------------------------------------------------------------------------- + Try a 'real' dependency tree: + a needs b c d + b needs c d + c and d do not need other stuff +-------------------------------------------------------------------------------- +Now cinit would it do the following way: + start c, start d + b will be started, as soon as c and d successfully finish + as soon as b is finished, a will be started +-------------------------------------------------------------------------------- +Now let's think about how this could look like in code... +- when we built up the tree, we have some ends (n to say) +- we can / must start starting (;-) at the end +- we would have more than one line back (z may be needed by c, i, and a) + * like in "c is needed by s, c, o" + * maxdepth counter? + * asynchronous rollback? + +--> to think more about it! +-------------------------------------------------------------------------------- + +tree elements: + * name (= path) + * on, off, +params + * respawn_delay + - -1 if not respawning + - >= 0 time to wait between restart + * status + - NOT STARTED (status on initialisation) + - RESPAWNING (running, respawning) + - RESPAWN_DELAY (waiting to respawn it) + - ONCE (started once) + * errormsg + - pointer to an error message in case of failure + * needs + - List of services we need + * wants + - List of services we want + * used_by + - List of services which use this service +-------------------------------------------------------------------------------- + +Conclusions +------------ + +cinit as the main executor +~~~~~~~~~~~~~~~~~~~~~~~~~~ +If cinit should start all services directly and manage dependencies +only internally, it will need to have build a reverse dependency tree, +so it begins starting at the end. + +cinit could execute all possible parallel running services in parallel +and open pipes to the (dumb) service executors. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/circular-dependencies.text b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/circular-dependencies.text new file mode 100644 index 00000000..dcc91ea7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/circular-dependencies.text @@ -0,0 +1,35 @@ +What todo with circular dependencies? + a needs b + b needs a + + - try to start them? + status a: is_starting + status b: not_set + a wants b, so a service starter for b starts + status a: is_starting, waiting for b + status b: is_starting + service starter for b sees that a is needed + service starter for b sees that a is already being started + service starter for b begins to execute b + status a: is_starting, waiting for b + status b: is_starting, executing "on" + service starter b finishes + status a: is_starting, waiting for b + status b: FAILED | RESPAWN | ONCE + service a continues + b successful: execute on + b failed: register / print that we do not start, because + b failed + + -> this would only catch possible deadlocks, if the dependency + tree / status check is done dynamically + -> in case of pre-building the dep-tree this situation must + be concerned: + - start both a and b? + - or stop due to circular dependency? + + - Abort on detection of a circular dependency + * possible without pre-calculating? + - perhaps only with direct communication possible? + * pre calculate + - do not start that services? diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/converting-debian b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/converting-debian new file mode 100644 index 00000000..ee40fdff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/converting-debian @@ -0,0 +1,30 @@ +# If you would like to automatically convert a debian system, you could +# use this script as a start point +# +# how it could look like +# + +# create cinit base configuration + +# analyse enabled services +level=$(awk -F: '/^id/ { print $2 }' /etc/inittab) +rcdir="/etc/rc${level}.d/" +initdir=/etc/init.d + +cd "$rcdir" +for svc in *; do + if [ -d "${debian_map_dir}/${svc}" ]; then + echo "Adding $svc" + else + + fi +done + +# Also add existing services in /etc/init.d +for ... + if [ ! -e $rcdir/$svc ] + if [ -d "${debian_map_dir}/${svc}" ]; then + echo "Adding, but not enabling" + fi + fi +done diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/converting-general b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/converting-general new file mode 100644 index 00000000..8a0a2e40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/converting-general @@ -0,0 +1,10 @@ +kern=$(uname -s) + +case "${kern}" in + $known_kern) + $scriptdir/$kern + ;; + *) + echo "Unknown system" + ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/creating-new-configurations b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/creating-new-configurations new file mode 100644 index 00000000..a251de5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/creating-new-configurations @@ -0,0 +1,6 @@ +scripts/create_baseconfig.sh # create base +scripts/cinit.install.standard.dirs # create common categories + +- create fsck +- set hostname +- create getty(s) diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/messages.text b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/messages.text new file mode 100644 index 00000000..f4ef769e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/messages.text @@ -0,0 +1,6 @@ +This document describes the messages used between cinit and its +"clients" (i.e. ccontrol, cservice, cinit.halt, ...): + +Signal messages +--------------- +As signals diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/possible_service_pre_calculation.text b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/possible_service_pre_calculation.text new file mode 100644 index 00000000..96ec3a73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/possible_service_pre_calculation.text @@ -0,0 +1,19 @@ +- start at + * create a new service entry (if not exists) <--- + * reads needs | + - follow dependencies ------------------------ + * only if service does not yet exist! | + * read wants | + - follow dependencies ------------------------ + * only if service does not yet exist! + * create + - needed by entry in dependencies + - needs entry in service + - wanted by entry in dependencies + - wants entry in service + + * record + - (on,off)(,.env,.params)? + - alternatively put that code into service starter + * add services without further needs into a special + "begin" structure to be reused at fireing of the services? diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/possible_service_status.text b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/possible_service_status.text new file mode 100644 index 00000000..eb0f21e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/possible_service_status.text @@ -0,0 +1,14 @@ + + - NOT_SET: this service has not yet been initialized + - RESPAWNING: happily respawning + - RESPAWN_DELAY: waiting delay before restarting + * HINT: using alarm()? + - senseful for single process service watcher + * HINT: using nanosleep()? + - senseful for per service process watcher + - NEED_FAILED + * add a (somehow terminated) list of services that failed? + * use global status to checkout which services failed? + - WANT_FAILED? + * NOT NECESSARY, it is a simple want, we do not need it. + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/registering_needs_wants.text b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/registering_needs_wants.text new file mode 100644 index 00000000..ededbd41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/registering_needs_wants.text @@ -0,0 +1,55 @@ +Each service has a list of services it + - needs + - is needed by + - wants + - is wanted by + + +Each entry is a service pointer. +The simplest list could look like this: + + service a: + needs: + b f g NULL + +So the needs pointer is NULL terminated: + needs = realloc(count_links) + -> how to get the count? + 0x02 + 0x + + Better: A double linked list (like the main service list)? + +Could look like: + service a: + needs: + *service + *next + *prev + +This design could also be used for wants. + +On the other hand, we've to register us at the needed/wanted service: + + service b: + needed_by: + *service + *next + *prev + + +So each service needs four pointers: + needs + needed_by + wants + wanted_by + +And on each request both lists have to be modified! + +Example: + + Service "a" adds "b" as needed: + + - add "a" needs "b" + - add "b" needed_by "a" + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/root-vm-testing b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/root-vm-testing new file mode 100644 index 00000000..a8773dea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/root-vm-testing @@ -0,0 +1,9 @@ +[19:33] denkbrett:root% cat uml-mount.sh +SDIR=$(dirname $0) +DDIR=$(dirname $0)/root +sudo mount "$SDIR/Debian-3.0r0.ext2" "$DDIR" -o loop,acl + +denkbrett# tar cfj ~nico/projekte/cinit/conf-vm-2007-03-05.tar.bz2 cinit +denkbrett# chown -R nico cinit +denkbrett# chown nico ../sbin + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/shutdown.text b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/shutdown.text new file mode 100644 index 00000000..ac76425d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/shutdown.text @@ -0,0 +1,84 @@ +cinit - braindumps - shutdown +============================= +Nico Schottelius +v0.1, for cinit-0.3, 2007-01-11 +:Author Initials: NS + +Just some braindumps. Do not read. + +Introduction +------------ +Shutting down the system. + +When? +----- +- reboot +- halt +- power off +- further needed? + +How / What? +------------ +- Stop services in the correct order + * reuse the service tree / needs / needed_by! + * call off, if existent + * if respawning, send SIGTERM? + - not if off is existent? + * give some variables to off? + - $RESPAWN_PID: if respawning +- send SIGTERM to other apps? + * or put that into special? special/post_svc_shutdown +- call special/{halt,poweroff,reboot} + * no, implemented that directly into cinit! +- implement timely controlled shutdown: + * cinit.shutdown forks (?) itself and waits, then sends a signal + to cinit to initiate the shutdown process + * create mappers for target OS + - Linux + - {free,net,open}bsd + - others may contribute theirself +- also implement poweroff + * kill -TERM 1 +- also implement reboot + * kill -HUP 1 +- also implement halt + * kill -USR1 1 + + +The implementation +----------------- +x shutdown is initiated +x disable communication (nobody can influence us anymore) +x install special signal handler? + - no. we do not care about zombies anymore, we are gone soon anyway + - simply reset to the default +- begin to shutdown services + * where to start? + * begin shutdown at the end of the tree, viewing/sorting it by the 'needed_by' + -> where to begin sort? + -> worst implementation: scan all services (easy for now) + -> result: list of services, that noone needs :-) + * stop those services and step above + - stop a service, as soon as noone needs it anymore + * check all needed_by links + * more or less the inverted gen_svc_tree +- how to shutdown a service + * if existing, call off + - if off does not exist: + * if respawn: send sigterm to the process + * also implement sigkill at this stage? + - think we can delay it to the end + - otherwise users can use off! + - implement environment for off ($cinit_respawn_pid, $cinit_service_name) + - do *NOT* care about the return value, we can't do anything for it + anymore anyway +- after all services are shutdown, kill all remaining services + * SIGTERM + * wait(defined_time_in_seconds) + * SIGKILL +- call the last command + * to cleanup the system + - umount -a (if needed) + - swapoff (if needed) + - sync (if needed) +- switch off diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/sizes b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/sizes new file mode 100644 index 00000000..ddd30f75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/braindumps/sizes @@ -0,0 +1,6 @@ +sysvinit: +root 1 0.0 0.0 1944 648 ? Ss 02:12 0:00 init [2] + +cinit-0.3pre8-glibc-linux: +compiler 25323 0.0 0.0 1564 392 pts/2 S+ 20:22 0:00 ./cinit + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/devel/README.text b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/README.text new file mode 100644 index 00000000..20524651 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/README.text @@ -0,0 +1,18 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit development documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +(cinit-)developers. + +Content +------- diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/devel/cinit-0.4.text b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/cinit-0.4.text new file mode 100644 index 00000000..61b718f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/cinit-0.4.text @@ -0,0 +1,115 @@ +cinit 0.4 - Redesign of cinit +============================================ +Nico Schottelius +0.4.0, for cinit 0.4, Initial Version from 2006-03-11 +:Author Initials: NS + + +cinit 0.2 ran fine and the general project of developing a +parallel executing init system is finished. +With cinit 0.4 there are new aims to reach. + + +Introduction +------------ + +. AIMS + - portability: no Linux-dependency anymore + - cleaner signal handling + - better documentation so more people can use it + + +Current problems +---------------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The mount(2) system call is os-specific. +The temporary fs is os-specific. + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Race conditions when multiple signals arrive + + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +serv/sig_reboot.c contains umount, remount hard coded. + + +Solutions +--------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Remove +- the mount call +- do not create an initial socket + +Wait until we recieve a signal, then we create a socket +under the configured socket directory (see `conf/sockdir`). + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +Misc +~~~~ + +- Configuration + /etc/cinit/config/ + init -> link to initial service + pre_boot + pre_boot_args + post_boot + post_boot_args + /etc/cinit/services/ + /etc/cinit/profiles/ + links to the starting services + + + +cinit - Internals +================= +Nico Schottelius +0.1 for cinit-0.3, Initial version: So Feb 19 10:25:46 CET 2006 +:Author Initials: NS + + +Introduction +------------ +This document describes the internals of cinit. It is thought +to be read by developers. + + +Child handler code in cinit-0.3 +------------------------------- + +In cinit versions <= cinit-0.2.1 the respawning services where +handled by an extra child handler, which was a fork of cinit. This +had some problems: + + - We allocated more memory than necessary, unecessary parts of + cinit were copied + - The SIG_CHILD-handler was not written very clean, in some versions + it was completly missing. + + +. So in `cinit-0.3` we changed it the following way: + - no extra child handlers + - handle everything in the SIG_CHILD handling function + - when sig_child is recieved do: + - check against respawn list + - if it is a respawning service, [do the following in a seperate fork?] + check whether it successfully stoped + - if yes: restart immediatly + - if no: sleep $sleep_time and then restart diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/devel/codingguideline.text b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/codingguideline.text new file mode 100644 index 00000000..d4686d8f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/codingguideline.text @@ -0,0 +1,149 @@ +Coding style +============ +Nico Schottelius +0.1, for cinit, Initial version from 2006-11-13 +:Author Initials: NS + +This document describes the coding style used in cinit. + + +Indent +------ +Indent the code by 3 spaces for each level. +Indent variable names, so the names begin all at the same position. +Use three spaces to place them. + + +Whitespaces +----------- +Where to put or avoid whitespaces (space or linefeed (lf)). + + +Spaces +~~~~~~ +- After closing brace "if(test) return 0;" +- Spaces before and after '=', '>', '<', '==', '!='', '>=', '<=', '>>', '<<', '&', '&&', '|', '||' +- After start of comment and before end of comment: '/* text */' + + + After ')', ',' + +No spaces +~~~~~~~~~ +- Within braces and code "(!test)", +- Before braces "if(code)" +- No space before ), so if '))', do not put a space after the first ')' + + +Linebreaks +~~~~~~~~~~ +This somehow includes the setting of braces (indirectly through (not) setting +spaces. + +If +^^ + +Put the if, the braces and the opening curly brace on one line, +put the closing one together with `else` and the new opening +curly brace on one line: + +------------------------------------------------------------------------------ +if(...) { + /* code */ +} else { + /* else: code */ +} +------------------------------------------------------------------------------ + +While +^^^^^ +------------------------------------------------------------------------------ +while(condition) { + /* repeat */ +} +------------------------------------------------------------------------------ + +Do-While +^^^^^^^^ +------------------------------------------------------------------------------ +do { + /* something */ +} while(running); +------------------------------------------------------------------------------ + +Switch +^^^^^^ + +------------------------------------------------------------------------------ +switch(value) { + case DO_SOMETHING: + /* code */ + break; + default: + break; +} +------------------------------------------------------------------------------ + + + +Where to put curly braces +------------------------- + +Functions +~~~~~~~~~ +Opening and closing curly braces are placed on a seperate row: + +------------------------------------------------------------------------------ +int func(int params) +{ + body +} +------------------------------------------------------------------------------ + + +If, else, while, do-while +~~~~~~~~~~~~~~~~~~~~~~~~~ +See above. + + +Comments +--------- +where necessery, do not state the obvious in comments: + + /* this code increments tmp */ + ++tmp; + +If there is more than one line containing a comment, try to adjust them +so they look the same in width and position: + +------------------------------------------------------------------------------ + int illuminati = 23; /* do not want to comment that */ + int the_answer_to_everything = 42; /* 42. */ + + [...] + + while(illuminati < the_answer_to_everything) { /* only try before them */ + overtake_world(&self); /* overtake is complex */ + } +------------------------------------------------------------------------------ + + +Header +------- +Put a header into each file, containing: + + - Date of file being put into existence (year is enough) + - Name and e-mail (obfuscated if you want) of the author(s) + - Description of the function + - Copyright statement (if not included GPLv2 or later is assumed) + + +Includes +~~~~~~~~ +Include system headers first, then place own headers. Comment the includes, +wherefore you added them. Example: + +------------------------------------------------------------------------------ +#include /* write */ +#include "cinit.h> /* cinit_ipc_* */ +------------------------------------------------------------------------------ diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/devel/communication.text b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/communication.text new file mode 100644 index 00000000..08db7666 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/communication.text @@ -0,0 +1,224 @@ +cinit - communication +===================== +Nico Schottelius +0.1 for cinit-0.3, Initial version: 2006-08-11 +:Author Initials: NS + +This document describes the internal communication of cinit. +It is thought to be read by developers. + + +Introduction +------------ +This document describes the messages used between cinit, cinit forks +and other programs that want to talk to cinit. It does NOT +describe the communication method, but only the messages sent +(for the communication method read "ipc.text"). + +Document status +~~~~~~~~~~~~~~~ +This document is still being written, it is not finished. + + +About Messages +-------------- + +Order +~~~~~ +The client always initiates the communication. +cinit will begin listening to messages directly after its start. + +Data +~~~~~ +A message always conists of a predefined structure (see src/headers/comm.h). +The byte order is host specific (may be little or big endian). + +Type +~~~~ +Messages are binary data. + +The messages +------------ +The client always uses the same structure (struct msg_client) to contact +cinit. This way cinit does not need to handle dynamic data structures. + +cinit in contrast delivers different data structures to its clients, +depending on the question. + +The questions are issued by any type of client, the internal command used is +noted in square brackets ([]). + +The answers are given by cinit. + + +Question: Start a service (and its dependencies) [CMD_START_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to start the service and its dependencies. + +The client must provide cinit with the following information: +. Name of the service to be started +. Reason why to start it +. eventually additional information (see below) + +The reason +^^^^^^^^^^ +Can be one of: +- RS_NONE (it's a manual start request) +- RS_WANTS (a currently starting service wants to start this service) +- RS_NEEDS (a currently starting service needs to start this service) + +If the reason is RS_WANTS or RS_NEEDS the client must supply the name +of the service, which wants it to be started. + + +Question: Start a service (nothing else) [CMD_START_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to start the service and which will +report the status back. + + +Question: Stop a service (and its dependencies) [CMD_STOP_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to stop the service and each service +that 'needs' it. + +This function works recursively, thus also killing those services, that +need the service that need the current service. + + +Question: Stop a service (nothing else) [CMD_STOP_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to stop this service and which will +report the status back. + + +Question: Stop a service (plus 'needs' and 'wants') [CMD_STOP_SVC_WANTS] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Same as 'Stop a service (and its dependencies)', but also stop the +services that want to have this service. + +This function works recursively, thus also killing those services, that +'need' or 'want' the service that 'need' or 'want' the current service. + + +Question: Could you change the status? [CMD_CHG_STAT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A cinit fork reports the new status of a service. + + +Question: Could you start the rescue mode? [CMD_RESCUE] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +spawn the rescue program. + + +Question: Could you halt the system? [CMD_HALT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +halt the system. + + +Question: Could you reboot the system? [CMD_REBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +reboot the system. + + +Question: Could you poweroff the system? [CMD_POWEROFF] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +poweroff the system. If poweroff is not possible, the system will +be halted. + + +Question: Could you warmboot the system? [CMD_WBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +restart itself and the bootup process. + + +Question: Could you send information about a service? [CMD_INFO] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will respond with detailled information about the service +to the client. + + +Answer: Return short status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Start a service (and its dependencies) + - Question: Start a service (nothing else) + - Question: Stop a service (and its dependencies) + - Question: Stop a service (nothing else) + - Question: Stop a service (plus 'needs' and 'wants') + - Question: Could you change the status? + +cinit only responds the status of the asked service. +The structure send is "asw_sstatus", which only include a status byte. + + +Answer: Return long status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Could you send information about a service? + + +old Messages (to be transferred into this document) +--------------------------------------------------- + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Service status: + +-------------------------------------------------------------------------------- +service status (cinit), +Nico Schottelius 2005-09-29 (Last Modified: -) +-------------------------------------------------------------------------------- + +There are service status and service returns. Service status is a status +a service can have. A service return is a value from a function that +describes what happened with the service. + +Status has ST_ prefix, return has RT_ prefix. +See cinit.h for most up to date versions. + + +ST_NEED_FAIL - this service will not be started, until the needs are started +ST_FAIL - this service failed to start +ST_UNSPEC - some unknown error. This should never happen. +ST_ERR - ??? /* tried earlier, service failed, won't retry */ + +ST_SUCCESS - service was successfully started - senseful? +ST_TMP - some instance is currently working on it +ST_ONCE - executed once sucessfully +ST_RESPAWN - service is running and respawning + +ST_TMPNOW 55 /* now you are on it - only for clients */ +#define ST_OFF 56 /* Switching service off */ + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/devel/configuring.text b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/configuring.text new file mode 100644 index 00000000..405a4d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/configuring.text @@ -0,0 +1,18 @@ +cinit/doc/devel/using-conf.text +================================ +Nico Schottelius +0.1, Initial Version from 2006-07-28 +:Author Initials: NS + +About conf/* and how to use the configurations. + +Introduction +------------ + +Who should read those documents? +-------------------------------- + +Content +------- + + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/devel/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/cross-compiling.text new file mode 100644 index 00000000..fdf70564 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/cross-compiling.text @@ -0,0 +1,36 @@ +TODO: + - merge into "Cross compiling" + +cinit - Problems that may arise +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Max open files + OS dependent + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/devel/ipc.text b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/ipc.text new file mode 100644 index 00000000..20700417 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/ipc.text @@ -0,0 +1,141 @@ +IPC - in cinit and in general +============================= +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +IPC - Inter process communication + +Introduction +------------ +This document describes the IPC methods used and/or tested for +cinit. + +It does not describe in detail, how the different methods work +(this is already done many times, there's great documentation +available online), but more the advantages and disadvantages +(especially for an init system). + +What is IPC? +~~~~~~~~~~~~ +IPC describes methods to communicate between different processes +(programs). + +IPC as described by SUSV3 (The Single UNIX Specification Version 3) +aka IEEE Std 1003.1, 2004 Edition aka POSIX only defines +MSQ, SHM and Semaphores as IPC. This document also covers +Sockets and FIFOs. + + +What is not (yet) covered by this document? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Speed of different IPC methods, different behaviour on different +unices. + + +Why do you need IPC for an init system? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +cinit IPC history + analysis +---------------------------- + + +FIFOs +~~~~~ +First in - first out +File on the filesystem +Always need two files for two way communication + +Hints +^^^^^ +The first idea for IPC in cinit was to use two FIFOs, like minit does. +Wrong assumption: +runit also uses fifos, but two fifos for each services. That way +more parallel transmissions is possible. +You have to pay attention: Maximum number of opened files! +(On Linux 2.6 this is 1024, which makes a maximum of 512 services. +This limit is most likely never reached, but you have to keep it +in mind). + +Sockets +~~~~~~~ +Clean and beautiful. They allow easy two way communication. + +If you created a socket, fs is r/o, you cannot use it, although +there is SO_REUSE. + +First method: Using memory mapped part (tmpfs). +Second method: use interal communication (pipes!) and external after +/etc/cinit/ becomes writable. + + +Current IPC configuration +-------------------------- + +- switchable (conf/ipc_method) +- each ipc implementation needs: + + ipc.h -> for global variables and ipc specific things + prefix variables with ipc_ + int cinit_ipc_init(void); -> general initialization + return 1 on success, 0 on failure + int cinit_ipc_listen(void); -> begin to listen for messages + int cinit_ipc_send(void *data) -> send data to a client + +Abstraction layer: cinit_ipc_* +------------------------------ +You can choose or even reimplement ipc code for cinit. You only have to create +a directory below src/ipc/ and create the following necessary functions: + +int cinit_ipc_init(void); +~~~~~~~~~~~~~~~~~~~~~~~~~ +Initialise the IPC functions in cinit. + + +int cinit_ipc_listen(void); +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Never ending looping function that listens for commands and passes the +retrieved command to read_command(). + +other +~~~~~~ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + + +cinit_get_data(int ident, int size, void *data) => read size bytes from client +with ident + +/***************************************************************************** + * Functions: in clients + */ + int cinit_ipc_logon(void); /* logon to init (client init) */ + int cinit_ipc_connect(void); /* connect to init */ + int cinit_ipc_csend(void *data); /* send to the server from a client */ + + +-------------------------------------------------------------------------------- +TO SORT: + +1. message queues + o clients schreiben rein + o datenpaket gross genug fuer antwort? + +2. shared memory + o client kann direkt rauslesen, was gestartet werden muss + o client kann direkt abhaengigkeiten starten, muss diese aber + eintragen + +Ausprobieren: + - Mutexe + - Message Queues + - + +Ideen: + Message queue + 1. Client geht auf die normale + als id = pid (cast!) + dann rueck via anderer queue + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/devel/lists.text b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/lists.text new file mode 100644 index 00000000..6360acb3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/lists.text @@ -0,0 +1,22 @@ +Lists in cinit-0.3 are generalized, all have the same general layout: + + - double linked + - have 'prev' and 'next' as pointers + + Add an element to a list + + /--------------------------\ + |<->first<->middle<->last<->| + + + After insert: + + /-------------------------------\ + |<->first<->middle<->last<->new<->| + + We alway have 'first'. + Need to adjust: + - new->prev = last (= first->next) + - new->next = first + - first->prev = new + - first->prev->next (= last->next) = new diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/devel/merging.other.initsystems.text b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/merging.other.initsystems.text new file mode 100644 index 00000000..0baa4789 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/merging.other.initsystems.text @@ -0,0 +1,68 @@ +TODO: + - rewrite to asciidoc + - implement a sample merge + +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not mean that he does not accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated! + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/devel/optimising.cinit b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/optimising.cinit new file mode 100644 index 00000000..4f4b5c02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/optimising.cinit @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options +2. striping + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + +The current standard for cinit is: (see CFLAGS in the Makefile). + + +2. striping + +With strip(1) you can remove specific sections of object files. +You have to find out, which ones you can remove safely +(for instance with objdump(1)). + +The current standard for cinit is: (see STRIP in the Makefile) diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/devel/testing.text b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/testing.text new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/devel/testing.text @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/logs/2006-10-25.config.wasserstoff b/software/cinit/browse_source/cinit-0.3pre10/doc/logs/2006-10-25.config.wasserstoff new file mode 100644 index 00000000..f28bd71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/logs/2006-10-25.config.wasserstoff @@ -0,0 +1,16 @@ +[17:12] wasserstoff:svc# pwd +/etc/cinit/svc +[17:12] wasserstoff:svc# ls +init +17:12] wasserstoff:svc# mkdir getty +[17:12] wasserstoff:svc# mkdir getty/2/ +[17:12] wasserstoff:svc# cd getty/2 +[17:12] wasserstoff:2# ln -s /sbin/getty on +17:12] wasserstoff:2# echo 38400 > on.params +[17:13] wasserstoff:2# echo tty2 >> on.params +[17:13] wasserstoff:2# cd ../../init +[17:14] wasserstoff:init# mkdir needs +[17:14] wasserstoff:init# cd needs +[17:14] wasserstoff:needs# ln -s ../../getty/2 getty-2 +[17:14] wasserstoff:needs# + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/logs/2006-11-22.startup-with-debug b/software/cinit/browse_source/cinit-0.3pre10/doc/logs/2006-11-22.startup-with-debug new file mode 100644 index 00000000..44121cf4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/logs/2006-11-22.startup-with-debug @@ -0,0 +1,55 @@ +[0:08] wasserstoff:cinit-0.3pre3% ./src/cinit +cinit-0.3pre3: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty:: +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2:: +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout:: +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3:: +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning:: +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount:: +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root:: +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network:: +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0:: +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback:: +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::/etc/cinit/svc/init +========> tree_exec() +/etc/cinit/svc/local-tuning/keyboard-layout:::abhaengigkeiten gestartet, exec; add wants, needsdep_needs_wants_add::/etc/cinit/svc/local-tuning/keyboard-layout add: (/etc/cinit/svc/getty/2) + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/logs/2006-11-30.startup-0.3pre5 b/software/cinit/browse_source/cinit-0.3pre10/doc/logs/2006-11-30.startup-0.3pre5 new file mode 100644 index 00000000..2ded7712 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/logs/2006-11-30.startup-0.3pre5 @@ -0,0 +1,1821 @@ +cinit-0.3pre4: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2 +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3 +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0 +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/test +gen_tree::/etc/cinit/svc/test +CAD::/etc/cinit/svc/test +CAD::NEW::/etc/cinit/svc/test::/etc/cinit/svc/test/env +gen_tree::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +START::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test +CAD::/etc/cinit/svc/init +========> tree_exec() +TEX::/etc/cinit/svc/local-tuning/keyboard-layout +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout::/etc/cinit/svc/getty/2::(A)::::/etc/cinit/svc/getty/3::(A)::::/etc/cinit/svc/local-tuning::(A):: +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout +TEX::/etc/cinit/svc/mount/root +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +DNWA::/etc/cinit/svc/mount/root::/etc/cinit/svc/mount::(A):: +DNWA::/etc/cinit/svc/mount/root +TEX::/etc/cinit/svc/network/eth0 +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +DNWA::/etc/cinit/svc/network/eth0::/etc/cinit/svc/network::(A):: +DNWA::/etc/cinit/svc/network/eth0 +TEX::/etc/cinit/svc/network/loopback +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +DNWA::/etc/cinit/svc/network/loopback::/etc/cinit/svc/network +DNWA::/etc/cinit/svc/network/loopback +TEX::/etc/cinit/svc/test/env +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +DNWA::/etc/cinit/svc/test/env::/etc/cinit/svc/test::(A):: +DNWA::/etc/cinit/svc/test/env +TEX::/etc/cinit/svc/getty/2 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/2/on +CBA::/etc/cinit/svc/getty/2/on +DNWA::/etc/cinit/svc/getty/2::/etc/cinit/svc/getty::(A):: +DNWA::/etc/cinit/svc/getty/2 +TEX::/etc/cinit/svc/getty/3 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/3/on +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +DNWA::/etc/cinit/svc/getty/3::/etc/cinit/svc/getty +DNWA::/etc/cinit/svc/getty/3 +TEX::/etc/cinit/svc/local-tuning +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +/etc/cinit/svc/local-tuning/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/local-tuning::/etc/cinit/svc/init::(A):: +DNWA::/etc/cinit/svc/local-tuning +TEX::/etc/cinit/svc/mount +::/etc/cinit/svc/mount/root +/etc/cinit/svc/mount/root: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +/etc/cinit/svc/mount/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/mount::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/mount +TEX::/etc/cinit/svc/network +::/etc/cinit/svc/network/eth0 +/etc/cinit/svc/network/eth0: <<16>> +::/etc/cinit/svc/network/loopback +/etc/cinit/svc/network/loopback: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +/etc/cinit/svc/network/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/network::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/network +TEX::/etc/cinit/svc/test +::/etc/cinit/svc/test/env +/etc/cinit/svc/test/env: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +/etc/cinit/svc/test/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/test::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/test +TEX::/etc/cinit/svc/getty +::/etc/cinit/svc/getty/2 +/etc/cinit/svc/getty/2: <<4>> +::/etc/cinit/svc/getty/3 +/etc/cinit/svc/getty/3: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +/etc/cinit/svc/getty/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/getty::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/getty +TEX::/etc/cinit/svc/init +::/etc/cinit/svc/getty +/etc/cinit/svc/getty: <<4>> +::/etc/cinit/svc/local-tuning +/etc/cinit/svc/local-tuning: <<4>> +::/etc/cinit/svc/mount +/etc/cinit/svc/mount: <<4>> +::/etc/cinit/svc/network +/etc/cinit/svc/network: <<4>> +::/etc/cinit/svc/test +/etc/cinit/svc/test: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +DNWA::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/init +=> cinit started. +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +ORC:/etc/cinit/svc/init/on.params +ORC:/etc/cinit/svc/getty/2/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test +SC::/etc/cinit/svc/test/env::FAILED::::RESPAWN::ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test + +msgrcv: Interrupted system call +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/2/on +ORC:/etc/cinit/svc/getty/2/on.params +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted +SC::/etc/cinit/svc/network/eth0::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted + +msgrcv: Interrupted system call +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. +SC::/etc/cinit/svc/init::FAILED::::RESPAWN::ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. + +msgrcv: Interrupted system call +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. +SC::/etc/cinit/svc/network/loopback::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. + +msgrcv: Interrupted system call +mount: only root can do that +SC::/etc/cinit/svc/mount/root::FAILED::::RESPAWN::ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +mount: only root can do that + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +LSP:: 32705: /etc/cinit/svc/init:1 (0) +LSP:: 32705: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32705: /etc/cinit/svc/test:65 (0) +LSP:: 32705: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32705: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32705: /etc/cinit/svc/network:65 (0) +LSP:: 32705: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32705: /etc/cinit/svc/mount:65 (0) +LSP:: 32705: /etc/cinit/svc/local-tuning:65 (0) +LSP:: 32705: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32705: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32705: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32705: /etc/cinit/svc/getty:65 (0) +LSP:: 32706: /etc/cinit/svc/init:65 (0) +LSP:: 32706: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32706: /etc/cinit/svc/test:65 (0) +LSP:: 32706: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32706: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32706: /etc/cinit/svc/network:65 (0) +LSP:: 32706: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32706: /etc/cinit/svc/mount:65 (0) +LSP:: 32706: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32706: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32706: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32706: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32706: /etc/cinit/svc/getty:65 (0) +LSP:: 32707: /etc/cinit/svc/init:65 (0) +LSP:: 32707: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32707: /etc/cinit/svc/test:65 (0) +LSP:: 32707: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32707: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32707: /etc/cinit/svc/network:65 (0) +LSP:: 32707: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32707: /etc/cinit/svc/mount:4 (32706) +LSP:: 32707: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32707: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32707: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32707: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32707: /etc/cinit/svc/getty:65 (0) +LSP:: 32708: /etc/cinit/svc/init:65 (0) +LSP:: 32708: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32708: /etc/cinit/svc/test:65 (0) +LSP:: 32708: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32708: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32708: /etc/cinit/svc/network:4 (32707) +LSP:: 32708: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32708: /etc/cinit/svc/mount:4 (32706) +LSP:: 32708: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32708: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32708: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32708: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32708: /etc/cinit/svc/getty:65 (0) +LSP:: 32709: /etc/cinit/svc/init:65 (0) +LSP:: 32709: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32709: /etc/cinit/svc/test:4 (32708) +LSP:: 32709: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32709: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32709: /etc/cinit/svc/network:4 (32707) +LSP:: 32709: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32709: /etc/cinit/svc/mount:4 (32706) +LSP:: 32709: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32709: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32709: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32709: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32709: /etc/cinit/svc/getty:65 (0) +LSP:: 32702: /etc/cinit/svc/init:4 (32710) +LSP:: 32702: /etc/cinit/svc/test/env:4 (32702) +pid: 0, m_client +LSP:: 32700: /etc/cinit/svc/init:4 (32710) +LSP:: 32700: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32700: /etc/cinit/svc/test:4 (32708) +LSP:: 32700: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32700: /etc/cinit/svc/network/eth0:16 (32700) +pid: 0, m_client +LSP:: 32710: /etc/cinit/svc/init:4 (32710) +pid: 0, m_client +LSP:: 32701: /etc/cinit/svc/init:16 (32719) +LSP:: 32701: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32701: /etc/cinit/svc/test:4 (32708) +LSP:: 32701: /etc/cinit/svc/network/loopback:4 (32701) +pid: 0, m_client +LSP:: 32699: /etc/cinit/svc/init:16 (32719) +LSP:: 32699: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32699: /etc/cinit/svc/test:4 (32708) +LSP:: 32699: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32699: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32699: /etc/cinit/svc/network:4 (32707) +LSP:: 32699: /etc/cinit/svc/mount/root:4 (32699) +pid: 0, m_client +LSP::SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz + 32698: /etc/cinit/svc/init:16 (32719) +LSP:: 32698: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32698: /etc/cinit/svc/test:4 (32708) +LSP:: 32698: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32698: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32698: /etc/cinit/svc/network:4 (32707) +LSP:: 32698: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32698: /etc/cinit/svc/mount:4 (32706) +LSP:: 32698: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32698: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32698: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +pid: 0, m_client +LSP:: 32728: /etc/cinit/svc/init:16 (32719) +LSP:: 32728: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32728: /etc/cinit/svc/test:4 (32708) +LSP:: 32728: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32728: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32728: /etc/cinit/svc/network:4 (32707) +LSP:: 32728: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32728: /etc/cinit/svc/mount:4 (32706) +LSP:: 32728: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32728: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32728: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32728) +pid: 0, m_client +LSP:: 32735: /etc/cinit/svc/init:16 (32719) +LSP:: 32735: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32735: /etc/cinit/svc/test:4 (32708) +LSP:: 32735: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32735: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32735: /etc/cinit/svc/network:4 (32707) +LSP:: 32735: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32735: /etc/cinit/svc/mount:4 (32706) +LSP:: 32735: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32735: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32735: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32735) +pid: 0, m_client +LSP:: 32742: /etc/cinit/svc/init:16 (32719) +LSP:: 32742: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32742: /etc/cinit/svc/test:4 (32708) +LSP:: 32742: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32742: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32742: /etc/cinit/svc/network:4 (32707) +LSP:: 32742: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32742: /etc/cinit/svc/mount:4 (32706) +LSP:: 32742: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32742: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32742: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32742) +pid: 0, m_client +LSP:: 32749: /etc/cinit/svc/init:16 (32719) +LSP:: 32749: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32749: /etc/cinit/svc/test:4 (32708) +LSP:: 32749: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32749: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32749: /etc/cinit/svc/network:4 (32707) +LSP:: 32749: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32749: /etc/cinit/svc/mount:4 (32706) +LSP:: 32749: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32749: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32749: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32749) +pid: 0, m_client +LSP:: 32756: /etc/cinit/svc/init:16 (32719) +LSP:: 32756: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32756: /etc/cinit/svc/test:4 (32708) +LSP:: 32756: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32756: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32756: /etc/cinit/svc/network:4 (32707) +LSP:: 32756: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32756: /etc/cinit/svc/mount:4 (32706) +LSP:: 32756: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32756: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32756: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32756) +pid: 0, m_client +LSP:: 32763: /etc/cinit/svc/init:16 (32719) +LSP:: 32763: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32763: /etc/cinit/svc/test:4 (32708) +LSP:: 32763: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32763: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32763: /etc/cinit/svc/network:4 (32707) +LSP:: 32763: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32763: /etc/cinit/svc/mount:4 (32706) +LSP:: 32763: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32763: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32763: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32763) +pid: 0, m_client +LSP:: 302: /etc/cinit/svc/init:16 (32719) +LSP:: 302: /etc/cinit/svc/test/env:16 (32717) +LSP:: 302: /etc/cinit/svc/test:4 (32708) +LSP:: 302: /etc/ciSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN:: +msgrcv: Interrupted system call +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +nit/svc/network/loopback:16 (32720) +LSP:: 302: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 302: /etc/cinit/svc/network:4 (32707) +LSP:: 302: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 302: /etc/cinit/svc/mount:4 (32706) +LSP:: 302: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 302: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 302: /etc/cinit/svc/local-tuning/keyboard-layout:16 (302) +pid: 0, m_client +LSP:: 312: /etc/cinit/svc/init:16 (32719) +LSP:: 312: /etc/cinit/svc/test/env:16 (32717) +LSP:: 312: /etc/cinit/svc/test:4 (32708) +LSP:: 312: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 312: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 312: /etc/cinit/svc/network:4 (32707) +LSP:: 312: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 312: /etc/cinit/svc/mount:4 (32706) +LSP:: 312: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 312: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 312: /etc/cinit/svc/local-tuning/keyboard-layout:16 (312) +pid: 0, m_client +LSP:: 326: /etc/cinit/svc/init:16 (32719) +LSP:: 326: /etc/cinit/svc/test/env:16 (32717) +LSP:: 326: /etc/cinit/svc/test:4 (32708) +LSP:: 326: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 326: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 326: /etc/cinit/svc/network:4 (32707) +LSP:: 326: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 326: /etc/cinit/svc/mount:4 (32706) +LSP:: 326: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 326: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 326: /etc/cinit/svc/local-tuning/keyboard-layout:16 (326) +pid: 0, m_client +LSP:: 333: /etc/cinit/svc/init:16 (32719) +LSP:: 333: /etc/cinit/svc/test/env:16 (32717) +LSP:: 333: /etc/cinit/svc/test:4 (32708) +LSP:: 333: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 333: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 333: /etc/cinit/svc/network:4 (32707) +LSP:: 333: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 333: /etc/cinit/svc/mount:4 (32706) +LSP:: 333: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 333: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 333: /etc/cinit/svc/local-tuning/keyboard-layout:16 (333) +pid: 0, m_client +LSP:: 340: /etc/cinit/svc/init:16 (32719) +LSP:: 340: /etc/cinit/svc/test/env:16 (32717) +LSP:: 340: /etc/cinit/svc/test:4 (32708) +LSP:: 340: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 340: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 340: /etc/cinit/svc/network:4 (32707) +LSP:: 340: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 340: /etc/cinit/svc/mount:4 (32706) +LSP:: 340: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 340: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 340: /etc/cinit/svc/local-tuning/keyboard-layout:16 (340) +pid: 0, m_client +LSP:: 347: /etc/cinit/svc/init:16 (32719) +LSP:: 347: /etc/cinit/svc/test/env:16 (32717) +LSP:: 347: /etc/cinit/svc/test:4 (32708) +LSP:: 347: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 347: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 347: /etc/cinit/svc/network:4 (32707) +LSP:: 347: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 347: /etc/cinit/svc/mount:4 (32706) +LSP:: 347: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 347: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 347: /etc/cinit/svc/local-tuning/keyboard-layout:16 (347) +pid: 0, m_client +LSP:: 354: /etc/cinit/svc/init:16 (32719) +LSP:: 354: /etc/cinit/svc/test/env:16 (32717) +LSP:: 354: /etc/cinit/svc/test:4 (32708) +LSP:: 354: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 354: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 354: /etc/cinit/svc/network:4 (32707) +LSP:: 354: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 354: /etc/cinit/svc/mount:4 (32706) +LSP:: 354: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 354: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 354: /etc/cinit/svc/local-tuning/keyboard-layout:16 (354) +pid: 0, m_client +LSP:: 372: /etc/cinit/svc/init:16 (32719) +LSP:: 372: /etc/cinit/svc/test/env:16 (32717) +LSP:: 372: /etc/cinit/svc/test:4 (32708) +LSP:: 372: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 372: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 372: /etc/cinit/svc/network:4 (32707) +LSP:: 372: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 372: /etc/cinit/svc/mount:4 (32706) +LSP:: 372: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 372: /etc/cinit/svc/getty/3:4 (327SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +04) +LSP:: 372: /etc/cinit/svc/local-tuning/keyboard-layout:16 (372) +pid: 0, m_client +LSP:: 379: /etc/cinit/svc/init:16 (32719) +LSP:: 379: /etc/cinit/svc/test/env:16 (32717) +LSP:: 379: /etc/cinit/svc/test:4 (32708) +LSP:: 379: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 379: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 379: /etc/cinit/svc/network:4 (32707) +LSP:: 379: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 379: /etc/cinit/svc/mount:4 (32706) +LSP:: 379: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 379: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 379: /etc/cinit/svc/local-tuning/keyboard-layout:16 (379) +pid: 0, m_client +LSP:: 386: /etc/cinit/svc/init:16 (32719) +LSP:: 386: /etc/cinit/svc/test/env:16 (32717) +LSP:: 386: /etc/cinit/svc/test:4 (32708) +LSP:: 386: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 386: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 386: /etc/cinit/svc/network:4 (32707) +LSP:: 386: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 386: /etc/cinit/svc/mount:4 (32706) +LSP:: 386: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 386: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 386: /etc/cinit/svc/local-tuning/keyboard-layout:16 (386) +pid: 0, m_client +LSP:: 393: /etc/cinit/svc/init:16 (32719) +LSP:: 393: /etc/cinit/svc/test/env:16 (32717) +LSP:: 393: /etc/cinit/svc/test:4 (32708) +LSP:: 393: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 393: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 393: /etc/cinit/svc/network:4 (32707) +LSP:: 393: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 393: /etc/cinit/svc/mount:4 (32706) +LSP:: 393: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 393: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 393: /etc/cinit/svc/local-tuning/keyboard-layout:16 (393) +pid: 0, m_client +LSP:: 400: /etc/cinit/svc/init:16 (32719) +LSP:: 400: /etc/cinit/svc/test/env:16 (32717) +LSP:: 400: /etc/cinit/svc/test:4 (32708) +LSP:: 400: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 400: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 400: /etc/cinit/svc/network:4 (32707) +LSP:: 400: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 400: /etc/cinit/svc/mount:4 (32706) +LSP:: 400: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 400: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 400: /etc/cinit/svc/local-tuning/keyboard-layout:16 (400) +pid: 0, m_client +LSP:: 407: /etc/cinit/svc/init:16 (32719) +LSP:: 407: /etc/cinit/svc/test/env:16 (32717) +LSP:: 407: /etc/cinit/svc/test:4 (32708) +LSP:: 407: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 407: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 407: /etc/cinit/svc/network:4 (32707) +LSP:: 407: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 407: /etc/cinit/svc/mount:4 (32706) +LSP:: 407: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 407: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 407: /etc/cinit/svc/local-tuning/keyboard-layout:16 (407) +pid: 0, m_client +LSP:: 414: /etc/cinit/svc/init:16 (32719) +LSP:: 414: /etc/cinit/svc/test/env:16 (32717) +LSP:: 414: /etc/cinit/svc/test:4 (32708) +LSP:: 414: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 414: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 414: /etc/cinit/svc/network:4 (32707) +LSP:: 414: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 414: /etc/cinit/svc/mount:4 (32706) +LSP:: 414: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 414: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 414: /etc/cinit/svc/local-tuning/keyboard-layout:16 (414) +pid: 0, m_client +LSP:: 421: /etc/cinit/svc/init:16 (32719) +LSP:: 421: /etc/cinit/svc/test/env:16 (32717) +LSP:: 421: /etc/cinit/svc/test:4 (32708) +LSP:: 421: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 421: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 421: /etc/cinit/svc/network:4 (32707) +LSP:: 421: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 421: /etc/cinit/svc/mount:4 (32706) +LSP:: 421: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 421: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 421: /etc/cinit/svc/local-tuning/keyboard-layout:16 (421) +pid: 0, m_client +LSP:: 428: /etc/cinit/svc/init:16 (32719) +LSP:: 428: /etc/cinit/svc/test/env:16 (32717) +LSP:: 428: /etc/cinit/svc/test:4 (32708) +LSP:: 428: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 428: /etc/cinit/svc/network/eth0:16SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call + (32718) +LSP:: 428: /etc/cinit/svc/network:4 (32707) +LSP:: 428: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 428: /etc/cinit/svc/mount:4 (32706) +LSP:: 428: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 428: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 428: /etc/cinit/svc/local-tuning/keyboard-layout:16 (428) +pid: 0, m_client +LSP:: 435: /etc/cinit/svc/init:16 (32719) +LSP:: 435: /etc/cinit/svc/test/env:16 (32717) +LSP:: 435: /etc/cinit/svc/test:4 (32708) +LSP:: 435: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 435: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 435: /etc/cinit/svc/network:4 (32707) +LSP:: 435: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 435: /etc/cinit/svc/mount:4 (32706) +LSP:: 435: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 435: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 435: /etc/cinit/svc/local-tuning/keyboard-layout:16 (435) +pid: 0, m_client +LSP:: 452: /etc/cinit/svc/init:16 (32719) +LSP:: 452: /etc/cinit/svc/test/env:16 (32717) +LSP:: 452: /etc/cinit/svc/test:4 (32708) +LSP:: 452: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 452: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 452: /etc/cinit/svc/network:4 (32707) +LSP:: 452: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 452: /etc/cinit/svc/mount:4 (32706) +LSP:: 452: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 452: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 452: /etc/cinit/svc/local-tuning/keyboard-layout:16 (452) +pid: 0, m_client +LSP:: 459: /etc/cinit/svc/init:16 (32719) +LSP:: 459: /etc/cinit/svc/test/env:16 (32717) +LSP:: 459: /etc/cinit/svc/test:4 (32708) +LSP:: 459: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 459: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 459: /etc/cinit/svc/network:4 (32707) +LSP:: 459: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 459: /etc/cinit/svc/mount:4 (32706) +LSP:: 459: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 459: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 459: /etc/cinit/svc/local-tuning/keyboard-layout:16 (459) +pid: 0, m_client +LSP:: 466: /etc/cinit/svc/init:16 (32719) +LSP:: 466: /etc/cinit/svc/test/env:16 (32717) +LSP:: 466: /etc/cinit/svc/test:4 (32708) +LSP:: 466: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 466: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 466: /etc/cinit/svc/network:4 (32707) +LSP:: 466: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 466: /etc/cinit/svc/mount:4 (32706) +LSP:: 466: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 466: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 466: /etc/cinit/svc/local-tuning/keyboard-layout:16 (466) +pid: 0, m_client +LSP:: 473: /etc/cinit/svc/init:16 (32719) +LSP:: 473: /etc/cinit/svc/test/env:16 (32717) +LSP:: 473: /etc/cinit/svc/test:4 (32708) +LSP:: 473: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 473: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 473: /etc/cinit/svc/network:4 (32707) +LSP:: 473: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 473: /etc/cinit/svc/mount:4 (32706) +LSP:: 473: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 473: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 473: /etc/cinit/svc/local-tuning/keyboard-layout:16 (473) +pid: 0, m_client +LSP:: 480: /etc/cinit/svc/init:16 (32719) +LSP:: 480: /etc/cinit/svc/test/env:16 (32717) +LSP:: 480: /etc/cinit/svc/test:4 (32708) +LSP:: 480: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 480: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 480: /etc/cinit/svc/network:4 (32707) +LSP:: 480: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 480: /etc/cinit/svc/mount:4 (32706) +LSP:: 480: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 480: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 480: /etc/cinit/svc/local-tuning/keyboard-layout:16 (480) +pid: 0, m_client +LSP:: 487: /etc/cinit/svc/init:16 (32719) +LSP:: 487: /etc/cinit/svc/test/env:16 (32717) +LSP:: 487: /etc/cinit/svc/test:4 (32708) +LSP:: 487: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 487: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 487: /etc/cinit/svc/network:4 (32707) +LSP:: 487: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 487: /etc/cinit/svc/mount:4 (32706) +LSP:: 487: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 487: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 487: /etc/cinit/svc/local-tuning/keyboard-layout:16 (487) +pid: 0, mLoading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +_client +LSP:: 494: /etc/cinit/svc/init:16 (32719) +LSP:: 494: /etc/cinit/svc/test/env:16 (32717) +LSP:: 494: /etc/cinit/svc/test:4 (32708) +LSP:: 494: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 494: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 494: /etc/cinit/svc/network:4 (32707) +LSP:: 494: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 494: /etc/cinit/svc/mount:4 (32706) +LSP:: 494: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 494: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 494: /etc/cinit/svc/local-tuning/keyboard-layout:16 (494) +pid: 0, m_client +LSP:: 501: /etc/cinit/svc/init:16 (32719) +LSP:: 501: /etc/cinit/svc/test/env:16 (32717) +LSP:: 501: /etc/cinit/svc/test:4 (32708) +LSP:: 501: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 501: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 501: /etc/cinit/svc/network:4 (32707) +LSP:: 501: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 501: /etc/cinit/svc/mount:4 (32706) +LSP:: 501: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 501: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 501: /etc/cinit/svc/local-tuning/keyboard-layout:16 (501) +pid: 0, m_client +LSP:: 510: /etc/cinit/svc/init:16 (32719) +LSP:: 510: /etc/cinit/svc/test/env:16 (32717) +LSP:: 510: /etc/cinit/svc/test:4 (32708) +LSP:: 510: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 510: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 510: /etc/cinit/svc/network:4 (32707) +LSP:: 510: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 510: /etc/cinit/svc/mount:4 (32706) +LSP:: 510: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 510: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 510: /etc/cinit/svc/local-tuning/keyboard-layout:16 (510) +pid: 0, m_client +LSP:: 520: /etc/cinit/svc/init:16 (32719) +LSP:: 520: /etc/cinit/svc/test/env:16 (32717) +LSP:: 520: /etc/cinit/svc/test:4 (32708) +LSP:: 520: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 520: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 520: /etc/cinit/svc/network:4 (32707) +LSP:: 520: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 520: /etc/cinit/svc/mount:4 (32706) +LSP:: 520: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 520: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 520: /etc/cinit/svc/local-tuning/keyboard-layout:16 (520) +pid: 0, m_client +LSP:: 533: /etc/cinit/svc/init:16 (32719) +LSP:: 533: /etc/cinit/svc/test/env:16 (32717) +LSP:: 533: /etc/cinit/svc/test:4 (32708) +LSP:: 533: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 533: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 533: /etc/cinit/svc/network:4 (32707) +LSP:: 533: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 533: /etc/cinit/svc/mount:4 (32706) +LSP:: 533: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 533: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 533: /etc/cinit/svc/local-tuning/keyboard-layout:16 (533) +pid: 0, m_client +LSP:: 541: /etc/cinit/svc/init:16 (32719) +LSP:: 541: /etc/cinit/svc/test/env:16 (32717) +LSP:: 541: /etc/cinit/svc/test:4 (32708) +LSP:: 541: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 541: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 541: /etc/cinit/svc/network:4 (32707) +LSP:: 541: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 541: /etc/cinit/svc/mount:4 (32706) +LSP:: 541: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 541: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 541: /etc/cinit/svc/local-tuning/keyboard-layout:16 (541) +pid: 0, m_client +LSP:: 548: /etc/cinit/svc/init:16 (32719) +LSP:: 548: /etc/cinit/svc/test/env:16 (32717) +LSP:: 548: /etc/cinit/svc/test:4 (32708) +LSP:: 548: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 548: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 548: /etc/cinit/svc/network:4 (32707) +LSP:: 548: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 548: /etc/cinit/svc/mount:4 (32706) +LSP:: 548: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 548: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 548: /etc/cinit/svc/local-tuning/keyboard-layout:16 (548) +pid: 0, m_client +LSP:: 555: /etc/cinit/svc/init:16 (32719) +LSP:: 555: /etc/cinit/svc/test/env:16 (32717) +LSP:: 555: /etc/cinit/svc/test:4 (32708) +LSP:: 555: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 555: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 555: /etc/cinit/svc/network:4 (32707) +LSP:: 555: /etc/cinit/svSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/man/cinit.text b/software/cinit/browse_source/cinit-0.3pre10/doc/man/cinit.text new file mode 100644 index 00000000..bd9bd0ab --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/man/cinit.text @@ -0,0 +1,64 @@ +cinit(8) +======== +Nico Schottelius + + +NAME +---- +cinit - fast executing, small and simple init with support for profiles + + +SYNOPSIS +-------- +'cinit' [cprofile:name_of_profile] + + +DESCRIPTION +----------- +Cinit is an init system. It normally gets started by the operating +system (Linux, *BSD, ...) directly after the kernel has been loaded. + +Cinit uses parallel execution of services as far as possible. To +ensure the correct boot order you need to specify which service +'needs' or 'wants' another service. The resulting dependency tree +is used at startup to determine which service to start when. + +This may result in different boot orders depending on whether +one service is one time faster or slower. Due to the dependencies +this is not a problem, but allowed and wished per design. + +For more information refer to the texinfo or html documentation. + + +OPTIONS +------- + +cprofile:name_of_profile:: + If specified, cinit will start the named profile instead of the + standard 'init' service + + +BUGS +---- +cinit is not tested nor documented very well currently. + +The porting to other OS is not finished yet (mainly missing +system level binaries: shutdown, reboot, halt). + +Both is work in progress. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + + +COPYING +------- +Copyright \(C) 2006 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/man/cservice b/software/cinit/browse_source/cinit-0.3pre10/doc/man/cservice new file mode 100644 index 00000000..26a472b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/man/cservice @@ -0,0 +1,37 @@ +WARNING: + cservice is not yet ready for cinit-0.3! + +-------------------------------------------------------------------------------- +cservice, +Nico Schottelius, 2005-06-10 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +cservice - control cinit + +cservice -[phearsu] + -e - (ein) start a service (including all needed dependencies) + -a - (aus) stop a respawing service, don't care about other services + + -r - reboot + -h - halt + -p - poweroff (on some systems the same as halt) + -s - reScue mode - only a shell + + -u - update: hot reboot - shutdown system and execute /sbin/cinit + +A service may be specified either as relative or as absolute path. + +-h, -p, -r, -s and -u need the "Magic Word" to do their work: "thilo" + +-------------------------------------------------------------------------------- + +Some examples: + + cservice -e /etc/cinit/getty/8 # fire up getty/8 + cd /etc/cinit/getty; cservice -a ./8 # shut down getty/8 + cservice -h thilo # halt + cservice -r thilo # reboot + cservice -s thilo # rescue + cservice -u thilo # update + +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/man/halt.kill.text b/software/cinit/browse_source/cinit-0.3pre10/doc/man/halt.kill.text new file mode 100644 index 00000000..4a31e257 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/man/halt.kill.text @@ -0,0 +1,46 @@ +halt.kill(8) +============ +Nico Schottelius + + +NAME +---- +halt.kill - Halts systems running cinit through a kill call + +SYNOPSIS +-------- +'halt.kill' + + +DESCRIPTION +----------- +You normally halt your system through 'cmd'. If cmd is unavailable or +the IPC system has problem there is still the possibilty to halt +it through a signal. See 'src/include/signals.h' for more details which +signals are used. + +OPTIONS +------- + +none:: + No options are used, If you execute halt.kill, your system will be halted. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + +SEE ALSO +--------- +cmd(8) + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/man/poweroff.kill.text b/software/cinit/browse_source/cinit-0.3pre10/doc/man/poweroff.kill.text new file mode 100644 index 00000000..62807ba1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/man/poweroff.kill.text @@ -0,0 +1,47 @@ +poweroff.kill(8) +================ +Nico Schottelius + + +NAME +---- +poweroff.kill - Halts and powers off systems running cinit through a kill call + +SYNOPSIS +-------- +'poweroff.kill' + + +DESCRIPTION +----------- +You normally poweroff your system through 'cmd'. If cmd is unavailable or +the IPC system has problem there is still the possibilty to poweroff +it through a signal. See 'src/include/signals.h' for more details which +signals are used. + +OPTIONS +------- + +none:: + No options are used, If you execute poweroff.kill, your system will be + powered off. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + +SEE ALSO +--------- +cmd(8), halt.kill(8), reboot.kill(8) + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/man/reboot.kill.text b/software/cinit/browse_source/cinit-0.3pre10/doc/man/reboot.kill.text new file mode 100644 index 00000000..a748553e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/man/reboot.kill.text @@ -0,0 +1,47 @@ +reboot.kill(8) +============== +Nico Schottelius + + +NAME +---- +reboot.kill - Reboots systems running cinit through a kill call + +SYNOPSIS +-------- +'reboot.kill' + + +DESCRIPTION +----------- +You normally reboot your system through 'cmd'. If cmd is unavailable or +the IPC system has problem there is still the possibilty to reboot +it through a signal. See 'src/include/signals.h' for more details which +signals are used. + +OPTIONS +------- + +none:: + No options are used, If you execute reboot.kill, your system will be + rebooted. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + +SEE ALSO +--------- +cmd(8), halt.kill(8), poweroff.kill(8) + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/FAQ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/FAQ new file mode 100644 index 00000000..53494f73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile:home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/NEW_using_cinit_freebsd b/software/cinit/browse_source/cinit-0.3pre10/doc/user/NEW_using_cinit_freebsd new file mode 100644 index 00000000..05499166 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/NEW_using_cinit_freebsd @@ -0,0 +1,21 @@ +11:33 < mux> from sys/kern/init_main.c: +11:33 < telmich> mux: that's true; I just tried with linux and I tell the + bootloader, who tells the kernel then +11:33 < mux> static char init_path[MAXPATHLEN] = +11:33 < mux> #ifdef INIT_PATH __XSTRING(INIT_PATH); +11:33 < mux> #else +"/sbin/init:/sbin/oinit:/sbin/init.bak:/rescue/init:/stand/sysinstall"; +11:33 < mux> #endif +11:33 < mux> but you give a loader tunable +11:34 < mux> if ((var = getenv("init_path")) != NULL) { +11:34 < mux> strlcpy(init_path, var, sizeof(init_path)); +11:34 < mux> freeenv(var); +11:34 < mux> } +11:34 < mux> here you are +11:34 < telmich> ahh, that's good +11:34 * telmich has to try cinit on freebsd the next days :-) +12:34 < mux> (s/you give/you can give/) +11:35 < mux> so, simply init_path)="/sbin/cinit" in /boot/loader.conf should do + it +11:35 < mux> minus the typo + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/README.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/README.text new file mode 100644 index 00000000..3467ba63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/README.text @@ -0,0 +1,21 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit user documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +People using cinit. + +Content +------- + +hints.text: Some general hints +tuning.text: Some tuning hints diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/TODO b/software/cinit/browse_source/cinit-0.3pre10/doc/user/TODO new file mode 100644 index 00000000..6044e97a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/TODO @@ -0,0 +1,4 @@ +All the content in this file is unsorted. Reading may harm you. + +Confdir: /etc/cinit/conf/ +panic: /etc/cinit/conf/panic, /etc/cinit/conf/panic.params diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/compiles.on.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/compiles.on.text new file mode 100644 index 00000000..ad467d38 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/compiles.on.text @@ -0,0 +1,19 @@ +cinit - known configurations cinit compiles on +============================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-12-08 +:Author Initials: NS + + +This document lists all the configuration known to me on that +cinit compiles. If you compiled cinit with another configuration, +drop a mail to nico-cinit-report [at] schottelius.org. + +The list +-------- +cinit is known to compile on: + +- x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +- x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/conf-system.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/conf-system.text new file mode 100644 index 00000000..600112c3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/conf-system.text @@ -0,0 +1,34 @@ +The conf/ system +================= +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-08 +:Author Initials: NS + +This documentes describes the configuration system used by cinit. + + +What is the conf/ system? +------------------------- +The conf/ system is the configuration system for the cinit build. +The first line of each file below conf/ is a configuration value +with the name of the file: + +---------------------------------------------------------------------- +[9:00] hydrogenium:cinit-0.3pre6% head -n 1 conf/cc +gcc +---------------------------------------------------------------------- + +This means that the variable "cc" has the value "gcc". + + +What is the reason for conf/? +----------------------------- +I needed a small and simple configuration system, which may be included +in the full build process. + + +Is conf/ also usable for other projects? +---------------------------------------- +In its current state conf/ is just a prototype, with which I experiement +a lot. But it is possible that the future aim is to provide a simele +configuration and autoconfiguraton mechanism. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/configuring.cinit.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/configuring.cinit.text new file mode 100644 index 00000000..c04da745 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/configuring.cinit.text @@ -0,0 +1,327 @@ +cinit - Configuring +=================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2005-05-28 +:Author Initials: NS + + +This documentes describes how to configure cinit. +You should already have cinit installed, otherwise read +"cinit - Installing" first. + + +General configuration layout +---------------------------- +Cinit uses the <<>> configuration syntax, which means that +the configuration is kept as simple as possible. The following +sections will show you what that means. + +The cinit configuration consists of +- a special configuration directory +- and the service definitions. + +Paths +----- +Normally the configuration is kept below '/etc/cinit' +(though you can change this before compiling in conf/cinit_dir). + +The full description of the path layout of cinit and how to change it +can be found in 'paths.text'. + +Conf +---- +The special configuration directory is normally called `conf/` +(defined at compile-time in `conf/c_confdir`). + +For all executables into this directory apply the same rules as mentioned +below in "Execution: on and off": Appened .params specifies parameters, +appended .env specifies environment. + + +conf/last +~~~~~~~~~ +This is the last part that will be executed. After it has finished, cinit +will halt, power-off or reboot your machine. + +You can use it for whatever task to accomplish (as most things of cinit), but +the idea behind it is to use it for cleaning up things that are not covered +by the off parts of the services. This maybe swapoff (although this is an unecessary +call before poweroff, imho and even if needed this could be handled within the +off part of the same services that enabled it) or `umount -a` for everything +manually mounted and not unmounted yet. + + +conf/sleep_before_kill +~~~~~~~~~~~~~~~~~~~~~~ +This file contains just one line: The number of seconds to sleep after SIGTERM was sent +to every remaining process before sending SIGKILL to all processes. If this file +is unreadable or not existent, cinit will fall back to the value compiled in +(which was specified at build time in conf/sleep_kill). + + +Services +-------- +cinit is service based. Other init systems use shell +scripts (for instance /etc/rc, /etc/init.d/rc as starters +and /etc/rc*.d/* as "service definitions"). + +'current-init-problems.text' explains why cinit does *not* +use nor recommends the use of shell scripts. + +A service is simply a directory. This directory contains information about + +- what should be started when starting the service +- what should be started when stoping the service +- what dependencies the service has +- whether to restart it, when it exits + + +Full service definition +~~~~~~~~~~~~~~~~~~~~~~~ +. A service consists of + - a base directory (like /etc/cinit/svc/mount/root/) + - dependency configuration (`needs` and `wants`) + - start/stop programs (`on` and `off`) + - respawn flag (`respawn`) + + +Base directory +^^^^^^^^^^^^^^ +You can create the base directory everywhere below /etc/cinit/svc. +You may and it is recommened to create a directory structure +(see 'example-directory-structure.text'). + + +Dependencies +^^^^^^^^^^^^ +The subdirectories + +- `wants` +- and `needs` + +contain the dependencies for the service. + +Read 'dependencies.text' for more information. + + +Respawning +^^^^^^^^^^^ +If you create the empty file 'respawn' (adjustable via conf/c_respawn) +the service will be restarted after it exits. + +-------------------------------------------------------------------------------- +# Tell cinit to respawn the eth0.udhcpc service +touch /etc/cinit/svc/network/eth0.udhcpc +-------------------------------------------------------------------------------- + + +Execution: on and off +^^^^^^^^^^^^^^^^^^^^^ +When a service starts, the file `on` in the service +directory is executed. It is ok, if this file is not existing. +When a service stops, the file `off` in the service +directory is executed. + +The file with the extension `.params` is used to specify the arguments +to pass. Each line contains exactly one parameter. + +The file with the extension `.env` is used to specify the environment +to pass. Each line contains exactly one variable definition in the form +'variable=value'. + +. The following six files are possibly used on starting/stoping: + - ./on (the program called on startup) + - ./on.params (the parameters to pass to the program, see conf/c_params) + - ./on.env (the environment to pass to the program, see conf/c_env) + - ./off (the program called when shutting down the service) + - ./off.params (the parameters to pass to the program) + - ./on.env (the environment to pass to the program) + +Some examples: +---------------------------------------------------------------------- + /etc/cinit/svc/init: + ./wants -> services it wants + ./needs -> services it needs +---------------------------------------------------------------------- + +A more or less normal service without dependencies: +---------------------------------------------------------------------- + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it +---------------------------------------------------------------------- + +A service with all options used: +---------------------------------------------------------------------- + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn service + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting +---------------------------------------------------------------------- + + +Profiles +-------- +Profiles allow you to define different startup scenarios and select +those before bootup. Read 'profiles.text' for more information about +profiles. + +The profile support was added in cinit-0.0.6. + + +Service execution order +------------------------ +The first service executed is '/etc/cinit/svc/init'. +If a profile is selected '/etc/cinit/svc/`profilename`' is used +instead. + +Cinit builds a full service dependency tree through the `wants` +and `needs` of the first service and its dependencies +(recursively). + +After the tree is generated, cinit begins to start the services +at the end of the tree. These services have no `needs`. + +If you manage to create circular dependencies your system will not startup. +You can verify the correctness your configuration with the script +`cinit.check.config`. + + +Hints +----- + +Service executing / parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The on and off files can and should be links to the programs you want +to execute instead of a shell script. This way you save yourself the overhead +of loading a shell. The speed enhancement is very big if you have shells +like bash installed as /bin/sh (which is *not* senseful anyway, I would +recommend dash or ksh for /bin/sh). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. +The service could look like this: +---------------------------------------------------------------------- + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). +---------------------------------------------------------------------- + + +Daemons +~~~~~~~~ +Daemons are programs that go away to the background (using fork()) after +start). + +The fork-away strategy seems to be some illness introduced by traditional +init systems, that are dependent on the fact, that a process exits on +startup. + +cinit in contrast remembers the process ID (pid) of the services it +restarts (those with `respawn` enabled). + +So when the daemon fork()s away and the parent process exits it looks to +cinit like the watched service died and cinit will restart it. + +Happily, most processes can be taught not to go to background. +Some processes even do that by default and very less are broken that +one cannot tell them not to background. + +A list of known processes that are normally used in respawn +processes can be found in 'daemons.backgrounding.text'. + +If your process is not listed in `daemons.backgrounding.text', +check the documentation of your daemon program, if may have a +switch to disable forking. + +But, with a small hack it is even possible to respawn those broken processes: + +We start a program, that + - starts the daemon, + - monitors the pidfile of the daemon, + - waits until that pid does not exist anymore + - and then exits. + +Such a program is included into the cinit source tarball, +though I do not recommend using it. The better way is to implement +non forking mode into your process. + +The name of the program (actually a shell script) is 'cinit.wait.for.daemon'. + +You can use it as the `on` part of a service and add + + - the pidfile, + - the process binary + - and the process parameters + +to `on.params`. + +Thus the service could look like: +---------------------------------------------------------------------- + svc-broken-daemon/ + on -> /sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL +---------------------------------------------------------------------- +(This is not a so good example, because Apache supports non-forking mode). + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + + +Logging +~~~~~~~ +Currently there's no special logging support. +When a process writes to stdout, it will be displayed on +the same stdout cinit is connected to. + +In newer versions cinit (perhaps cinit-0.4) will also support logging +stdout and stderr of a service. + + +How to migrate your old init-system configuration to cinit +---------------------------------------------------------- +This is highly dependent on your actual system, your system +configuration and your own ideas. + +Cinit is able to replace all other init systems I know about. + +So the only question is "How to do it?". + +There are some hints on how to migrate to cinit in general and also +some os specific help in the file 'migrating-init-systems.text', + + +Debugging the configuration +---------------------------- +Use `ls -lR /etc/cinit` or one of the tools found in contrib+tools/. + + +Examples +-------- +Currently there are some example configurations available +at http://unix.schottelius.org/cinit/samples/cinit-0.3/, sorted +by host on which they are created. + +In near future, there will also be a file name configuration.example.text, +which will lead you to a sample configuration. + + +References +---------- ++ [[[cconfig]]] http://nico.schotteli.us/papers/linux/cconfig/ diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/cross-compiling.text new file mode 100644 index 00000000..67208534 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/cross-compiling.text @@ -0,0 +1,6 @@ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/current-init-problems.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/current-init-problems.text new file mode 100644 index 00000000..529c2f84 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/current-init-problems.text @@ -0,0 +1,170 @@ +Currently available init systems and their problems +=================================================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-11 +:Author Initials: NS + + +This document describes some other init systems, especially +the "traditional" ones and describes their problems. + + +Introduction +------------- +some history, sysv, bsd, + +minit, runit, initng, cinit, upstart + + +Implementations +--------------- +List of current implementations as of 2006-12-12. + + +Linux Sys-V-Init +~~~~~~~~~~~~~~~~ +Debian Sid + +/etc/inittab + +"First script" /etc/init.d/rcS (specified +/etc/init.d/rcS: Bourne shell script text executable + +Runlevels: 0-6, different states + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% /sbin/runlevel +N 2 +-------------------------------------------------------------------------------- + + +Depending on runlevel, the init calls /etc/init.d/rc $runlevel. + +This is manually configured in /etc/inittab + +/etc/init.d/rc: Bourne shell script text executable + +/etc/init.d/rc + +Calls symlinks in /etc/rc?.d. Each runlevel a directory: + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% ls -ld /etc/rc*.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc0.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc1.d +drwxr-xr-x 3 root root 4096 2006-12-01 16:56 /etc/rc2.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc3.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc4.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc5.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc6.d +drwxr-xr-x 2 root root 4096 2006-11-28 23:17 /etc/rcS.d +-------------------------------------------------------------------------------- + + + +rlmanager: sys-v-init hack +~~~~~~~~~~~~~~~~~~~~~~~~~~ +rlmanager: one script to be executed, sources +simply configuration + +Gentoo Linux +~~~~~~~~~~~~ +no content yet + +BSD init +~~~~~~~~ +Analyzed on FreeBSD. +/etc/rc +/etc/rc.d/ system services +/usr/local/etc/rc.d/ user installed services +Scripts may use values from /etc/rc.conf to check whether +they should be started or not. + +runit +~~~~~ +Three stages: Script1, dependencies, Script3 + + +Initng +~~~~~~ +no content yet + +minit +~~~~~ +Focus on being small. Needs libowfat. +Log support through pipe. + + + + + +Problems overview +----------------- + +Scripts +~~~~~~~ +Scripts are slow. Startup time. Execution time. Unecessary overhead. + + +Sequential startup +~~~~~~~~~~~~~~~~~~ +In the 'old' init systems there is no support of parallel execution. +So if one services hangs at startup, the whole system has to wait +(for instance a dhcp request). In the worst case this may result in +a non-booting system. Systems with dependencies can start the gettys +for login before, in parallel to or even after blocking services are +started. The fact, that they *are* started means you can interact with +the system, you can end looping or blocking services. + +So sequential startup may not only be the reason for a pretty +slow system, but also for an unmaintainable one. + +Unecessary services +~~~~~~~~~~~~~~~~~~~ +Many implementations try to do whatever-is-possible on boot, trying to +cover every possible and impossible situation. + +Portmap without any program that needs it. + +Starting all installed services per default (Debian) vs. let the +user choose what to start (Gentoo). + +Nicht entfernte Altlasten ab und zu. + + +No dependencies +~~~~~~~~~~~~~~~ +Systems without dependencies may result in a chaos state after booting up. + + +Only soft dependencies +~~~~~~~~~~~~~~~~~~~~~~~ +The dependencies are used, but because of soft dependencies, services +may be started although their dependency is missing. + + +Parallel init system debugging +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In contrast to the old init systems, parallel executing init systems +are much harder to debug. If the starting init systems does not have +proper logging / reporting to the user (like cinit-0.2 has), the user +may never find out, what happened and why. + + +Parallel / dependency checking init system with variable boot order +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The boot order may be different each time you boot and is dependent +on the success or failure of services. This way you can never tell +exactly how and in which order they are executed. On multiprocessor +machines, where processes may be truely executed in parallel, there +is no order anymore, but there are n orders on n processors. + +To solve this issue, init systems which support parallel execution +should ship with some testing tools, that simulate a startup. + +cinit will ship with such a tool in cinit-0.4. + + +References +---------- +no content yet diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/daemons.backgrounding.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/daemons.backgrounding.text new file mode 100644 index 00000000..1218f9a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/daemons.backgrounding.text @@ -0,0 +1,83 @@ +cinit - Daemons backgrounding +============================= +Nico Schottelius +0.1, for cinit 0.3, Initial versinon from 2005-06-12 + + +This document describes the backgrounding process and how to disable it. + + + +Definition +----------- +A daemon is a program which runs in the background. +Running in the background means you cannot access the process +directly (like you can press a key in a shell). + + +Daemons and cinit +------------------ +cinit normally watches system services and restarts them +(`respawn` flag in the configuration). If the process goes to background, +cinit cannot control it directly anymore. + +List of daemons and non-forking parameters +------------------------------------------- + +The following daemons / servers are known to avoid backgrounding easily: + +- acpid [x86 power management]: -f (undocumentated but works) +- apache [webserver]: -DFOREGROUND +- asterisk [pbx]: -f +- bind [dns server/caching]: -f +- cardmgr [pcmcia/cardbus]: -f +- cron (vixie) [schedular]: -f +- cupsd [printer server]: -f or -F +- dhclient [dhcp client]: -d +- dhcp3 (isc) [dhcp server]: -f +- distccd [compile server]: normal behaviour +- dovecot [imap/pop3 server]: -F +- fam [file alteration monitor]:-f +- fcron [schedular]: -f +- frox [ftp proxy]: "NoDetach" in config +- freeradius [radiusd]: -f +- gdm [display manager]: -nodaemon +- hybrid [irc server]: -foreground +- icecast2 [sound streamer]: normal behaviour +- mini-lpd [printer server]: normal behaviour +- metalog [log server]: normal behaviour +- monotone [vcs]: normal behaviour +- mpd [music server]: --no-daemon +- nessusd ["security server"]: normal behaviour +- ntpd [time server]: -n +- nylon [socks proxy]: -f (prints output to terminal) +- oidentd [identd server]: -i +- oops [http proxy]: normal behaviour +- openpbx [pbx]: -f +- openssh [ssh server]: -D +- openvpn [vpn server]: normal behaviour +- pbbuttonsd [power management]:normal behaviour +- portmap [portmapper]: -f +- proftpd [ftp server]: -n +- qmail [mta]: normal behaviour +- rsync ["file server"]: --no-detach +- silcd ["secure chat server"]: -F, --foreground +- slapd [ldap]: -d +- snmpd [snmp daemon]: -f +- stunnel [ssl wrapper]: "foreground = yes" in config +- svnserve [vcs]: --foreground +- syslogd [log server]: -n +- syslog-ng [log server]: -F +- tcpserver [super server]: normal behaviour +- udhcpc [dhcp client]: normal behaviour +- vsftpd [ftp server]: normal behaviour (or: config: background=no) +- xinetd [super server]: -dontfork + + +Problematic daemons +------------------- +Those are the daemons that do not offer the possibility (as of release 0.2): + +- atd (no switch, no configuraton option) +- inetd (some variants) +- nscd (no switch, no configuraton option) diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/debugging.configuration b/software/cinit/browse_source/cinit-0.3pre10/doc/user/debugging.configuration new file mode 100644 index 00000000..1289865e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/debugging.configuration @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +Debugging your init configuration, +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +As writing an init configuration is not the easiest thing, +here are some problems (P) and debugging hints (H): + +P: There's no output! +H: If you don't start a service which outputs something there won't be any, + cinit starts up silently. + +P: Service XYZ seems not to work? +H: Try the following in your shell: + cd /etc/cinit/the-service; ./on "$(on.params)" + If that succeeds it has perhaps something missing which should have been + started before. +H: Create a test-service, which contains the following: + on: link to /bin/echo + on.params: "A test string" (with or without the quotes) + Now add the test-service to the needs directory of service XYZ. + If you see output the next time, the service is started. + Otherwise you forgot to make another service dependent on service + XYZ. + +P: How can I test if a non-outputting service successfully started? +H: Create another service, which depends on your service and make + it echo something. + +P: Does that profile support really work? +H: Try that: cprofile:NONEXISTENT and you'll see. + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/dependencies.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/dependencies.text new file mode 100644 index 00000000..e1154a54 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/dependencies.text @@ -0,0 +1,68 @@ +cinit - Dependencies +==================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-13 +:Author Initials: NS + +This document describes the different dependency types of cinit. + + +Dependencies in general +----------------------- +Each service may have two types (non-exclusive) types of dependencies: +The so called `needs` or `wants`. These are directories below the service +directory and contain symbolic links to the dependencies. +The name of the link can be freely chosen. + +An example: + +The service '/etc/cinit/svc/getty/2' needs the service +'/etc/cinit/svc/local-tuning/keyboard-layout': +-------------------------------------------------------------------------------- +[21:35] hydrogenium:needs# cd /etc/cinit/svc/getty/2/needs +[21:35] hydrogenium:needs# ls -l +insgesamt 0 +lrwxrwxrwx 1 root root 37 2006-10-26 17:51 keyboard-layout -> ../../../local-tuning/keyboard-layout +[21:35] hydrogenium:needs# cd keyboard-layout/ +[21:35] hydrogenium:keyboard-layout# pwd -P +/etc/cinit/svc/local-tuning/keyboard-layout +-------------------------------------------------------------------------------- +(Warning: This is an incomplete example, it misses at least `mount/root` +as dependency) + +This service could additionally want something else, too. It is also +possible that a service only `wants` another service or that a service +has no dependencies. + + +Absolute versus relative links +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +cinit does not care whether a link is relative or absolute. And +as far as I can see it does not make any difference to usability. + +In general, it seems to be a little bit 'easier' to use relative links +when manually configuring cinit ('ln -s ../../../service' versus +'ln -s /etc/cinit/svc/category/service'), but easier readable when +analysing them (with `ls -l'). + + +The two types +------------- + +needs +~~~~~ +`Needs` are the 'hard dependencies': If a services fails to start that +is linked in the `needs` directory, the service will not be started. + + +wants +~~~~~ +`Wants` are the 'soft dependencies': cinit will try to start the dependencies +found in `wants` before the service, but the service will also be started, +indenpendend of success of the dependencies. + + +Circular dependency problem +---------------------------- +If you manage to create circular dependencies cinit will fall into an +endless loop. Use `cinit.check.config` to verify your configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/example-directory-structure.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/example-directory-structure.text new file mode 100644 index 00000000..d19ac1fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/example-directory-structure.text @@ -0,0 +1,140 @@ +cinit - Example directory structure +=================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-12 +:Author Initials: NS + + +This document describes a tested directory hierarchy that +you could adapt for your setup. But this is no need, you +are free to design your own layout and/or improve this one. + + +Main idea +--------- +The main reason for this layout is that all services directly located +in /etc/cinit/svc/ would create a not-so-easy maintainable chaos. + + +Categories +---------- +When thinking about grouping some parts together, there came some categories +to my mind: + +- init: This must be there. It is no real choice (well, working with profiles + is an alternative) +- we need to mount things +- things that are used to 'configure' my local system +- network connectivity +- services only locally reachable +- services remote reachable +- something that let me login + +With these requirements the following categories (=directories) were created: + + +getty +~~~~~ +Gettys are those little and nice programs that allow you to login. +As we normally want to have more than one it seems to be senseful +to create a category for it. + +For the creation of the getty services itself, an extremly simply +scheme is used: Simply create services with the number of the getty +that is running. This results in the following setup: + +-------------------------------------------------------------------------------- + /etc/cinit/svc/getty/ + 2/ + 3/ + 4/ + ... +-------------------------------------------------------------------------------- + +The number '1' is skipped, because cinit normally logs to stdout that is +connected to the first console. + +`/etc/cinit/svc/getty/needs/` contains all enabled gettys. This way +`/etc/cinit/svc/init/needs/` can refer to `/etc/cinit/svc/getty/` only +but will catch all gettys. + +If you want to allow users to login via a graphical login screen +(also known as X11 with xdm/gdm/kdm) you could add this service as +`getty/gdm` for instance, because gdm is just another getty (just with +more colours). + + +init +~~~~ +`init` is the service everything begins with. You simply put all other +categories into the `needs` (or if soft-dependencies to `wants`) of this +service. + + +local-services +~~~~~~~~~~~~~~ +This directory contains all the services that are only locally reachable. +This may contain local webserver, a MTA that only accepts mails +via /usr/sbin/sendmail (like qmail is capable of) or some other local +only available services. + + +local-tuning +~~~~~~~~~~~~ +This directory is used for local configuration. It contains services, +that setup the keyboard layout (perhaps called `local-tuning/keyboard-layout` +needed by `getty`!), adjust system to hardware time, cleans /tmp +(`local-tuning/tmpclean`), ... + + +mount +~~~~~ +This directory contains the service to remount the root filesystem +read-write (`mount/root`) which is dependend on the filesystem +check (`mount/root/fsck`, also have a look at 'special-services.text'). +It also contains the services that mount the pseudo filesystems +(`mount/proc` (FreeBSD, Linux) and `mount/sys` (Linux)) and all +other partitions (`mount/home`, `mount/usr`,...) which again contain +a dependency to the filesystem check, if necessary. + + +network +~~~~~~~ +The `network` directory should cover all of the network basics. +This includes setting the hostname (`network/hostname`) configuring +network devices (`network/eth0.static`, `network.ath0.master`) limiting +network accesses (`network/firewall`), enable packet forwarding +(`network/ip-forward`), adjusting the available bandwith +(`network/traffic-shaping`), ... + + +If there are too many network devices, you could create a subfolder named +`network/devices/`. + +I used to suffix the network devices with the mode they run, so I can +use different modes in different profiles (setup the wireless card in +master mode at home, in ad-hoc mode at a friend and in managed mode at +work). + + +remote-services +~~~~~~~~~~~~~~~~ +Remote-services are all services that are reachable from remote hosts. +This includes ssh (`remote-services/opensshd`), webserver +(`remote-services/lighttpd` or `remote-services/apache22`). + +Most servers `need` a working network interface, before they can be +started, but mostly it is enough to have the loopback interface up. + +This results in the possible `needs` dependency for `network/loopback` +and soft dependencies, what we call `wants` on `network`. + +Other examples for remote services are +- dns (`remote-services/dnscache`, `remote-services/tinydns`, + `remote-services/bind`) +- fileserver (`remote-services/smbd`, `remote-services/mmbd`) +- network infrastructure (`remote-services/bgpd`) +- many others + +Many daemons used for `remote-services` are described in +'daemons.backgrounding.text'. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/ideas b/software/cinit/browse_source/cinit-0.3pre10/doc/user/ideas new file mode 100644 index 00000000..d3f13d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/ideas @@ -0,0 +1,3 @@ +- cinit-multi-machine-daemon: + coordinating bootup with several machines + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/installing-cinit.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/installing-cinit.text new file mode 100644 index 00000000..34902057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/installing-cinit.text @@ -0,0 +1,63 @@ +cinit - Installing +================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-06-02 +:Author Initials: NS + +This documentes describes how to install cinit. + + +Installing +---------- +Installing cinit is not a big deal, so is this document. +Where possible I added a list of commands to execute at the +end of each section. + + +From source +~~~~~~~~~~~ +Retrieve the latest source from http://unix.schottelius.org/cinit/. +Then extract it, change to the source directory, adjust your OS in the +file "conf/os" and type "make all". + +To report success run scripts/report.compile and send the output +to nico-cinit-report |at| schottelius.org. I will use this information +to know how and where cinit is compiled. Personal values like hostnames +or your e-mail address will *not* be published. + +Code to install cinit: +---------------------------------------------------------------------- +# the program we use to retrieve the source (fetch on FreeBSD) +get=wget +# change to current version +version=0.3pre6 +url=http://unix.schottelius.org/cinit/cinit-${version}.tar.bz2 +# get it +$get "$url" +# exctract it +tar xvjf "cinit-${version}.tar.bz2" +# build it and report success +who=nico-cinit-report +where=schottelius.org +cd cinit-${version} && make all && \ +./scripts/report.compile | mail -s "cinit: compile report" "${who}@${where}" +---------------------------------------------------------------------- + +Warning: Currently the install target is missing. Simply copy +"src/cinit" to /sbin/cinit. + + +Changing compile time parameters +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +All compile time configurations are kept below the "conf" +directory. Please read 'conf-system.text' for more information. + + +Cross-compiling +--------------- +For cross compiling see 'cross-compiling.text'. + + +Continue reading +---------------- +After having installed cinit, continue reading the document "Configuring cinit". diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/main.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/main.text new file mode 100644 index 00000000..ddf88304 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/main.text @@ -0,0 +1,113 @@ +cinit - a modern init system +============================= +Nico Schottelius +v0.1, for cinit-0.2.2, 2005-01-18 +:Author Initials: NS + + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/meta.dependencies b/software/cinit/browse_source/cinit-0.3pre10/doc/user/meta.dependencies new file mode 100644 index 00000000..fe743c48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/meta.dependencies @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, one would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation (see profile.support). + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +why it does not even need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ + +This way you have the indirection (meta-dependencies) in the filesystem +and cinit does not need any additional code. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/paths.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/paths.text new file mode 100644 index 00000000..d44bca61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/paths.text @@ -0,0 +1,121 @@ +cinit - Configuration +====================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Configuring cinit - the paths used + + +Main structure +--------------- +The base directory under which all configurations are found +is '/etc/cinit' (changable via conf/cinit_dir). + +The basic hierarchy is shown below: +---------------------------------------------------------------------- +/etc/cinit + svc -> services (adjustable: conf/svcdir) + conf -> general configuration (adjustable: conf/confdir) +---------------------------------------------------------------------- + + +The subdirectory 'conf' +~~~~~~~~~~~~~~~~~~~~~~~ +In this directory are general configurations located. +See below for the list of files that are located in this +directory. + + +The subdirectory 'svc' +~~~~~~~~~~~~~~~~~~~~~~ +This directory contains the services. A service is a directory. + + +Filenams for executable files +------------------------------ +When you create something that cinit should execute (like on +starting a service, on stopping a service, on panic, ...), cinit +will recognize the following extensions: + +. cinit executions extensions + - 'name' - the file that should be executed + - `'name'.params` - the parameter to pass to 'name' when executing + - `'name'.env` - the environment to pass to 'name' when executing + + +Name.params +~~~~~~~~~~~ +The 'params' file is a simple file containing one argument on each +line. + +Example: +---------------------------------------------------------------------- +[17:34] hydrogenium:cinit-0.3pre6% ls -l /etc/cinit/svc/init/on +lrwxrwxrwx 1 root root 9 2006-11-16 09:12 /etc/cinit/svc/init/on -> /bin/echo +[17:34] hydrogenium:cinit-0.3pre6% cat /etc/cinit/svc/init/on.params +The initial service has been started. (first parameter) +Some other useful information. (second parameter) +---------------------------------------------------------------------- + +Name.env +~~~~~~~~ +The 'env' file contains the environment definition. +Specify one assignment on each line, containing only "variable=value". + +Example: +---------------------------------------------------------------------- +[18:00] hydrogenium:% cat /etc/cinit/svc/remote-services/tinydns/on.env +IP=192.168.42.23 +---------------------------------------------------------------------- + +eof + +List of executable files +------------------------ +This list shows you what files are executable for cinit. + +on / off +~~~~~~~~~ +The files `on` and `off` are executed if found within a service +definition. `on` is called when starting the service, `off` +is called when stoping it. + + +conf/panic +~~~~~~~~~~ +This file will be executed by cinit if it has to panic. +Panic situation may occur, when there are heavy problems +like failing memory allocation in core areas. You can +change the name of the file in the pre-compilation settings +in `conf/c_panic`. + +If `conf/panic` is missing and cinit has to panic, a builtin +panic action will be called (see `conf/sulogin`). + + +conf/halt +~~~~~~~~~ +`conf/halt` will be called when cinit has shutdown all services +and wants to halt the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_halt`. + + +conf/poweroff +~~~~~~~~~~~~~ +`conf/poweroff` will be called when cinit has shutdown all services +and wants to poweroff the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_poweroff`. + + +conf/reboot +~~~~~~~~~~~ +`conf/reboot` will be called when cinit has shutdown all services +and wants to reboot the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_reboot`. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/problems-and-solutions.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/problems-and-solutions.text new file mode 100644 index 00000000..92cdd241 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/problems-and-solutions.text @@ -0,0 +1,33 @@ +cinit - Problems occured and solutions used +=========================================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2007-05-28 +:Author Initials: NS + +This documentes describes real problems people had with +cinit and their appropriate solutions. Feel free to add +your problems and solutions here. + + +Introduction +------------ + + +Adding problems and solutions +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Simply add your problem and solution and sign your paragraph +with your name. Then send the diff -u to the cinit mailinglist +or setup a git-repository so I can pull the changes. + + +Hibernate +--------- +uses /sbin/runlevel, which should *not* respond with 0 or 6 +as the second number. As cinit does not have /sbin/runlevel, +because cinit does not have any runlevels, you could hardcode +it to values hibernate accepts: + +---------------------------------------------------------------------- +#!/bin/sh +echo N 2 +---------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/problems.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/problems.text new file mode 100644 index 00000000..4fe8a315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/problems.text @@ -0,0 +1,114 @@ +Problems using cinit +==================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2007-04-24 +:Author Initials: NS + + +Using a high-speed, true dependency aware, profile supporting +logical acting and reliable init system like cinit is not +completly problem free. This document describes some common +problems you may have and their solutions. + + +Possible problems +----------------- + +Confused users +~~~~~~~~~~~~~~ +Compared to traditional init systems like sys-v-init or bsd-init +cinit introduces a complet new boot concept. This does not just +mean that you have services instead of shell-scripts (which is +one reason cinit is starting up faster), but also that the boot +order may be changed dynamically at bootup:, if a service fails. +And even if no service fails, the boot order may be different +on each boot, because processes are started in parallel and +may return earlier or later on each boot. To coordinate the +parallel running processes, cinit uses depencies, which are pretty +easy to understad when configurung, but may need some more +detailled watching at boot to understand it. + +The 'confused users'-problem is perhaps also the biggest +problem for introducing cinit as a replacement to current +init systems. + + +Configuration issues +~~~~~~~~~~~~~~~~~~~~ + +Not marking services as respawn +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +When cinit starts, it will wait for every service to exit. +So if you have a dependency on a service +that never exits, the whole init process may hang (dependending +on the dependencies). If you have services that are intendet +*not* to exit after start, you *have* to mark those with +`respawn`: Those services are started and watched by cinit +and will be restarted. This was a design choice to ensure +that all 'always running' processes *are* restarted. + +I did not find any service that should not exit and not +have a respawn flag. If you really really really have such +a service and you can prove to me that the respawn flag +would do harm to your system, I will think about implementing +a flag that tells cinit not to wait for it, but mark it +as successfully run after it has been started. + +User interaction +~~~~~~~~~~~~~~~~ + +User input +~~~~~~~~~~ +There may be the situation that you have to press a key +or enter some data when a service starts up (like entering +the password for your crypto harddisks). With cinit, this +will look like a mess, because other services may write to +the same console the service wrote a user prompt. + +The best solution for this problem is in my humble +opinion to create an user-input daemon that serialises +the requests and displays one after another. + +This could look like this: Your daemon wants to ask for +a passphrase for the SSL-certificate. You add aa needs +to this daemon to the 'input-daemon'. When you +start this service, it will contact the input-daemon +running on another virtual console and displaying a text +and an input field that is passed back to this service. +After that the input daemon changes back to the initial +console or asks for the next input, if there is another +request available. + +This input daemon may also be run on a graphical (X11) display. +. +Output to the user +~~~~~~~~~~~~~~~~~~ +When cinit starts up there may be many messages printed +out that also may look like printed random order. +To prevent your endusers from being confused you can create +some kind of graphical interface (like a framebuffer +or X11 display) that reads the output of cinit and converts +it to flashing images. It could look like this: + +---------------------------------------------------------------------- + + Your (graphical?) display: + -------------------------------------------------------------- + | /-----------------\ | + | | Red border, | | + | | failed to start | | + | \-----------------/ | + | | + | /------ | + | | Green border, | + | image van | + | | + | | + | | + | | + | | + | | + -------------------------------------------------------------- + + +---------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/profiles.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/profiles.text new file mode 100644 index 00000000..ab4d3c4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/profiles.text @@ -0,0 +1,79 @@ +cinit - Profiles +================ +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-06-04 +:Author Initials: NS + + +cinit profiles described. + + +What are profiles? +------------------ +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +How to use profiles? +--------------------- +Simply pass 'cprofile:PROFILENAME' (like cprofile:home) to cinit. + + +How to pass argumenents to cinit? +--------------------------------- +How to pass arguments to your init system depends on your operating +system and on your bootloader. + +Linux +~~~~~ +Under Linux the init-system gets the kernel arguments +(see linux.kernel.eats.arguments) as arguments. +So you can use + + kernel /usr/src/linux/vmlinuz cprofile:work (grub1,grub2) + append="cprofile:work" (LILO,yaboot) + +Other Unices should work like Linux, please consult your local +documentation. + + +How to configure profiles? +-------------------------- +It's very simple: Normally cinit would call /etc/cinit/svc/init as +the first service (with all its dependencies). If you pass 'cprofile=wireless' +to it, cinit will start from /etc/cinit/svc/wireless +instead. + +So the only thing you have to do is to create a service directory +below /etc/cinit/svc with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit/svc; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/svc/init; tar c . | (mkdir ../myprof; cd ../myprof; tar x ) + +That's it! + + +Some examples +------------- + +Here are some examples we found in #cLinux: + +-------------------------------------------------------------------------------- + profile name what it does + + musibox only start mp3blaster + terminal start only minicom, which opens the serial line + net-terminal start a respawning shell script, which starts + ssh to the selected host + video start X+mplayer, which plays the dvd/cdrom + wireless What to start when beeing in an unknown wlan + home/work selected services (nfs, ip, ...) for home or work +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/replacing.init b/software/cinit/browse_source/cinit-0.3pre10/doc/user/replacing.init new file mode 100644 index 00000000..2858c56c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/replacing.init @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and link, move or copy cinit to init (ln -s /sbin/cinit /sbin/init), reboot. + +That's everything in general, the biggest part will be to configuring cinit. + +See also doc/merging.other.initsystems. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/respawning-sleep.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/respawning-sleep.text new file mode 100644 index 00000000..24ed17e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/respawning-sleep.text @@ -0,0 +1,52 @@ +cinit - Respawning and sleeping +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2007-04-13 +:Author Initials: NS + + +How cinit sleeps, before a service is respawned. + +Introduction +------------ +When a service, that is configured to be respawning, exits cinit restarts it. +Because services may be broken and thus cinit would try to restart it many +times in a second, it is necessary to sleep between restarts. + +The big question: How to sleep? +------------------------------------ +The first possibility is to sleep a fixed amount of time between restarts: +For instance one second. This is not a good solution, because this waits +one unecessary second if the process just crashed. It may be too less, if +the service is really broken. + +The second possibility is to sleep a dynamic amount of time. + + +The next big question: How long to sleep? +----------------------------------------- +I think that as long as a service is broken we should not investigate to much +time into restarting it. So we can define a maximum amount of time to sleep +(for instance 30 seconds). The minimum amount of time to sleep is zero seconds. + +When the service is first started, the sleep time defaults to the minimum +amount of time. Each time the service is restarted, the sleep time is adjusted: + +sleep time (st) = Maximum sleep time (mst) / Time the process was running (tr) + +- If tr is < 1 it is adjusted to 1 and thus st is set to mst. +- If tr is > mst, st is set to 0. + + +How to force restart of a service? +---------------------------------- +Use cvsc (to be implemented). + + +Hom is it implemented? +---------------------- +Everytime cinit has to respawn a service it has to fork() itself. +The sleep call is implemented in the fork, so cinit itself does not have +to care about it. After the sleep time is over or the fork() recieves +SIGALARM it executes the real service. cinit itself records as start time +the current time plus sleep time. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/special-services.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/special-services.text new file mode 100644 index 00000000..4367bed1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/special-services.text @@ -0,0 +1,12 @@ +at: + no non-forking mode +fsck: + returns non-zero if it repaired something. + You have to wrap it into a shell-script :-( + + #!/bin/sh + fsck $@ + [ $? -le 1 ] && exit 0 + exit 1 + +Non-zero exit in general diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/supported-os.text b/software/cinit/browse_source/cinit-0.3pre10/doc/user/supported-os.text new file mode 100644 index 00000000..97b29506 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/supported-os.text @@ -0,0 +1,32 @@ +Supported operating systems +=============== +Nico Schottelius +0.1, Initial Version from 2007-02-15 +:Author Initials: NS + +This document lists the supported operating systems. + + +Supported OS +------------ +This means currently that cinit compiles on that system + +Tested by the author +~~~~~~~~~~~~~~~~~~~~ +- GNU/Linux +- FreeBSD +- NetBSD + +Reported by others +~~~~~~~~~~~~~~~~~~ +[none] + +Unsupported OS +-------------- + +OpenBSD +~~~~~~~ +Seems to not comply to Posix / XSI. Have a look at +http://home.schottelius.org/~nico/unix/openbsd/ftok-sys-ipc.h-problem. +This is a demo of the problem on OpenBSD 4.0 with cinit-0.3pre7-git. + diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/updating.cinit b/software/cinit/browse_source/cinit-0.3pre10/doc/user/updating.cinit new file mode 100644 index 00000000..fc0d3fef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/updating.cinit @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. call cservice -u thilo (if you have cinit-0.1 or later) + + For older versions: + + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything running and restart as if you would just + have booted. diff --git a/software/cinit/browse_source/cinit-0.3pre10/doc/user/using.rescue b/software/cinit/browse_source/cinit-0.3pre10/doc/user/using.rescue new file mode 100644 index 00000000..f58ff512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/doc/user/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user"). + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/cconfig.mk.makefile b/software/cinit/browse_source/cinit-0.3pre10/scripts/cconfig.mk.makefile new file mode 100644 index 00000000..822addce --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/cconfig.mk.makefile @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-20, 0110 CEST +# cconfig: create makefile from conf/ directory +# currently: all files +# later: only built-defines +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "#" +echo "# Warning: Autogenerated by $0, do not edit. " +echo "#" +for conf in ${CONFS}; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + echo "${NAME}=${value}" +done diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/cinit.build-env b/software/cinit/browse_source/cinit-0.3pre10/scripts/cinit.build-env new file mode 100644 index 00000000..94e093e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/cinit.build-env @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: build environment to be used in scripts +# * Should be sourced by using scripts +# 2006-10-26 +# + +. $(dirname $0)/cinit.read-conf + +export BASEDIR=${DESTDIR}${CINIT_DIR} +export SERVICES=${BASEDIR}/${SVCDIR} +export CONFIG=${BASEDIR}/${CONFDIR} diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/cinit.get-confdir b/software/cinit/browse_source/cinit-0.3pre10/scripts/cinit.get-confdir new file mode 100644 index 00000000..38d8572d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/cinit.get-confdir @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# Date: 2005-05-24 (Last Changed: 2005-08-08) + +# try environment first +if [ "$CINIT_CONF_DIR" ]; then + CONFDIR=$CINIT_CONF_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +else + echo 'Did not find cinit configuration!' >&2 + echo "Please set the variable CINIT_CONF_DIR" >&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/cinit.install.standard.dirs b/software/cinit/browse_source/cinit-0.3pre10/scripts/cinit.install.standard.dirs new file mode 100644 index 00000000..22cf273d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/cinit.install.standard.dirs @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install standard sub-configuration directories +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.build-env + +for svc in $SERVICE_CATEGORIES; do + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${SERVICES}/${svc}" +done + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/cinit.mkheader b/software/cinit/browse_source/cinit-0.3pre10/scripts/cinit.mkheader new file mode 100644 index 00000000..80e3f7cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/cinit.mkheader @@ -0,0 +1,32 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric: no quotes needed + is_numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + is_string="$(echo $value | grep '^"')" + + # + # Check for quote type + # + if [ ! "$is_numeric" -a ! "$is_string" ]; then + one_char=$(echo -n $value | wc -c) + + if [ "$one_char" -eq 1 ]; then + value="'$value'" + else + # is a string + value="\"$value\"" + fi + fi + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/cinit.read-conf b/software/cinit/browse_source/cinit-0.3pre10/scripts/cinit.read-conf new file mode 100644 index 00000000..80a32463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/cinit.read-conf @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# ~ 2005 +# + +CONFS=$($(dirname $0)/cinit.get-confdir) + +set -e + +for conf in ${CONFS}/*; do + NAME="$(basename $conf | tr a-z A-Z)" + if eval test -z \$$NAME; then + eval $NAME=\"$(head -n 1 $conf)\" + eval export $NAME + fi +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/configuration/README b/software/cinit/browse_source/cinit-0.3pre10/scripts/configuration/README new file mode 100644 index 00000000..64c0d174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/configuration/README @@ -0,0 +1 @@ +Scripts used to generate or aid in creating a configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/configuration/freebsd/create_services.sh b/software/cinit/browse_source/cinit-0.3pre10/scripts/configuration/freebsd/create_services.sh new file mode 100644 index 00000000..52e123a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/configuration/freebsd/create_services.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Reads list of services to create from stdin +# Create services (add correct dependencies) +# +# Options: +# -d: alternate destination directory (instead of /etc/cinit/svc) diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/configuration/freebsd/enable_services.sh b/software/cinit/browse_source/cinit-0.3pre10/scripts/configuration/freebsd/enable_services.sh new file mode 100644 index 00000000..ce4563a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/configuration/freebsd/enable_services.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Reads list of services to enabled from stdin +# Services must already exist +# +# Options: +# -d: alternate destination directory (instead of /etc/cinit/svc) diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/configuration/freebsd/search_enabled_services.sh b/software/cinit/browse_source/cinit-0.3pre10/scripts/configuration/freebsd/search_enabled_services.sh new file mode 100644 index 00000000..69e519b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/configuration/freebsd/search_enabled_services.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Search for enabled services: +# - /etc/rc.conf +# - /usr/local/etc/rc.d/ +# Output list of services to stdout +# +# Options: +# -r diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/configuration/freebsd/search_services.sh b/software/cinit/browse_source/cinit-0.3pre10/scripts/configuration/freebsd/search_services.sh new file mode 100644 index 00000000..2043e857 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/configuration/freebsd/search_services.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Search all services: +# - /etc/rc.conf +# - /usr/local/etc/rc.d/ +# Output list of all services to stdout +# +# Options: +# -r diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/create_baseconfig.sh b/software/cinit/browse_source/cinit-0.3pre10/scripts/create_baseconfig.sh new file mode 100644 index 00000000..7c9b69e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/create_baseconfig.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# 2006-10-23 +# cLinux/cinit + +. $(dirname $0)/cinit.build-env + +set -e + +mkdir -p "${BASEDIR}" + +mkdir -p "${SERVICES}" +mkdir -p "${SERVICES}/${C_INIT}" + +mkdir -p "${CONFIG}" diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/README b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/README new file mode 100644 index 00000000..2162b6b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/README @@ -0,0 +1 @@ +Only to be used by Nico Schottelius. diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/cinit.release b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/cinit.release new file mode 100644 index 00000000..2afc436e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/cinit.release @@ -0,0 +1,74 @@ +#!/bin/sh +# Nico Schottelius +# Build release tar +# Date: Sat Oct 15 21:38:29 CEST 2005 +# Last Changed: ls -l + +# only release if I tell it to release +[ "$1" = "now" ] || exit 23 + +#if [ $# -ne 2 ]; then +# echo "This is a maintainer-only script to release cinit" +# echo $(basename $0): source-dir version +# exit 1 +#fi + +set -x + +# paths +DIR="$(cd $(dirname $0)/../../; pwd -P)" +DDIR="$(cd $(dirname $0)/../../../; pwd -P)" +RDIR=$(basename "$DIR") + +# version +VERSION="$(cd "$DIR"; pwd -P | sed 's;.*/cinit-;;')" +VERSION_CONF="$(head -n1 $(dirname $0)/../../conf/version | sed 's/^"\(.*\)"$/\1/')" +VERSION_CHANGES="$(head -n1 "$(dirname $0)/../../CHANGES" | sed 's/cinit-\(.*\):$/\1/')" +OUT_NAME="cinit-${VERSION}.tar.bz2" + +# remote +D_HOST=home.schottelius.org +D_BASE=www/org/schottelius/unix/www/cinit +D_DIR=${D_BASE}/archives/ +D_SOURCE=${D_BASE}/browse_source/ +LINK=current + +echo "=> Version directory: $VERSION" +echo "=> Version conf/version: $VERSION_CONF" +echo "=> Version CHANGES: $VERSION_CHANGES" + +if [ "$VERSION" = "$VERSION_CONF" -a "$VERSION" = "$VERSION_CHANGES" ]; then + echo "=> Version confirmed." +else + echo "*** VERSION MISMATCH ***" + exit 42 +fi + +echo -n "=> Continue? " +read yes + +if [ ! -d "$DIR" ]; then + echo "$DIR is not a directory" + exit 1 +fi + +# do the work! +( cd "$DIR" && make dist ) || exit 1 + +echo "Creating bzip2 compressed tar" +cd $DDIR +tar cj -X $DIR/.exclude -f "$OUT_NAME" "$RDIR" +chmod 0644 "$OUT_NAME" + +echo "Transfering to $D_HOST" +scp "$OUT_NAME" "$D_HOST:$D_DIR" + +echo "Extracting to $D_SOURCE" +ssh "$D_HOST" "tar xfj $D_DIR/$OUT_NAME -C $D_SOURCE" + +echo "Correcting paranoid permissions" +ssh "$D_HOST" "find \"$D_SOURCE/$RDIR\" -type f -exec chmod 0644 {} \\;" +ssh "$D_HOST" "find \"$D_SOURCE/$RDIR\" -type d -exec chmod 0755 {} \\;" +ssh "$D_HOST" "cd \"$D_SOURCE\" && rm -f \"$LINK\" && ln -s \"$RDIR\" \"$LINK\"" + +echo "Please do not forget to update the website..." diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/compile+run.sh b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/compile+run.sh new file mode 100644 index 00000000..30ec68a6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/compile+run.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# yah - yet another hack + +if [ ! "$1" ]; then + echo "HOSTNAME" + exit 23 +fi + +host="$1" + +hier=$(dirname $0) + +$hier/compile_test.sh "$host" + +if [ $? -ne 0 ]; then + echo "aborting, did not compile on $1" + exit 1 +fi + +ssh "${host}" './cinit/src/cinit & (sleep 30; kill -9 $(pgrep cinit))' diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/compile_local.sh b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/compile_local.sh new file mode 100644 index 00000000..e2bfce5e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/compile_local.sh @@ -0,0 +1,24 @@ +# just a hack + +dir=$(dirname $0) + +sys=$(uname -s) +sys_small=$(echo $sys | tr '[A-Z]' '[a-z]') + +case $(uname -s) in + NetBSD|OpenBSD) + make=gmake + ;; + *) + make=make + ;; +esac + +cd "${dir}/../../" +echo $sys_small > conf/os +# automatically called by make.. +#./bin/cinit.configure.os + +cd "src" +$make clean +$make cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/compile_run_as_compiler.sh b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/compile_run_as_compiler.sh new file mode 100644 index 00000000..f1ba01d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/compile_run_as_compiler.sh @@ -0,0 +1,14 @@ +what=$(dirname $0)/../../ +what_real=$(cd "$what" && pwd -P) +dest=~compiler/cinit-test + +set -e +sudo rsync -av "${what_real}/" "$dest" +sudo chown -R compiler "$dest" +sudo -u compiler "${dest}/scripts/internal/compile_local.sh" +sudo -u compiler "${dest}/src/cinit" & +sleep 13 +sudo -u compiler "${dest}/scripts/internal/stop_cinit.sh" + +# exit 0 for make +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/compile_test.sh b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/compile_test.sh new file mode 100644 index 00000000..335f31ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/compile_test.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# yah - yet another hack + +host="$1" +what=$(dirname $0)/../../ + +rsync --exclude .git --exclude \*.o -av "${what}" "${host}:cinit" +ssh "${host}" "./cinit/scripts/internal/compile_local.sh" diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/create_test_config.sh b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/create_test_config.sh new file mode 100644 index 00000000..720ce969 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/create_test_config.sh @@ -0,0 +1,18 @@ +hier=$(dirname $0) + +set -e +${hier}/../cinit.install.standard.dirs +cat > /etc/cinit/svc/init/on << eof +#!/bin/sh +echo test1 +sleep 4 +echo test2 - \$@ +eof +chmod 0755 /etc/cinit/svc/init/on + +cat > /etc/cinit/svc/init/on.params << eof +es +scheint +zu +gehen +eof diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/find_right_version.sh b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/find_right_version.sh new file mode 100644 index 00000000..759f23c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/find_right_version.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +src="$(dirname $0)/../../" +src_abs=$(cd "$src" && pwd -P) + +for commit in $( git log --pretty=short | awk '/^commit/ { print $2 }'); do + set -e + cd "$src_abs" + temp=$(mktemp -d /tmp/cinit.XXXXXXXXXX) + git-archive --format=tar "$commit" | ( cd "$temp"; tar x ) + cd "${temp}/src" + set +e + make clean && make cinit && ./cinit + if [ "$?" -eq 0 ]; then + echo "Commit $commit is ok" + exit 0 + fi + echo "Broken $commit" + sleep 1 + set -e + rm -rf "$temp" +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/stop_cinit.sh b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/stop_cinit.sh new file mode 100644 index 00000000..86e4d82b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/stop_cinit.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# Linux specific, but don't care, I am the only person that should use it + +killall -TERM cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/test_on_hosts.sh b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/test_on_hosts.sh new file mode 100644 index 00000000..e6df35ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/test_on_hosts.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# yah + +hosts="penrose.bsdprojects.net bot.unixkiste.org suckz.eu jiffies.forkbomb.ch" + +set -e + +for host in $hosts; do + echo "$1 on $host" + "$1" "$host" | sed "s/^/${host}: /" + echo "==> Finished $host" +done diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/valgrind b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/valgrind new file mode 100644 index 00000000..f769f9da --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/internal/valgrind @@ -0,0 +1 @@ +valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes --leak-resolution=high ./cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/report.compile b/software/cinit/browse_source/cinit-0.3pre10/scripts/report.compile new file mode 100644 index 00000000..ac591412 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/report.compile @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# 2006-12-08 +# Report compile success +# + +echo "cinit compile success report" +echo "----------------------------" +"$(dirname $0)/cinit.mkheader" +echo "----------------------------" +uname -a +echo "----------------------------" +. "$(dirname $0)/cinit.read-conf" +echo '$CC' +"$CC" -v +echo "----------------------------" +echo -n "Size: " +ls -l "$(dirname $0)/../src/cinit" diff --git a/software/cinit/browse_source/cinit-0.3pre10/scripts/wrapper/linux-sysvinit/shutdown b/software/cinit/browse_source/cinit-0.3pre10/scripts/wrapper/linux-sysvinit/shutdown new file mode 100644 index 00000000..ce413d17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/scripts/wrapper/linux-sysvinit/shutdown @@ -0,0 +1,38 @@ +#!/bin/sh +# Nico Schottelius (nico-cinit /at/ schottelius.org) +# 2007-05-21 +# Behave as being shutdown from Linux' sysvinit + +# parse options, display usage + +# all the functions + +usage() +{ + +cat << cinit_usage + +*** cinit linux-sysvinit shutdown wrapper *** + +Usage shutdown [-akrhHPfnc] [-t secs] time [warning message] + -a: use /etc/shutdown.allow + -k: don't really shutdown, only warn. + -r: reboot after shutdown. + -h: halt after shutdown. + -P: halt action is to turn off power. + -H: halt action is to just halt. + -f: do a 'fast' reboot (skip fsck). + -F: Force fsck on reboot. + -n: do not go through "init" but go down real fast. + -c: cancel a running shutdown. + -t secs: delay between warning and kill signal. + ** the "time" argument is mandatory! (try "now") ** + +You can also call "cmd" directly instead of using this wrapper. + +cinit_usage + +} + +# the main part +usage diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-17-19:03:48 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-17-19:03:48 new file mode 100644 index 00000000..e379e004 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-17-19:03:48 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 17 19:03 cinit +-rwx------ 1 nico users 46760 Jun 17 19:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-20-12:16:40 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-20-12:16:40 new file mode 100644 index 00000000..1f0c3325 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-20-12:16:40 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 20 12:16 cinit +-rwx------ 1 nico users 50860 Jun 20 12:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-20-15:16:31 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-20-15:16:31 new file mode 100644 index 00000000..75dc3e7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-20-15:16:31 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 15:16 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-20-16:29:28 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-20-16:29:28 new file mode 100644 index 00000000..1294bde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-20-16:29:28 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-20-16:29:50 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-20-16:29:50 new file mode 100644 index 00000000..69fe7490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-20-16:29:50 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 16:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-21-11:53:35 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-21-11:53:35 new file mode 100644 index 00000000..4a1e7b6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-21-11:53:35 @@ -0,0 +1,3 @@ +total 192 +-rwx------ 1 nico users 102039 Jun 21 11:53 cinit +-rwx------ 1 nico users 87871 Jun 21 11:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-07:33:11 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-07:33:11 new file mode 100644 index 00000000..e6c8ff14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-07:33:11 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47544 Jun 22 07:33 cinit +-rwx------ 1 nico users 46760 Jun 22 07:33 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-07:57:13 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-07:57:13 new file mode 100644 index 00000000..17161d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-07:57:13 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47536 Jun 22 07:57 cinit +-rwx------ 1 nico users 46760 Jun 22 07:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-08:08:40 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-08:08:40 new file mode 100644 index 00000000..770083f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-08:08:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47424 Jun 22 08:08 cinit +-rwx------ 1 nico users 46760 Jun 22 08:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-08:30:42 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-08:30:42 new file mode 100644 index 00000000..aa95fb3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-08:30:42 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47360 Jun 22 08:30 cinit +-rwx------ 1 nico users 46760 Jun 22 08:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-09:19:42 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-09:19:42 new file mode 100644 index 00000000..70c261bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-09:19:42 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 09:19 cinit +-rwx------ 1 nico users 50860 Jun 22 09:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-10:43:24 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-10:43:24 new file mode 100644 index 00000000..b8bc4076 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-10:43:24 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 10:43 cinit +-rwx------ 1 nico users 50860 Jun 22 10:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-12:42:57 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-12:42:57 new file mode 100644 index 00000000..c8119859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-12:42:57 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 22 12:42 cinit +-rwx------ 1 nico users 46760 Jun 22 12:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-13:52:41 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-13:52:41 new file mode 100644 index 00000000..793b92fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-13:52:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:52 cinit +-rwx------ 1 nico users 46760 Jun 22 13:52 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-13:59:40 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-13:59:40 new file mode 100644 index 00000000..d114c557 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-13:59:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:59 cinit +-rwx------ 1 nico users 46760 Jun 22 13:59 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-14:19:41 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-14:19:41 new file mode 100644 index 00000000..8d56882f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-14:19:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47640 Jun 22 14:19 cinit +-rwx------ 1 nico users 46760 Jun 22 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-14:37:18 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-14:37:18 new file mode 100644 index 00000000..b7c3e4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-22-14:37:18 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 22 14:37 cinit +-rwx------ 1 nico users 46760 Jun 22 14:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-23-06:22:23 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-23-06:22:23 new file mode 100644 index 00000000..9e38a5e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-23-06:22:23 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 23 06:22 cinit +-rwx------ 1 nico users 46760 Jun 23 06:22 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-24-17:53:55 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-24-17:53:55 new file mode 100644 index 00000000..3b750eaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-24-17:53:55 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:53 cinit +-rwx------ 1 nico users 46760 Jun 24 17:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-24-17:55:29 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-24-17:55:29 new file mode 100644 index 00000000..c30dcaf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-24-17:55:29 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:55 cinit +-rwx------ 1 nico users 46760 Jun 24 17:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-26-13:19:49 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-26-13:19:49 new file mode 100644 index 00000000..a4de830b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-06-26-13:19:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 26 13:19 cinit +-rwx------ 1 nico users 50860 Jun 26 13:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:07:13 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:07:13 new file mode 100644 index 00000000..e2c59ddf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:07:13 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:07 cinit +-rwx------ 1 nico users 50860 Jul 6 08:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:12:20 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:12:20 new file mode 100644 index 00000000..e562350c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:12:20 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:12 cinit +-rwx------ 1 nico users 50860 Jul 6 08:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:13:39 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:13:39 new file mode 100644 index 00000000..32fd8268 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:13:39 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:13 cinit +-rwx------ 1 nico users 50860 Jul 6 08:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:14:19 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:14:19 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:14:19 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:14:59 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:14:59 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:14:59 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:15:56 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:15:56 new file mode 100644 index 00000000..cf26e6f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-08:15:56 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:15 cinit +-rwx------ 1 nico users 50860 Jul 6 08:15 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-10:12:22 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-10:12:22 new file mode 100644 index 00000000..d5f0f2c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-10:12:22 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:08 cinit +-rwx------ 1 nico users 50860 Jul 6 10:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-10:12:31 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-10:12:31 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-10:12:31 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-10:12:49 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-10:12:49 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-07-06-10:12:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-08-29-21:21:34 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-08-29-21:21:34 new file mode 100644 index 00000000..e651a8ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-08-29-21:21:34 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 root root 444508 2005-08-29 21:21 cinit +-rwx------ 1 root root 440412 2005-08-29 21:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-08-29-23:50:55 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-08-29-23:50:55 new file mode 100644 index 00000000..a279aee3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-08-29-23:50:55 @@ -0,0 +1,3 @@ +insgesamt 856 +-rwx------ 1 nico nico 437564 2005-08-29 23:50 cinit +-rwx------ 1 nico nico 436316 2005-08-29 23:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-03-03:36:59 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-03-03:36:59 new file mode 100644 index 00000000..01e555f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-03-03:36:59 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 nico nico 444508 2005-09-03 03:36 cinit +-rwx------ 1 nico nico 440412 2005-09-03 03:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-03-04:34:35 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-03-04:34:35 new file mode 100644 index 00000000..1832930a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-03-04:34:35 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 04:34 cinit +-rwx------ 1 nico nico 440412 Sep 3 04:34 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-03-05:51:17 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-03-05:51:17 new file mode 100644 index 00000000..4e465d06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-03-05:51:17 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 05:51 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-03-05:54:20 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-03-05:54:20 new file mode 100644 index 00000000..9c040d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-03-05:54:20 @@ -0,0 +1,4 @@ +total 1300 +-rwx------ 1 nico nico 440412 Sep 3 05:54 ccontrol +-rwx------ 1 nico nico 444508 Sep 3 05:54 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-03-09:01:59 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-03-09:01:59 new file mode 100644 index 00000000..880422a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-03-09:01:59 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 3 09:01 cinit +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-05-19:41:12 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-05-19:41:12 new file mode 100644 index 00000000..0f07d86e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-05-19:41:12 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 root root 440412 2005-09-05 19:41 ccontrol +-rwx------ 1 root root 444508 2005-09-05 19:41 cinit +-rwx------ 1 root root 440412 2005-09-05 19:41 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-05-19:50:35 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-05-19:50:35 new file mode 100644 index 00000000..32ff19fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-05-19:50:35 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 5 19:50 cinit +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-24-01:42:38 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-24-01:42:38 new file mode 100644 index 00000000..0da6126e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-24-01:42:38 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-09-24 01:42 ccontrol +-rwx------ 1 nico nico 437628 2005-09-24 01:42 cinit +-rwx------ 1 nico nico 436316 2005-09-24 01:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-30-22:50:50 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-30-22:50:50 new file mode 100644 index 00000000..0d510174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-30-22:50:50 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 22:50 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 22:50 cinit +-rwx------ 1 nico nico 436316 2005-09-30 22:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-30-23:06:39 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-30-23:06:39 new file mode 100644 index 00000000..23450914 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-09-30-23:06:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 23:06 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 23:06 cinit +-rwx------ 1 nico nico 436316 2005-09-30 23:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-01-22:09:13 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-01-22:09:13 new file mode 100644 index 00000000..a62b9eb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-01-22:09:13 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-10-01 22:09 ccontrol +-rwx------ 1 nico nico 437308 2005-10-01 22:09 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-01-22:17:39 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-01-22:17:39 new file mode 100644 index 00000000..b1d8b11b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-01-22:17:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-01 22:17 ccontrol +-rwx------ 1 nico nico 437532 2005-10-01 22:17 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-02-11:12:29 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-02-11:12:29 new file mode 100644 index 00000000..e5f7b13d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-02-11:12:29 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:12 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-02-11:13:35 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-02-11:13:35 new file mode 100644 index 00000000..d7c14471 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-02-11:13:35 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-02-11:13:43 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-02-11:13:43 new file mode 100644 index 00000000..1711d01a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-02-11:13:43 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 11:13 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 436316 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-02-16:00:24 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-02-16:00:24 new file mode 100644 index 00000000..ab23228c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-02-16:00:24 @@ -0,0 +1,4 @@ +total 1284 +-rwx------ 1 nico nico 436316 Oct 2 16:00 ccontrol +-rwx------ 1 nico nico 437884 Oct 2 16:00 cinit +-rwx------ 1 nico nico 436316 Oct 2 16:00 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-02-23:17:11 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-02-23:17:11 new file mode 100644 index 00000000..92041cd9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-02-23:17:11 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 23:17 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 23:17 cinit +-rwx------ 1 nico nico 436316 2005-10-02 23:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-03-00:54:39 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-03-00:54:39 new file mode 100644 index 00000000..df47a057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-03-00:54:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:54 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:54 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-03-00:56:29 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-03-00:56:29 new file mode 100644 index 00000000..08db7fec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-03-00:56:29 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:56 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:56 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:56 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-13-09:55:52 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-13-09:55:52 new file mode 100644 index 00000000..d54a7ff4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-13-09:55:52 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:55 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:55 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-13-09:57:11 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-13-09:57:11 new file mode 100644 index 00000000..3b1af9ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-13-09:57:11 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:57 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:57 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-13-10:07:28 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-13-10:07:28 new file mode 100644 index 00000000..58d25315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-13-10:07:28 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 10:07 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 10:07 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 10:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-15-15:26:52 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-15-15:26:52 new file mode 100644 index 00000000..a88291e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-15-15:26:52 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 root root 436316 2005-10-15 15:26 ccontrol +-rwx------ 1 root root 437916 2005-10-15 15:26 cinit +-rwx------ 1 root root 436316 2005-10-15 15:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-15-21:23:56 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-15-21:23:56 new file mode 100644 index 00000000..43a4504d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-10-15-21:23:56 @@ -0,0 +1,4 @@ +total 36 +-rwx------ 1 nico nico 9148 Oct 15 21:23 ccontrol +-rwx------ 1 nico nico 11872 Oct 15 21:23 cinit +-rwx------ 1 nico nico 9768 Oct 15 21:23 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2005-11-17-17:03:53 b/software/cinit/browse_source/cinit-0.3pre10/size/2005-11-17-17:03:53 new file mode 100644 index 00000000..78543f15 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2005-11-17-17:03:53 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2005-11-17 17:03 ccontrol +-rwx------ 1 nico nico 11872 2005-11-17 17:03 cinit +-rwx------ 1 nico nico 9768 2005-11-17 17:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-11-23:45:54 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-11-23:45:54 new file mode 100644 index 00000000..f4852c81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-11-23:45:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-11 23:45 cinit +-rwx------ 1 nico nico 9768 2006-02-11 23:45 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-12-00:06:11 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-12-00:06:11 new file mode 100644 index 00000000..2fe41351 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-12-00:06:11 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-12-00:06:42 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-12-00:06:42 new file mode 100644 index 00000000..bf2ddc36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-12-00:06:42 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:06 ccontrol +-rwx------ 1 nico nico 11560 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-12-00:08:24 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-12-00:08:24 new file mode 100644 index 00000000..e25a49ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-12-00:08:24 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:08 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:08 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-12-00:09:33 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-12-00:09:33 new file mode 100644 index 00000000..0b64fa00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-12-00:09:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:09 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:09 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-12-00:13:32 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-12-00:13:32 new file mode 100644 index 00000000..b6c5c38e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-12-00:13:32 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:13 ccontrol +-rwx------ 1 nico nico 11500 2006-02-12 00:13 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-16-23:57:29 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-16-23:57:29 new file mode 100644 index 00000000..86b9fda9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-16-23:57:29 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11620 2006-02-16 23:57 cinit +-rwx------ 1 nico nico 9768 2006-02-16 23:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-17-00:16:18 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-17-00:16:18 new file mode 100644 index 00000000..28c853a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-17-00:16:18 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 00:16 cinit +-rwx------ 1 nico nico 9768 2006-02-17 00:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-17-22:48:35 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-17-22:48:35 new file mode 100644 index 00000000..5935acfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-17-22:48:35 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-17 22:48 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 22:48 cinit +-rwx------ 1 nico nico 9768 2006-02-17 22:48 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:03:54 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:03:54 new file mode 100644 index 00000000..9222f0b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:03:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:03 cinit +-rwx------ 1 nico nico 9768 2006-02-20 19:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:04:33 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:04:33 new file mode 100644 index 00000000..c5797edc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:04:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:04:36 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:04:36 new file mode 100644 index 00000000..fbcf9fa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:04:36 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:07:47 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:07:47 new file mode 100644 index 00000000..7e1fe18f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:07:47 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:07 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:12:33 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:12:33 new file mode 100644 index 00000000..2b4fda40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:12:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:12 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:12 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:14:56 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:14:56 new file mode 100644 index 00000000..bccb5d65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-02-20-20:14:56 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:14 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:14 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-01-23:32:43 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-01-23:32:43 new file mode 100644 index 00000000..fcbaf372 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-01-23:32:43 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-01 23:32 ccontrol +-rwx------ 1 nico nico 11640 2006-06-01 23:32 cinit +-rwx------ 1 nico nico 9768 2006-06-01 23:32 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-01:08:28 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-01:08:28 new file mode 100644 index 00000000..7683546c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-01:08:28 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:08 ccontrol +-rwx------ 1 nico nico 11688 2006-06-02 01:08 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-01:29:13 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-01:29:13 new file mode 100644 index 00000000..adbc6846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-01:29:13 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:29 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 01:29 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-11:13:39 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-11:13:39 new file mode 100644 index 00000000..46eaef4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-11:13:39 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:13 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:13 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-11:36:37 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-11:36:37 new file mode 100644 index 00000000..306402f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-11:36:37 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:36 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:36 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-15:17:17 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-15:17:17 new file mode 100644 index 00000000..7bb59095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-15:17:17 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:17 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:17 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-15:19:52 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-15:19:52 new file mode 100644 index 00000000..ce65256f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-06-02-15:19:52 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:19 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:19 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-11-29-235834 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-11-29-235834 new file mode 100644 index 00000000..c2c83117 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-11-29-235834 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73645 2006-11-29 23:57 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-02-172536 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-02-172536 new file mode 100644 index 00000000..4079d5db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-02-172536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73617 2006-12-02 17:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-02-174429 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-02-174429 new file mode 100644 index 00000000..5506928d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-02-174429 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73497 2006-12-02 17:44 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-02-182536 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-02-182536 new file mode 100644 index 00000000..14526d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-02-182536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 72092 2006-12-02 18:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-03-173231 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-03-173231 new file mode 100644 index 00000000..aca9d380 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-03-173231 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71944 2006-12-03 17:32 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-03-174544 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-03-174544 new file mode 100644 index 00000000..3c1cfea2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-03-174544 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71952 2006-12-03 17:45 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-03-191215 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-03-191215 new file mode 100644 index 00000000..4f2a2fa1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-03-191215 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-03 19:12 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-06-084947 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-06-084947 new file mode 100644 index 00000000..487af844 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-06-084947 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-06 08:49 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-14-213559 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-14-213559 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-14-213559 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-14-213717 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-14-213717 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-14-213717 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-14-213739 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-14-213739 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-14-213739 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-14-215315 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-14-215315 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-14-215315 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-14-215334 b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-14-215334 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2006-12-14-215334 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2007-02-17-210059 b/software/cinit/browse_source/cinit-0.3pre10/size/2007-02-17-210059 new file mode 100644 index 00000000..69179604 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2007-02-17-210059 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 75783 2007-02-17 20:59 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2007-02-23-202443 b/software/cinit/browse_source/cinit-0.3pre10/size/2007-02-23-202443 new file mode 100644 index 00000000..19cb71b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2007-02-23-202443 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 69439 2007-02-23 20:15 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2007-02-23-202720 b/software/cinit/browse_source/cinit-0.3pre10/size/2007-02-23-202720 new file mode 100644 index 00000000..19cb71b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2007-02-23-202720 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 69439 2007-02-23 20:15 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2007-03-07-231936 b/software/cinit/browse_source/cinit-0.3pre10/size/2007-03-07-231936 new file mode 100644 index 00000000..c2ef3d0b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2007-03-07-231936 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71213 2007-03-07 23:18 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/size/2007-04-06-011811 b/software/cinit/browse_source/cinit-0.3pre10/size/2007-04-06-011811 new file mode 100644 index 00000000..73de8724 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/size/2007-04-06-011811 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71281 2007-04-06 01:17 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/Makefile b/software/cinit/browse_source/cinit-0.3pre10/src/Makefile new file mode 100644 index 00000000..9639727e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/Makefile @@ -0,0 +1,142 @@ +# +# cinit +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +#include Makefile.tests + +# Build tools / locations +CC=../tmpbin/cc +CFLAGS= +LD=../tmpbin/ld +LDFLAGS= +STRIP=../tmpbin/strip +SBIN=../sbin + +# directories and files +CONFIG_H=include/config.h + +BIN=cinit halt.kill poweroff.kill reboot.kill cmd + +# +# All objects depend on headers. More or less. FIXME: use gcc -M +# +CINIT_HEADERS=$(shell cat include/listing) + +CINIT_OBJ=$(shell cat object_lists/cinit) +HALTKILL_OBJ=$(shell cat object_lists/halt.kill) +POWEROFFKILL_OBJ=$(shell cat object_lists/poweroff.kill) +REBOOTKILL_OBJ=$(shell cat object_lists/reboot.kill) +CMD_OBJ=$(shell cat object_lists/cmd) + +# +# Client modules +# +OBJ=$(CINIT_OBJ) $(HALTKILL_OBJ) $(POWEROFFKILL_OBJ) $(REBOOTKILL_OBJ) + +# +# End user target +# +#all: cinit cservice ccontrol sizecheck docs +all: $(BIN) + + +# +# Generic +# +$(OBJ): $(CINIT_HEADERS) + +%.o: %.c + $(CC) -c -o $@ $< + + + +# +# First do configuration, so we include the right variables +# +Makefile: .configured + +.configured: ../conf/* + @../bin/cinit.configure.os + @../bin/cinit.configure.tools + @../bin/cinit.configure.ipc + @../bin/cinit.configure.mark + +$(CINIT_OBJ): $(CONFIG_H) + + +$(CONFIG_H): ../conf/* + ../scripts/cinit.mkheader > $(CONFIG_H) + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +ccontrol: $(SBIN)/ccontrol + +$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) + $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ + $(STRIP) $@ + +#install: install-dir cinit cservice ccontrol +install: $(BIN) + @echo '*** Installing cinit ***' + cp $^ /sbin +# ./bin/cinit.install.binary + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + + +################################################################################ +# +# Build targets +# +cinit: $(CINIT_OBJ) + $(LD) $^ -o $@ + +halt.kill: $(HALTKILL_OBJ) + $(LD) $^ -o $@ + +poweroff.kill: $(POWEROFFKILL_OBJ) + $(LD) $^ -o $@ + +reboot.kill: $(REBOOTKILL_OBJ) + $(LD) $^ -o $@ + +cmd: $(CMD_OBJ) + $(LD) $^ -o $@ + +uml: cinit + ../../vm/uml/uml-mount.sh + cp cinit ../../vm/uml/root/sbin/cinit + ../../vm/uml/uml-umount.sh + +umlstart: uml + ../../vm/uml/uml-start.sh + +################################################################################ +# +# Generic targets +# + +.PHONY: dist +dist: distclean + +.PHONY: distclean +distclean: clean + rm -f os/current ipc/current .configured + +.PHONY: clean +clean: + rm -f ../tmpbin/*.configured + rm -f $(BIN) $(CINIT_OBJ) + rm -f client/*.o test/*.o diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/Makefile.tests b/software/cinit/browse_source/cinit-0.3pre10/src/Makefile.tests new file mode 100644 index 00000000..0f4b4626 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/Makefile.tests @@ -0,0 +1,27 @@ +# +# Makefile for cinit tests +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +TEST_BUILD_ARGV=test/test_build_argv.o core/build_argv.o + +PROGS=test_build_argv test_build_argv_link + +tests: $(PROGS) + +test_build_argv: test/test_build_argv.o core/build_argv.o +test_build_argv_link: test/test_build_argv+link.o core/build_argv.o + +test_gen_svc_tree: test/test_gen_svc_tree.o svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/gen_svc_tree.o \ + generic/mini_printf.o \ + svc/list_display_all.o + +test_openreadclose: test/test_openreadclose.o generic/openreadclose.o diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ancient/do_change_status.c b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/do_change_status.c new file mode 100644 index 00000000..94b9be76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/do_change_status.c @@ -0,0 +1,70 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ancient/do_result.c b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/do_result.c new file mode 100644 index 00000000..cb51161b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/do_result.c @@ -0,0 +1,33 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return RT_ERR_COMM; + } + + return *value; +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ancient/do_svc_name.c b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/do_svc_name.c new file mode 100644 index 00000000..d427365f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/do_svc_name.c @@ -0,0 +1,51 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ancient/exec_svc.c b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/exec_svc.c new file mode 100644 index 00000000..f217f9e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/exec_svc.c @@ -0,0 +1,264 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +inline pid_t exec_svc(char *abspath, int action) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + SERVICE_LOG(abspath,LOG_SVC_FAIL); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + P_EXEC_FAILED(nargv[0]); + perror(MSG_ERR_EXECVE); + /* FIXME: remove debug, remove double printing without loosing info */ + sleep(3); /* debug */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ancient/msg_change_status.c b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/msg_change_status.c new file mode 100644 index 00000000..836a0fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* FIXME: change return code validation */ + +int msg_change_status(char *svc, char status, pid_t pid) +{ + if(!begin_msg(CMD_CHG_STATUS)) { + return RT_ERR_COMM; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ancient/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/msg_svc_on_off.c new file mode 100644 index 00000000..02948f2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/msg_svc_on_off.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, char action) +{ + if(!begin_msg(action)) return RT_ERR_COMM; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return RT_ERR_COMM; + return (int) do_result(sock,NULL); +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ancient/respawn_svc.c b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/respawn_svc.c new file mode 100644 index 00000000..5c350045 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/respawn_svc.c @@ -0,0 +1,99 @@ +/* + * (c) 2005,2006 Nico Schottelius (nico-linux at schottelius.org) + * respawn_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + D_PRINTF(abspath); + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, CMD_START_SVC) ) { + if(cpid != 0) { + D_PRINTF("sloefen"); + sleep(SLEEP_SVC); + D_PRINTF("Zuende geschlafen"); + } + } + } while(cpid); /* cpid is reset by sig_terminate() */ + + /* FIXME: put most code of sig_terminate here, look for no_kill */ + + /* start off task */ + exec_svc(abspath,CMD_STOP_SVC); + + D_PRINTF("jetzt weg"); + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ancient/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/run_init_svc.c new file mode 100644 index 00000000..f41c1f4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/run_init_svc.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ancient/run_init_svc2.c b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/run_init_svc2.c new file mode 100644 index 00000000..b613ed6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/run_init_svc2.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include /* _exit, fork */ + +#include "cinit.h" +#include "messages.h" +#include "ipc.h" + +int run_svc(char *rpath) { rpath = "test"; return 0; } /* a hack to compile cinit for now */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + if(!cinit_ipc_logon()) _exit(1); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ancient/run_run_svcs.c b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/run_run_svcs.c new file mode 100644 index 00000000..6486c76f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/run_run_svcs.c @@ -0,0 +1,86 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ancient/run_svc.c b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/run_svc.c new file mode 100644 index 00000000..95cc324d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/run_svc.c @@ -0,0 +1,131 @@ +/* + * (c) 2005 Nico Schottelius (nico-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +#error "needs to be cleaned up" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + print_errno(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + print_errno(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ancient/sig_terminate.c b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/sig_terminate.c new file mode 100644 index 00000000..9b23e349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ancient/sig_terminate.c @@ -0,0 +1,60 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + /* FIXME: only send SIGTERM, if not_kill does not exist */ + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + status = kill(cpid,SIGKILL); + if( status == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + D_PRINTF("muesste weg sein"); + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/client/cmd.c b/software/cinit/browse_source/cinit-0.3pre10/src/client/cmd.c new file mode 100644 index 00000000..e74fb666 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/client/cmd.c @@ -0,0 +1,108 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * cmd - the cinit client program - sends commands to cinit + */ + +/* +-e: enable service (including dependencies) +-eo: enable only the service without dependencies +-en: enable service and what it needs, but not its wants + +-d: disable service (including needs) +-do: disable only the service without dependencies +-dw: disable service and needs, but not the wants + +-h: halt +-p: poweroff +-r: reboot + +*/ + +/* #define USAGE_TEXT "cmd - cinit management\n\n" \ + "Usage:\n\ncmd -[phurs]\n" \ + " -s - Service operation\n\n" \ + " start: Start service\n" \ + " start: Start service\n" \ + "\t-s\t- (service) Power off the system\n" \ + "\t-s\t- (service) Power off the system\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-u\t- (update) Reboot (warm) and update cinit\n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n\n" \ + +*/ + +/* Arguments: + + -e: enable service + -d: disable service + + -o: only: omit dependencies on disable / enable + + -h: halt system + -r: reboot system + -p: power off + + +*/ + +#define C_USAGE(error) usage(USAGE_TEXT,error) +#define LOG(a,b) mini_printf(a,1); minit_printf(b,1); + +#include /* getopt */ + +#define OPTIONS "deohpr" + +/*********************************************************************** + * ccontrol: control cinit + */ +int main(int argc, char **argv) +{ + int opt; + + while((opt = getopt(argc,argv,OPTIONS)) != -1) { + switch(opt) { + case 'p': /* power off */ + // LOG(MSG_POWER_OFF); + // msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ +// mini_printf(",1); +// cinit_halt(); + break; + + case 'r': /* reboot */ + // LOG(MSG_REBOOT); + // msg_reboot(CMD_REBOOT); + break; + + default: + // C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + } + + /* argv */ +/* if(argc != 2) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); +*/ + return 0; +} +/* + case 's': + LOG(MSG_RESCUE); + msg_reboot(CMD_RESCUE); + break; + + case 'u': + LOG(MSG_UPDATE); + msg_reboot(CMD_UPDATE); + break; + +*/ diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/client/halt.kill.c b/software/cinit/browse_source/cinit-0.3pre10/src/client/halt.kill.c new file mode 100644 index 00000000..38c31c92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/client/halt.kill.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Halt the system through a kill call + */ + +#include /* kill() */ + +#include "messages.h" /* MSG_* */ +#include "cinit.h" /* print_errno() */ +#include "signals.h" /* signals mapping */ + +int main() +{ + if(kill(1,SIG_CINIT_HALT) == -1) { + print_errno(MSG_HALT_KILL); + return 1; + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/client/poweroff.kill.c b/software/cinit/browse_source/cinit-0.3pre10/src/client/poweroff.kill.c new file mode 100644 index 00000000..aa95acd5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/client/poweroff.kill.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Reboot the system through a kill call + */ + +#include /* kill() */ + +#include "messages.h" /* MSG_* */ +#include "cinit.h" /* print_errno() */ +#include "signals.h" /* signals mapping */ + +int main() +{ + if(kill(1,SIG_CINIT_POWEROFF) == -1) { + print_errno(MSG_POWEROFF_KILL); + return 1; + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/client/reboot.kill.c b/software/cinit/browse_source/cinit-0.3pre10/src/client/reboot.kill.c new file mode 100644 index 00000000..b329dd60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/client/reboot.kill.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Reboot the system through a kill call + */ + +#include /* kill() */ + +#include "messages.h" /* MSG_* */ +#include "cinit.h" /* print_errno() */ +#include "signals.h" /* signals mapping */ + +int main() +{ + if(kill(1,SIG_CINIT_REBOOT) == -1) { + print_errno(MSG_REBOOT_KILL); + return 1; + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/comm/README b/software/cinit/browse_source/cinit-0.3pre10/src/comm/README new file mode 100644 index 00000000..74a0b376 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/comm/README @@ -0,0 +1,20 @@ +All abstracted communication functions. Do not depend on the underlying +inter process communication mechanism. + + - send_command(): client function: sends a command to cinit + - send_service(): client function: send the service name to operate on + + - read_command(): server function: reads beginning of a command + * Extracts the command + * reads client identification (=pid) + * calls other functions, depending on the command send => switch() + - read_service(): server function: reads service + + - write_answer(): server function: answer? + * sends answers to clients => senseful? + + + TODO: + - define information function, that returns various information about + a service + diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/comm/read_command.c b/software/cinit/browse_source/cinit-0.3pre10/src/comm/read_command.c new file mode 100644 index 00000000..8226bef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/comm/read_command.c @@ -0,0 +1,58 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * cinit reads a command sent by a client, called by ipc listener + * + */ + +#include "comm.h" /* message struct definition */ +#include "reboot.h" /* reboot abstraction layer */ + +void read_command(struct s_cmd cmd) +{ + switch(cmd.cmd) { + case CMD_SVC_START: + nextbytes= ... + data + break; + + case CMD_SVC_START_ONLY: + break; + + case CMD_SVC_START_NEEDS: + break; + + case CMD_SVC_STOP: + break; + + case CMD_SVC_STOP_ONLY: + break; + + case CMD_SVC_STOP_WANTS + break; + + /* halt/shutdown/poweroff */ + case CMD_HALT: + cinit_do_halt(); + break; + + case CMD_REBOOT: + cinit_do_halt(); + break; + + case CMD_POWEROFF: + cinit_do_poweroff(); + break; + + /* return error to client */ + default: + break; + + + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/comm/send_command.c b/software/cinit/browse_source/cinit-0.3pre10/src/comm/send_command.c new file mode 100644 index 00000000..bd2849dc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/comm/send_command.c @@ -0,0 +1,15 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * A client sends a command to cinit + */ + +#include "comm.h" /* message struct definition */ + +send_command(struct s_cmd cmd) +{ + /* cinit_ipc_to_server() */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/core/build_argv.c b/software/cinit/browse_source/cinit-0.3pre10/src/core/build_argv.c new file mode 100644 index 00000000..95add5e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/core/build_argv.c @@ -0,0 +1,166 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Build **argv for execution in cinit way: + * 1. check whether cmd is a valid executable + * 2. try to read cmd.params and write parameters + * 3. try to read cmd.env and setup environment + * + * Returns: + * BA_OK: Everything went well, you can use the struct + * BA_NOTFOUND: Binary executable is not available + * BA_PARAMS: Reading the parameters failed (ignoring non-existence!) + * BA_ENV: Reading the environment failed (same as above) + * BA_OTHER: Other error + */ + +#include /* open() */ +#include /* *alloc() */ +#include /* readlink */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* NULL */ +#include /* strchr */ +#include /* stat() */ + +#include "intern.h" +#include "build_argv.h" + + /* + * char *basename: something we should execute + * (*basename) + ".params" will be added as parameters + * (*basename) + ".env" will be added as environment + */ + +int cinit_build_argv(char *basename, struct ba_argv *bav) +{ + int tmp; + int argc; + char pathtmp[PATH_MAX+1]; + char *sbuf = NULL; + char *p; + + /* sane values */ + bav->argv = NULL; + bav->envp = NULL; + + /*********************************************************************** + * Try to get realname (for links) + */ + if((tmp = readlink(basename,pathtmp,PATH_MAX)) == -1) { + /* nothing there? */ + if(errno == ENOENT) { + return BA_E_NOTFOUND; + } + if (errno != EINVAL) { + return BA_E_OTHER; + } + tmp=strlen(basename); + strncpy(pathtmp,basename,tmp); + } + pathtmp[tmp] = '\0'; + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /*********************************************************************** + * prepare argv0 + */ + bav->argv = malloc(sizeof(char *)); + if(bav->argv == NULL) return BA_E_MEM; + + *bav->argv = malloc(tmp); + if(*(bav->argv) == NULL) return BA_E_MEM; + + strncpy(*(bav->argv),pathtmp,tmp); + + /********************** read params *********************/ + /* FIXME check bounds! */ + strcpy(pathtmp,basename); + strcat(pathtmp,C_PARAMS); + /* ORC_ERR_NONEXISTENT: Ok, have sbuf set to NULL + * ORC_OK: Ok, have a filled buffer (perhaps NULL, too) + * other: Error, print errno + */ + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /*********************************************************************** + * Now split the string, converting \n to \0 + */ + argc = 1; /* argv0 */ + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = sbuf; /* here begins the current argument */ + + if(p != NULL) { /* found another \n */ + *p = '\0'; + sbuf = p+1; + } else { /* end of string */ + sbuf = NULL; + } + + ++argc; + } + + /************ close argv list **************/ + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,basename); + strcat(pathtmp,C_ENV); + + tmp = argc = 0; + sbuf = NULL; + + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /************** build environment string **************/ + argc = 0; + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) return BA_E_MEM; + + bav->envp[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + sbuf = p+1; + } else { + sbuf = NULL; + } + ++argc; + } + + /************ close env list **************/ + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) { + return BA_E_MEM; + } + bav->envp[argc] = NULL; + + return BA_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/core/cinit.c b/software/cinit/browse_source/cinit-0.3pre10/src/core/cinit.c new file mode 100644 index 00000000..384f8d3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/core/cinit.c @@ -0,0 +1,94 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The main file + * + */ + +#include /* getpid,chdir */ +#include /* str(ncmp,len,cpy,cat) */ +#include /* perror */ +#include /* malloc */ + +#include "intern.h" /* general things */ +#include "messages.h" /* messages */ +#include "ipc.h" /* general ipc methods */ +#include "svc.h" /* gen_svc_tree */ + +struct listitem *svc_list = NULL; +struct dep *svc_init = NULL; + +int main(int argc, char **argv) +{ + char *initdir = CINIT_INIT; /* default init dir */ +// pid_t cpid; + + + /* FIXME: RE-ENABLE as SOON AS PRODUCTIVE cpid = getpid(); + * Is this really needed or should we lock() ourselves? + if(cpid != 1) { + mini_printf(CINIT_VERSION,2); + mini_printf(MSG_USAGE,2); + return 0; + }*/ + + /* Look whether we should start a profile */ + while(argc > 1) { + if(!strncmp(PROFILE, argv[argc-1], strlen(PROFILE) ) ) { + initdir = (char *) malloc( + strlen(CINIT_SVCDIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2); + if(initdir == NULL) { + panic(); + } + strcpy(initdir, CINIT_SVCDIR); + strcat(initdir, SLASH); + strcat(initdir, &argv[argc-1][strlen(PROFILE)]); + break; + } + --argc; + } + + /* Bootup "logo" */ + mini_printf(MSG_BOOTING,1); mini_printf(initdir,1); mini_printf("\n",1); + + if(chdir(initdir) == -1) { + print_errno(initdir); + panic(); + } + + /* initialize ipc method */ + if(!cinit_ipc_init()) { + panic(); + } + + /* listen to signals */ + set_signals(ACT_SERV); + + /* pre-calculate service tree */ + if(!gen_svc_tree(initdir)) { + panic(); + } + + /* free, if we malloc()ed before */ + if(strcmp(initdir,CINIT_INIT)) { + free(initdir); + } + + /* start tree from the bottom */ + if(!tree_exec(svc_init)) { + panic(); + } + + D_PRINTF("=> cinit started.\n"); + + /* listen for incomming messages: should never return */ + if(!cinit_ipc_listen()) { + panic(); + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/core/do_reboot.c b/software/cinit/browse_source/cinit-0.3pre10/src/core/do_reboot.c new file mode 100644 index 00000000..c6c715be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/core/do_reboot.c @@ -0,0 +1,97 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#include +#include +#include +#include +#include +#include + +#include "ipc.h" + +/* cleaned up own headers */ +#include "intern.h" /* set_signals */ +#include "svc.h" /* shutdown_services */ +#include "messages.h" /* messages */ +#include "reboot.h" /* cinit_poweroff&co */ + +/* cleaned headers */ +#include /* kill() */ + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void do_reboot(int signal) +{ + //struct listitem *tmp; + //char **cmd; + //int i; + + /* + * New code: + * 0. close user ipc + * - notify user! + * - do not allow user interupt anymore + * 1. shutdown services + * - notify user! + * 2. kill -TERM all processes + * - notify user! + * 3. kill -KILL all processes + * - notify user! + * 4. execute /etc/cinit/conf/{halt,reboot,poweroff} + * - notify user! + */ + + /* do not listen to client requests anymore */ + /* and tell the user what happens */ + LOG(MSG_SHUTDOWN_START); + cinit_ipc_destroy(); + set_signals(ACT_CLIENT); /* reset signal handlers */ + + /* shutdown all services: take care about the dependency tree */ + LOG(MSG_SHUTDOWN_SVC); + shutdown_services(svc_list); + + LOG(MSG_SHUTDOWN_KILL); + /* now: all services are down, let's kill all other processes */ + if(kill(-1,SIGTERM) == -1) { + print_errno(MSG_TERMKILL); + } + + sleep_before_kill(); + + if(kill(-1,SIGKILL) == -1) { + print_errno(MSG_KILLBILL); + } + + /* Execute the last command */ + LOG(MSG_SHUTDOWN_LAST); + execute_and_wait(CINIT_LAST); + + /* do what we really wanted to do */ + switch(signal) { + case SIGTERM: /* power off */ + LOG(MSG_POWER_OFF); + cinit_poweroff(); + break; + case SIGHUP: /* reboot */ + LOG(MSG_REBOOT); + cinit_reboot(); + break; + case SIGUSR1: /* halt */ + LOG(MSG_HALT); + cinit_halt(); + break; + } + /* FIXME: should we exit? */ + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/core/panic.c b/software/cinit/browse_source/cinit-0.3pre10/src/core/panic.c new file mode 100644 index 00000000..d3dd9459 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/core/panic.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something + */ + +#include /* execv */ + +#include "intern.h" +#include "messages.h" + +void panic(void) +{ + char *nargv[2]; + + if(execute_and_wait(CINIT_PANIC)) _exit(0); + + /*********************************************************************** + * THIS SHOULD NOT HAPPEN, fallback to hardcoded sulogin + * (conf/sulogin) + */ + nargv[0] = SULOGIN; + nargv[1] = NULL; + + if(execv(SULOGIN,nargv) == -1) { + print_errno(MSG_FATAL_PANIC); + } + + /* there's nothing todo, if everything fails */ + _exit(23); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/core/set_signals.c b/software/cinit/browse_source/cinit-0.3pre10/src/core/set_signals.c new file mode 100644 index 00000000..0ebb6899 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/core/set_signals.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Define signal handlers + */ + + +#include /* sigaction, sigemtpyset */ +#include /* NULL */ +#include "intern.h" /* defines */ +#include "reboot.h" /* reboot related */ +#include "signals.h" /* reboot related */ + +void set_signals(int action) +{ + struct sigaction sa; + + sigemptyset(&sa.sa_mask); /* no other signals should be blocked */ + sa.sa_flags = 0; + + if(action == ACT_SERV) { + sa.sa_handler = sig_child; + sa.sa_flags = SA_NOCLDSTOP; + } else { + sa.sa_handler = SIG_DFL; + } + + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + sa.sa_flags = 0; /* reset flags */ + if(action == ACT_SERV) { + sa.sa_handler = do_reboot; + } + sigaction(SIG_CINIT_HALT, &sa, NULL); /* halt */ + sigaction(SIG_CINIT_POWEROFF, &sa, NULL); /* poweroff */ + sigaction(SIG_CINIT_REBOOT, &sa, NULL); /* reboot */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/core/sig_child.c b/software/cinit/browse_source/cinit-0.3pre10/src/core/sig_child.c new file mode 100644 index 00000000..bdf964ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/core/sig_child.c @@ -0,0 +1,93 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The child handler + * + */ + +#include /* waitpid */ +#include /* NULL */ +#include /* gettimeofday() */ /* FIXME: CHECK POSIX */ +#include /* time(),gettime.. */ /* FIXME: CHECK POSIX */ + +#include "intern.h" /* mini_printf */ +#include "svc.h" /* list_search_pid */ +#include "messages.h" /* messages/D_PRINTF */ + +/*********************************************************************** + * sig_child: (c)collect the children + */ +void sig_child(int tmp) +{ + /* New code: + * - search for pid in service list + * * if (respawn) -> start new + * - insert delay? if exit code is non-zero? if uptime too less? + * * if (once) -> update service status + * * else ignore, but reap away + */ + pid_t pid; + int delay; + struct listitem *svc; +// struct timeval now; + + while((pid = waitpid(-1, &tmp, WNOHANG)) > 0) { + /* check if it's a watched child */ + svc = list_search_pid((pid_t) pid); + + //mini_printf("WHILE1: hier drinne?\n",1); + + if(svc != NULL) { + /* Check, that we are operating on it =. that it is no normal child */ + if(svc->status & ST_ONCE_RUN + || svc->status & ST_SH_RESPAWN + || svc->status & ST_RESPAWNING) { + mini_printf("WHILE: svc bekannt!\n",1); + if(WIFEXITED(tmp) && !WEXITSTATUS(tmp)) { + svc_success(svc); + } else { + svc_fail(svc); + } + } + + //mini_printf("WHILE: Vorm respawn!\n",1); + /* respawn: restart: FIXME Delay for regular dying services */ + if(svc->status == ST_RESPAWNING) { + D_PRINTF("WHILE: IM respawn!\n"); + svc_report_status(svc->abs_path,MSG_SVC_RESTART,NULL); + D_PRINTF("WHILE: IM respawn: nach report status!\n"); + + //delay = MAX_DELAY / (time(NULL) - svc->start); + /* if(gettimeofday(&now,NULL) == -1) { + print_errno(MSG_GETTIMEOFDAY);; + delay = 0; + } else { + delay = MAX_DELAY / (now.tv_sec - svc->start); + } */ + + delay = 5; + + /* int test = time(NULL); + test++; + D_PRINTF("WHILE: IM respawn / for printf!\n"); + printf("sig_child: %d, %d, %d, %d\n", + MAX_DELAY, + (int) time(NULL), + (int) svc->start, + (int) (test - svc->start) + ); */ + + // mini_printf("WHILE: Vorm SVC_START!\n",1); + svc_start(svc,delay); + } + //mini_printf("WHILE: NACH respawn!\n",1); + } else { + /* FIXME remove in production version */ + D_PRINTF("Cleanup: reparenting\n"); + } + //mini_printf("WHILE2: Ende sigchild\n",1); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/generic/execute_and_wait.c b/software/cinit/browse_source/cinit-0.3pre10/src/generic/execute_and_wait.c new file mode 100644 index 00000000..ab808ff1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/generic/execute_and_wait.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something, but fork() before + * + */ + +#include /* pid_t */ +#include /* waitpid */ +#include /* fork */ + +#include "messages.h" /* MSG_* */ +#include "intern.h" /* print_errno, execute_sth */ + +int execute_and_wait(char *svc) +{ + pid_t pid; + int status; + + /* fork */ + pid = fork(); + + if(pid == -1) { + print_errno(MSG_ERR_FORK); + return 0; + } + + /* exec / child */ + if(pid == 0) { + execute_sth(svc); /* exits itself */ + } + + /* wait / parent */ + waitpid(pid,&status,0); + + if(WIFEXITED(status)) { + if(WEXITSTATUS(status) == 0) { + return 1; + } + } + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/generic/execute_sth.c b/software/cinit/browse_source/cinit-0.3pre10/src/generic/execute_sth.c new file mode 100644 index 00000000..ac34b3ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/generic/execute_sth.c @@ -0,0 +1,43 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Executes something: replaces us + */ + +#include /* _exit */ + +#include "intern.h" +#include "build_argv.h" +#include "messages.h" /* D_PRINTF */ + +void execute_sth(char *basename) +{ + int tmp; + struct ba_argv bav; + + /* FIXME remove later */ + D_PRINTF("ES::"); + D_PRINTF(basename); + D_PRINTF("\n"); + + tmp = cinit_build_argv(basename,&bav); + if((tmp = cinit_build_argv(basename,&bav)) != BA_OK) { + if(tmp != BA_E_MEM) { /* do not print something on memory errors */ + print_errno(basename); + } + _exit(1); + } + + /* tell the user what we execute */ + mini_printf(MSG_INTRO_EXEC,1); + mini_printf((bav.argv)[0],1); + mini_printf("\n",1); + + execve((bav.argv)[0], bav.argv, bav.envp); + print_errno(basename); + _exit(1); /* simply exit non-zero. That's enough for cinit to recognize + it as faulty */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/generic/file_exists.c b/software/cinit/browse_source/cinit-0.3pre10/src/generic/file_exists.c new file mode 100644 index 00000000..11cda58f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/generic/file_exists.c @@ -0,0 +1,64 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * check whether file exists and is a file + */ + +#include /* errno */ +#include /* stat */ +#include /* NULL */ + +#include "intern.h" /* print_errno() */ +#include "svc.h" /* svc_report_status() */ +#include "messages.h" /* messages.. */ + +int file_exists(char *filename) +{ + struct stat buf; + + D_PRINTF("FE: "); + D_PRINTF(filename); + D_PRINTF("\n"); + + /* check: + * - is it a link? if so, is it broken? report! + * - is it non existent? -> return non-existent + * - is it existent, but not a regular file? report! + */ + if(lstat(filename,&buf) == -1) { /* lstat fails? */ + if(errno == ENOENT) { + mini_printf("NIX DA: ok.\n",1); + return FE_NOT; + } else { + mini_printf("anderer fehler.\n",1); + print_errno(filename); + return FE_ERR; + } + } else { + if(S_ISLNK(buf.st_mode)) { /* is a link */ + mini_printf("ist nen link\n",1); + + /* check link destination */ + if(stat(filename,&buf) == -1) { /* do real stat(): */ + if(errno == ENOENT) { + svc_report_status(filename,MSG_BROKENLINK,NULL); + return FE_NOLINK; + } else { + mini_printf("anderer fehler.\n",1); + print_errno(filename); + return FE_ERR; + } + } + } + } /* caught all stat() errors */ + + if(!S_ISREG(buf.st_mode)) { + svc_report_status(filename,MSG_NONREGULAR,NULL); + return FE_OTHER; + } + + return FE_FILE; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre10/src/generic/mini_printf.c new file mode 100644 index 00000000..d5b0d1f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/generic/mini_printf.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Print the world! + * + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) return; + + p = str; + while(*p) p++; + + write(fd,str,(size_t) (p - str)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/generic/openreadclose.c b/software/cinit/browse_source/cinit-0.3pre10/src/generic/openreadclose.c new file mode 100644 index 00000000..b271b410 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/generic/openreadclose.c @@ -0,0 +1,66 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * read a file + * + */ + +#include /* open, read, close */ +#include /* strncpy */ +#include /* realloc */ +#include /* errno */ +#include /* NULL */ +#include /* open */ +#include "intern.h" /* ORC_* */ + +int openreadclose(char *filename, char **where) +{ + + int tmp; + int cnt; + int fd; + char buf[512]; + + *where = NULL; + + /* what a wonderful loop */ + while((fd = open(filename,O_RDONLY)) == -1) { + if(errno == ENOENT) return ORC_ERR_NONEXISTENT; + if(errno != EINTR) return ORC_ERR_OPEN; + } + + cnt = 0; + while (1) { + tmp = read(fd,buf,512); + + if(tmp == -1) { + if(errno == EINTR) + continue; + else + return ORC_ERR_READ; + } else if(tmp == 0) { + break; + } + + cnt += tmp; + *where = realloc(*where,cnt + 1); + if(*where == NULL) return ORC_ERR_MEM; + + /* FIXME check correctness of copied buffer... + * and get some sleep..soon, very soon! */ + strncpy(&(*where)[cnt-tmp],buf,tmp); + } + + while((fd = close(fd)) == -1) { + if(errno == EINTR) continue; + return ORC_ERR_CLOSE; + } + + /* terminate string! */ + (*where)[cnt] = '\0'; + + return ORC_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/generic/path_absolute.c b/software/cinit/browse_source/cinit-0.3pre10/src/generic/path_absolute.c new file mode 100644 index 00000000..ef8b002e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/generic/path_absolute.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create an absulte path + */ + +#include /* chdir(),getcwd */ +#include /* PATH_MAX */ +#include "intern.h" /* print_errno */ +#include "messages.h" /* messages */ + +int path_absolute(char *relpath, char *newpath, size_t size) +{ + char oldpath[PATH_MAX+1]; + + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + if(chdir(relpath) == -1) { + print_errno(relpath); + return 0; + } + + if(!getcwd(newpath,size)) { + print_errno(relpath); + return 0; + } + + if(chdir(oldpath) == -1) { + print_errno(oldpath); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/generic/path_append.c b/software/cinit/browse_source/cinit-0.3pre10/src/generic/path_append.c new file mode 100644 index 00000000..87cc49ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/generic/path_append.c @@ -0,0 +1,28 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create path to needs + */ + +#include /* strlen */ +#include /* PATH_MAX */ + +#include "intern.h" /* mini_printf, PD_ERR */ + +int path_append(char *path, char *append) +{ + size_t end = strlen(path); + + if(strcmp(&path[end-1],SLASH)) { + if((end + strlen(SLASH) + strlen(append)) > PATH_MAX) return 0; + strcat(path,SLASH); + } else { + if((end + strlen(append)) > PATH_MAX) return 0; + } + strcat(path,append); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/generic/print_errno.c b/software/cinit/browse_source/cinit-0.3pre10/src/generic/print_errno.c new file mode 100644 index 00000000..0286f550 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/generic/print_errno.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * stolen from tcpserver_blocker + * + * Author: Nico Schottelius + * Date: 2006-08-24 + * + * Print the error found in errno + */ + +#include /* strerror */ +#include /* errno */ + +#include "intern.h" /* mini_printf, PD_ERR */ + +void print_errno(char *msg) +{ + if(msg) { + mini_printf(msg, FD_ERR); + mini_printf(": ", FD_ERR); + } + mini_printf(strerror(errno), FD_ERR); + mini_printf("\n", FD_ERR); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/generic/sleep_before_kill.c b/software/cinit/browse_source/cinit-0.3pre10/src/generic/sleep_before_kill.c new file mode 100644 index 00000000..e3c92615 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/generic/sleep_before_kill.c @@ -0,0 +1,43 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Sleep: + * read configuration, + * fallback to builtin value if not possible, + * sleep. + * + */ + +#include /* nanosleep */ +#include /* strtol() */ +#include /* errno */ + +#include "intern.h" /* print_errno */ +#include "messages.h" /* messages */ + +void sleep_before_kill() +{ + char *content; + int tmp; + struct timespec ts; + + if(openreadclose(CINIT_SLEEPFILE,&content) == ORC_OK) { + errno = 0; + tmp = strtol(content, NULL, 10); + if(errno != 0) tmp = SLEEP_KILL; + free(content); + } else { + mini_printf(MSG_BUILTIN_SLEEP,1); + tmp = SLEEP_KILL; + } + + ts.tv_sec = tmp; + ts.tv_nsec = 0; + + if(nanosleep(&ts,NULL) == -1) { + print_errno(MSG_ERR_SLEEP); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/generic/strip_final_newline.c b/software/cinit/browse_source/cinit-0.3pre10/src/generic/strip_final_newline.c new file mode 100644 index 00000000..4629bb9f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/generic/strip_final_newline.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * If the last character is \n, shrink the memory and remove it + * + */ + +#include /* NULL */ +#include /* strchr */ +#include /* alloc */ + +char *strip_final_newline(char *str) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) { + return NULL; + } + + p = strrchr(str,'\n'); + if(p) { + if(*(p+1) == '\0') { + *p = '\0'; /* DO NOT FORGET TO TERMINATE STRING */ + str = realloc(str,(p-str)); + } + } + + return str; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/generic/usage.c b/software/cinit/browse_source/cinit-0.3pre10/src/generic/usage.c new file mode 100644 index 00000000..260b4ea5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/generic/usage.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * usage: tell the world what we want - seriously no capitalism + * usage: tell the user what's wrong and a help text + * + */ + +#include /* _exit() */ +#include "intern.h" /* mini_printf */ + +void usage(char *banner, char *text) +{ + /* print banner + error message */ + mini_printf(banner,1); + mini_printf(text,1); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/include/build_argv.h b/software/cinit/browse_source/cinit-0.3pre10/src/include/build_argv.h new file mode 100644 index 00000000..b61b27a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/include/build_argv.h @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * build **argv + */ + +#ifndef CINIT_BA_HEADER +#define CINIT_BA_HEADER + +/***************************************************************************** + * Defines: return values + */ +enum { + BA_OK, + BA_E_NOTFOUND, + BA_E_PARAMS, + BA_E_ENV, + BA_E_MEM, + BA_E_OTHER +}; + +/***************************************************************************** + * Structures + */ +struct ba_argv { + char **argv; + char **envp; +}; + +/***************************************************************************** + * Functions + */ +int cinit_build_argv(char *basename, struct ba_argv *bav); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/include/comm.h b/software/cinit/browse_source/cinit-0.3pre10/src/include/comm.h new file mode 100644 index 00000000..4fbe8c50 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/include/comm.h @@ -0,0 +1,81 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit (at) schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#ifndef CINIT_COMM_HEADER +#define CINIT_COMM_HEADER + +#include /* PATH_MAX */ +#include /* pid_t */ + +/*********************************************************************** + * Commands the clients may issue to us + * maximum number of commands: 2^8 = 256 + */ +enum commands { + CMD_MIN='A', /* minimum command number */ + CMD_SVC_START, /* the client wants US to start a service */ + CMD_SVC_START_ONLY, /* start this service without dependencies */ + CMD_SVC_START_NEEDS, /* start this service, needs, but no wants */ + CMD_SVC_STOP, /* stop svc and all svcs that need it */ + CMD_SVC_STOP_ONLY, /* we should stop _only_ this service */ + CMD_SVC_STOP_WANTS, /* stop svc, all svcs that need or want it */ + CMD_CHG_STAT, /* the client reports a status change */ /* FIXME: NEEDED? */ + CMD_RESCUE, /* we should start the rescue mode */ /* UNIMPLEMENTED */ + CMD_HALT, /* halt the system */ + CMD_REBOOT, /* reboot the system */ + CMD_POWEROFF, /* poweroff the system */ + CMD_WBOOT, /* shutdown and restart everything */ /* UNIMPLEMENTED */ + CMD_INFO, /* send information about that service */ /* UNIMPLEMENTED */ + CMD_MAX , /* maximum command number */ +}; + +/* old + RT_ERR_COMM, * communication failed * + RT_ERR, * service starting failed * + RT_UNSPEC, * some kind of error, unspecified * + RT_SUCCESS, * successfully started: respawning or once * + RT_SVC_FAILED, * tried earlier, service failed, won't retry * + +*/ + +/*********************************************************************** + * client issues a command: start_command + */ +struct s_cmd { + char cmd; + pid_t pid; +}; + +/*********************************************************************** + * messages from the client + * Prefix: qst_ (question) + */ +struct msg_client { + pid_t pid; /* pid of the telling client */ + char cmd; /* which cmd is issued to us */ + char status; /* status of the service */ + char svc[PATH_MAX]; /* name of the service */ + char svc_orig[PATH_MAX]; /* the service, which wants to start us */ +}; + +/*********************************************************************** + * messages from the server + * Prefix: asw_ (answer) + */ + +/*********************************************************************** + * return short status + */ +struct asw_sstatus { + long mtype; + char status; + char msg[PATH_MAX]; +}; + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/include/intern.h b/software/cinit/browse_source/cinit-0.3pre10/src/include/intern.h new file mode 100644 index 00000000..e37a8352 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/include/intern.h @@ -0,0 +1,113 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * internal header + */ + + +#ifndef _CINIT_INTERN_H +#define _CINIT_INTERN_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/*********************************************************************** + * Defines + */ +#define SLASH "/" +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC + +enum { /* FIXME: there are some default defines somewhere for that */ + FD_IN=0, + FD_OUT=1, + FD_ERR=2 +}; + +enum { /* returns of openreadclose */ + ORC_OK, /* everything went fine */ + ORC_ERR_NONEXISTENT, /* file does not exist */ + ORC_ERR_OPEN, /* error opening the file */ + ORC_ERR_READ, + ORC_ERR_CLOSE, + ORC_ERR_MEM +}; + +/* values for execute_sth: + * STRICT: print and error, if .../on does not exist + * NOSTRICT: no .../on is fine + */ +enum { + EXEC_STRICT, + EXEC_NOSTRICT +}; + +enum { + FE_FILE, /* file exists and is a file */ + FE_OTHER, /* file exists, but is no file */ + FE_NOT, /* file does not exist */ + FE_NOLINK, /* file is a broken symbolic link*/ + FE_ERR /* some error occured */ +}; + +/*********************************************************************** + * Paths + */ +#define CINIT_SVCDIR CINIT_DIR SLASH SVCDIR +#define CINIT_INIT CINIT_SVCDIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK +#define CINIT_BIN PREFIX SLASH "sbin" SLASH "cinit" + +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC +#define CINIT_LAST CINIT_CONFDIR SLASH C_LAST +#define CINIT_SLEEPFILE CINIT_CONFDIR SLASH SLEEP_BEFORE_KILL + +/* needed by set_signals */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* functions (used by server and client) */ +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +void usage(char *banner, char *stext); + +int do_svc_name(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* core functions */ +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +int msg_svc_on_off(char *svc, char action); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +pid_t respawn_svc(char *abspath); +char **read_file(char *file); +void sig_terminate(int signal); + +/* generic */ +void execute_sth(char *basename); +int execute_and_wait(char *svc); +int path_append(char *path, char *append); +int path_absolute(char *relpath, char *buf, size_t size); +int openreadclose(char *filename, char **where); +char *strip_final_newline(char *str); +int file_exists(char *filename); +void sleep_before_kill(); + +/* util */ +//int msg_reboot(char cmd); +void print_errno(char *text); + +#endif /* _CINIT_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/include/ipc.h b/software/cinit/browse_source/cinit-0.3pre10/src/include/ipc.h new file mode 100644 index 00000000..66b3bc86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/include/ipc.h @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Prototypes for ipc handler + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +/***************************************************************************** + * Functions: in server + */ +int cinit_ipc_init(void); /* init in init */ +int cinit_ipc_listen(void); /* listen in init */ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + +/***************************************************************************** + * Functions: in clients + */ +int cinit_ipc_logon(void); /* logon to init (client init) */ +int cinit_ipc_connect(void); /* connect to init */ +int cinit_ipc_csend(void *data); /* send to the server from a client */ + +/***************************************************************************** + * Functions: shared + */ + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/include/listing b/software/cinit/browse_source/cinit-0.3pre10/src/include/listing new file mode 100644 index 00000000..edf4b7e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/include/listing @@ -0,0 +1,9 @@ +include/intern.h +include/comm.h +include/config.h +include/ipc.h +include/messages.h +include/os.h +include/reboot.h +include/signals.h +include/svc.h diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/include/messages.h b/software/cinit/browse_source/cinit-0.3pre10/src/include/messages.h new file mode 100644 index 00000000..582d4dc4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/include/messages.h @@ -0,0 +1,161 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit (at) schottelius.org) + * + * part of cLinux/cinit + * + * All messages + */ + +#ifndef _CINIT_MSG_H +#define _CINIT_MSG_H + +/* version */ +#define CINIT_VERSION "cinit-" VERSION +#define MSG_BOOTING CINIT_VERSION ": Booting from " + +#define MSG_DP ": " + +/* OLD Messages to the outside */ +//#define MSG_BIND "bind" +//#define MSG_CONNECT "connect" +//#define MSG_FCNTL "fcntl" +//#define MSG_LISTEN "listen" +//#define MSG_SOCKET "socket" +#define MSG_USAGE_1 ": fast executing, small and simple init " +#define MSG_USAGE_2 "with support for profiles\n" +#define MSG_USAGE_3 "\nError: cinit must be started as PID 1.\n" +#define MSG_USAGE MSG_USAGE_1 MSG_USAGE_2 MSG_USAGE_3 +#define MSG_ERR_FORK "fork" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_OPEN "open" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_READ "read" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" + +#define MSG_ERR_DEPS "Too many dependencies" +#define MSG_ERR_ACCEPT "accept" +#define MSG_ERR_WAITPID "waitpid" +#define MSG_ERR_POLL "poll" +#define MSG_ERR_MODIFY "modify list failed" +#define MSG_ERR_COMM "Communication failed" + +#define MSG_ERR_LESS_ARGS "Too less arguments!" +#define MSG_ERR_BAD_ARGS "Wrong arguments / parameter" +#define MSG_ERR_ARGS_LEN "Wrong parameter length" + +#define LOG_SVC_STOPED "Service stoped" +#define LOG_SVC_ONCE "Started once" +#define LOG_SVC_RESPAWN "Respawns now" +#define LOG_NEED_FAIL "One or more need failed" +#define LOG_SVC_FAILED "Service already failed, not starting." +#define LOG_SVC_NOTEXIST "Service does not exist" + +#define MSG_EXEC_FAILED "Failed to execute " + +#define MSG_RESCUE "Switching to rescue mode ..." +#define MSG_UPDATE "Updating cinit ..." +#define MSG_HOT_REBOOT "Hot reboot in progress ..." + +#define MSG_SHOULD_NOT_HAPPEN "This should not happen, I do not know what todo!" + +/* DEBUG */ +#ifdef DEBUG +# include +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) {} +#endif + +/* macros */ +#define SERVICE_LOG(svc,message) { \ + mini_printf(svc,1); \ + mini_printf(MSG_DP,1); \ + mini_printf(message,1); \ + mini_printf("\n",1); \ +} +#define LOG(s) { \ + mini_printf(s,1); \ + mini_printf("\n",1); \ +} +#define P_START_SERVICE(name) { mini_printf(MSG_START_SVC,1); mini_printf(name,1); mini_printf("\n",1); } +#define P_EXEC_FAILED(name) { mini_printf(MSG_EXEC_FAILED,1); mini_printf(name,1); mini_printf("\n",1); } + +/* NEW (clean) Service status: Messages to the outside */ + +/* services: how they should be printed + * /etc/cinit/svc/long/name: started once + * /etc/cinit/svc/long/name: is respawning + * /etc/cinit/svc/long/name: FAILED (why it happened) + */ + +#define MSG_INTRO_CINIT "cinit:" +#define MSG_INTRO_SPACE MSG_INTRO_CINIT " " +#define MSG_INTRO_SVC MSG_INTRO_CINIT +//#define MSG_INTRO_SVC MSG_INTRO_CINIT "service:" +#define MSG_INTRO_STOP MSG_INTRO_CINIT "stop: " +#define MSG_INTRO_EXEC MSG_INTRO_CINIT "exec: " + +/* FIXME: remove/append, but no intro! */ +#define MSG_INTRO_FAIL "FAILED " +#define MSG_INTRO_RESPAWN MSG_INTRO_CINIT "respawn: " +#define MSG_INTRO_OK MSG_INTRO_CINIT "ok: " + +#define MSG_SVC_FORK "fork() failed" +#define MSG_SVC_NEED_FAIL MSG_INTRO_FAIL "Needs failed for service" +#define MSG_SVC_FAIL MSG_INTRO_FAIL "Service failed!" + + +#define MSG_BUILTIN_SLEEP MSG_INTRO_STOP "Using built-in sleep" + +#define MSG_TREE_EXEC MSG_INTRO_SPACE "Execution of reverse service tree\n" + +/* general errors */ +#define MSG_GETCWD "Getcwd failed! Your system is most likely broken!" +#define MSG_FATAL_PANIC MSG_INTRO_SPACE "I tried everything, but even panic() failed: " +#define MSG_ERR_SLEEP MSG_INTRO_SPACE "Sleep did not succeed" +#define MSG_GETTIMEOFDAY MSG_INTRO_SPACE "gettimeofday() failed!" + +/* execution */ +//#define MSG_EXECUTING MSG_INTRO_EXEC + +/* stat() errors */ +#define MSG_NONREGULAR "Is not a regular file." +#define MSG_BROKENLINK "Is a broken link." + +/* Service messages */ +#define MSG_SVC_START "Starting... " +#define MSG_SVC_STOP "Stoping... " +#define MSG_SVC_RESTART "Restarted." +#define MSG_SVC_SLEEP "Sleeping before restart" +#define MSG_SVC_OK_ONCE "Started once." +#define MSG_SVC_OK_RESPAWN "Is respawning." + +/* Status messages */ +#define MSG_SHUTDOWN_START MSG_INTRO_STOP "\nBeginning the shutdown process..." +#define MSG_SHUTDOWN_SVC MSG_INTRO_STOP "Shutting down services now..." +#define MSG_SHUTDOWN_KILL MSG_INTRO_STOP "Killing remaining processes..." +#define MSG_SHUTDOWN_LAST MSG_INTRO_STOP "Executing final service..." +#define MSG_POWER_OFF MSG_INTRO_STOP "Powering off..." +#define MSG_HALT MSG_INTRO_STOP "Halting system ..." +#define MSG_REBOOT MSG_INTRO_STOP "Rebooting ..." + +/* client messages */ +#define MSG_HALT_KILL "halt.kill" +#define MSG_REBOOT_KILL "reboot.kill" +#define MSG_POWEROFF_KILL "poweroff.kill" + + +/* reboot */ +#define MSG_TERMKILL MSG_INTRO_FAIL "SIGTERM" +#define MSG_KILLBILL MSG_INTRO_FAIL "SIGKILL" + +#endif /* _CINIT_MSG_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/include/os.h b/software/cinit/browse_source/cinit-0.3pre10/src/include/os.h new file mode 100644 index 00000000..b3320c0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/include/os.h @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * os specific functions + */ + +#ifndef CINIT_OS_HEADER +#define CINIT_OS_HEADER + +/***************************************************************************** + * Functions + */ +void cinit_halt(void); +void cinit_poweroff(void); +void cinit_reboot(void); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/include/reboot.h b/software/cinit/browse_source/cinit-0.3pre10/src/include/reboot.h new file mode 100644 index 00000000..cd8a345e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/include/reboot.h @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot specific functions + * + */ + +#ifndef CINIT_REBOOT_HEADER +#define CINIT_REBOOT_HEADER + +/***************************************************************************** + * the main reboot function + */ +void do_reboot(int signal); + + +/***************************************************************************** + * os specific functions + */ +void cinit_reboot(void); +void cinit_halt(void); +void cinit_poweroff(void); + + +/***************************************************************************** + * Functions: abstract do_reboot + */ +#define cinit_do_reboot() do_reboot(SIGHUP) +#define cinit_do_halt() do_reboot(SIGUSR1) +#define cinit_do_poweroff() do_reboot(SIGTERM) + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/include/signals.h b/software/cinit/browse_source/cinit-0.3pre10/src/include/signals.h new file mode 100644 index 00000000..a51e402d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/include/signals.h @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Define signals to use: needs signal.h to be included before. + */ + +#ifndef CINIT_SIGNALS_HEADER +#define CINIT_SIGNALS_HEADER + +#define SIG_CINIT_HALT SIGUSR1 +#define SIG_CINIT_POWEROFF SIGTERM +#define SIG_CINIT_REBOOT SIGHUP + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/include/svc.h b/software/cinit/browse_source/cinit-0.3pre10/src/include/svc.h new file mode 100644 index 00000000..1f78e427 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/include/svc.h @@ -0,0 +1,129 @@ +/*********************************************************************** + * + * 2006,2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + + +#ifndef _CINIT_SVC_H +#define _CINIT_SVC_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* service list */ +struct listitem { + struct listitem *prev; /* previous item */ + struct listitem *next; /* next item */ + + char *abs_path; /* name of service */ + long int status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + time_t start; /* time the process was started last time */ + + + struct dep *wanted; /* list of services that want this service */ + struct dep *needed; /* list of services that need this service */ + + struct dep *wants; /* list of services that this service wants */ + struct dep *needs; /* list of services that this service needs */ +}; + +/* list of dependencies */ +struct dep { + struct dep *prev; + struct dep *next; + struct listitem *svc; +}; + +/* variables */ +extern struct dep *svc_init; /* the services to start */ +extern struct listitem *svc_list; /* the list of services */ + +/* list functions */ +struct listitem *list_insert(char *path, int status); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); +struct listitem *list_search(char *path); +struct listitem *list_search_pid(pid_t pid); +//int list_display_all(); /* debug only */ + + +/* service */ +struct listitem *svc_create(char *svc); +struct listitem *gen_svc_tree(char *svc); +int check_add_deps(struct listitem *svc, int type); +void dep_entry_add(struct dep **list, struct dep *new); +struct dep *dep_entry_del(struct dep *del); +int tree_exec(struct dep *start); +int svc_set_status(struct listitem *li, int status); +int svc_should_respawn(struct listitem *li); +int svc_needs_status(struct listitem *li); +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type); +struct dep *dep_create(struct listitem *svc); +void svc_success(struct listitem *li); +void svc_fail(struct listitem *li); +void svc_report_status(char *svc, char *msg, char *err); +void svc_start(struct listitem *li, int delay); +void shutdown_services(struct listitem *start); + + +/*********************************************************************** + * to decide whether to operate on needs or wants + */ +enum dep_types { + DEP_WANTS, + DEP_NEEDS +}; + +/*********************************************************************** + * status of a service and return codes - errors and success + */ +enum svc_status_old { + ST_TMPNOW=1, /* the client is now starting the service NEEDED??? */ + ST_NOTEXIST, /* service does not exist */ + + ST_NEED_FAIL, /* failed to start a need for this service */ + ST_FAIL, /* failed to start service */ + + ST_OFF, /* service is off */ + ST_OFF_ALL, /* service and those that need it are off */ + ST_OFF_ALL_F, /* same, but something failed */ + ST_OFF_WANTS, /* service + those that need or want it are off */ + ST_OFF_WANTS_F, /* same, but something failed */ + + ST_TMP, /* currently working on it */ + ST_ONCE, /* executed once */ + ST_RESPAWN /* running and respawning */ +}; + +/*********************************************************************** + * The real status types a service may have (ignore above) + * We have 32 Bits, we should use them ;-) + */ +enum svc_status { + /* first define basics */ + ST_SH_ONCE = 0x1, /* service SHould be started once */ + ST_SH_RESPAWN = 0x2, /* service SHould respawn */ + ST_ONCE_OK = 0x4, /* service was successfully started once */ + ST_ONCE_FAIL = 0x8, /* service failed to start */ + ST_RESPAWNING = 0x10, /* service is respawning */ + ST_NEED_FAILD = 0x20, /* this service is not started, need failed */ + ST_IN_LIST = 0x40, /* this service is being started (= in list) */ + ST_BAD_ERR = 0x80, /* some kind of error that SHOULD NOT happen */ + ST_ONCE_RUN = 0x100 /* the once process is currently running */ +}; + +/*********************************************************************** + * Possibilities the needs of a service may have + */ +enum svc_needs_status { + SNS_NEEDS_STARTED = 1, /* all needs are started. We may start, too */ + SNS_NEEDS_FAILED, /* one ore more needs failed */ + SNS_NEEDS_UNFINISHED /* one ore more needs are not yet started */ +}; +#endif /* _CINIT_SVC_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq-rt/README b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq-rt/README new file mode 100644 index 00000000..cc1a1b7e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq-rt/README @@ -0,0 +1,2 @@ +This implementation uses the new realtime inferface of +posix instead of the old one functions. diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq-rt/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq-rt/cinit_ipc_init.c new file mode 100644 index 00000000..ef22b6d1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq-rt/cinit_ipc_init.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include + +#include "cinit.h" +#include "config.h" +#include "msgq-rt.h" + +int cinit_ipc_init(void) +{ + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq-rt/mq_open.c b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq-rt/mq_open.c new file mode 100644 index 00000000..445e7dc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq-rt/mq_open.c @@ -0,0 +1,20 @@ +#include +#include + +int main() +{ + mqd_t readq = mq_open("/test",O_RDWR|O_CREAT|O_EXCL); + //mqd_t readq = mq_open("/bin/ls",O_RDWR|O_CREAT|O_EXCL); + + if(readq == -1) { + perror("oh nein"); + return 1; + } + mqd_t writeq = mq_open("/bin/cp",O_WRONLY|O_CREAT|O_EXCL); + if(readq == -1) { + perror("oh oh nein"); + return 1; + } +} + + diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq-rt/msgq-rt.h b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq-rt/msgq-rt.h new file mode 100644 index 00000000..d09a2808 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq-rt/msgq-rt.h @@ -0,0 +1,39 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +#define MSGQ_PATHNAME "/cinit" /* identifier */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + pid_t pid; + struct msg_client msg; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server_short { + long mtype; + struct asw_sstatus answer; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/README.text b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/README.text new file mode 100644 index 00000000..c9a1acf2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/README.text @@ -0,0 +1,20 @@ +cinit/src/ipc/msgq: About this msqg implementation +=================================================== +Nico Schottelius +0.1, Initial Version from 2006-08-04 +:Author Initials: NS + +Intro here + +Introduction +------------ + +cinit opens a + +Files +----- +- README.text: This file +- cinit_init_ipc.c: Init +msgq.h +objects + diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/cinit_ipc_destroy.c b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/cinit_ipc_destroy.c new file mode 100644 index 00000000..aa0f27c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/cinit_ipc_destroy.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Destory ipc mechanism, cinit is gonna die soon. + * + */ + +#include /* msgget */ +#include /* NULL */ + +#include "msgq.h" /* mq_in, mq_out */ +#include "intern.h" /* print_errno */ + +void cinit_ipc_destroy(void) +{ + if(msgctl(mq_in,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } + if(msgctl(mq_out,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/cinit_ipc_init.c new file mode 100644 index 00000000..67edc538 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/cinit_ipc_init.c @@ -0,0 +1,46 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "intern.h" /* print_errno */ +#include "msgq.h" /* message queue */ + +int cinit_ipc_init(void) +{ + key_t k_tmp; + + /* to_server */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + if(k_tmp == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + mq_in = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_in == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + /* to_client */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + if(k_tmp == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + mq_out = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/cinit_ipc_listen.c new file mode 100644 index 00000000..30a5d5bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/cinit_ipc_listen.c @@ -0,0 +1,59 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* printf() */ + +#include /* ftok */ +#include /* msgget */ +#include /* errno */ + +#include "intern.h" /* print_errno */ +#include "config.h" +#include "msgq.h" +#include "comm.h" /* the cmd struct */ + +int cinit_ipc_listen(void) +{ + int tmp; + + //struct msg_client m_client; + + struct s_cmd cmd; + + while (1) { + mini_printf("IPC loop\n",1); + + tmp = msgrcv(mq_in,&cmd,(sizeof cmd),0,0); + + if(tmp == -1) { + if(errno != EINTR) { + print_errno(MSG_MSGQ_MSGRCV); + } + continue; + } + + printf("pid: %d, cmd: %c\n",cmd.pid,cmd.cmd); + + //read_command(cmd); + + /* use pid as the message type + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + return 0; + } */ + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/cinit_ipc_logon.c b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/cinit_ipc_logon.c new file mode 100644 index 00000000..c279bf58 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/cinit_ipc_logon.c @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "intern.h" /* print_errno */ +#include "msgq.h" + +int cinit_ipc_logon(void) +{ + key_t k_in, k_out; /* FIXME: remove one variable */ + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + k_out = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/cinit_ipc_sclose.c b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/cinit_ipc_sclose.c new file mode 100644 index 00000000..a2e3d992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/cinit_ipc_sclose.c @@ -0,0 +1,14 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Close the ressources from the server, clean state for forks. + * + */ + +int cinit_ipc_sclose(void) +{ + return 1; /* nothing to do when using message queues */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/msgq.h b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/msgq.h new file mode 100644 index 00000000..01c6e769 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/msgq.h @@ -0,0 +1,52 @@ +/* + * (c) 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * part of cinit + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +#include /* structures */ + +/*********************************************************************** + * configuration + */ + +#define MSGQ_PATHNAME "/bin/sh" /* should be on every *nix */ +#define MSGQ_TO_SERVER 'i' /* also for ftok */ +#define MSGQ_TO_CLIENT 'o' /* also for ftok */ +#define MSGQ_PERMS 0660 /* queue permissions */ + +/*********************************************************************** + * global variables + */ +int mq_in; /* input */ +int mq_out; /* output */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + pid_t pid; + struct msg_client msg; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server_short { + long mtype; + struct asw_sstatus answer; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_FTOK "ftok" +#define MSG_MSGQ_MSGGET "msgget" +#define MSG_MSGQ_MSGRCV "msgrcv" +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/objects b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/objects new file mode 100644 index 00000000..7c99d09f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/msgq/objects @@ -0,0 +1,5 @@ +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ipc/socket+linux-tmpfs/begin_msg.c b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/socket+linux-tmpfs/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/socket+linux-tmpfs/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c new file mode 100644 index 00000000..88c310f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c @@ -0,0 +1,125 @@ +/* + * (c) 2005, 2006 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * create a socket, when we recieved a signal + */ +int main(int argc, char **argv) +{ + struct sockaddr_un addr; + struct pollfd plist; + char *initdir; + + list = NULL; /* list of services is empty currently */ + initdir = CINIT_INIT; /* default init dir */ + + cpid = getpid(); + if(cpid != 1) { + usage(MSG_USAGE,MSG_NOT_ONE); + } + + set_signals(ACT_SERV); /* set signal handlers */ + + /* read args, profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* tell the world we are there FIXME: do we really need three calls? */ + mini_printf(MSG_CINIT,1); mini_printf(initdir,1); mini_printf("\n",1); + + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c new file mode 100644 index 00000000..a174d78d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c @@ -0,0 +1,141 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int socket) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + while ( (nsock = accept(socket,(struct sockaddr *) NULL, + (socklen_t *) NULL)) != -1) { + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = ST_FAIL; + } else { + status = RT_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP (RESPAWNING) *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; + list_tmp = list_search(buf); + + /* FIXME: + - handle off + - handle switching off once services + - perhaps remove old cinit code, which has respawing childs + */ + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + /* kill cinit watcher, which kills the real process */ + kill(list_tmp->pid,SIGTERM); + + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + } + + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + status = ST_FAIL; + } else { /* return status */ + status = list_tmp->status; + } + } else { /* no service there */ + status = RT_NOTEXIST; + } + do_result(nsock,&status); + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + SERVICE_LOG(buf,MSG_ERR_MODIFY); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + case CMD_UPDATE: + sig_reboot(SIGCONT); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } + + /* hier kommt man haeufiger herein, interrupted system call */ + if( errno != EAGAIN && errno != EINTR) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/ipc/socket+linux-tmpfs/connect_sock.c b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/socket+linux-tmpfs/connect_sock.c new file mode 100644 index 00000000..2c2d45de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/ipc/socket+linux-tmpfs/connect_sock.c @@ -0,0 +1,38 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include /* memset, strcpy */ + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/libcinit/README b/software/cinit/browse_source/cinit-0.3pre10/src/libcinit/README new file mode 100644 index 00000000..096cc779 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/libcinit/README @@ -0,0 +1,22 @@ +Build a small library that can be used by different applications, that provides: + + Constants / Macros: + for cinit_halt: + CINIT_HALT + CINIT_REBOOT + CINIT_POWEROFF + + for cinit_svc_start/stop: + CINIT_SVC_NORMAL + CINIT_SVC_NEEDS + CINIT_SVC_ONLY + CINIT_SVC_WANTS + + Functions: + void cinit_halt(int how); + int cinit_svc_start(char *svc, int how); + int cinit_svc_stop(char *svc, int how); + int cinit_svc_stop(char *svc, int how); + +This lib must then include: + - choosen ipc functions diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/libcinit/cinit_halt.c b/software/cinit/browse_source/cinit-0.3pre10/src/libcinit/cinit_halt.c new file mode 100644 index 00000000..c388ba89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/libcinit/cinit_halt.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * cinit_halt(): call for library + */ + + +#include "" /* include global header */ +int cinit_halt(int how) +{ + switch(how) { + case 'p': /* power off */ + break; + + default: + break; + } + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/object_lists/cinit b/software/cinit/browse_source/cinit-0.3pre10/src/object_lists/cinit new file mode 100644 index 00000000..b080f1b2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/object_lists/cinit @@ -0,0 +1,51 @@ +core/build_argv.o +core/cinit.o +core/panic.o +core/set_signals.o +core/do_reboot.o +core/sig_child.o +generic/execute_sth.o +generic/file_exists.o +generic/mini_printf.o +generic/path_absolute.o +generic/path_append.o +generic/print_errno.o +generic/openreadclose.o +generic/strip_final_newline.o +generic/sleep_before_kill.o +generic/execute_and_wait.o +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +svc/gen_svc_tree.o +svc/gen_halt_tree.o +svc/list_delete.o +svc/list_insert.o +svc/list_search.o +svc/list_search_pid.o +svc/svc_create.o +svc/check_add_deps.o +svc/dep_entry_add.o +svc/dep_entry_del.o +svc/shutdown_services.o +svc/tree_exec.o +svc/svc_set_status.o +svc/svc_should_respawn.o +svc/svc_needs_status.o +svc/dep_needs_wants_add.o +svc/dep_create.o +svc/svc_success.o +svc/svc_report_status.o +svc/svc_start.o +svc/svc_fail.o diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/object_lists/cmd b/software/cinit/browse_source/cinit-0.3pre10/src/object_lists/cmd new file mode 100644 index 00000000..92add0a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/object_lists/cmd @@ -0,0 +1 @@ +client/cmd.o diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/object_lists/halt.kill b/software/cinit/browse_source/cinit-0.3pre10/src/object_lists/halt.kill new file mode 100644 index 00000000..e5b12a36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/object_lists/halt.kill @@ -0,0 +1,3 @@ +client/halt.kill.o +generic/print_errno.o +generic/mini_printf.o diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/object_lists/poweroff.kill b/software/cinit/browse_source/cinit-0.3pre10/src/object_lists/poweroff.kill new file mode 100644 index 00000000..306fc0bf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/object_lists/poweroff.kill @@ -0,0 +1,3 @@ +client/poweroff.kill.o +generic/print_errno.o +generic/mini_printf.o diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/object_lists/reboot.kill b/software/cinit/browse_source/cinit-0.3pre10/src/object_lists/reboot.kill new file mode 100644 index 00000000..f851badf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/object_lists/reboot.kill @@ -0,0 +1,3 @@ +client/reboot.kill.o +generic/print_errno.o +generic/mini_printf.o diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/os/freebsd/halt.c b/software/cinit/browse_source/cinit-0.3pre10/src/os/freebsd/halt.c new file mode 100644 index 00000000..37064cc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/os/freebsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/os/freebsd/objects b/software/cinit/browse_source/cinit-0.3pre10/src/os/freebsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/os/freebsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/os/freebsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre10/src/os/freebsd/poweroff.c new file mode 100644 index 00000000..c73dd079 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/os/freebsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWEROFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/os/freebsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre10/src/os/freebsd/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/os/freebsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/os/linux/halt.c b/software/cinit/browse_source/cinit-0.3pre10/src/os/linux/halt.c new file mode 100644 index 00000000..5ee3eb53 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/os/linux/halt.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * How to halt the system + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT_SYSTEM); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/os/linux/objects b/software/cinit/browse_source/cinit-0.3pre10/src/os/linux/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/os/linux/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/os/linux/poweroff.c b/software/cinit/browse_source/cinit-0.3pre10/src/os/linux/poweroff.c new file mode 100644 index 00000000..c7d2b1c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/os/linux/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff the system + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWER_OFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/os/linux/reboot.c b/software/cinit/browse_source/cinit-0.3pre10/src/os/linux/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/os/linux/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/os/netbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre10/src/os/netbsd/halt.c new file mode 100644 index 00000000..972aecf9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/os/netbsd/halt.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_halt(void) +{ + reboot(RB_HALT,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/os/netbsd/objects b/software/cinit/browse_source/cinit-0.3pre10/src/os/netbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/os/netbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/os/netbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre10/src/os/netbsd/poweroff.c new file mode 100644 index 00000000..17d7b259 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/os/netbsd/poweroff.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_poweroff(void) +{ + reboot(RB_HALT|RB_POWERDOWN,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/os/netbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre10/src/os/netbsd/reboot.c new file mode 100644 index 00000000..14313e17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/os/netbsd/reboot.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/os/openbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre10/src/os/openbsd/halt.c new file mode 100644 index 00000000..37064cc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/os/openbsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/os/openbsd/objects b/software/cinit/browse_source/cinit-0.3pre10/src/os/openbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/os/openbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/os/openbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre10/src/os/openbsd/poweroff.c new file mode 100644 index 00000000..bf4120e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/os/openbsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_HALT | RB_POWERDOWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/os/openbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre10/src/os/openbsd/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/os/openbsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/check_add_deps.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/check_add_deps.c new file mode 100644 index 00000000..36d8a2cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/check_add_deps.c @@ -0,0 +1,128 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +/* FIXME: clean headers, check: + * getcwd */ +#include + +#include +#include +#include +#include +#include +#include +#include + + +#include /* PATH_MAX */ +#include /* malloc */ +#include /* strcpy */ + +#include "intern.h" /* mini_printf */ +#include "messages.h" +#include "svc.h" + +int check_add_deps(struct listitem *svc, int type) +{ + char buf[PATH_MAX+1]; + char oldpath[PATH_MAX+1]; + struct dirent *tdirent; + struct dep *deps = NULL; + struct listitem *new_svc; + DIR *d_tmp; + + /* remember where we started */ + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + /* FIXME remove in production */ + D_PRINTF("CAD::"); + D_PRINTF(svc->abs_path); + D_PRINTF("\n"); + + /* Create path */ + strcpy(buf,svc->abs_path); + if(type == DEP_NEEDS) { + if(!path_append(buf,C_NEEDS)) return 0; + } else { + if(!path_append(buf,C_WANTS)) return 0; + } + + d_tmp = opendir(buf); + if(d_tmp == NULL) { + if(errno != ENOENT) { + print_errno(buf); + return 0; + } + return 1; /* it's fine when there's no dependencies */ + } + + if(chdir(buf) == -1) { /* change to needs or wants */ + print_errno(buf); + return 0; + } + + while((tdirent=readdir(d_tmp))!=NULL) { + if(*(tdirent->d_name) == '.') continue; /* ignore .* */ + + /* skip non-working directories / broken links + * path_absolute reports errors on failure */ + if(!path_absolute(tdirent->d_name,buf,PATH_MAX+1)) continue; + + /* 1. create the service we depend on + * 2. initialize its dependencies + */ + if(!(new_svc = gen_svc_tree(buf))) return 0; + + /* We need ALL dependencies, as we are called only once + * per service; no need to test that first! + * + * And the other service CANNOT know anything about us yet, + * so we always add us to its list. + */ + + /* Dependencies: + * - a.needs b; add b to the list of dependencies. + * - a.needs b; add a to the list of needed by b. + * + * 1. check whether the dependency already exists + * 2. otherwise add it + * 3. do it once for needs, once for needed_by + */ + + /* create a dependency entry containing us */ + deps = dep_create(svc); + if(!deps) return 0; + + if(type == DEP_NEEDS) { + dep_entry_add(&(new_svc->needed),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->needs),deps); + } else { + dep_entry_add(&(new_svc->wanted),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->wants),deps); + } + } + if(chdir(oldpath) == -1) { + print_errno(buf); + return 0; + } + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/dep_create.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/dep_create.c new file mode 100644 index 00000000..691d66b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/dep_create.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Create dependency + */ + +#include /* NULL */ +#include /* malloc() */ +#include "svc.h" /* structs */ + +/* search for an entry by path, reverse: from end to the beginning */ +struct dep *dep_create(struct listitem *svc) +{ + struct dep *entry; + + entry = malloc(sizeof(struct dep)); + if(!entry) return NULL; + entry->svc = svc; + + return entry; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/dep_entry_add.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/dep_entry_add.c new file mode 100644 index 00000000..2ac16443 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/dep_entry_add.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include "svc.h" /* types */ + +/* + * list: pointer to the list + * new: pointer to data to insert (already filled up) + * + * We add the new element BEFORE the existing element! + */ +void dep_entry_add(struct dep **deplist, struct dep *new) +{ + if(*deplist == NULL) { /* new list */ + *deplist = new; + (*deplist)->prev = *deplist; + (*deplist)->next = *deplist; + } else { /* already existing */ + new->next = *deplist; /* new-> first */ + new->prev = (*deplist)->prev; /* last <- new */ + (*deplist)->prev->next = new; /* last -> new */ + (*deplist)->prev = new; /* new <- first */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/dep_entry_del.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/dep_entry_del.c new file mode 100644 index 00000000..ab822a73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/dep_entry_del.c @@ -0,0 +1,37 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include /* free() */ + +#include "svc.h" /* struct *dep */ + +/* + * tmp: pointer to data to remove (must not be NULL) + * + * Returns either the next object or NULL if there's no next object + */ +struct dep *dep_entry_del(struct dep *del) +{ + struct dep *tmp; + + /* last service in the list */ + if(del->next == del && del->prev == del) { + tmp=NULL; + } else { + /* remove from list */ + del->prev->next = del->next; + del->next->prev = del->prev; + tmp = del->next; + } + + free(del); + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/dep_needs_wants_add.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/dep_needs_wants_add.c new file mode 100644 index 00000000..58e18b14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/dep_needs_wants_add.c @@ -0,0 +1,65 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Add all wants or needs from a specific service to dep list + * -> this builds the needs and needed_by and + * -> or this builds the wants and wanted_by and + * + * This function is used to fillup the starting list with dependencies + * after a service has sucessfully been executed. + */ + +#include /* NULL */ + +#include "svc.h" /* struct *dep */ + +/* + * list: pointer to the list + * svc: pointer to data to the service + */ + +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type) +{ + struct dep *tmp, *new, *end; + + if(type == DEP_NEEDS) { + end = svc->needed; + } else { + end = svc->wanted; + } + + /* Place to the first dependency of this service */ + tmp = end; + if(tmp != NULL) { + do { + /* Add service to the starter list, which + * - should be started once + * - should be respawned (both VIRGIN services!) + * - and which are not already in the list! + */ + if(((tmp->svc->status & ST_SH_ONCE) || + (tmp->svc->status & ST_SH_RESPAWN)) && + !(tmp->svc->status & ST_IN_LIST)) { + new = dep_create(tmp->svc); + if(!new) return 0; + tmp->svc->status |= ST_IN_LIST; + dep_entry_add(list,new); + } + /* FIXME: Clearify if we should go forward or backwards? + * this decision will influence starting order + * and may thereby add a minimal mount of speed enhancement + * + * As far as I can see it is not predictable, which way is + * better, because it heavily depends on the other services. + * + * If you know better, provide me with a patch ;-) + */ + tmp = tmp->next; + } while(tmp != end); + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/gen_halt_tree.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/gen_halt_tree.c new file mode 100644 index 00000000..fc297de7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/gen_halt_tree.c @@ -0,0 +1,44 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * This function reads the full service tree and generates + * a list of services to begin shutdown (those that are not + * wanted or needed by any other service). + */ + +#include /* NULL */ + +#include "svc.h" /* structs */ +#include "intern.h" /* structs */ + +struct dep *gen_halt_list(struct listitem *svc_tree) +{ + struct dep *list = NULL, *new = NULL; + struct listitem *tmp; + + /* no tree? nothing to shutdown. */ + if(!svc_tree) { + return NULL; + } + + /* find all services that do not depend on other services: + * - empty wants? (currently ignore them) + * - empty needs! + */ + tmp = svc_tree; + do { + if(tmp->needs == NULL) { + /* create new dependency */ + new = dep_create(tmp); + if(!new) return NULL; + + dep_entry_add(&list,new); + } + tmp = tmp->next; + } while(tmp != svc_tree); + + return list; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/gen_svc_tree.c new file mode 100644 index 00000000..80ea6463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/gen_svc_tree.c @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +#include + +#include "intern.h" /* functions */ +#include "svc.h" + +struct listitem *gen_svc_tree(char *svc) +{ + struct listitem *li; + struct dep *deps; + + /* only do something if the service is not already known */ + if((li=list_search(svc))) return li; + + /* create a template, so other instances won't try to recreate us */ + if(!(li=svc_create(svc))) return NULL; + + if(!check_add_deps(li,DEP_NEEDS)) return NULL; + if(!check_add_deps(li,DEP_WANTS)) return NULL; + + /* no dependencies? then you are a start service */ + if(!li->wants && !li->needs) { + deps = dep_create(li); + if(!deps) return NULL; + dep_entry_add(&svc_init,deps); + + /* Mark it as being in the startup list, so it does not + * get added again in a dep_needs_wants_add call */ + li->status |= ST_IN_LIST; + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_delete.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_delete.c new file mode 100644 index 00000000..d036b979 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_delete.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* free */ +#include "intern.h" /* list_search */ +#include "svc.h" /* listitem */ + +/* ... */ +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if(tmp == NULL) { + return 0; + } + + tmp->next->prev = tmp->prev; + tmp->prev->next = tmp->next; + + free(tmp->abs_path); + free(tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_display_all.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_display_all.c new file mode 100644 index 00000000..4955acbb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_display_all.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Show all list elements - mainly for debugging + */ + +#include /* NULL */ + +#include "messages.h" /* D_PRINTF */ +#include "svc.h" + +int list_display_all() +{ + struct listitem *tmp; + + if(svc_list == NULL) { + return 0; + } else { + tmp = svc_list; + } + + do { + D_PRINTF("Service: "); + D_PRINTF(tmp->abs_path); + D_PRINTF("\n"); + + tmp = tmp->prev; + } while(tmp != svc_list); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_insert.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_insert.c new file mode 100644 index 00000000..a0ad6f2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_insert.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* malloc */ +#include /* bzero / memset */ +#include "svc.h" /* the list pointer */ + +struct listitem *list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc(sizeof(struct listitem)); + if(tmp == NULL) return NULL; + memset(tmp, '\0', sizeof(struct listitem)); + + if(svc_list == NULL) { /* list is empty, we have to init it */ + svc_list = tmp; + svc_list->next = svc_list; + svc_list->prev = svc_list; + } else { /* list has members,add this one */ + tmp->next = svc_list; /* begin after the new element */ + tmp->prev = svc_list->prev; /* change to the ex-last */ + svc_list->prev->next = tmp; /* change last element */ + svc_list->prev = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc(strlen(path) + 1); + if(tmp->abs_path == NULL) return NULL; + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_modify.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_modify.c new file mode 100644 index 00000000..267539d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_modify.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED. Not in use anymore. + * + * part of cLinux/cinit + * + * List handling + */ + +#error "NOT IN USE" + +#include +#include +#include "cinit.h" +#include "comm.h" /* for ST_OFF */ +#include "svc.h" /* for ST_OFF */ + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + + tmp = list_search(path); + if(tmp == NULL) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_search.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_search.c new file mode 100644 index 00000000..6591f988 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_search.c @@ -0,0 +1,36 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* NULL */ +#include /* strcmp */ + +#include "intern.h" +#include "svc.h" + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if(svc_list == NULL) { /* think positive */ + return NULL; + } else { + tmp = svc_list; + } + + do { + if(!strcmp(path, tmp->abs_path)) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_search_pid.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_search_pid.c new file mode 100644 index 00000000..4f9634c9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/list_search_pid.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Search by pid + */ + +#include /* NULL */ +#include /* pid_t */ + +#include "svc.h" /* struct listitem */ + +struct listitem *list_search_pid(pid_t pid) +{ + struct listitem *tmp; + + if(svc_list == NULL) { + return NULL; + } else { + tmp = svc_list; + } + + do { + if(pid == tmp->pid) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/shutdown_services.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/shutdown_services.c new file mode 100644 index 00000000..3432c8ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/shutdown_services.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Shutdown all services: This is more or less the negative + * version of 'tree_exec()' + */ + +#include "svc.h" /* struct */ +void shutdown_services(struct listitem *svc) +{ + while(0) { + svc++; + } + /* stop services in the correct order: + * - begin at a random process, and walk the tree up to the wanted_by and needed_by + * - switch to next service, as soon as this tree is finished + */ + +// while(we_are_wanted_or_needed) { +// shutdown_services(next_wants_or_needs_us); +// } + +// shutdown_services(svc) + + /* begin at svc, iterate until a service without dependencies is found, + * continue stopping through wanted-by / needed-by / wants / needs */ + + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_add_needs.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_add_needs.c new file mode 100644 index 00000000..2c045328 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_add_needs.c @@ -0,0 +1,69 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED! + * + * part of cLinux/cinit + * + * List handling + */ + +#error "NOT IN USE" + +#include "cinit.h" +#include "messages.h" + +int svc_add_needs(char *needs, char *is_needed) +{ + struct listitem *svc_needs, *svc_is_needed; + + + /* retrieve service entries in global service list */ + svc_needs = svc_is_needed = NULL; + svc_needs = list_search(needs); + svc_is_needed = list_search(is_needed); + + /* and exit if one is missing */ + if( !svc_needs || !svc_is_needed ) { + return 0; + } + + /* first add needs */ + + /* now add needed_by */ + + malloc... /* for adding */ + + if(svc->needs == NULL) { + svc->needs = neu; + } else { + svc->next = neu; + } + + /* write generic function for dependencies or even all lists */ + dep_entry_add(list_pointer,new_entry); + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members,add this one */ + tmp->after = list; /* begin after the new element */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_create.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_create.c new file mode 100644 index 00000000..3d9e05bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_create.c @@ -0,0 +1,52 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* strcpy */ +#include /* stat */ +#include /* stat */ +#include /* PATH_MAX */ +#include /* errno */ + +#include "svc.h" /* listitem */ +#include "intern.h" /* path_append */ +#include "messages.h" /* D_PRINTF */ + +/* checking for existence is done before! */ +/* FIXME: check heedars for conformance with POSIX */ +struct listitem *svc_create(char *svc) +{ + char buf[PATH_MAX+1]; + struct stat statbuf; + struct listitem *li; + + li = list_insert(svc,-1); + if(!li) return NULL; + + /* FIXME: add two path length checks? svc and svc+strlen(C_RESPAWN)? */ + strcpy(buf,svc); + if(!path_append(buf,C_RESPAWN)) return NULL; + + if(stat(buf,&statbuf) == -1) { + if(errno == ENOENT) { + svc_set_status(li,ST_SH_ONCE); + } else { + return NULL; + } + } else { + /* FIXME remove debug */ + D_PRINTF("respawn: "); + D_PRINTF(li->abs_path); + D_PRINTF("\n"); + + svc_set_status(li,ST_SH_RESPAWN); + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_fail.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_fail.c new file mode 100644 index 00000000..7c150c85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_fail.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Mark the service as being failed + */ + +#include "svc.h" + +void svc_fail(struct listitem *li) +{ + if(li->status & ST_ONCE_RUN) + li->status = ST_ONCE_FAIL; + else { + /* FIXME: do something senseful, record time of dead? */ + li->status = ST_RESPAWNING; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_needs_status.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_needs_status.c new file mode 100644 index 00000000..ad00ed4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_needs_status.c @@ -0,0 +1,37 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return status of the needs of this service + */ + +#include /* NULL */ + +#include "svc.h" /* service information */ + +int svc_needs_status(struct listitem *svc) +{ + int retval = SNS_NEEDS_STARTED; + struct dep *deps = svc->needs; + + if(deps == NULL) return SNS_NEEDS_STARTED; /* no needs, everything fine */ + + do { + /* worst case: need failed */ + if((deps->svc->status & ST_NEED_FAILD) || + (deps->svc->status & ST_ONCE_FAIL)) { + retval = SNS_NEEDS_FAILED; + break; + } + /* services are being started */ + if((deps->svc->status & ST_SH_ONCE) || + (deps->svc->status & ST_SH_RESPAWN)) { + retval = SNS_NEEDS_UNFINISHED; + } + deps = deps->next; + } while(deps != svc->needs); + + return retval; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_report_status.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_report_status.c new file mode 100644 index 00000000..3802afe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_report_status.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Tell the world what happened to the service + */ + +#include "intern.h" /* mini_printf */ +#include "messages.h" /* MSG_INTRO_SVC */ + +void svc_report_status(char *svc, char *msg, char *err) +{ + mini_printf(MSG_INTRO_SVC,1); + mini_printf(svc,1); + mini_printf(": ",1); + mini_printf(msg,1); + if(err) { + mini_printf(" (",1); + mini_printf(err,1); + mini_printf(")",1); + } + mini_printf("\n",1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_respawn_check.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_respawn_check.c new file mode 100644 index 00000000..0fae4def --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_respawn_check.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED? not in use. + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#error "NOT IN USE" + +#include /* NULL */ +#include /* PATH_MAX */ +#include "svc.h" + +/* checking for existence is done before! */ +int svc_respawn_check(struct listitem *svc) +{ + char buf[PATH_MAX+1]; + + strcpy(buf,svc->abs_path); + if(!path_append(buf,C_RESPAWN)) return 0 +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_set_status.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_set_status.c new file mode 100644 index 00000000..73d5da91 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_set_status.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_set_status(struct listitem *li, int status) +{ + return (li->status = status); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_should_respawn.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_should_respawn.c new file mode 100644 index 00000000..04acfe1d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_should_respawn.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return whether should respawn or not + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_should_respawn(struct listitem *li) +{ + return (li->status & ST_SH_RESPAWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_start.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_start.c new file mode 100644 index 00000000..8ab08e3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_start.c @@ -0,0 +1,93 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start a service + */ + +#include /* NULL */ +#include /* fork */ +#include /* strerror */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* nanosleep() */ +//#include /* gettimeofday() */ + +#include "svc.h" /* struct * */ +#include "messages.h" /* MSG_* */ +#include "intern.h" /* execute_sth */ + +//void svc_start(struct listitem *li, int strict) +void svc_start(struct listitem *li, int delay) +{ + char buf[PATH_MAX+1]; + struct timespec ts; + + /* FIXME: All cleanup must go here + * close(fds); + * reset signals + * reset env? + * + * FIXME: Add logging possibility to here + * open (0,1,2) to other processes, if specified */ + D_PRINTF("VORM Fork()\n"); + li->pid = fork(); + + /********************** Error ************************/ + if(li->pid < 0) { + svc_report_status(li->abs_path,MSG_SVC_FORK,strerror(errno)); + svc_set_status(li,ST_BAD_ERR); + return; + } + /********************** parent ************************/ + if(li->pid > 0) { + D_PRINTF("ELTERN\n"); + /* set start time */ + li->start = time(NULL); + + if(li->status & ST_SH_ONCE) + li->status = ST_ONCE_RUN; + else + li->status = ST_RESPAWNING; + return; + } + + /********************** Client / fork() ************************/ + /* sleep, if necesseray */ + printf("Delay: %d\n", delay); + if(delay) { + ts.tv_sec = delay; + ts.tv_nsec = 0; + + /* FIXME: also report value; int2char */ + svc_report_status(li->abs_path,MSG_SVC_SLEEP,NULL); + + /* do not need to check for errors, because we can continue anyway */ + nanosleep(&ts,NULL); + } + svc_report_status(li->abs_path,MSG_SVC_START,NULL); + + /* length check is done by path_append */ + strcpy(buf,li->abs_path); + if(!path_append(buf,C_ON)) return; + + /* Check for existence */ + li->status = file_exists(buf); + + if(li->status == FE_NOT) { + _exit(0); /* nothing there? fine! */ + } + + if(li->status == FE_FILE) { + /* FIXME: reset signals: Is this necessary? Or does fork clean it anyway? */ + set_signals(ACT_CLIENT); + + /* and now, fire it up */ + execute_sth(buf); + } else { + /* either no file or an error */ + _exit(1); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_success.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_success.c new file mode 100644 index 00000000..dc4057e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/svc_success.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include /* NULL */ + +#include "svc.h" /* listitem, svc_report_status */ +#include "messages.h" /* messages */ + +void svc_success(struct listitem *li) +{ + if(li->status & ST_ONCE_RUN) { + svc_report_status(li->abs_path,MSG_SVC_OK_ONCE,NULL); + li->status = ST_ONCE_OK; + } else { + svc_report_status(li->abs_path,MSG_SVC_OK_RESPAWN,NULL); + li->status = ST_RESPAWNING; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/svc/tree_exec.c b/software/cinit/browse_source/cinit-0.3pre10/src/svc/tree_exec.c new file mode 100644 index 00000000..1a789457 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/svc/tree_exec.c @@ -0,0 +1,67 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + +#include /* NULL */ + +#include "intern.h" /* mini_printf */ +#include "svc.h" /* svc_init */ +#include "messages.h" /* messages */ + +/* some thoughts... + * + * - we already generated the tree, we now need to start it from + * the ends + * + * - after starting the first service we have to care about SIG_CHILD + * to record changes + * + * - we execute all services in parallel without problems, because of + * SIG_CHILD notification + * + * - After successfully starting the service we start the services that + * need or want that service + */ +int tree_exec(struct dep *start) +{ + struct dep *tmp = start; + + mini_printf(MSG_TREE_EXEC,1); + + /* the main starting loop: All services in this list should be + * started, but it is possible that dependent services are in the + * list. In this case simply skip the current service + */ + do { + switch(svc_needs_status(tmp->svc)) { + case SNS_NEEDS_STARTED: + svc_report_status(tmp->svc->abs_path,"Needs sind durch",NULL); + /* execute service, add dependencies, remowe from list */ + svc_start(tmp->svc,0); + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_NEEDS)) return 0; + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_WANTS)) return 0; + tmp = dep_entry_del(tmp); + break; + + case SNS_NEEDS_FAILED: + /* mark service as NEED_FAILD and delete from list */ + svc_report_status(tmp->svc->abs_path,MSG_SVC_NEED_FAIL,NULL); + svc_set_status(tmp->svc,ST_NEED_FAILD); + tmp = dep_entry_del(tmp); + break; + + case SNS_NEEDS_UNFINISHED: + svc_report_status(tmp->svc->abs_path,"Needs am abarbeiten",NULL); + /* continue with the next item */ + tmp = tmp->next; + break; + } + } while(tmp != NULL); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/test/test-newline.c b/software/cinit/browse_source/cinit-0.3pre10/src/test/test-newline.c new file mode 100644 index 00000000..95e03a36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/test/test-newline.c @@ -0,0 +1,29 @@ +#include +#include +#include +#include + +char *strip_final_newline(char *test1); + +int main() +{ + //char *test1 = "zeile1\nzeile2\n"; + //char *test2 = "zeile1\nzeile2\nzeile3"; + char *test1; + char *test2; + + test1 = malloc(50); + test2 = malloc(50); + + strcpy(test1,"zeile1\nzeile2\n"); + strcpy(test2,"zeile1\nzeile2\nzeile3"); + + char *result; + result = strip_final_newline(test1); + printf("A%sA\n",result); + + result = strip_final_newline(test2); + printf("B%sB\n",result); + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/test/test_build_argv+link.c b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_build_argv+link.c new file mode 100644 index 00000000..f74b4f36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_build_argv+link.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec_link"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/test/test_build_argv.c b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_build_argv.c new file mode 100644 index 00000000..3938aa0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_build_argv.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec new file mode 100644 index 00000000..e5cf3f01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec @@ -0,0 +1,7 @@ +#!/bin/sh +# Nico Schottelius +# Test-skript for cinit + +echo '$0': "$0" +echo '$@': "$@" +echo 'cinit_is_great:' $cinit_is_great diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec.env b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec.env new file mode 100644 index 00000000..853e0663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec.env @@ -0,0 +1 @@ +cinit_is_great=yes diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec.params b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec.params new file mode 100644 index 00000000..afe0f2ef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec.params @@ -0,0 +1 @@ +Let's see if we read the arguments....YES! diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec_link b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec_link new file mode 120000 index 00000000..c2ec9306 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec_link @@ -0,0 +1 @@ +test_exec \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec_link.env b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec_link.env new file mode 120000 index 00000000..30ea4990 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec_link.env @@ -0,0 +1 @@ +test_exec.env \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec_link.params b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec_link.params new file mode 120000 index 00000000..0b77c256 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_exec_link.params @@ -0,0 +1 @@ +test_exec.params \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/test/test_gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_gen_svc_tree.c new file mode 100644 index 00000000..c13c46b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_gen_svc_tree.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test gen_svc_tree + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + gen_svc_tree("/etc/cinit/svc/init"); + list_display_all(); +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/src/test/test_openreadclose.c b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_openreadclose.c new file mode 100644 index 00000000..2f722da5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/src/test/test_openreadclose.c @@ -0,0 +1,16 @@ +#include + +int openreadclose(char *filename, char **where); + +int main() +{ + char *data; + char *file = "test_openreadclose.c"; + + openreadclose(file,&data); + + printf("%s\n",data); + + return 1; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre10/util/README b/software/cinit/browse_source/cinit-0.3pre10/util/README new file mode 100644 index 00000000..f66e0ddb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/util/README @@ -0,0 +1,4 @@ +-- OBSOLETED -- + -> This code is not in use in cinit-0.3 anymore! +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.3pre10/util/ccontrol.c b/software/cinit/browse_source/cinit-0.3pre10/util/ccontrol.c new file mode 100644 index 00000000..95bc5212 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/util/ccontrol.c @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * ccontrol: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define USAGE_TEXT "ccontrol - control cinit\n\n" \ + "Usage:\n\nccontrol -[phurs]\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-u\t- (update) Reboot (warm) and update cinit\n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n\n" \ + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * ccontrol: control cinit + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 2) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + + switch(argv[1][1]) { + case 'p': /* power off */ + LOG(MSG_POWER_OFF); + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + LOG(MSG_HALT); + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + LOG(MSG_REBOOT); + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + LOG(MSG_RESCUE); + msg_reboot(CMD_RESCUE); + break; + + case 'u': /* update */ + LOG(MSG_UPDATE); + msg_reboot(CMD_UPDATE); + break; + + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* cinit-0.2 return codes implemented - nothing changed*/ diff --git a/software/cinit/browse_source/cinit-0.3pre10/util/cservice.c b/software/cinit/browse_source/cinit-0.3pre10/util/cservice.c new file mode 100644 index 00000000..66be6563 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/util/cservice.c @@ -0,0 +1,164 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * cservice: control cinit services + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit services + */ + +#define USAGE_TEXT "cservice - start and stop cinit services\n\n" \ + "cservice -[ear] \n" \ + "\t-e\t- (ein,on ) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n" \ + "\t-r\t- (restart) stop and start a service\n" + +/*********************************************************************** + * fuzzy_path: allow other kinds of path specification .. + */ +char *fuzzy_path(char *rpath) +{ + char pathtmp[PATH_MAX]; + char *re = NULL; + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return NULL; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(rpath); + return NULL; + } + + re = malloc( strlen(pathtmp) + 1); + + if(re != NULL) { + strcpy(re,pathtmp); + } + + return re; +} + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + char *real_name = NULL; + + /* argv */ + if(argc != 3) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + if(strlen(argv[1]) != 2) C_USAGE(MSG_ERR_ARGS_LEN); + + real_name = fuzzy_path(argv[2]); + + /* fuzzy path failed, exit! */ + if(real_name == NULL) { + return 1; + } + switch(argv[1][1]) { + case 'a': /* aus */ + case 'r': /* restart */ + switch( msg_svc_on_off(real_name,CMD_STOP_SVC) ) { + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_OFF: + SERVICE_LOG(real_name,LOG_SVC_STOPED); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + /* FIX THIS AFTER cinit-0.2 */ + case RT_TMPNOW: + case RT_ERR: + case RT_SVC_FAILED: + case RT_UNSPEC: + case RT_SUCCESS: + case ST_NEED_FAIL: + case ST_TMP: + case ST_ONCE: + case RT_NOTEXIST: + case ST_RESPAWN: +// SERVICE_LOG(real_name,"Ein bekanntest ding"); + break; +/* default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; */ + } + if( argv[1][1] == 'a') break; /* only continue if restarting */ + + case 'e': /* ein */ + switch (run_svc(real_name)) { /* run_svc fuzzys itself */ + case RT_NOTEXIST: + SERVICE_LOG(real_name,LOG_SVC_NOTEXIST); + break; + case RT_SVC_FAILED: + SERVICE_LOG(real_name,LOG_SVC_FAILED); + break; + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_ONCE: + SERVICE_LOG(real_name,LOG_SVC_ONCE); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + case ST_RESPAWN: + SERVICE_LOG(real_name,LOG_SVC_RESPAWN); + break; + case ST_NEED_FAIL: + SERVICE_LOG(real_name,LOG_NEED_FAIL); + break; + default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; + } + break; + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* uses cinit-0.2 return code style */ diff --git a/software/cinit/browse_source/cinit-0.3pre10/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.3pre10/util/msg_reboot.c new file mode 100644 index 00000000..efe78ec6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre10/util/msg_reboot.c @@ -0,0 +1,21 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + if(!begin_msg(cmd)) return 0; + close(sock); + return 1; +} +/* clean for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre11/ b/software/cinit/browse_source/cinit-0.3pre11/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.3pre11/.gitignore b/software/cinit/browse_source/cinit-0.3pre11/.gitignore new file mode 100644 index 00000000..c346b4fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/.gitignore @@ -0,0 +1,29 @@ +*.o +*.a +*0? +MT +ddoc +contrib+tools/cinit.graph.text +config.h +sbin +tmp +os/current +tmpbin +src/os/current +src/ipc/current +src/cinit +*.html +*.htm +*.man +*.texi +*.texi +*.docbook +src/halt.kill +src/poweroff.kill +src/reboot.kill +doc/man/*.[0-9] +doc/man/*.xml +src/cmd +.*.swp +.exclude +src/.configured diff --git a/software/cinit/browse_source/cinit-0.3pre11/CHANGES b/software/cinit/browse_source/cinit-0.3pre11/CHANGES new file mode 100644 index 00000000..a0e4605f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/CHANGES @@ -0,0 +1,82 @@ +cinit-0.3pre11: 2007-09-01 + - Added basic communication: + * client binary "cmd" with argument -v returns cinit-version + - Updated {halt,reboot,poweroff}.kill + +cinit-0.3pre10: + - Fixed make install target + - Added halt.kill, poweroff.kill and reboot.kill (including manpages!) + - Fixed invalid comparision in core/cinit.c + - Be verbose: Print what we execute + - Updated documentation + +cinit-0.3pre9: 2007-05-15 + - Implemented sleeping before respawn (static delay) + - Report broken links on execution, but ignore empty services + - Cleaned up message queue error reporting + +cinit-0.3pre8: 2007-04-06 + - Updated and merged documentation: Codingstyle and Codingguide + - Cleaned sigaction-code (fixes segfault on glibc) + - Cleaned object listings + - Added notifications at shutdown + - Fixed status check + +cinit-0.3pre7: 2007-02-17 + - Many code cleanups + - Fixed glibc problem with sigaction (for details view src/core/set_signals.c) + - Added general shutdown support (will *NOT* yet stop services, + but still stop your system) + +cinit-0.3pre6: + - Many code cleanups + - Added user documentation and cleaned up documentation in general + +cinit-0.3pre5: + - Finished new SIGCHLD handler + - First cleanups for real release. + - This version is the first 0.3pre version that can handle respawn! + +cinit-0.3pre4: + - Re-implemented execution of services. + - This version is the first 0.3pre version that COULD bootup your system! + +cinit-0.3pre3: + - Finished execution all services via the reversed service tree. + +cinit-0.3pre2: + - Finished generation of the dependency tree. + +cinit-0.3pre1: + - cinit should now compile on mostly all unices + - introduced much new code + - THIS IS A DEVELOPER RELEASE, NOT USABLE IN PRODUCTION ENVIRONMENTS. + +cinit-0.2.1: (Bugfix release) + - Fixed problem in contrib+tools/Makefile when installing + - added many new scripts to convert sys-v-init, which are still early beta + (see bin/cinit.merge.sysvinit-debian-sid) + +cinit-0.2: + - Much more verbose error reporting + - You can now also disable 'once ran' services, + - You can restart services with csevice -r + - Online speech in German is available + - C_DELAY support - variable delay for sending SIGKILL after SIGTERM + - First /etc/csys configuration example (wasserstoff) is available + - a Mailing list was created + - Added tools to analyze cinit configuration + (cinit-vis.pl, cinit.graph.text.c) + - Added tools to import and export configuration to XML + (make.cconfig.from.xml.rb,cconfig.graph.xml.rb) + - Removed unecessary signalling + - Added many helper scripts to install services (cinit.install.service*) + - Fixed many small bugs in old helper scripts (cinit.add.getty, cinit.get-conf, ...) + - Added ccontrol, which allows to control cinit + - Added update (-u) via ccontrol + - Stripped cservice, which now "only" controls services + - Removed swapoff from cinit code, should be handled by off + - Much better error and processing descriptions + - A bit more verbose reporting + - Restructured run_svc, now with better error detection + - Removed Kernel panic, when halting system diff --git a/software/cinit/browse_source/cinit-0.3pre11/COPYING b/software/cinit/browse_source/cinit-0.3pre11/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.3pre11/CREDITS b/software/cinit/browse_source/cinit-0.3pre11/CREDITS new file mode 100644 index 00000000..febdcf4b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/CREDITS @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: ls -l) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete + * providing cinit-vs.pl to visualize the cinit-tree +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) +Sandro Koechli + * testing, testing and testing cinit and cinit documentation +Marcus Wagner + * building and maintaining the Debian package +Peter Portmann + * testing cinit and documentation, writing cinit.graph.text in C, other coding +Tonnerre Lombard + * NetBSD support (host + hints) diff --git a/software/cinit/browse_source/cinit-0.3pre11/Changelog b/software/cinit/browse_source/cinit-0.3pre11/Changelog new file mode 100644 index 00000000..0fbf76f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/Changelog @@ -0,0 +1,10 @@ +Mo Okt 3 00:19:40 CEST 2005 + *Changelog can now be found in git database (cg-log) +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.3pre11/Makefile b/software/cinit/browse_source/cinit-0.3pre11/Makefile new file mode 100644 index 00000000..cce0f217 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/Makefile @@ -0,0 +1,108 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# Directories and files +CDIRS=src doc + +# +# Targets +# + +# +# Warn per default, make sure the user knows what she does +# +warn: + @cat doc/.buildwarn + +all: sources documentation +dev-all: all sizecheck + +install clean dist distclean: + @for subdir in ${CDIRS}; do \ + echo "Making $@ in $$subdir"; \ + (cd $$subdir && ${MAKE} ${MAKEFLAGS} $@) || break; \ + done; + +.PHONY: sources +sources: + ${MAKE} -C src all + +.PHONY: documentation +documentation: + ${MAKE} -C doc documentation + +sizecheck: sources + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l src/cinit > $$FILE; cat $$FILE; \ + cg-add $$FILE + cg-commit $$FILE -m "Size added" + #cg-commit $$FILE -m "Size: $$(awk '{ print $5 }' $$FILE)" + +source-size: clean + @echo -n "Source size (in KiB): " + @du -s src/ | awk '{ sum+=$$1 } END { print sum }' + + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + +config: + @./bin/cinit.configure.os + @./bin/cinit.configure.tools + @./bin/cinit.configure.ipc + @touch src/.configured + + +################################################################################ +# Tests +# +tests: + # does not work, due getting killed, due to design :-) + #./scripts/internal/compile_run_as_compiler.sh + ./scripts/internal/test_on_hosts.sh ./scripts/internal/compile_test.sh + +################################################################################ +# old +#DDOC=ddoc +#SDIRS=bin client conf comm doc generic serv util +# DO NOT CHANGE THIS. +#SBIN=sbin +#CINIT_BIN=$(SBIN)/cinit +# +#%.o: %.c +# $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< +#$(DDOC): +# mkdir $(DDOC) +# +#$(SBIN): +# mkdir $(SBIN) +# +#docs: $(DDOC) bin/cdoc-man.sh +# ./bin/cdoc-man.sh doc/cinit-doc > $(DDOC)/cinit.8 +# ./bin/cdoc-man.sh doc/cservice-doc > $(DDOC)/cservice.8 +#$(CSVC_OBJ) $(OBJ): $(CONFIG_H) +#clean: +# $(MAKE) -C src clean +# rm -f tmpbin/* +################################################################################ +#cservice: $(SBIN)/cservice +# +#$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) +# $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ +# $(STRIP) $@ +# +#ccontrol: $(SBIN)/ccontrol +# +#$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) +# $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ +# $(STRIP) $@ +# +#install:: install-dir cinit cservice ccontrol +# @echo '*** Installing cinit ***' +# ./bin/cinit.install.binary diff --git a/software/cinit/browse_source/cinit-0.3pre11/NEXTTODO b/software/cinit/browse_source/cinit-0.3pre11/NEXTTODO new file mode 100644 index 00000000..fd2517a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/NEXTTODO @@ -0,0 +1,16 @@ +-------------------------------------------------------------------------------- +- create some boot profiles +- cinit.install.standard.dirs.argv +check needs: + really started, after started or after finished starting? +wants: + are they checked? + +implement commands! +- fix devel/codingguideline.text! +- chdir to / after startup + +merge svc_need_status to svc_status + +cinit-communication: + cinit_get_failed_needs(char *name, int *cnt); diff --git a/software/cinit/browse_source/cinit-0.3pre11/README b/software/cinit/browse_source/cinit-0.3pre11/README new file mode 100644 index 00000000..00f2651b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/README @@ -0,0 +1,106 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Unix +- true dependencies (soft and hard!) +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +FIXME: Add mailing list here + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre11/ROADMAP b/software/cinit/browse_source/cinit-0.3pre11/ROADMAP new file mode 100644 index 00000000..8b0e6526 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/ROADMAP @@ -0,0 +1,115 @@ +-------------------------------------------------------------------------------- +THIS DOCUMENT SHOULD VANISH AS SOON AS EVERYTHING IS FINE +-------------------------------------------------------------------------------- + +Timeline +--------- + * ~ End of October 2006: Reunderstand the code, manifest changes [DONE] + * ~ Mid of November 2006: Have a compile-able cinit [DONE] + * ~ End of November 2006: Have a testsystem booting cinit + * ~ Mid of December 2006: Have production stable cinit + - Begin with migration scripts + - publish installable pre-releases + * ~ End of December 2006: Have some generic migration scripts + - Have (different) understanable documents + * ~ Mid of January 2007: Begin official release of cinit-0.3 + + + + +Versions +--------- + +0.3: +~~~ + code: Make cinit compile again :) [DONE] + code: double check to remove Linux specific source from general tree [DONE] + code: seperate ipc from the rest [DONE] + code: fix / check signal handlers [DONE] + code: cleanup makefile + code: add porting code: add support for any unix in general [DONE] + code: stabilize code, remove experimenting parts + code: remove delay support, let off/off.params do that. [DONE] + code: add special directory (/etc/cinit/conf?) for non-services [DONE] + code: move production code to src/ [DONE] + end user doc: add warning for special binaries and hint for r/o only + amiga alike systems + + doc: begin to merge old documents into new structure and move them + to the doc/ancient directory [DONE] + +0.3.1: + devel doc: how to write merging scripts + devel doc: merging framework: + - minimal (do not look at the current configuration, build minimal) + - use current system (slowly, may use old scripts) + - rebuilt current system (recommened) + + tools: general framework for merging + end user doc: merging old init to cinit + + code: add porting code: add support for freebsd + code: better readable output: + -> starting + [ started once ] + [ respawning ] + [ failed ] (+ REASON!) + [ needs failed ] (which ones) + + -> stopping + [ stopping ] (for dependencies) + [ stopped ] ? + [ not running ] ? + + code: export profile information (CINIT_PROFILE) + end user doc: using different profiles in user space + end user doc: write examples for profiles: + o switch ssh known_hosts based on profile + o different proxy settings in browsers + - environment + - mozilla settings + o start samba (for lan) + o start samba (for company lan) + o use nis and nfs (company profile) + + doc: continue to merge old documents into new structure and move them + to the doc/ancient directory +0.3.2: + end user doc: what to read to use cinit + end user doc: installing cinit + end user doc: configuring cinit + tools: writing cinit-config (graphical (dialog based?) configuration tool) + code: add porting code: add support for openbsd + + code: add reverse dependency chain (or earlier?) + code: better support for external tools + o neustarten + o mit herunterfahren + o mit herunterfahren und allen Diensten, die abhaengen + o ohne herunterfahren + o Statische Daten + o pid vom Daemon + o pid vom einmal ausgefuehrten Programm + + + doc: end to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.3: + devel doc: writing an init system + devel doc: the conf/-configuration system + + code: check conf/ and perhaps rewrite b0rken english sentences + + code / doc: add logging support for services -> use multilog? + code: add porting code: add support for netbsd + +0.4: + first stable, tested, well documented version. + + code: check for optimisation + + other: compare with other init systems + +0.4.x: + code: add porting code: add support for other unices diff --git a/software/cinit/browse_source/cinit-0.3pre11/TODO b/software/cinit/browse_source/cinit-0.3pre11/TODO new file mode 100644 index 00000000..a583a941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/TODO @@ -0,0 +1,327 @@ +-------------------------------------------------------------------------------- +- define how it should work (doc/braindums/big-picture.text) +- define service status in one document, so repeatition stops! +-------------------------------------------------------------------------------- +- remove client/ from top level +-------------------------------------------------------------------------------- +Generate automatic asciidoc from conf/* +-------------------------------------------------------------------------------- + Ausgaben nach Beendigung vom Starten des Services. + + [ on ] %s + Ergebnis + [ off ] %s + + Rekursives herunter/rauffahren +-------------------------------------------------------------------------------- +- add error handling to cinit.install.binary +-------------------------------------------------------------------------------- +1. Entfernung mount + -> Example configuration + -> was man alles machen muss +-------------------------------------------------------------------------------- +- add code do implement stopping / restarting with dependency tree +-------------------------------------------------------------------------------- +- print service name or cinit: before _everything_ WE print + + - is the reporting ok? + +# cinit.create.empty.service: can only be started from the bin directory + +- Fix Switching services off !! +- Error codes when shutting down a service? +- Delay dokumentieren +- no_kill dokumentieren + +- on.out, on.err, on.in? + -> reading/writing from/to files + +- implement "no_kill" until cinit-0.2 or 0.3? + + +-------------------------------------------------------------------------------- +- Source Logic issues + - remove FIXME entries (and what should be fixed, too) +-------------------------------------------------------------------------------- +Helper scripts, rausgenommen aus Der Doku, muessen fuer +cinit-0.3 ueberprueft werden: + +Configure help scripts +~~~~~~~~~~~~~~~~~~~~~~ +cinit-conf later +Using prepared scripts + +In the bin/ directory of this tarball you'll find at least: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +Optimisations +------------- + - Installing cinit + o compiling cinit from source + o debian / gentoo + - Configuring + * add scripts! see below + - define coding guidelines -> general, with url? + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml + +tree_exec +~~~~~~~~~ +- only check dependencies (=needs) after the basic run? + +Documentation +------------- + +developer +~~~~~~~~~ +- ST_IN_LIST == startup marker, used to (NOT) insert services into startup +- dep_needs_wants_add is used to add dependencies of a service to the general + starter list + + +user +---- +- do we really need swapoff? remove umount, swapoff! + * to services! + -> they have to do it! +- dependencies with leading '.' (dot) are ignored. +- about cinit-configuration structure + * cconfig + * svc/ + * special/ (or however we called it) + - panic + - halt + - poweroff + - reboot + +-------------------------------------------------------------------------------- +FAQ +~~~ +- DOKU: what happens when a service does not terminate.... + und er als once drin ist +--> Wenn kein ReSPAWN und der Prozess beendet sich nicht, + dann haengt init! + +- multuicall probleme -> busysbox --> GIBT ES NICHT!! + ---> DOKU DAZU! mit links, doppelt links, aus test + ---> erklaeren, dass es unproblematisch ist! + +-------------------------------------------------------------------------------- +csvc: +11:09 < folken23> telmich: oder service allready started. +-------------------------------------------------------------------------------- +cinit: +11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet + werden konnte. +11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0 + zurueckgeworfen. + ---> errno in execute_sth! + +Child handlin +~~~~~~~~~~~~~g +- free() everything before starting child + +Later +~~~~~ +- close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? + -> yep, clean environment! +- logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? +-------------------------------------------------------------------------------- +- Doc + * main.text -> cleanup / remove / split + * config-dirs + * FAQ + * ideas + * meta.dependencies + - config/hints/meta depps + * optimising + - integrate into other + * README.text + - update + * replacing.init + - update / integrate + * special-services.text + - into configuring/hints? + * TODO + - into paths, if necessary + * updating.cinit + - update as soon as update is possible? + * using.rescue + - update as soon as update is possible? + * 'os-integration.text' + * 'daemons.backgrounding' + * There are some hints on how to migrate to cinit in general and also + some os specific help in the file 'migrating-init-systems.text', +- CODECHECK: + * what happens with the wants of the last services? + - are they added? + - are they added at the correct position? +- scripts + * `cinit.check.config` (doc/user/configuring.cinit.text) + -> circular depedencies! +- Doc.next: + - installing: report! + -> write report script. +- Doc later + * current-init-problems.text + - current-init-problems.text explains why cinit does not use nor recommends the use of shell scripts. + * special-services.text + +- Begin documentation + * Check Makefile + * Integrate Makefile into main Makefile + * create manpage + * Write a small manual + - install + - configure + - boot (different OS) + * generate asciidoc! +- Doc way: + * installing + * configuring + - testconfig! + * booting + - different OS / bootloader + * debugging +- Shutdomn code: + * begin at init, then shutdown wants/needs, ... +- check that the new wants and need elements are nserted the other way round + * we go to next, elements must be put before us! +- replace cinit_ipc_logon with cinit_ipc_init... + * delay ipc code -> after start! + +- Cleanup / create object lists + object-lists/ + cinit + cservice + ccontrol + cinit.halt + cinit.reboot + cinit.shutdown (shell script?!?) + + +TODO.pre9: + + Done: + - pfad korrigieren (home/..../ -> cinit.release) + - cg-add nicht aufrufen beim make all! +ser/nico/oeffentlich/computer/projekte/cinit/cinit-0.3pre8/doc' +FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l src/cinit > $FILE; cat $FILE; \ + cg-add $FILE +-rwx------ 1 nico nico 72601 2007-04-06 17:52 src/cinit +There is no GIT repository here (.git not found) +make: *** [sizecheck] Fehler 1 + - setup VM for testing: qemu/kvm/virtualbox (no commercial bloaty) + -> uml! + - sleep when respawnig! + -> static delay of five seconds + do_reboot.c: + is ipc closed? -> check! => done! + - ignore msgrcv: Interrupted system call +Session terminated, killing shell...msgq-destroy: Invalid argument +msgq-destroy: Invalid argument + - do not print an error if /etc/cinit/conf/last is non-existent! + => print it. Do not not print it, as this can aid debugging. + include locking via shm, remove test on pid1 + => not necessary imho currently + + +TODO.pre10: + Done: + cleanup client/ comm/ contrib+tools/ util/ tmp/ + Debugging cinit-configuration: + ls -lR /etc/cinit + or: cinit.read.... + +TODO.pre11: + Remove some debugging, re-introduce DEBUG() macro.. + Fix doc: + + make dist should cleanup cc / ld to sane values? + or do I experiement in tmp/*? + + http://linux.schottelius.org/cinit/browse_source/current/doc/user/config-dirs + conf/c_halt + + IPC: + * check msqg-code + * documentate the ipc functions: update devel/ipc.text + * check cinit_read_command() (devel/ipc.h) + + do_reboot.c: + write cinit_svc_shutdown + - implement do_reboot() + * so not only booting with cinit works, but also the shutdown + - write libcinit for use in cmd() + - find out why gettimeofday() and time() do strange things when called in SIG_CHLD + => bug opened in glibc, got to code testprogram + - write cinit.conf.check + * report broken links in needs/wants + * report circular dependencies + - pretty print, reporting is ugly! + Add handler for ctrl+alt+delete + * document in paths + * check whether there's an os-unspecific way to do that + cleanup bin/ + - write sys-v-init-shutdown-wrapper + * shutdown + * halt + * reboot + * poweroff + - write manpages for + - *.kill + - cmd + + install: + make install => does not overwrite critical targets + * cinit + * *.kill (see client/*) + * cmd + make force-install => overwrites /sbin/{halt,poweroff,reboot}? + => with script that wraps cmd + make install-template: + * creates categories + make install-miniconf: + * creates categories + * creates one service starting a shell (depending on the OS!) + + cleanup src/ + finish ipc code so clients can access cinit + implement CMD_INFO (see comm.h) + + +TODO.pre12: + Check and clean doc/ + Remove *TODO*+ROADMAP and leave behin doc/TODO + +TODO.pre13: + code cmd=(cservice ccontrol halt reboot shutdown poweroff) + => halt/r/... also with kill ... + Test, release and prepare for final cinit-0.3 + +TODO.0.3.1 + add log support + cinit logs to + -> shm saver + services log to + +TODO unclear + - create migration scripts diff --git a/software/cinit/browse_source/cinit-0.3pre11/TODO.doc b/software/cinit/browse_source/cinit-0.3pre11/TODO.doc new file mode 100644 index 00000000..a170a50d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/TODO.doc @@ -0,0 +1,29 @@ +- doc/user/paths.text + * finish + * add examples +- add cross-compilation howto +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + +caveats +------- + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- cinit ignores the Keyboard request +- Currently there is no support to react on 'ctr+alt+del': +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + diff --git a/software/cinit/browse_source/cinit-0.3pre11/TODO.lucky b/software/cinit/browse_source/cinit-0.3pre11/TODO.lucky new file mode 100644 index 00000000..3ac57ee5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/TODO.lucky @@ -0,0 +1,16 @@ +18:18 hey, ich hatte gerade ein wenig lust mich mit cinit zu befassen, hier also mein + kleiner bug-report: in src/include fehlt cinit.h, (alles auf das aktuelle + tarball bezogen), ich hab's aus pre9 genommen, hatte ich noch da, da git nicht + wollte(Cannot get remote repository information.), ausserdem hast du _ statt - + in doc/man/cinit.text verwendet bei der email, das mag docbook nicht, die + beiden zeilen habe ich korrigiert, danch ging schon mal make all und auch make + ins +18:35 und warum installiert er die man pages nicht mit? +07:20 so, kleiner zwischenbericht, das argv problem bei lvm gibt es mit pre10 nicht + mehr, d.h. dass man auch kein shell-skript mehr braucht um lvm/luks-devices zu + mounten :) +07:20 soweit sieht eig. alles gut aus +07:21 wenn das so bleibt, dann werd' ich dauerhaft auf cinit umsteigen :) +07:21 und wenn sich die gelegenheit bietet, dann stell ich cinit auch mal in der + info-ag von unserer schule vor :) + diff --git a/software/cinit/browse_source/cinit-0.3pre11/TODO.optimisations b/software/cinit/browse_source/cinit-0.3pre11/TODO.optimisations new file mode 100644 index 00000000..8a686b4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/TODO.optimisations @@ -0,0 +1,19 @@ +This file describes enhancements or optimisations that +could be done / checked. + + +Code +---- + +fork() +~~~~~~ + +Security +^^^^^^^^^ +- Closed fds? +- Close other things? +- IPC? + +Cleanup +^^^^^^^ +- Do we have to reset signals or is that done anyway by fork()? diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cdoc-man.sh b/software/cinit/browse_source/cinit-0.3pre11/bin/cdoc-man.sh new file mode 100644 index 00000000..fc1adde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cdoc-man.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Nico Schottelius +# Date: 21-Aug-2005 +# Last Modified: - +# + +set -e + +[ $# -ne 1 ] && exit 23 + +SRC=$1 + +cd "$SRC" + +# +# Title heading +# +echo .TH $(cat "meta/name" "meta/man_section" "meta/date") + +# +# Name +# +echo .SH NAME +echo $(cat meta/name) - $(cat meta/short_description) + +# +# Synopsis +# +echo .SH SYNOPSIS +echo $(cat path) $(cat parameters) + +# +# description +# +echo .SH DESCRIPTION +echo $(cat long_description) + +# +# availability +# +for section in availability examples "see also" author; do + if [ -f "$section" ]; then + echo .SH $section | tr '[a-z]' '[A-Z]' + cat "$section" + fi +done + +# +# files +# +if [ -f files ]; then + echo .SH FILES + cat files | sed 's/\(.*\)/.IP "\1" /' +fi + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.add.dependency new file mode 100644 index 00000000..7bc9cc65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.add.dependency @@ -0,0 +1,51 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or wants Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +# adding 'wishes' for x-mas and requires for 'the mass' and 'tv' +case $DEP in + wishes|wants) DEP=$C_WANTS ;; + needs|requires) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could someone PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEP_DIR="${BASEDIR}/${SVC_A}/${DEP}" + +if [ ! -d "$DEP_DIR" ]; then + echo "$DEP_DIR does not exist, creating..." + mkdir "$DEP_DIR" + if [ $? -ne 0 ]; then + echo "Error occured due to creating directory. Exiting." + exit 1 + fi +fi + +DEST="${DEP_DIR}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.add.getty new file mode 100644 index 00000000..987a5bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.add.getty @@ -0,0 +1,75 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# Date: 2005-05-24 (Last changed: 2005-08-07) +# + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | sort -n | tail -n 1) + +[ ! "$LAST_NUMBER" ] && LAST_NUMBER=0 + +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +#echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + */mgetty) + mygetty=$getty + params="38400 tty${NUMBER}" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +# check input +if [ ! "$mygetty" ]; then + read -p "Getty to use [$mygetty]: " rgetty +fi +if [ ! "$params" ]; then + read -p "Parameters to pass [$params]: " rparams +fi +if [ ! "$params" -o ! "$mygetty" ]; then + echo "Sorry, either getty or parameters are not supplied." + exit 23 +fi + +echo -n "Creating $mygetty ($params) in $DDIR ... " +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DDIR" +ln -s "$mygetty" "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.configure.ipc b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.configure.ipc new file mode 100644 index 00000000..65190baa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.configure.ipc @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius, 2006-07-28 +# +# cinit: configure the ipc method to use +# + +HIER=$(dirname $0) +DDIR=$HIER/../src/ipc +DFILE=${DDIR}/current +IPC_METHOD=$(head -n 1 "$HIER/../conf/ipc_method") + +echo "Configure: IPC: Using \"$IPC_METHOD\" as IPC method" + +# always remove link before, as ln seems to be broken +# Doing ln -sf src/ipc/$method current twice, will create the file +# "current" _BELOW_ src/ipc/$method and not overwrite the link +# src/ipc/current + +rm -f "${DFILE}" +ln -sf "${IPC_METHOD}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.configure.mark b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.configure.mark new file mode 100644 index 00000000..62454c7f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.configure.mark @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: touch a file to mark everything configured +# 2006-08-27 +# + +echo "Configure: MK: Marking directory as configured" +touch .configured diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.configure.os b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.configure.os new file mode 100644 index 00000000..d5b8e6e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.configure.os @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups symlinks for the os +# + +DDIR=$(dirname $0)/../src/os +DFILE="$DDIR/current" +OSCONFIG=$(dirname $0)/../conf/os + +OS=$(head -n 1 "$OSCONFIG") + +echo "Configure: OS: Binaries are created for $OS ..." + +rm -f "${DFILE}" +ln -sf "${OS}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.configure.tools b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.configure.tools new file mode 100644 index 00000000..43242a01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.configure.tools @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups scripts for compiling and linking +# + +HIER=$(dirname $0) +DDIR=$HIER/../tmpbin/ +CC=$(head -n 1 "$HIER/../conf/cc") +CFLAGS=$(head -n 1 "$HIER/../conf/cflags") +LD=$(head -n 1 "$HIER/../conf/ld") +LDFLAGS=$(head -n 1 "$HIER/../conf/ldflags") +STRIP=$(head -n 1 "$HIER/../conf/strip") + +echo "Configure: CC: Creating cc, ld and strip ..." + +mkdir -p "$DDIR" +cd "$DDIR" + +echo "$CC $CFLAGS \"\$@\"" > cc +echo "$LD $LDFLAGS \"\$@\"" > ld +echo "$STRIP \"\$@\"" > strip + +# set correct permissions +chmod 0700 * diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.create.empty.service new file mode 100644 index 00000000..365c4bc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.create.empty.service @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.binary new file mode 100644 index 00000000..a368ac23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.binary @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: - +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice +"$INSTALL_PROG" sbin/ccontrol $DESTDIR/$PREFIX/sbin/ccontrol +"$INSTALL_PROG" bin/cinit.reboot $DESTDIR/$PREFIX/sbin/cinit.reboot +"$INSTALL_PROG" bin/cinit.shutdown $DESTDIR/$PREFIX/sbin/cinit.shutdown +"$INSTALL_PROG" bin/cinit.wait.for.daemon \ + $DESTDIR/$PREFIX/sbin/cinit.wait.for.daemon + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi + +# install as /sbin/shutdown, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/shutdown ]; then + ln -s $PREFIX/sbin/cinit.shutdown $DESTDIR/$PREFIX/sbin/shutdown +fi + +# install as /sbin/reboot, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/reboot ]; then + ln -s $PREFIX/sbin/cinit.reboot $DESTDIR/$PREFIX/sbin/reboot +fi diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.config-dir b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.config-dir new file mode 100644 index 00000000..c9adb70f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.config-dir @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.dir new file mode 100644 index 00000000..5e16f690 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.dir @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/sbin" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.fsck b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.fsck new file mode 100644 index 00000000..4508860a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.fsck @@ -0,0 +1,36 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 3 ]; then + echo "$(basename $0): name device filesystem-type" + exit 1 +fi + +NAME=$1 +DEVICE=$2 +FS_TYPE=$3 + +FSCK=/sbin/fsck.$FS_TYPE + +if [ ! -f "$FSCK" ]; then + echo "Missing $FSCK, abort." + exit 1 +fi + +if [ ! -e "$DEVICE" ]; then + echo "Missing $DEVICE abort." + exit 1 +fi + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME" +ln -sf "$FSCK" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON" +echo "$DEVICE" > "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.miniconf b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.miniconf new file mode 100644 index 00000000..45dcc632 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.miniconf @@ -0,0 +1,103 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: 2005-08-07 +# + + +. $(dirname $0)/cinit.read-conf + +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" +echo "" +echo "This will install a minimal cinit configuration." +echo "This configuration _SHOULD_ be able to run on _MOST_ systems." +echo "Still, it's highly EXPERIEMENTAL, use with CAUTION." +echo "" +echo "Please make sure, that" +echo " - you are using a journaling filesystem (fsck is not used)" +echo " - you have agetty, fgetty or mingetty installed" +echo " - you are runnig Linux 2.6 (sysfs is used)" +echo " - you have udev or static device nodes (you need /dev/tty*)" +echo " - getties will run on tty2-tty7, tty1 is used or logging" +echo "" +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" + +notosoftwarepatents="Please keep an eye on software patents, they are evil." +read -p "Do you really want to continue? [y/N] " notosoftwarepatents + +if [ "$notosoftwarepatents" = "y" -o "$notosoftwarepatents" = "Y" ]; then + echo "Let us try it ..." +else + echo 'Bye bye!' + exit 0 +fi + +set -e + +# Create basic layout +$(dirname $0)/cinit.install.standard-dirs + +# Install services: +# - mount root r/w +# - mount /proc +# - mount /sys +# - install getties on tty2-tty7 +# - add cleanup for /etc/mtab +# - add loopback device +# - init service + echo + +################################### mount ##################################### +# mount root read/write +$(dirname $0)/cinit.install.service.mount-root + +# - mount /proc +$(dirname $0)/cinit.install.service.mount-proc + +# - mount /sys +$(dirname $0)/cinit.install.service.mount-sys + +# mount needs everything below it +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/root" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/proc" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/sys" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" + +################################### getty ##################################### +# mount root read/write +# install getties +begin_getty=2 +end_getty=7 +i=$begin_getty + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" +while [ "$i" -le "$end_getty" ]; do + $(dirname $0)/cinit.add.getty + ln -sf "${DESTDIR}/${CINIT_DIR}/getty/$i" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" + i=$(($i+1)) +done + +################################### mtab ##################################### +# - add cleanup for /etc/mtab +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" +$(dirname $0)/cinit.install.service.cleanup-mtab +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" + +################################### lo ##################################### +# - add loopback device +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" +$(dirname $0)/cinit.install.service.network-lo +ln -sf "${DESTDIR}/${CINIT_DIR}/network/lo" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" + +# - init service + echo +# init depends on mount, getty -> everything from base-layout +$(dirname $0)/cinit.install.service.init +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" + +ln -sf "${DESTDIR}/${CINIT_DIR}/local-services/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/getty/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/network/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.cleanup-mtab b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.cleanup-mtab new file mode 100644 index 00000000..30a8dd48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.cleanup-mtab @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: cleanup mtab +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" +echo '#!/bin/sh' > "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'rm -f /etc/mtab' >>"${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'ln -s /proc/mounts /etc/mtab' \ + >> "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +chmod 0700 "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.hostname.generic b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.hostname.generic new file mode 100644 index 00000000..2d72f50e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.hostname.generic @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service, which sets the hostname +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): hostname" + exit 1 +fi + +HOSTNAME=$1 +HOSTNAME_BIN=${HOSTNAME_BIN:-/bin/hostname} + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/network/hostname" +ln -sf "$HOSTNAME_BIN" "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON" +echo "$HOSTNAME" > "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.init b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.init new file mode 100644 index 00000000..c3a10931 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.init @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +ln -sf /bin/echo "${DESTDIR}/${CINIT_DIR}/${C_INIT}/$C_ON" +echo '*** cinit initial service successfully started ***' \ + > "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.keymap.c_keymap b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.keymap.c_keymap new file mode 100644 index 00000000..235a329e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.keymap.c_keymap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install keymap from environment setting +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +if [ -z "$C_KEYMAP" ]; then + echo "Set C_KEPMAP to the wanted keymap." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" ]; then + echo "Service keymap already exists." + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find loadkeys) + +if [ $? -ne 0 ]; then + echo "Did not find binary loadkeys." + exit 1 +fi + +echo -n "Installing keymap to ${DESTDIR}/${CINIT_DIR}/local-tuning/keymap ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON" + +echo "$C_KEYMAP" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.mount-proc b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.mount-proc new file mode 100644 index 00000000..024847a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.mount-proc @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /proc +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/proc" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/proc/$C_ON" +echo proc > "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo /proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.mount-root b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.mount-root new file mode 100644 index 00000000..a1bd56ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.mount-root @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount root r/w +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# mount root read/write +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/root" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/root/$C_ON" +echo -n > "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo -o >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo remount,rw >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo / >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.mount-sys b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.mount-sys new file mode 100644 index 00000000..8c8191aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.mount-sys @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /sys +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /sys +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/sys" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/sys/$C_ON" +echo sys > "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo sysfs >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo /sys >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.network-lo b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.network-lo new file mode 100644 index 00000000..45bff6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.network-lo @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: loopback device +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/lo" +ln -sf /sbin/ifconfig "${DESTDIR}/${CINIT_DIR}/network/lo/$C_ON" +echo lo > "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo 127.0.0.1/8 >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo up >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.ntpdate.debian b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.ntpdate.debian new file mode 100644 index 00000000..2af2ee4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.ntpdate.debian @@ -0,0 +1,47 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install ntpdate +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +. /etc/default/ntpdate + +if [ -z "$NTPSERVERS" ]; then + echo "No ntp servers found, aborting" + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find ntpdate) + +if [ $? -ne 0 ]; then + echo "Did not find binary ntpdate." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" ]; then + echo "Service ntpdate already exists." + exit 1 +fi + +echo -n "Installing ntpdate to ${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON" + +for server in $NTPSERVERS; do + echo "$server" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON$C_PARAMS" +done + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.udev b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.udev new file mode 100644 index 00000000..d91f01cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.service.udev @@ -0,0 +1,64 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install udev +# Date: 2005-10-15 +# Comment: DO NOT RSYNC TO THE WRONG SIDE! +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BIN_UDEVSEND=$($(dirname $0)/cinit.path-find udevsend) +BIN_UDEVSTART=$($(dirname $0)/cinit.path-find udevstart) +BIN_SYSCTL=$($(dirname $0)/cinit.path-find sysctl) +BIN_MOUNT=$($(dirname $0)/cinit.path-find mount) +SERVICE="local-tuning/udev" + +if [ -z "$BIN_UDEVSEND" -o -z "$BIN_UDEVSTART" -o -z "$BIN_SYSCTL" -o -z "$BIN_MOUNT" ]; then + echo "Did not find a binary." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo "Installing ${SERVICE} to ${DESTDIR}/${CINIT_DIR}/ ..." + +# 0. general udev +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}" +# 1. udevmount +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/mount/udev" +ln -sf "$BIN_MOUNT" "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON" +echo "udev" > "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "-t" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "tmpfs" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "/dev" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" + +# 2. udevstart +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart" +ln -sf "$BIN_UDEVSTART" "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart/$C_ON" + +# dependencies +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/sys +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/udev + +# 3. udev to hotplug +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug" +ln -sf "$BIN_SYSCTL" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug/$C_ON" +echo "$BIN_UDEVSEND" > "${DESTDIR}${CINIT_DIR}/${SERVICE}/hotplug/$C_ON$C_PARAMS" + +$(dirname $0)/cinit.add.dependency ${SERVICE}/hotplug needs mount/proc + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.standard.init.deps b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.standard.init.deps new file mode 100644 index 00000000..dcc5cd07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.standard.init.deps @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add standard sub-configuration directories to init wants +# Date: 2005-10-11 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.standard.mounts b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.standard.mounts new file mode 100644 index 00000000..bb1fc0c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.standard.mounts @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create normal mounts +# Date: 2005-10-16 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.swap b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.swap new file mode 100644 index 00000000..84e6c928 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.swap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install swap +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +SERVICE=mount/swap + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BINARY=swapon +BINARY_PATH=$($(dirname $0)/cinit.path-find $BINARY) +if [ $? -ne 0 ]; then + echo "Did not find binary $BINARY." + exit 1 +fi + +HAS_SWAP=$(awk '$3 ~ /swap/ { print $3 }' /etc/fstab) +if [ -z "$HAS_SWAP" ]; then + echo "Seems you have no swap, service not installing" + exit 1 +fi +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo -n "Installing ${SERVICE} to ${DESTDIR}${CINIT_DIR}/${SERVICE} ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON" + +echo "-a" >> "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.merge.sysvinit-debian-sid b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.merge.sysvinit-debian-sid new file mode 100644 index 00000000..3ef0ce03 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.merge.sysvinit-debian-sid @@ -0,0 +1,137 @@ +#!/bin/sh +# Nico Schottelius +# Date: Sun Oct 16 16:57:03 CEST 2005 +# cLinux/cinit +# Automagically convert Debian-Sysv-Iinit +# THIS IS NOT CLEAN. +# THIS IS NOT EVEN INTENTED TO BE CLEAN. +# This is just a small hack, because my girlfriend wants her notebook back. + +echo "***> $(basename $0): converting Debian-Sys-V-Init" + +# read standard values, may be overwritten from outside +. $(dirname $0)/cinit.read-conf + +echo "***> Finding standard config ..." +# variables, which can be set from the outside +ROOT_DEV=${ROOT_DEV:-$(awk '$2 ~ /^\/$/ { print $1 }' /etc/fstab)} +ROOT_FSCK=${ROOT_FSCK:-$(awk '$2 ~ /^\/$/ { print $6 }' /etc/fstab)} +ROOT_FS=${ROOT_FS:-$(awk '$2 ~ /^\/$/ { print $3 }' /etc/fstab)} +RUNLEVEL=${RUNLEVEL:-$(runlevel | awk '{ print $2 }')} + +echo "***> Detecting keymap (this may take some time)" + +if [ -z "$C_KEYMAP" ]; then + echo "Please set the variable C_KEYMAP to your keymap." + echo "It is impossible to detect reliable your keymap in Debian." + exit 1 +fi + + +echo "***> Configuration" +echo "Hostname (\$HOSTNAME): $HOSTNAME" +echo "Keymap (\$C_KEYMAP): $C_KEYMAP" +echo "Root device (\$ROOT_DEV): $ROOT_DEV" +echo "Root fsck (\$ROOT_FSCK): $ROOT_FSCK" +echo "Root FS (\$ROOT_FS): $ROOT_FS" +echo "Runlevel (\$RUNLEVEL): $RUNLEVEL" +echo "Destdir: (\$DESTDIR): $DESTDIR" +echo "Config-Dir: (\$CINIT_DIR): $CINIT_DIR" +read -p "Is this correct (Y/n) " correct + +if [ "$correct" != "y" -a "$correct" != "Y" ]; then + echo "***> Abort." + exit 1 +fi + +if [ -d "${DESTDIR}${CINIT_DIR}" ]; then + echo "ERROR: Configuration already exists at ${DESTDIR}${CINIT_DIR}." + exit 1 +fi + +echo "***> Installing standard structure and dependencies" +set -e +$(dirname $0)/cinit.install.config-dir +$(dirname $0)/cinit.install.standard.dirs +$(dirname $0)/cinit.install.standard.init.deps + +echo "***> Adding mount / r/w" +$(dirname $0)/cinit.install.service.mount-root + +if [ "$ROOT_FSCK" = "1" ]; then + echo "***> Adding fsck for $ROOT_DEV ..." + $(dirname $0)/cinit.install.fsck root "$ROOT_DEV" "$ROOT_FS" + echo "***> Adding dependency" + $(dirname $0)/cinit.add.dependency mount/root needs fsck/root +else + echo "***> Skipping fsck for $ROOT_DEV ..." +fi + +echo "***> Setting up standard mounts ..." +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up hostname: $HOSTNAME" +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up keymap" +$(dirname $0)/cinit.install.service.keymap.c_keymap + +echo "***> Creating getties (tty1-8)" +for i in `seq 1 8`; do + $(dirname $0)/cinit.add.getty + + # each getty needs: + # - root r/w + $(dirname $0)/cinit.add.dependency getty/$i needs mount/root + # - hostname + $(dirname $0)/cinit.add.dependency getty/$i needs network/hostname +done + +echo "***> Enabling getties (tty2-8)" +for i in `seq 2 8`; do + # add getties to getty/ + $(dirname $0)/cinit.add.dependency getty wants getty/$i +done + +# +# Convert services: check /etc/rcS.d and /etc/rcX.d +# +echo "***> Converting services ..." +for script in $(cd /etc/rcS.d/; ls S*; cd /etc/rc${RUNLEVEL}.d/; ls S*); do + echo -n "$script: " + case $script in + # SCRIPTS READY + *ntpdate) + $(dirname $0)/cinit.install.service.ntpdate.debian + $(dirname $0)/cinit.add.dependency local-tuning/ntpdate needs network + ;; + *udev*) + $(dirname $0)/cinit.install.service.udev + + # SCRIPTS NEVER READY + *glibc.sh|*module-init-tools|*modutils|*procps.sh|*hotplug-net|*bootmisc.sh|*nviboot|*screen-cleanup|*x11-common|*sudo|*makedev|*rmnologin) + echo "Ignoring (useless)." + ;; + + # SCRIPTS NOT YET READY + *mountvirtfs|*checkroot.sh|*ifupdown-clean|*checkfs.sh|*mountall.sh|*ifupdown|*hostname*|*mountnfs.sh|*alsa|*rsync|*ssh|*fam|*cron|*gdm) + echo "converting planned later." + ;; + + # SCRIPTS LATER TO DO + *bootlogd|*keymap.sh|*hwclock*|*discover|*pppd-dns|*dns-clean|*networking|*portmap|*console-screen.sh|*urandom|*klogd|*apmd|*dbus-1|*exim4|*pcmcia|*nfs-common|*stop-bootlogd) + echo "unsupported currently (FIXME PLEASE)." + ;; + *sysklogd|*ppp|*inetd|*lpd|*aumix|*atd) + echo "unsupported (choose a better alternative)." + ;; + *initrd-tools.sh|*libdevmapper*|*hotplug) + echo "Ignoring (general or bloated script)." + ;; + *) + echo "Ignoring (unknown)" + ;; + esac +done + +echo "***> Finished." diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.path-find b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.path-find new file mode 100644 index 00000000..0d0f362b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.path-find @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: find binary in path +# Date: 2005-10-15 +# + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): searched binary" + exit 1 +fi + +binary=$1 + +# this is NOT really clean, paths can also contain spaces +for pfad in $(echo $PATH | sed 's/:/ /g'); do + fullname=$pfad/$binary + if [ -f "$fullname" ]; then + echo "$fullname" + exit 0 + fi +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.remove.getty new file mode 100644 index 00000000..4950eeed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.remove.getty @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + +if [ ! "$NUMBER" ]; then + echo "There is no getty to remove." + exit 1 +fi + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r "$DDIR" +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.shutdown new file mode 100644 index 00000000..702c8a17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.shutdown @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# TODO: use ccontrol! +# 2005-05-24 (Last changed: 2005-06-18) + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -p|--power-off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " -s|--rescue: Rescue mode" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -p|--power-off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + -s|--rescue) kill -USR2 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.uml.test new file mode 100644 index 00000000..f6ea7fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.1 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG umid=cinit$$ init=/sbin/cinit" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..7f027455 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 (Last Changed: 2005-06-17) + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +PIDFILE=$1; shift +DAEMON=$1; shift + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/.README b/software/cinit/browse_source/cinit-0.3pre11/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/c_confdir b/software/cinit/browse_source/cinit-0.3pre11/conf/c_confdir new file mode 100644 index 00000000..091e6192 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/c_confdir @@ -0,0 +1,3 @@ +conf + +The directory below cinit_dir for cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/c_delay b/software/cinit/browse_source/cinit-0.3pre11/conf/c_delay new file mode 100644 index 00000000..dc30f147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGTERM for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/c_env b/software/cinit/browse_source/cinit-0.3pre11/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/c_init b/software/cinit/browse_source/cinit-0.3pre11/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/c_last b/software/cinit/browse_source/cinit-0.3pre11/conf/c_last new file mode 100644 index 00000000..8debf155 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/c_last @@ -0,0 +1,7 @@ +last + +Name of the file below cinit_dir/c_confdir/ to execute right before +reboot/halt/poweroff. + +This maybe a shellscript with the OS-specific umount procedure (like umount -a), +see doc/user/configuring.cinit for more details. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/c_needs b/software/cinit/browse_source/cinit-0.3pre11/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/c_off b/software/cinit/browse_source/cinit-0.3pre11/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/c_on b/software/cinit/browse_source/cinit-0.3pre11/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/c_panic b/software/cinit/browse_source/cinit-0.3pre11/conf/c_panic new file mode 100644 index 00000000..7fdb77b3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/c_panic @@ -0,0 +1,5 @@ +panic + +Name of the file below cinit_dir/c_confdir/ to execute on panic. +This name .params (normally panic.params) will be passed as parameters/ +argumunts to panic. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/c_params b/software/cinit/browse_source/cinit-0.3pre11/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/c_respawn b/software/cinit/browse_source/cinit-0.3pre11/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/c_sock b/software/cinit/browse_source/cinit-0.3pre11/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/c_tmp b/software/cinit/browse_source/cinit-0.3pre11/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.3pre11/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.3pre11/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/c_wants b/software/cinit/browse_source/cinit-0.3pre11/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/cc b/software/cinit/browse_source/cinit-0.3pre11/conf/cc new file mode 100644 index 00000000..b168ae6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/cc @@ -0,0 +1,3 @@ +gcc + +The c-compiler to use. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/cflags b/software/cinit/browse_source/cinit-0.3pre11/conf/cflags new file mode 100644 index 00000000..f205afb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/cflags @@ -0,0 +1,6 @@ +-pipe -W -Wall -Werror -Iinclude -g -D_XOPEN_SOURCE=600 -D_USE_POSIX + +Standard flags to pass to (g)cc. + +-D_XOPEN_SOURCE=600 must be used on glibc to select the right standard. +-D_USE_POSIX is needed for sigemptyset on glibc diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/cinit_dir b/software/cinit/browse_source/cinit-0.3pre11/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/confdir b/software/cinit/browse_source/cinit-0.3pre11/conf/confdir new file mode 100644 index 00000000..55fb65e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/confdir @@ -0,0 +1,3 @@ +conf + +The subdirectory below /etc/cinit to be used for general configurations. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/destdir b/software/cinit/browse_source/cinit-0.3pre11/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/getty_dir b/software/cinit/browse_source/cinit-0.3pre11/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/install_directory b/software/cinit/browse_source/cinit-0.3pre11/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/install_prog b/software/cinit/browse_source/cinit-0.3pre11/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/ipc_method b/software/cinit/browse_source/cinit-0.3pre11/conf/ipc_method new file mode 100644 index 00000000..fc75e273 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/ipc_method @@ -0,0 +1,5 @@ +msgq + +The type of IPC (inter process communication) to use. +Valid values can be optained by issuing `ls src/ipc/`. + diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/ld b/software/cinit/browse_source/cinit-0.3pre11/conf/ld new file mode 100644 index 00000000..b60e4836 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/ld @@ -0,0 +1,3 @@ +gcc + +Comment missing. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/ldflags b/software/cinit/browse_source/cinit-0.3pre11/conf/ldflags new file mode 100644 index 00000000..fc214daf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/ldflags @@ -0,0 +1,3 @@ + + +No flags specified normally. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/max_delay b/software/cinit/browse_source/cinit-0.3pre11/conf/max_delay new file mode 100644 index 00000000..30725bf8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/max_delay @@ -0,0 +1,4 @@ +30 + +Maximum number of seconds to sleep between retrying to start it +(respawn only). diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/max_deps b/software/cinit/browse_source/cinit-0.3pre11/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/msgq_pathname b/software/cinit/browse_source/cinit-0.3pre11/conf/msgq_pathname new file mode 100644 index 00000000..1bef0b6b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/msgq_pathname @@ -0,0 +1,4 @@ +/bin/sh + +Used to generate an unique identifier for the message queue. +See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/msgq_to_clients b/software/cinit/browse_source/cinit-0.3pre11/conf/msgq_to_clients new file mode 100644 index 00000000..dd15808a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/msgq_to_clients @@ -0,0 +1,4 @@ +o + +This is use in ftok to generate a key_t for the message queue use to write +to the clients. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/msgq_to_server b/software/cinit/browse_source/cinit-0.3pre11/conf/msgq_to_server new file mode 100644 index 00000000..f87ae3f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/msgq_to_server @@ -0,0 +1,4 @@ +i + +This is use in ftok to generate a key_t for the message queue use to write +to the server. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/os b/software/cinit/browse_source/cinit-0.3pre11/conf/os new file mode 100644 index 00000000..ddbf8f9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/os @@ -0,0 +1,14 @@ +linux + +Select the operating system compiling for. + +Current possibilities: + + - linux + + +Currently Planned possibilities: + + - freebsd + - openbsd + - netbsd diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/p_asciidoc b/software/cinit/browse_source/cinit-0.3pre11/conf/p_asciidoc new file mode 100644 index 00000000..52485c86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/p_asciidoc @@ -0,0 +1,6 @@ +asciidoc + +The binary on your system (with or without path) which does what I expect +asciidoc todo. + +Default: asciidoc diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/p_docbooktoman b/software/cinit/browse_source/cinit-0.3pre11/conf/p_docbooktoman new file mode 100644 index 00000000..d62c9015 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/p_docbooktoman @@ -0,0 +1,6 @@ +docbook2x-man + +The binary on your system (with or without path) which converts +docbook to manpages. + +Default: docbook2x-man diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/p_docbooktotexi b/software/cinit/browse_source/cinit-0.3pre11/conf/p_docbooktotexi new file mode 100644 index 00000000..278f6805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/p_docbooktotexi @@ -0,0 +1,6 @@ +docbook2x-texi + +The binary on your system (with or without path) which converts +docbook to texinfo. + +Default: docbook2x-texi diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/prefix b/software/cinit/browse_source/cinit-0.3pre11/conf/prefix new file mode 100644 index 00000000..6b90469f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/prefix @@ -0,0 +1,5 @@ + + +Where to install cinit. Normally this will be /, but you can put it anywhere. +The subdirectory 'sbin' under this prefix must be readable by the kernel. +This is normally either empty or "/". diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/profile b/software/cinit/browse_source/cinit-0.3pre11/conf/profile new file mode 100644 index 00000000..b9104bf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/profile @@ -0,0 +1,9 @@ +cprofile: + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile:" is the standard, as +the Linux kernel eats everything in the form 'var=parm'. +The old (pre cinit-0.1) option "cprofile=" should therefore +NOT be used. + +Under Linux you tell it the bootloader like grub or LILO. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/service_categories b/software/cinit/browse_source/cinit-0.3pre11/conf/service_categories new file mode 100644 index 00000000..2216ea97 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/service_categories @@ -0,0 +1,7 @@ +getty init local-tuning local-services mount network remote-services + +List of directories normally created below /etc/cinit/svc/ as +'pseudo-services'. + +Btw, 'init' is the first service and has always to be there, but it does not really +fit into here, because it's a real one, compraed to the pseudo services. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/sleep_before_kill b/software/cinit/browse_source/cinit-0.3pre11/conf/sleep_before_kill new file mode 100644 index 00000000..2671f22d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/sleep_before_kill @@ -0,0 +1,7 @@ +sleep_before_kill + +The file that specifies how long to sleep after sending SIGTERM, before sending +SIGKILL to every process. If this file is non-existing the builtin value from +'sleep_kill'. + +The file should be located below conf/ diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/sleep_kill b/software/cinit/browse_source/cinit-0.3pre11/conf/sleep_kill new file mode 100644 index 00000000..b419241a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/sleep_kill @@ -0,0 +1,8 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. + +Note: This does NOT affect terminating services, they are shutdown by +their own 'off' functions. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.3pre11/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.3pre11/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/sleep_svc b/software/cinit/browse_source/cinit-0.3pre11/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/sock_queue b/software/cinit/browse_source/cinit-0.3pre11/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/strip b/software/cinit/browse_source/cinit-0.3pre11/conf/strip new file mode 100644 index 00000000..08736418 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/strip @@ -0,0 +1,3 @@ +strip -R .comment -R .note + +Strip out unecessary parts of the binaries. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/sulogin b/software/cinit/browse_source/cinit-0.3pre11/conf/sulogin new file mode 100644 index 00000000..24859afc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/sulogin @@ -0,0 +1,6 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it, if the standard panic +action fails (as specified in cinit_dir/c_confdir/panic). + +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/svcdir b/software/cinit/browse_source/cinit-0.3pre11/conf/svcdir new file mode 100644 index 00000000..087a3848 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/svcdir @@ -0,0 +1,3 @@ +svc + +Directory below /etc/cinit that contains the services. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf/version b/software/cinit/browse_source/cinit-0.3pre11/conf/version new file mode 100644 index 00000000..d1de0411 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf/version @@ -0,0 +1,3 @@ +"0.3pre11" + +The version. diff --git a/software/cinit/browse_source/cinit-0.3pre11/conf2/README b/software/cinit/browse_source/cinit-0.3pre11/conf2/README new file mode 100644 index 00000000..c753107d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/conf2/README @@ -0,0 +1,33 @@ +Migrate conf/ to general conf/-buildsystem (write documentation for it). + +gpm2 may be an example for this! + +conf/targets: + targets to make available in Makefile and their dependencies + + abstract the build-process somehow, so one can create build-targets? + + c-programs/ (includes cc / ld) + cinit (link to conf/object_listings cinit?) +conf/object_listings + lists of dependencies: + conf/object_listings/cinit contains all objects needed for cinit + +conf/programs/ + like cc, ld, install, ... + +conf/built-options/ + like --... in ./configure + +conf/install/ + + options/ + destdir (prefixed before everything) + prefix (standard prefix) + bin (relative to prefix, if not beginning with a /) + sbin (relative to prefix, if not beginning with a /) + lib (relative to prefix, if not beginning with a /) + targets/ + cinit/ + built-target (link to conf/targets/cinit) + destination (relative to diff --git a/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/Makefile b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/Makefile new file mode 100644 index 00000000..23cc41f0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/Makefile @@ -0,0 +1,70 @@ +# +# (c) 2005 Peter Portmann (pp at bluewin.ch) +# cinit/contrib+tools +# +# This script is written for the clinux-System and published +# under the terms of GPL 2.0 +# +# Version: 0.2 +# clean with a single command instead of two commands. +# +# ChangeLog: +# 0.1 initial version +# +# Todo: +# +# Features: + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +DEBUG=-g -DDEBUG +#OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! +LDFLAGS= + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. -I../ +LD=gcc +STRIP=strip -R .comment -R .note + +INSTALL = install + +prefix = /usr +bindir = $(prefix)/bin + +# objects + +CLIENT=cinit.graph.text.o + +COMMUNICATION=error.o usage.o mini_printf.o + +OBJ=$(CLIENT) $(COMMUNICATION) + +# +PROGRAMS=cinit.graph.text +SCRIPTS=cconfig.graph.xml.rb \ + make.cconfig.from.xml.rb \ + cinit-vis.pl + +# targets +all: $(PROGRAMS) + +cinit.graph.text: $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +clean: + rm -f *.o $(PROGRAMS) + +install: all + @echo '*** Installing contrib+tools ***' + $(INSTALL) -d -m755 $(DESTDIR)$(bindir) + for bin in $(SCRIPTS) $(PROGRAMS); do \ + $(INSTALL) $$bin $(DESTDIR)/$(bindir); \ + done diff --git a/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/README b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/README new file mode 100644 index 00000000..85fa2f5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/README @@ -0,0 +1,11 @@ +contrib+tools/ + programs written by others and external tools not necessary + needed but (very) nice to have + + + cinit-vis.pl - draw an ascii graph of cinit configuration [perl] + cinit.graph.text - draw an ascii graph of cinit configuration [c] + + cconfig.graph.xml.rb - creates a xml file from a cconfig [ruby] + make.cconfig.from.xml.rb - creates a cconfig from a xml file [ruby] + diff --git a/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/README.ruby b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/README.ruby new file mode 100644 index 00000000..ed210cee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/README.ruby @@ -0,0 +1,7 @@ +The ruby tools for general cconfig [0] are written by René Nussbaumer [1]. +You can find the documentation for them at [2]. + + +[0]: http://nico.schotteli.us/papers/linux/cconfig/ +[1]: http://killerfox.forkbomb.ch/ +[2]: http://killerfox.forkbomb.ch/articles/cconfig/tools diff --git a/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/cconfig.graph.xml.rb b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/cconfig.graph.xml.rb new file mode 100644 index 00000000..d18ba422 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/cconfig.graph.xml.rb @@ -0,0 +1,117 @@ +#!/usr/bin/env ruby + +=begin + + Writes an XML-Tree for a cconfig directory + Idea by Nico Schottelius aka telmich + Implemented and (C) by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added support for binary files + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Changed checking order: symlink, directory, file. Because of + a logical bug -> directory follows symlink so, when a symlink + points to a directory no «link» element is created. + + Version 0.1 (René Nussbaumer): + * Holy hack for directory scanning (needs to be optimized) + * Hack for rexml to print out «lost» tags. This rexml sux. + + Todo: + * Optimize scanning. + * Use another xml library instead of rexml crap. + Problem: Produce dependencies -> no std-lib + + Features: + * Create a flat (no deepnes without directory) and 1:1 image + of an cconfig directory + +=end + +require 'rexml/document' +require 'base64' +require 'digest/sha1' + +require 'filemagic' + +@version = '0.3' + +def determineTarget(entry) + return 'external' if(!File.expand_path(entry).index(@initpath)) + return 'link' if(FileTest.symlink?(entry)) + return 'object' if(FileTest.directory?(entry)) + return 'attribute' if(FileTest.file?(entry)) + return 'unknown' # Should never be reached +end + +def createTree(dir, parent) + dir.each { |entry| + next if(entry =~ /^(\.|\.\.)$/) + + if(FileTest.symlink?(entry)) + e = parent.add_element('link') + + # Much fun with links + e.add_attributes( { 'name' => entry, 'target' => determineTarget(File.readlink(entry)) } ) + e.add_text(File.readlink(entry)) + elsif(FileTest.directory?(entry)) + e = parent.add_element('object') + e.add_attribute('name', entry) + + # Bad, that we need to change the directory every time. + oldPwd = Dir.pwd + Dir.chdir(entry) + createTree(Dir.new('.'), e) + Dir.chdir(oldPwd) + elsif(FileTest.file?(entry)) + e = parent.add_element('attribute') + e.add_attribute('name', entry) + if(File.stat(entry).size?) + # Yeah, we got one WITH content! W00h00, let's party. + + fm = FileMagic.new(FileMagic::MAGIC_MIME) + if(fm.file(entry) =~ /executable/) + e.add_attribute('type', 'binary') + text = File.new(entry).read + e.add_attribute('sha1', Digest::SHA1.hexdigest(text)) + e.add_text(Base64.encode64(text)) + else + e.add_text(File.new(entry).read) + end + fm.close() + end + end + } +end + + +if(!ARGV[0] || !FileTest.directory?(ARGV[0])) + puts 'You need to specify a directory' + Kernel.exit(-1) +end + +doc = REXML::Document.new + +e = doc.add_element('cconfig') +e.add_attribute('name', File.basename(ARGV[0])) +e.add_attribute('version', @version) + +@initpath = File.expand_path(ARGV[0]) +Dir.chdir(ARGV[0]) +createTree(Dir.new('.'), doc.root) + +out = '' +doc.write(out, 0, false, true) + +REXML::XMLDecl.new('1.0', 'utf-8').write($stdout) # This should automatically printed by rexml. Damn bugs. +puts '' +puts out # Workaround for a buggy rexml + diff --git a/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/cinit-vis.pl b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/cinit-vis.pl new file mode 100644 index 00000000..4a439fc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/cinit-vis.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# (c) by Marcus Przyklink (downhill-clinux@burningchaos.org) +# written for cinit and published under GPL +# beautified a bit by Nico Schottelius +# optimized by René Nussbaumer +# Version: 0.1 + +use strict; +use warnings; + +# +# Variables for location and output +# +# cinit-directory +my $path = "/etc/cinit/svc/"; +# started profile +my $starting_point = "init"; +# the spaces for each level (integer: amount of spaces) +my $space = 3; +# marker for need +my $need = "-->"; +# marker for want +my $want = "==>"; + +# +# main function, recursively list the components of the cinit system +# +if (@ARGV) { + if( $ARGV[0] =~ /-(h|-help)/ ) { + print "Usage: " . __FILE__ . " without parameters for standard-use (check variables in file)\n"; + print " Parameters:\n"; + print " -h for this help\n"; + print " profile-name for a profile\n"; + exit(0); + } + else { + $starting_point = $ARGV[0]; + } +} + +# +# start first instance +# +sub get_deeper { + my ($point, $tmp_counter, $need_want) = splice @_; + + print " " x ($space * $tmp_counter) . ($need_want ? $need : $want) . " " . $point . "\n"; + + opendir(DIR, "${path}${point}/needs") and + my @next_need = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + opendir(DIR, "${path}${point}/wants") and + my @next_want = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + + for(@next_need) { + get_deeper($_, $tmp_counter + 1, 1); + } + for(@next_want) { + get_deeper($_, $tmp_counter + 1, 0); + } +} + +# +# start first instance +# +get_deeper($starting_point, 0, 0); + +# +# work done, go home +# +exit(0); diff --git a/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/cinit.graph.text.c b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/cinit.graph.text.c new file mode 100644 index 00000000..5e5316ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/cinit.graph.text.c @@ -0,0 +1,200 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + cinit.graph.text.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.2 + + ChangeLog: + Version 0.2 (Peter Portmann): + * Not assigned link destinies are marked by (!). + * Not readable directories are marked by "directory not readable". + + Version 0.1 (Peter Portmann): + * Print of the directory structure of the contained files and links + without following the links. + + Todo: + + Features: +*/ + +//#include +#include +#include +#include +#include +#include +#include +#include +//#include "cinit.h" +#include "error.h" + +#define FTW_F 1 /* file isn't a directory */ +#define FTW_D 2 /* file is a directory */ +#define FTW_DNR 3 /* not readable directory */ +#define FTW_NS 4 /* unsuccesfully stat on this file */ +#define MAX_CHAR 4096 + +/*********************************************************************** + * cinit.graph.text - textual representation of the cinit directory + */ + +#define CSERVICE_BANNER "cinit.graph.text - textual representatio of the cinit directory\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncinit.graph.text \n" \ + "\tpath\t- cinit installationpath\n" + +typedef int EACH_ENTRY(const char *, const struct stat *, int); +typedef enum { FALSE=0, TRUE=1 } bool; + +static char dirpath[PATH_MAX]; +static int depth = 0; +static long int filecount = 0; + +static EACH_ENTRY each_entry; +static int pp_ftw(char *, EACH_ENTRY *); +static int each_getinfo(EACH_ENTRY *); + +/*********************************************************************** + * pp_ftw: file tree walk + */ +static int pp_ftw(char *filepath, EACH_ENTRY *function) +{ + int n; + + if(chdir(filepath) < 0) /* In angegebenen Pfad wechseln */ + err_msg(FATAL_SYS, "can't change to %s", filepath); + + if(getcwd(dirpath, PATH_MAX) == 0) /* Absoluten Pfadnamen ermitteln */ + err_msg(FATAL_SYS, "error using getcwd for %s", filepath); + + n = each_getinfo(function); + + return(n); +} + +/*********************************************************************** + * each_getinfo: get more info for each file. + */ +static int each_getinfo(EACH_ENTRY *function) +{ + struct stat statpuff; + struct dirent *direntz; + DIR *dirz; + int n; + char *zgr; + + if(lstat(dirpath, &statpuff) < 0) + return(function(dirpath, &statpuff, FTW_NS)); /* Error on stat */ + + if(S_ISDIR(statpuff.st_mode) == 0) + return(function(dirpath, &statpuff, FTW_F)); /* no directory */ + + /* It's a directory. + * Call function() for it. After that handel each file in the directory. */ + + if((dirz = opendir(dirpath)) == NULL) { /* Directory not readable */ + closedir(dirz); + return(function(dirpath, &statpuff, FTW_DNR)); + } + + if((n = function(dirpath, &statpuff, FTW_D)) != 0) /* return the directorydirpath */ + return(n); + + zgr = dirpath + strlen(dirpath); /* append slash to the dirpathname */ + *zgr++ = '/'; + *zgr = '\0'; + + while((direntz = readdir(dirz)) != NULL) { + /* ignor . and .. */ + if(strcmp(direntz->d_name, ".") && strcmp(direntz->d_name, "..")) { + strcpy(zgr, direntz->d_name); /* append filename after slash */ + depth++; + if(each_getinfo(function) != 0) { /* Recursion */ + depth--; + break; + } + depth--; + } + } + *(zgr-1) = '\0'; /* deleting evrything after the slash */ + + if(closedir(dirz) < 0) + err_msg(WARNING, "closedir for %s failed", dirpath); + + return(n); +} + +/*********************************************************************** + * each_entry: handling each file and build the graph step by step. + */ +static int each_entry(const char *filepath, const struct stat *statzgr, int filetype) +{ + struct stat statpuff; + static bool erstemal=TRUE; + int i; + + char link[MAX_CHAR]; + + filecount++; + if(!erstemal) { + for(i=1 ; i<=depth ; i++) + printf("%4c|", ' '); + printf("----%s", strrchr(filepath, '/')+1); + } else { + printf("%s", filepath); + erstemal = FALSE; + } + + switch(filetype) { + case FTW_F: + switch(statzgr->st_mode & S_IFMT) { + case S_IFREG: break; + case S_IFCHR: printf(" c"); break; + case S_IFBLK: printf(" b"); break; + case S_IFIFO: printf(" f"); break; + case S_IFLNK: + printf(" -> "); + if(( i=readlink(filepath, link, MAX_CHAR)) != -1) + printf("%.*s", i, link); + if(stat(filepath, &statpuff) < 0) + printf(" (!)"); + break; + case S_IFSOCK: printf(" s"); break; + default: printf(" ?"); break; + } + printf("\n"); + break; + + case FTW_D: + printf("/\n"); + break; + + case FTW_DNR: + printf("/ directory not readable\n"); + break; + + case FTW_NS: + err_msg(WARNING_SYS, "Error using 'stat' on file %s", filepath); + break; + + default: + err_msg(FATAL_SYS, "Unknown Filetype (%d) by file %s", filetype, filepath); + break; + } + + return(0); +} + +/*********************************************************************** + * main: + */ +int main(int argc, char *argv[]) +{ + if(argc != 2) + usage(CSERVICE_BANNER, USAGE_TEXT); + + exit(pp_ftw(argv[1], each_entry)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/cinit.h b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/cinit.h new file mode 100644 index 00000000..cbde3195 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/cinit.h @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Dummy header file to intgrate mini_printf and usage + */ + +#ifndef CINIT_DUMMY_HEADER +#define CINIT_DUMMY_HEADER + +void usage(char *banner, char *text); +void mini_printf(char *str,int fd); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/error.c b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/error.c new file mode 100644 index 00000000..8174c702 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/error.c @@ -0,0 +1,124 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#include "error.h" +#include +#include +#include +#include +#include +#include + +#define MAX_CHAR 4096 + +int debug; /* Aufrufer von log_msg oder log_open muss debug setzen: + 0, wenn interaktiv; 1, wenn Daemon-Prozess */ + +/*---- Lokale Routinen zur Abarbeitung der Argumentliste --------------------*/ +static void msg_err(int sys_msg, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + return; +} + +static void msg_log(int sys_msg, int prio, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + if (debug) { + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + } else { + strcat(puffer, "\n"); + syslog(prio, puffer); + } + return; +} + +/*---- Global aufrufbare Fehlerroutinen -------------------------------------*/ +void err_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_err(0, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + case DUMP: + msg_err(1, fmt, az); + break; + default: + msg_err(1, "Falscher Aufruf von err_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + else if (kennung==DUMP) + abort(); /* core dump */ + exit(1); +} + +void log_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_log(0, LOG_ERR, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + msg_log(1, LOG_ERR, fmt, az); + break; + default: + msg_log(1, LOG_ERR, "Falscher Aufruf von log_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + exit(2); +} + +/*---- log_open --------------------------------------------------------------- + initialisiert syslog() bei einem Daemon-Prozess */ +void log_open(const char *kennung, int option, int facility) +{ + if (debug==0) + openlog(kennung, option, facility); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/error.h b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/error.h new file mode 100644 index 00000000..a55690fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/error.h @@ -0,0 +1,29 @@ +#ifndef ERROR_H +#define ERROR_H +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.h + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#define WARNING 0 +#define WARNING_SYS 1 +#define FATAL 2 +#define FATAL_SYS 3 +#define DUMP 4 + +void log_msg(int kennung, const char *fmt, ...); +void err_msg(int kennung, const char *fmt, ...); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/make.cconfig.from.xml.rb b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/make.cconfig.from.xml.rb new file mode 100644 index 00000000..05f35cc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/make.cconfig.from.xml.rb @@ -0,0 +1,227 @@ +#!/usr/bin/env ruby + +=begin + + Create a cconfig directory based on a xml input. + (C) 2005 by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added binary file support + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Added some commandline options + * Added «level» so control the restrictivity of the program + * Added more «intelligence» to the program, to detect internal broken dependcies. + * Support «debug»-Levels. + * Print statistic at the end of the programs about warnings and errors. + + Version 0.1 (René Nussbaumer): + * Initial + + Todo: + * Use an rexml alternative + * Some cleanup + * Optimize + * Testing? + + Features: + * Create a cconfig directory based on a xml + +=end + +require 'rexml/document' +require 'getoptlong' +require 'base64' +require 'digest/sha1' + +@verbose = 0 +@level = 1 +@version = '0.3' + +@warnings = 0 +@errors = 0 +@checklist = Array.new + +def printMsg(prefix, msg) + puts '%-12s %s' % [prefix + ':', msg] +end + +def error(msg, fatal = 0) + @errors += 1 + fatal = 0 if(@level < 1) + fatal = 255 if(@level > 1 && !fatal) + printMsg(fatal != 0 ? 'PANIC' : 'ERROR', msg) + Kernel.exit(-fatal) if(fatal != 0) +end + +def warn(msg) + error(msg, 1) if(@level > 1) + @warnings += 1 + printMsg('WARNING', msg) +end + +def info(msg) + printMsg('INFO', msg) +end + +def debug(msg, verbosity = 1) + if(@verbose >= verbosity) + printMsg("DEBUG(#{verbosity})", msg) + end +end + +def createObject(name) + error("#{name} already exists.", 1) if(FileTest.exists?(name)) + begin + Dir.mkdir(name) + rescue + error("Could not create directory #{name}: #{$!}. Abort.", 7) + end + debug("Object #{File.expand_path(name)} has been created.", 4) +end + +def createAttribute(name, content = nil) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + begin + file = File.new(name, 'w') + file.print content if(content && !content.empty?) + file.close + debug("Attribute #{File.expand_path(name)} has been created", 4) + rescue + error("Could not create file #{name}: #{$!}. Skipped.") + end +end + +def createLink(name, target, type) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + error("Broken dependencies! Please take a look if #{target} exists on your system", 2) if(type == 'external' && !FileTest.exists?(target)) + if(!FileTest.exists?(target) && type != 'external') + #info("Possible break. But maybe the target #{target} does not yet exists. Checking later.") + exptarget = File.expand_path(target) + @checklist << exptarget + debug("Adding #{target} to the list of internal dependcies to check.", 2) + end + begin + error('You\'ve a system which does not support symbolic links. Abort.', 3) if(File.symlink(target, name) != 0) + rescue + error("Could not create symlink #{name} => #{target}: #{$!}.", 3) + end + debug("Link #{File.expand_path(name)} has been created", 4) +end + +def doWork(elm) + name = elm.name + attrname = elm.attributes['name'] + error("XML Tag with missing name attribute!", 5) if(!attrname) + if(name =~ /(object|cconfig)/) + if(name == 'cconfig') + if(elm.attributes['version']) + info("Found a version string: #{elm.attributes['version']}") + warn("This XML is maybe incompatible with this programm. I'm a version #{@version} script. The XML is generated with a version #{elm.attributes['version']} script. Please update.") if(elm.attributes['version'] > @version) + end + end + createObject(attrname) + if(elm.has_elements?) + pwd = Dir.pwd + Dir.chdir(attrname) + elm.each_element { |e| + doWork(e) + } + Dir.chdir(pwd) + end + elsif(name == 'attribute') + text = nil + e = nil + text = e.value if((e = elm.get_text)) + if(text && elm.attributes['type'] && elm.attributes['type'] == 'binary') + text = Base64.decode64(text) + if(Digest::SHA1.hexdigest(text) != elm.attributes['sha1']) + warn("SHA1 differs from file: #{Dir.pwd}#{attrname}") + end + end + createAttribute(attrname, text) + elsif(name == 'link') + error("link-Tag without content.", 6) if(!elm.has_text?) + error("link with missing target. Skipped.") if(!elm.attributes['target']) + createLink(attrname, elm.get_text.value, elm.attributes['target']) + end +end + +puts "This is #{File.basename(__FILE__)} v#{@version} by René Nussbaumer" +puts + +opts = GetoptLong.new( + ['--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT], + ['--level', '-l', GetoptLong::REQUIRED_ARGUMENT], + ['--version', '-V', GetoptLong::NO_ARGUMENT] +) + +opts.each { |arg,value| + case arg + when '--verbose' + @verbose += 1 + value.each_byte { |x| + if(x.chr == 'v') + @verbose += 1 + end + } + debug("Verbosity set to: #{@verbose}") + when '--level' + debug("Setting level to: #{value}", 3) + case value + when 'low' + @level = 0 + when 'normal' + @level = 1 + when 'paranoid' + @level = 2 + else + warn('Unknown level: ' + value) + end + when '--version' + Kernel.exit(0) + else + warn("Unknown option #{arg}#{value && !value.empty? ? ('with value ' + value) : ''}") + end +} + +if(!ARGV[0]) + puts 'Need at least one argument' + puts "Usage: #{__FILE__} " + Kernel.exit(1) +end + + +filedesc = $stdin + +if(ARGV[0] != '-') + filedesc = File.new(ARGV[0]) +end + +doc = REXML::Document.new filedesc + +doWork(doc.root) + +if(!@checklist.empty?) + info('Now checking all broken internal dependcies again') + broken = 0 + @checklist.each { |path| + debug("Checking #{path}.", 2) + if(!FileTest.exists?(path)) + broken += 1 + warn("Broken dependcies. #{path} does not exist. Please fix.") + end + } + info('Looks good.') if(broken == 0) + info('Bad, bad.') if(broken > 0) +end + +info("Successed. #{@warnings} warnings, #{@errors} errors") + diff --git a/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/mini_printf.c new file mode 120000 index 00000000..3e9a596c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/mini_printf.c @@ -0,0 +1 @@ +../src/generic/mini_printf.c \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/usage.c b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/usage.c new file mode 120000 index 00000000..c26691ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/contrib+tools/usage.c @@ -0,0 +1 @@ +../src/generic/usage.c \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/.buildwarn b/software/cinit/browse_source/cinit-0.3pre11/doc/.buildwarn new file mode 100644 index 00000000..3a0354dd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/.buildwarn @@ -0,0 +1,23 @@ +**************************************************************************** +Welcome, cinit greets you. +**************************************************************************** + +Hints: +------ + - Settings used for compiling (not only) can be found in conf/* + - The boot configuration normally resides below /etc/cinit + +Documentation +------------- +The documentation can be found in doc/: + + - doc/user/ contains documentation for users + - doc/devel/ contains documentation for developers + + Please read doc/user/installing-cinit.text _BEFORE_ installing. + +Building cinit +-------------- + + "make all" - to build cinit + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/Makefile b/software/cinit/browse_source/cinit-0.3pre11/doc/Makefile new file mode 100644 index 00000000..abff8b3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/Makefile @@ -0,0 +1,107 @@ +# +# Makefile stolen from ccollect +# Nico Schottelius, Fri Jan 13 12:13:08 CET 2006 +# + +A2X=a2x +ASCIIDOC=asciidoc +DOCBOOKTOTEXI=docbook2x-texi +DOCBOOKTOMAN=docbook2x-man +XSLTPROC=xsltproc +XSL=/usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl + +# +# Asciidoc will be used to generate other formats later +# +MANDOCS = man/cinit.text man/halt.kill.text man/poweroff.kill.text \ + man/reboot.kill.text +USERDOCS = user/compiles.on.text user/configuring.cinit.text \ + user/conf-system.text \ + user/cross-compiling.text user/current-init-problems.text \ + user/daemons.backgrounding.text user/dependencies.text \ + user/example-directory-structure.text \ + user/installing-cinit.text user/paths.text \ + user/profiles.text user/README.text +DEVELDOCS = devel/codingguideline.text +DOCS = $(MANDOCS) $(USERDOCS) $(DEVELDOCS) + +# +# Doku +# +HTMLDOCS = $(DOCS:.text=.html) +DBHTMLDOCS = $(DOCS:.text=.htm) + +#TEXIDOCS = $(DOCS:.text=.texi) + +MANPDOCS = $(MANDOCS:.text=.man) + +DOCBDOCS = $(DOCS:.text=.docbook) + +DOC_ALL = $(HTMLDOCS) $(DBHTMLDOCS) $(TEXIDOCS) $(MANPDOCS) + +# +# End user targets +# +help: + @echo "----------- documentation make targets --------------" + @echo "documentation: generate HTML, Texinfo and manpage" + @echo "html: only generate HTML (via asciidoc/docbook/xsltproc)" + @echo "htm: only generate HTML (via asciidoc)" + @echo "info: only generate Texinfo" + @echo "man: only generate manpages" + @echo "pdf: only generate pdfs (requires: fop)" + +install: $(DOC_ALL) + @echo "===> Copy " man/*.[0-9] "to the correct manpaths" + +# +# Internal targets +# +html: $(HTMLDOCS) +htm: $(DBHTMLDOCS) +info: $(TEXIDOCS) +man: $(MANPDOCS) +documentation: $(DOC_ALL) + + +# +# Generic targets +# + +# docbook gets .htm, asciidoc directly .html (or the other way round) +%.html: %.docbook + ${XSLTPROC} -o $@ ${XSL} $< + +%.htm: %.text + ${ASCIIDOC} -n -o $@ $< + +%.docbook: %.text + ${ASCIIDOC} -n -b docbook -o $@ $< + +%.texi: %.docbook + ${DOCBOOKTOTEXI} --to-stdout $< > $@ + +%.mandocbook: %.text + ${ASCIIDOC} -b docbook -d manpage -o $@ $< + +#%.man: %.mandocbook +# ${DOCBOOKTOMAN} --to-stdout $< > $@ + +%.man: %.text + ${A2X} -f manpage $< + +%.pdf: %.text + ${A2X} -f pdf $< + +# +# Distribution +# +clean distclean: + rm -f $(DOC_ALL) + rm -f man/*.texi man/*.xml man/*.[0-9] + +# +# Be nice with the users and generate documentation for them +# +dist: distclean documentation + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/README.text b/software/cinit/browse_source/cinit-0.3pre11/doc/README.text new file mode 100644 index 00000000..46fe59fe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/README.text @@ -0,0 +1,57 @@ +cinit/doc +========= +Nico Schottelius +0.1, Initial Version from 2006-11-30 +:Author Initials: NS + +This directory contains the cinit documentation. + +Files and directories in this directory +---------------------------------------- + +ancient +~~~~~~~ +Old documents, only thought to irritate you. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +braindumps +~~~~~~~~~~ +Files I used to make the situation clear to myself. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +devel +~~~~~ +Developer related documents. Contains information for adding code, +for developing external tools to cinit or code guidelines for writing +patches to cinit. + + +logs +~~~~ +Logfiles or raw data dumps. + + +Makefile +~~~~~~~~ +The makefile used to generate the documentation. + + +man +~~~ +Manpages. + + +README.text +~~~~~~~~~~~ +This file + + +user +~~~~ +The most important part: Documentation for users (aka sysadmins, +hackers, endusers?): Explains howto install, configure, use and +debug cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/README b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/README new file mode 100644 index 00000000..45e193f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/README @@ -0,0 +1,16 @@ +Ancient +======= +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 + + +These files may be incorrect, outdated, totally wrong or even trying +to take over world dominance. + + +Why are they still there? +------------------------- + +Just because to document the early days of cinit. If you are +a software archaeologist in the year 2423, you'll be happy that +I saved those files. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/caveats b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/caveats new file mode 100644 index 00000000..5ab123e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/caveats @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/author b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/availability b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/availability new file mode 100644 index 00000000..cfb3f8a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/availability @@ -0,0 +1 @@ +cinit is currently Linux-specific. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/examples b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/examples new file mode 100644 index 00000000..1a7d2dcb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/examples @@ -0,0 +1 @@ +See http://linux.schottelius.org/cinit/#config diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/files b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/files new file mode 100644 index 00000000..4d6c0921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/files @@ -0,0 +1,5 @@ +/sbin/cinit - the init system +/sbin/cservice - control cinit +/sbin/cinit.reboot (/sbin/reboot if non-existent before) +/sbin/cinit.shutdown (/sbin/shutdown if non-existent before) +/etc/cinit - configuration directory diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/long_description b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/long_description new file mode 100644 index 00000000..18c3c082 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/long_description @@ -0,0 +1,5 @@ +cinit is a fast executing, small and simple init with support for profiles. It +minds dependencies (hard and soft, 'needs' and 'wants') and executes processes +in parallel. And it has a simple configuration, which makes many shell-scripts +unecessary (but you still could use them if you really want), which leads to +better performance and less memory using. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/meta/name new file mode 100644 index 00000000..b853da25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/meta/name @@ -0,0 +1 @@ +cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/parameters b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/parameters new file mode 100644 index 00000000..54df4727 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/parameters @@ -0,0 +1 @@ +cprofile: diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/path b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/path new file mode 100644 index 00000000..37edf339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/path @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/see also b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit.commands b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit.commands new file mode 100644 index 00000000..d34d13bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cinit.commands @@ -0,0 +1,73 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (using SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. +CMD_UPDATE: Update cinit, hot-reboot the system. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/author b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/long_description b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/long_description new file mode 100644 index 00000000..82818a93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/long_description @@ -0,0 +1 @@ +cservice controls cinit. Please use cservice -h for help. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/meta/name new file mode 100644 index 00000000..49c847bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/meta/name @@ -0,0 +1 @@ +cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/parameters b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/parameters new file mode 100644 index 00000000..605b08b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/parameters @@ -0,0 +1 @@ +[-eaphru] [thilo] diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/path b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/path new file mode 100644 index 00000000..85b0cb56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/path @@ -0,0 +1 @@ +/sbin/cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/see also b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/cservice-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/extern/README b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/extern/README new file mode 100644 index 00000000..e734d6d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/extern/README @@ -0,0 +1,2 @@ +doc/extern/ + Some things related to cinit from the outside world. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/extern/ipc.thoughts b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/extern/ipc.thoughts new file mode 100644 index 00000000..e2619d34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/extern/ipc.thoughts @@ -0,0 +1,83 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2 ), +1024 is the maximum opened file deskriptors, +minus 3 (stdin/stdout/stderr) already opened, divided +by two, because two fds needed per client. + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt, + - poweroff, + - update itself (hot-reboot) + - and to start a rescue mode (see using.rescue). + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + CONT: update + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/extern/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/extern/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/extern/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/extern/linux.kernel.eats.arguments b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/extern/linux.kernel.eats.arguments new file mode 100644 index 00000000..dbaf57d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/extern/linux.kernel.eats.arguments @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +Linux, the kernel, eats arguments +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +If you specify + + variable=value + +to the Linux kernel, the argument will NOT be passed to cinit. + +Here's the relevant code block from init/main.c of the Linux kernel: + +------------------------------------------------------------------------------- + +From init(void * unused) the function run_init_process(char *init_filename) +is called, which passes argv_init (char * argv_init[MAX_INIT_ARGS+2]) to init. + +First init_setup(char *str) resets all elements of the argv_init to NULL. + +The function unknown_bootoption(char *param, char *val) fills the +argv_init array, but only with parameters, which have no value +(val). + +The function parse_args calls unknown_bootoption with the unknown options. + +------------------------------------------------------------------------------- + +This way the profile support in all cinit versions below cinit-0.1 will +only work if you change conf/profile, because "cprofile=value" will +not be given to cinit, because it's not treated as a command line option. + +The original value "cprofile=" is replaced by "cprofile:" as of cinit-0.1. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/extern/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/extern/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/extern/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/fun-testing b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/fun-testing new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/fun-testing @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/how_it_works_internally b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/init-idea-first b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/init-idea-first new file mode 100644 index 00000000..2d677d8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/init-idea-first @@ -0,0 +1,38 @@ +- restarting/respawning + touch respawn +- dependencies + a needs started b +- clean multiply dependencies +- start & stop dependencies + start_depends + stop_depends +- parallel executation +- start and stop commands + start -> link + start_param -> parameters, like minit + stop -> link + stop_param -> parameters, like minit + + if no stop command is available, try to kill the pid we started at stop + +/startup/ + start_depends=gettys +/shutdown/ + stop_depends=power_off + + +gettys/ + start_depends=getty/1 + start_depends=getty/2 + start_depends=getty/3 + start_depends=getty/4 ... + +getty/1/ + start=/sbin/fgetty + respawn + +power_off/ + stop_depend=umount + +umount/ + stop_depend= diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/porting.to.other.os b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/porting.to.other.os new file mode 100644 index 00000000..65fdc07b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will perhaps become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/removing.zombies b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/removing.zombies new file mode 100644 index 00000000..9527e652 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + cinit in general will keep the behaviour of reaping the vestiges, + which broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/security b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/security new file mode 100644 index 00000000..f1dac591 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/security @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation, which will not accept connect() +by others than root. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console then! + +For extra parnoid settings you can do the following: + + ei # chmod 700 /etc/cinit/tmp/coala + ei # chown root:root /etc/cinit/tmp/coala diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/socket.poll_vs_o_async b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/socket.poll_vs_o_async new file mode 100644 index 00000000..477f2bff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/socket.poll_vs_o_async @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------------- +Socket: poll(2) vs. O_ASYNC, +Nico Schottelius 2005-06-22 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +0. General problem +1. O_ASYNC +2. poll(2) + + +0. General problem + +cinit has to react, as soon as there's data on the socket. + +1. O_ASYNC + +When you open a socket with O_ASYNC (or specify it with fcntl(2)) under +Linux, your process recieves the SIGIO signal from the kernel, as soon +as data is available. + +The problem is the handling of signals seems not to be serialised: + +The function, which is called on the SIGIO signal (called sigio() here) +calls other functions. Those functions way recieve SIGIO while working, +so the first data stream is not yet finished, though the next +stream is beeing read. + +This gives very nice race-conditions, which are very nice to debug. + +2. poll(2) + +poll(2) is a standard Unix-call (XPG4-UNIX), which waits a specific +timeout (or infinite time if you specify a value less that zero) for +the socket (or the fd in general) to be in a state where +data is available to read (in fact poll can do much more, but we are +not interested only in POLLIN and POLLPRI). + +While poll(2) seems to be a very bit slower than sigio it works reliable. + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/thoughts.closed b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/thoughts.closed new file mode 100644 index 00000000..91a8e080 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/ancient/thoughts.closed @@ -0,0 +1,52 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c + +7. Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. As this is not needed + currently, it's not implemented. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/README.text b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/README.text new file mode 100644 index 00000000..c4947a13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/README.text @@ -0,0 +1,2 @@ +DO NOT READ CONTENT IN THIS DIRECTORY. +(or at least do not blame me, if you get really confused after reading it) diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/big-picture.text b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/big-picture.text new file mode 100644 index 00000000..4426c236 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/big-picture.text @@ -0,0 +1,122 @@ +Just a small hint-file for me to see how cinit works: + + - cinit starts + * cinit executes either init or a profile + - the dependency-tree begins + + - now cinit begins to try to execute the dependencies + * first the needs (if those fail, wants are never called) + - fork() for every dependency? + +-------------------------------------------------------------------------------- +another idea: + + - cinit starts + - cinit reads the full depedency tree + * it builds n-depth trees + * it begins at the set init service (profile or init!) + * init is the first entry. always. + * read full service information (like on/off/params/respawn) + * design of each tree element: see below + - add a tree for the needs + - add a tree for the wants + - the elements have links, one service is created only once + - after the tree is created, execution begins + * begin from the bottom + * save a pointer to the last level somehow before? + +Pre calculation: + - need to act on changes (some kind of file watcher) + * need to keep status (?) + * what with now missing needs / wants? + - missing needs: shutdown now missing needs? + - simply ignore them? + - shut them down if not needed (no one has a link in needs?) + * +-------------------------------------------------------------------------------- +Sample dependency tree: + + init + / \ + needs wants + / | \ / | \ + a b c d e f + / | \ / | \ + needs needs needs END needs END + / | \ \ | | | | + b c d c f a e a +-------------------------------------------------------------------------------- +How this would be sorted:: + init: + needs: a b c + wants: d e f + a: + needs: b c d + b: + needs: c f + c: + needs: a e + d: + - + e: + needs: a + f: + - +-------------------------------------------------------------------------------- +So in this case, cinit may start services the following way: + d f + -> Wouldn't be possible in pre-calculation, because of circular dependencies. +-------------------------------------------------------------------------------- + Try a 'real' dependency tree: + a needs b c d + b needs c d + c and d do not need other stuff +-------------------------------------------------------------------------------- +Now cinit would it do the following way: + start c, start d + b will be started, as soon as c and d successfully finish + as soon as b is finished, a will be started +-------------------------------------------------------------------------------- +Now let's think about how this could look like in code... +- when we built up the tree, we have some ends (n to say) +- we can / must start starting (;-) at the end +- we would have more than one line back (z may be needed by c, i, and a) + * like in "c is needed by s, c, o" + * maxdepth counter? + * asynchronous rollback? + +--> to think more about it! +-------------------------------------------------------------------------------- + +tree elements: + * name (= path) + * on, off, +params + * respawn_delay + - -1 if not respawning + - >= 0 time to wait between restart + * status + - NOT STARTED (status on initialisation) + - RESPAWNING (running, respawning) + - RESPAWN_DELAY (waiting to respawn it) + - ONCE (started once) + * errormsg + - pointer to an error message in case of failure + * needs + - List of services we need + * wants + - List of services we want + * used_by + - List of services which use this service +-------------------------------------------------------------------------------- + +Conclusions +------------ + +cinit as the main executor +~~~~~~~~~~~~~~~~~~~~~~~~~~ +If cinit should start all services directly and manage dependencies +only internally, it will need to have build a reverse dependency tree, +so it begins starting at the end. + +cinit could execute all possible parallel running services in parallel +and open pipes to the (dumb) service executors. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/circular-dependencies.text b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/circular-dependencies.text new file mode 100644 index 00000000..dcc91ea7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/circular-dependencies.text @@ -0,0 +1,35 @@ +What todo with circular dependencies? + a needs b + b needs a + + - try to start them? + status a: is_starting + status b: not_set + a wants b, so a service starter for b starts + status a: is_starting, waiting for b + status b: is_starting + service starter for b sees that a is needed + service starter for b sees that a is already being started + service starter for b begins to execute b + status a: is_starting, waiting for b + status b: is_starting, executing "on" + service starter b finishes + status a: is_starting, waiting for b + status b: FAILED | RESPAWN | ONCE + service a continues + b successful: execute on + b failed: register / print that we do not start, because + b failed + + -> this would only catch possible deadlocks, if the dependency + tree / status check is done dynamically + -> in case of pre-building the dep-tree this situation must + be concerned: + - start both a and b? + - or stop due to circular dependency? + + - Abort on detection of a circular dependency + * possible without pre-calculating? + - perhaps only with direct communication possible? + * pre calculate + - do not start that services? diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/converting-debian b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/converting-debian new file mode 100644 index 00000000..ee40fdff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/converting-debian @@ -0,0 +1,30 @@ +# If you would like to automatically convert a debian system, you could +# use this script as a start point +# +# how it could look like +# + +# create cinit base configuration + +# analyse enabled services +level=$(awk -F: '/^id/ { print $2 }' /etc/inittab) +rcdir="/etc/rc${level}.d/" +initdir=/etc/init.d + +cd "$rcdir" +for svc in *; do + if [ -d "${debian_map_dir}/${svc}" ]; then + echo "Adding $svc" + else + + fi +done + +# Also add existing services in /etc/init.d +for ... + if [ ! -e $rcdir/$svc ] + if [ -d "${debian_map_dir}/${svc}" ]; then + echo "Adding, but not enabling" + fi + fi +done diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/converting-general b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/converting-general new file mode 100644 index 00000000..8a0a2e40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/converting-general @@ -0,0 +1,10 @@ +kern=$(uname -s) + +case "${kern}" in + $known_kern) + $scriptdir/$kern + ;; + *) + echo "Unknown system" + ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/creating-new-configurations b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/creating-new-configurations new file mode 100644 index 00000000..a251de5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/creating-new-configurations @@ -0,0 +1,6 @@ +scripts/create_baseconfig.sh # create base +scripts/cinit.install.standard.dirs # create common categories + +- create fsck +- set hostname +- create getty(s) diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/messages.text b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/messages.text new file mode 100644 index 00000000..f4ef769e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/messages.text @@ -0,0 +1,6 @@ +This document describes the messages used between cinit and its +"clients" (i.e. ccontrol, cservice, cinit.halt, ...): + +Signal messages +--------------- +As signals diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/possible_service_pre_calculation.text b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/possible_service_pre_calculation.text new file mode 100644 index 00000000..96ec3a73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/possible_service_pre_calculation.text @@ -0,0 +1,19 @@ +- start at + * create a new service entry (if not exists) <--- + * reads needs | + - follow dependencies ------------------------ + * only if service does not yet exist! | + * read wants | + - follow dependencies ------------------------ + * only if service does not yet exist! + * create + - needed by entry in dependencies + - needs entry in service + - wanted by entry in dependencies + - wants entry in service + + * record + - (on,off)(,.env,.params)? + - alternatively put that code into service starter + * add services without further needs into a special + "begin" structure to be reused at fireing of the services? diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/possible_service_status.text b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/possible_service_status.text new file mode 100644 index 00000000..eb0f21e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/possible_service_status.text @@ -0,0 +1,14 @@ + + - NOT_SET: this service has not yet been initialized + - RESPAWNING: happily respawning + - RESPAWN_DELAY: waiting delay before restarting + * HINT: using alarm()? + - senseful for single process service watcher + * HINT: using nanosleep()? + - senseful for per service process watcher + - NEED_FAILED + * add a (somehow terminated) list of services that failed? + * use global status to checkout which services failed? + - WANT_FAILED? + * NOT NECESSARY, it is a simple want, we do not need it. + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/registering_needs_wants.text b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/registering_needs_wants.text new file mode 100644 index 00000000..ededbd41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/registering_needs_wants.text @@ -0,0 +1,55 @@ +Each service has a list of services it + - needs + - is needed by + - wants + - is wanted by + + +Each entry is a service pointer. +The simplest list could look like this: + + service a: + needs: + b f g NULL + +So the needs pointer is NULL terminated: + needs = realloc(count_links) + -> how to get the count? + 0x02 + 0x + + Better: A double linked list (like the main service list)? + +Could look like: + service a: + needs: + *service + *next + *prev + +This design could also be used for wants. + +On the other hand, we've to register us at the needed/wanted service: + + service b: + needed_by: + *service + *next + *prev + + +So each service needs four pointers: + needs + needed_by + wants + wanted_by + +And on each request both lists have to be modified! + +Example: + + Service "a" adds "b" as needed: + + - add "a" needs "b" + - add "b" needed_by "a" + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/root-vm-testing b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/root-vm-testing new file mode 100644 index 00000000..a8773dea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/root-vm-testing @@ -0,0 +1,9 @@ +[19:33] denkbrett:root% cat uml-mount.sh +SDIR=$(dirname $0) +DDIR=$(dirname $0)/root +sudo mount "$SDIR/Debian-3.0r0.ext2" "$DDIR" -o loop,acl + +denkbrett# tar cfj ~nico/projekte/cinit/conf-vm-2007-03-05.tar.bz2 cinit +denkbrett# chown -R nico cinit +denkbrett# chown nico ../sbin + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/shutdown.text b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/shutdown.text new file mode 100644 index 00000000..ac76425d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/shutdown.text @@ -0,0 +1,84 @@ +cinit - braindumps - shutdown +============================= +Nico Schottelius +v0.1, for cinit-0.3, 2007-01-11 +:Author Initials: NS + +Just some braindumps. Do not read. + +Introduction +------------ +Shutting down the system. + +When? +----- +- reboot +- halt +- power off +- further needed? + +How / What? +------------ +- Stop services in the correct order + * reuse the service tree / needs / needed_by! + * call off, if existent + * if respawning, send SIGTERM? + - not if off is existent? + * give some variables to off? + - $RESPAWN_PID: if respawning +- send SIGTERM to other apps? + * or put that into special? special/post_svc_shutdown +- call special/{halt,poweroff,reboot} + * no, implemented that directly into cinit! +- implement timely controlled shutdown: + * cinit.shutdown forks (?) itself and waits, then sends a signal + to cinit to initiate the shutdown process + * create mappers for target OS + - Linux + - {free,net,open}bsd + - others may contribute theirself +- also implement poweroff + * kill -TERM 1 +- also implement reboot + * kill -HUP 1 +- also implement halt + * kill -USR1 1 + + +The implementation +----------------- +x shutdown is initiated +x disable communication (nobody can influence us anymore) +x install special signal handler? + - no. we do not care about zombies anymore, we are gone soon anyway + - simply reset to the default +- begin to shutdown services + * where to start? + * begin shutdown at the end of the tree, viewing/sorting it by the 'needed_by' + -> where to begin sort? + -> worst implementation: scan all services (easy for now) + -> result: list of services, that noone needs :-) + * stop those services and step above + - stop a service, as soon as noone needs it anymore + * check all needed_by links + * more or less the inverted gen_svc_tree +- how to shutdown a service + * if existing, call off + - if off does not exist: + * if respawn: send sigterm to the process + * also implement sigkill at this stage? + - think we can delay it to the end + - otherwise users can use off! + - implement environment for off ($cinit_respawn_pid, $cinit_service_name) + - do *NOT* care about the return value, we can't do anything for it + anymore anyway +- after all services are shutdown, kill all remaining services + * SIGTERM + * wait(defined_time_in_seconds) + * SIGKILL +- call the last command + * to cleanup the system + - umount -a (if needed) + - swapoff (if needed) + - sync (if needed) +- switch off diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/sizes b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/sizes new file mode 100644 index 00000000..ddd30f75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/braindumps/sizes @@ -0,0 +1,6 @@ +sysvinit: +root 1 0.0 0.0 1944 648 ? Ss 02:12 0:00 init [2] + +cinit-0.3pre8-glibc-linux: +compiler 25323 0.0 0.0 1564 392 pts/2 S+ 20:22 0:00 ./cinit + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/devel/README.text b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/README.text new file mode 100644 index 00000000..20524651 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/README.text @@ -0,0 +1,18 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit development documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +(cinit-)developers. + +Content +------- diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/devel/cinit-0.4.text b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/cinit-0.4.text new file mode 100644 index 00000000..61b718f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/cinit-0.4.text @@ -0,0 +1,115 @@ +cinit 0.4 - Redesign of cinit +============================================ +Nico Schottelius +0.4.0, for cinit 0.4, Initial Version from 2006-03-11 +:Author Initials: NS + + +cinit 0.2 ran fine and the general project of developing a +parallel executing init system is finished. +With cinit 0.4 there are new aims to reach. + + +Introduction +------------ + +. AIMS + - portability: no Linux-dependency anymore + - cleaner signal handling + - better documentation so more people can use it + + +Current problems +---------------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The mount(2) system call is os-specific. +The temporary fs is os-specific. + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Race conditions when multiple signals arrive + + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +serv/sig_reboot.c contains umount, remount hard coded. + + +Solutions +--------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Remove +- the mount call +- do not create an initial socket + +Wait until we recieve a signal, then we create a socket +under the configured socket directory (see `conf/sockdir`). + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +Misc +~~~~ + +- Configuration + /etc/cinit/config/ + init -> link to initial service + pre_boot + pre_boot_args + post_boot + post_boot_args + /etc/cinit/services/ + /etc/cinit/profiles/ + links to the starting services + + + +cinit - Internals +================= +Nico Schottelius +0.1 for cinit-0.3, Initial version: So Feb 19 10:25:46 CET 2006 +:Author Initials: NS + + +Introduction +------------ +This document describes the internals of cinit. It is thought +to be read by developers. + + +Child handler code in cinit-0.3 +------------------------------- + +In cinit versions <= cinit-0.2.1 the respawning services where +handled by an extra child handler, which was a fork of cinit. This +had some problems: + + - We allocated more memory than necessary, unecessary parts of + cinit were copied + - The SIG_CHILD-handler was not written very clean, in some versions + it was completly missing. + + +. So in `cinit-0.3` we changed it the following way: + - no extra child handlers + - handle everything in the SIG_CHILD handling function + - when sig_child is recieved do: + - check against respawn list + - if it is a respawning service, [do the following in a seperate fork?] + check whether it successfully stoped + - if yes: restart immediatly + - if no: sleep $sleep_time and then restart diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/devel/codingguideline.text b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/codingguideline.text new file mode 100644 index 00000000..d4686d8f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/codingguideline.text @@ -0,0 +1,149 @@ +Coding style +============ +Nico Schottelius +0.1, for cinit, Initial version from 2006-11-13 +:Author Initials: NS + +This document describes the coding style used in cinit. + + +Indent +------ +Indent the code by 3 spaces for each level. +Indent variable names, so the names begin all at the same position. +Use three spaces to place them. + + +Whitespaces +----------- +Where to put or avoid whitespaces (space or linefeed (lf)). + + +Spaces +~~~~~~ +- After closing brace "if(test) return 0;" +- Spaces before and after '=', '>', '<', '==', '!='', '>=', '<=', '>>', '<<', '&', '&&', '|', '||' +- After start of comment and before end of comment: '/* text */' + + + After ')', ',' + +No spaces +~~~~~~~~~ +- Within braces and code "(!test)", +- Before braces "if(code)" +- No space before ), so if '))', do not put a space after the first ')' + + +Linebreaks +~~~~~~~~~~ +This somehow includes the setting of braces (indirectly through (not) setting +spaces. + +If +^^ + +Put the if, the braces and the opening curly brace on one line, +put the closing one together with `else` and the new opening +curly brace on one line: + +------------------------------------------------------------------------------ +if(...) { + /* code */ +} else { + /* else: code */ +} +------------------------------------------------------------------------------ + +While +^^^^^ +------------------------------------------------------------------------------ +while(condition) { + /* repeat */ +} +------------------------------------------------------------------------------ + +Do-While +^^^^^^^^ +------------------------------------------------------------------------------ +do { + /* something */ +} while(running); +------------------------------------------------------------------------------ + +Switch +^^^^^^ + +------------------------------------------------------------------------------ +switch(value) { + case DO_SOMETHING: + /* code */ + break; + default: + break; +} +------------------------------------------------------------------------------ + + + +Where to put curly braces +------------------------- + +Functions +~~~~~~~~~ +Opening and closing curly braces are placed on a seperate row: + +------------------------------------------------------------------------------ +int func(int params) +{ + body +} +------------------------------------------------------------------------------ + + +If, else, while, do-while +~~~~~~~~~~~~~~~~~~~~~~~~~ +See above. + + +Comments +--------- +where necessery, do not state the obvious in comments: + + /* this code increments tmp */ + ++tmp; + +If there is more than one line containing a comment, try to adjust them +so they look the same in width and position: + +------------------------------------------------------------------------------ + int illuminati = 23; /* do not want to comment that */ + int the_answer_to_everything = 42; /* 42. */ + + [...] + + while(illuminati < the_answer_to_everything) { /* only try before them */ + overtake_world(&self); /* overtake is complex */ + } +------------------------------------------------------------------------------ + + +Header +------- +Put a header into each file, containing: + + - Date of file being put into existence (year is enough) + - Name and e-mail (obfuscated if you want) of the author(s) + - Description of the function + - Copyright statement (if not included GPLv2 or later is assumed) + + +Includes +~~~~~~~~ +Include system headers first, then place own headers. Comment the includes, +wherefore you added them. Example: + +------------------------------------------------------------------------------ +#include /* write */ +#include "cinit.h> /* cinit_ipc_* */ +------------------------------------------------------------------------------ diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/devel/communication.text b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/communication.text new file mode 100644 index 00000000..ea5351a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/communication.text @@ -0,0 +1,247 @@ +cinit - communication +===================== +Nico Schottelius +0.1 for cinit-0.3, Initial version: 2006-08-11 +:Author Initials: NS + +This document describes the internal communication of cinit. +It is thought to be read by developers. + + +Introduction +------------ +This document describes the messages used between cinit, cinit forks +and other programs that want to talk to cinit. It does NOT +describe the communication method, but only the messages sent +(for the communication method read "ipc.text"). + +Document status +~~~~~~~~~~~~~~~ +This document is still being written, it is not finished. + + +About Messages +-------------- + +Order +~~~~~ +The client always initiates the communication. +cinit will begin listening to messages directly after its start. + + +Numbers +~~~~~~~ +Can be found in include/cinit.h. + + +Data +~~~~~ +A message always conists of a predefined structure (see src/headers/comm.h). +Can't use a structure, were missing the point that we cannot transfer dynamic +length strings. Thus the protocol consists of: + + client(int) => cinit + cinit(ini) => client + => after that follows command specific data + +The byte order is host specific (may be little or big endian). + +STRUCTURE WITH STATIC SIZE. MSGRCV! +IPC LAYER CREATES TRANSPORT! + +Type +~~~~ +Messages are binary data. + +The messages +------------ +The client always uses the same structure (struct msg_client) to contact +cinit. This way cinit does not need to handle dynamic data structures. + +cinit in contrast delivers different data structures to its clients, +depending on the question. + +The questions are issued by any type of client, the internal command used is +noted in square brackets ([]). + +The answers are given by cinit. + + +Question: Start a service (and its dependencies) [CMD_START_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to start the service and its dependencies. + +The client must provide cinit with the following information: +. Name of the service to be started +. Reason why to start it +. eventually additional information (see below) + +The reason +^^^^^^^^^^ +Can be one of: +- RS_NONE (it's a manual start request) +- RS_WANTS (a currently starting service wants to start this service) +- RS_NEEDS (a currently starting service needs to start this service) + +If the reason is RS_WANTS or RS_NEEDS the client must supply the name +of the service, which wants it to be started. + + +Question: Start a service (nothing else) [CMD_START_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to start the service and which will +report the status back. + + +Question: Stop a service (and its dependencies) [CMD_STOP_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to stop the service and each service +that 'needs' it. + +This function works recursively, thus also killing those services, that +need the service that need the current service. + + +Question: Stop a service (nothing else) [CMD_STOP_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to stop this service and which will +report the status back. + + +Question: Stop a service (plus 'needs' and 'wants') [CMD_STOP_SVC_WANTS] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Same as 'Stop a service (and its dependencies)', but also stop the +services that want to have this service. + +This function works recursively, thus also killing those services, that +'need' or 'want' the service that 'need' or 'want' the current service. + + +Question: What's the status of service XYZ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Code, length of service name, the service name (without \0). +int, int, char[]; + + + +Question: Could you change the status? [CMD_CHG_STAT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A cinit fork reports the new status of a service. + + +Question: Could you start the rescue mode? [CMD_RESCUE] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +spawn the rescue program. + + +Question: Could you halt the system? [CMD_HALT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +halt the system. + + +Question: Could you reboot the system? [CMD_REBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +reboot the system. + + +Question: Could you poweroff the system? [CMD_POWEROFF] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +poweroff the system. If poweroff is not possible, the system will +be halted. + + +Question: Could you warmboot the system? [CMD_WBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +restart itself and the bootup process. + + +Question: Could you send information about a service? [CMD_INFO] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will respond with detailled information about the service +to the client. + + +Answer: Return short status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Start a service (and its dependencies) + - Question: Start a service (nothing else) + - Question: Stop a service (and its dependencies) + - Question: Stop a service (nothing else) + - Question: Stop a service (plus 'needs' and 'wants') + - Question: Could you change the status? + +cinit only responds the status of the asked service. +The structure send is "asw_sstatus", which only include a status byte. + + +Answer: Return long status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Could you send information about a service? + + +old Messages (to be transferred into this document) +--------------------------------------------------- + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Service status: + +-------------------------------------------------------------------------------- +service status (cinit), +Nico Schottelius 2005-09-29 (Last Modified: -) +-------------------------------------------------------------------------------- + +There are service status and service returns. Service status is a status +a service can have. A service return is a value from a function that +describes what happened with the service. + +Status has ST_ prefix, return has RT_ prefix. +See cinit.h for most up to date versions. + + +ST_NEED_FAIL - this service will not be started, until the needs are started +ST_FAIL - this service failed to start +ST_UNSPEC - some unknown error. This should never happen. +ST_ERR - ??? /* tried earlier, service failed, won't retry */ + +ST_SUCCESS - service was successfully started - senseful? +ST_TMP - some instance is currently working on it +ST_ONCE - executed once sucessfully +ST_RESPAWN - service is running and respawning + +ST_TMPNOW 55 /* now you are on it - only for clients */ +#define ST_OFF 56 /* Switching service off */ + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/devel/configuring.text b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/configuring.text new file mode 100644 index 00000000..405a4d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/configuring.text @@ -0,0 +1,18 @@ +cinit/doc/devel/using-conf.text +================================ +Nico Schottelius +0.1, Initial Version from 2006-07-28 +:Author Initials: NS + +About conf/* and how to use the configurations. + +Introduction +------------ + +Who should read those documents? +-------------------------------- + +Content +------- + + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/devel/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/cross-compiling.text new file mode 100644 index 00000000..fdf70564 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/cross-compiling.text @@ -0,0 +1,36 @@ +TODO: + - merge into "Cross compiling" + +cinit - Problems that may arise +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Max open files + OS dependent + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/devel/ipc.text b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/ipc.text new file mode 100644 index 00000000..cdab4fcc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/ipc.text @@ -0,0 +1,141 @@ +IPC - in cinit and in general +============================= +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +IPC - Inter process communication + +Introduction +------------ +This document describes the IPC methods used and/or tested for +cinit. + +It does not describe in detail, how the different methods work +(this is already done many times, there's great documentation +available online), but more the advantages and disadvantages +(especially for an init system). + +What is IPC? +~~~~~~~~~~~~ +IPC describes methods to communicate between different processes +(programs). + +IPC as described by SUSV3 (The Single UNIX Specification Version 3) +aka IEEE Std 1003.1, 2004 Edition aka POSIX only defines +MSQ, SHM and Semaphores as IPC. This document also covers +Sockets and FIFOs. + + +What is not (yet) covered by this document? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Speed of different IPC methods, different behaviour on different +unices. + + +Why do you need IPC for an init system? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +cinit IPC history + analysis +---------------------------- + + +FIFOs +~~~~~ +First in - first out +File on the filesystem +Always need two files for two way communication + +Hints +^^^^^ +The first idea for IPC in cinit was to use two FIFOs, like minit does. +Wrong assumption: +runit also uses fifos, but two fifos for each services. That way +more parallel transmissions is possible. +You have to pay attention: Maximum number of opened files! +(On Linux 2.6 this is 1024, which makes a maximum of 512 services. +This limit is most likely never reached, but you have to keep it +in mind). + +Sockets +~~~~~~~ +Clean and beautiful. They allow easy two way communication. + +If you created a socket, fs is r/o, you cannot use it, although +there is SO_REUSE. + +First method: Using memory mapped part (tmpfs). +Second method: use interal communication (pipes!) and external after +/etc/cinit/ becomes writable. + + +Current IPC configuration +-------------------------- + +- switchable (conf/ipc_method) +- each ipc implementation needs: + + ipc.h -> for global variables and ipc specific things + prefix variables with ipc_ + int cinit_ipc_init(void); -> general initialization + return 1 on success, 0 on failure + int cinit_ipc_listen(void); -> begin to listen for messages + int cinit_ipc_send(void *data) -> send data to a client + +Abstraction layer: cinit_ipc_* +------------------------------ +You can choose or even reimplement ipc code for cinit. You only have to create +a directory below src/ipc/ and create the following necessary functions: + +int cinit_ipc_init(void); +~~~~~~~~~~~~~~~~~~~~~~~~~ +Initialise the IPC functions in cinit. + + +int cinit_ipc_listen(void); +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Never ending looping function that listens for commands and passes the +retrieved command to read_command(). + +other +~~~~~~ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + + +cinit_get_data(int ident, int size, void *data) => read size bytes from client +with ident + +/***************************************************************************** + * Functions: in clients + */ + int cinit_ipc_logon(void); /* logon to init (client init) */ + int cinit_ipc_connect(void); /* connect to init */ + int cinit_ipc_csend(struct cinit_message *data); /* send to the server from a client */ + + +-------------------------------------------------------------------------------- +TO SORT: + +1. message queues + o clients schreiben rein + o datenpaket gross genug fuer antwort? + +2. shared memory + o client kann direkt rauslesen, was gestartet werden muss + o client kann direkt abhaengigkeiten starten, muss diese aber + eintragen + +Ausprobieren: + - Mutexe + - Message Queues + - + +Ideen: + Message queue + 1. Client geht auf die normale + als id = pid (cast!) + dann rueck via anderer queue + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/devel/lists.text b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/lists.text new file mode 100644 index 00000000..6360acb3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/lists.text @@ -0,0 +1,22 @@ +Lists in cinit-0.3 are generalized, all have the same general layout: + + - double linked + - have 'prev' and 'next' as pointers + + Add an element to a list + + /--------------------------\ + |<->first<->middle<->last<->| + + + After insert: + + /-------------------------------\ + |<->first<->middle<->last<->new<->| + + We alway have 'first'. + Need to adjust: + - new->prev = last (= first->next) + - new->next = first + - first->prev = new + - first->prev->next (= last->next) = new diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/devel/merging.other.initsystems.text b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/merging.other.initsystems.text new file mode 100644 index 00000000..0baa4789 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/merging.other.initsystems.text @@ -0,0 +1,68 @@ +TODO: + - rewrite to asciidoc + - implement a sample merge + +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not mean that he does not accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated! + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/devel/optimising.cinit b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/optimising.cinit new file mode 100644 index 00000000..4f4b5c02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/optimising.cinit @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options +2. striping + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + +The current standard for cinit is: (see CFLAGS in the Makefile). + + +2. striping + +With strip(1) you can remove specific sections of object files. +You have to find out, which ones you can remove safely +(for instance with objdump(1)). + +The current standard for cinit is: (see STRIP in the Makefile) diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/devel/testing.text b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/testing.text new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/devel/testing.text @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/logs/2006-10-25.config.wasserstoff b/software/cinit/browse_source/cinit-0.3pre11/doc/logs/2006-10-25.config.wasserstoff new file mode 100644 index 00000000..f28bd71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/logs/2006-10-25.config.wasserstoff @@ -0,0 +1,16 @@ +[17:12] wasserstoff:svc# pwd +/etc/cinit/svc +[17:12] wasserstoff:svc# ls +init +17:12] wasserstoff:svc# mkdir getty +[17:12] wasserstoff:svc# mkdir getty/2/ +[17:12] wasserstoff:svc# cd getty/2 +[17:12] wasserstoff:2# ln -s /sbin/getty on +17:12] wasserstoff:2# echo 38400 > on.params +[17:13] wasserstoff:2# echo tty2 >> on.params +[17:13] wasserstoff:2# cd ../../init +[17:14] wasserstoff:init# mkdir needs +[17:14] wasserstoff:init# cd needs +[17:14] wasserstoff:needs# ln -s ../../getty/2 getty-2 +[17:14] wasserstoff:needs# + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/logs/2006-11-22.startup-with-debug b/software/cinit/browse_source/cinit-0.3pre11/doc/logs/2006-11-22.startup-with-debug new file mode 100644 index 00000000..44121cf4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/logs/2006-11-22.startup-with-debug @@ -0,0 +1,55 @@ +[0:08] wasserstoff:cinit-0.3pre3% ./src/cinit +cinit-0.3pre3: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty:: +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2:: +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout:: +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3:: +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning:: +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount:: +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root:: +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network:: +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0:: +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback:: +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::/etc/cinit/svc/init +========> tree_exec() +/etc/cinit/svc/local-tuning/keyboard-layout:::abhaengigkeiten gestartet, exec; add wants, needsdep_needs_wants_add::/etc/cinit/svc/local-tuning/keyboard-layout add: (/etc/cinit/svc/getty/2) + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/logs/2006-11-30.startup-0.3pre5 b/software/cinit/browse_source/cinit-0.3pre11/doc/logs/2006-11-30.startup-0.3pre5 new file mode 100644 index 00000000..2ded7712 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/logs/2006-11-30.startup-0.3pre5 @@ -0,0 +1,1821 @@ +cinit-0.3pre4: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2 +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3 +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0 +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/test +gen_tree::/etc/cinit/svc/test +CAD::/etc/cinit/svc/test +CAD::NEW::/etc/cinit/svc/test::/etc/cinit/svc/test/env +gen_tree::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +START::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test +CAD::/etc/cinit/svc/init +========> tree_exec() +TEX::/etc/cinit/svc/local-tuning/keyboard-layout +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout::/etc/cinit/svc/getty/2::(A)::::/etc/cinit/svc/getty/3::(A)::::/etc/cinit/svc/local-tuning::(A):: +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout +TEX::/etc/cinit/svc/mount/root +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +DNWA::/etc/cinit/svc/mount/root::/etc/cinit/svc/mount::(A):: +DNWA::/etc/cinit/svc/mount/root +TEX::/etc/cinit/svc/network/eth0 +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +DNWA::/etc/cinit/svc/network/eth0::/etc/cinit/svc/network::(A):: +DNWA::/etc/cinit/svc/network/eth0 +TEX::/etc/cinit/svc/network/loopback +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +DNWA::/etc/cinit/svc/network/loopback::/etc/cinit/svc/network +DNWA::/etc/cinit/svc/network/loopback +TEX::/etc/cinit/svc/test/env +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +DNWA::/etc/cinit/svc/test/env::/etc/cinit/svc/test::(A):: +DNWA::/etc/cinit/svc/test/env +TEX::/etc/cinit/svc/getty/2 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/2/on +CBA::/etc/cinit/svc/getty/2/on +DNWA::/etc/cinit/svc/getty/2::/etc/cinit/svc/getty::(A):: +DNWA::/etc/cinit/svc/getty/2 +TEX::/etc/cinit/svc/getty/3 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/3/on +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +DNWA::/etc/cinit/svc/getty/3::/etc/cinit/svc/getty +DNWA::/etc/cinit/svc/getty/3 +TEX::/etc/cinit/svc/local-tuning +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +/etc/cinit/svc/local-tuning/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/local-tuning::/etc/cinit/svc/init::(A):: +DNWA::/etc/cinit/svc/local-tuning +TEX::/etc/cinit/svc/mount +::/etc/cinit/svc/mount/root +/etc/cinit/svc/mount/root: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +/etc/cinit/svc/mount/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/mount::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/mount +TEX::/etc/cinit/svc/network +::/etc/cinit/svc/network/eth0 +/etc/cinit/svc/network/eth0: <<16>> +::/etc/cinit/svc/network/loopback +/etc/cinit/svc/network/loopback: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +/etc/cinit/svc/network/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/network::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/network +TEX::/etc/cinit/svc/test +::/etc/cinit/svc/test/env +/etc/cinit/svc/test/env: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +/etc/cinit/svc/test/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/test::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/test +TEX::/etc/cinit/svc/getty +::/etc/cinit/svc/getty/2 +/etc/cinit/svc/getty/2: <<4>> +::/etc/cinit/svc/getty/3 +/etc/cinit/svc/getty/3: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +/etc/cinit/svc/getty/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/getty::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/getty +TEX::/etc/cinit/svc/init +::/etc/cinit/svc/getty +/etc/cinit/svc/getty: <<4>> +::/etc/cinit/svc/local-tuning +/etc/cinit/svc/local-tuning: <<4>> +::/etc/cinit/svc/mount +/etc/cinit/svc/mount: <<4>> +::/etc/cinit/svc/network +/etc/cinit/svc/network: <<4>> +::/etc/cinit/svc/test +/etc/cinit/svc/test: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +DNWA::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/init +=> cinit started. +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +ORC:/etc/cinit/svc/init/on.params +ORC:/etc/cinit/svc/getty/2/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test +SC::/etc/cinit/svc/test/env::FAILED::::RESPAWN::ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test + +msgrcv: Interrupted system call +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/2/on +ORC:/etc/cinit/svc/getty/2/on.params +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted +SC::/etc/cinit/svc/network/eth0::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted + +msgrcv: Interrupted system call +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. +SC::/etc/cinit/svc/init::FAILED::::RESPAWN::ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. + +msgrcv: Interrupted system call +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. +SC::/etc/cinit/svc/network/loopback::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. + +msgrcv: Interrupted system call +mount: only root can do that +SC::/etc/cinit/svc/mount/root::FAILED::::RESPAWN::ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +mount: only root can do that + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +LSP:: 32705: /etc/cinit/svc/init:1 (0) +LSP:: 32705: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32705: /etc/cinit/svc/test:65 (0) +LSP:: 32705: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32705: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32705: /etc/cinit/svc/network:65 (0) +LSP:: 32705: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32705: /etc/cinit/svc/mount:65 (0) +LSP:: 32705: /etc/cinit/svc/local-tuning:65 (0) +LSP:: 32705: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32705: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32705: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32705: /etc/cinit/svc/getty:65 (0) +LSP:: 32706: /etc/cinit/svc/init:65 (0) +LSP:: 32706: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32706: /etc/cinit/svc/test:65 (0) +LSP:: 32706: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32706: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32706: /etc/cinit/svc/network:65 (0) +LSP:: 32706: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32706: /etc/cinit/svc/mount:65 (0) +LSP:: 32706: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32706: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32706: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32706: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32706: /etc/cinit/svc/getty:65 (0) +LSP:: 32707: /etc/cinit/svc/init:65 (0) +LSP:: 32707: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32707: /etc/cinit/svc/test:65 (0) +LSP:: 32707: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32707: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32707: /etc/cinit/svc/network:65 (0) +LSP:: 32707: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32707: /etc/cinit/svc/mount:4 (32706) +LSP:: 32707: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32707: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32707: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32707: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32707: /etc/cinit/svc/getty:65 (0) +LSP:: 32708: /etc/cinit/svc/init:65 (0) +LSP:: 32708: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32708: /etc/cinit/svc/test:65 (0) +LSP:: 32708: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32708: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32708: /etc/cinit/svc/network:4 (32707) +LSP:: 32708: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32708: /etc/cinit/svc/mount:4 (32706) +LSP:: 32708: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32708: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32708: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32708: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32708: /etc/cinit/svc/getty:65 (0) +LSP:: 32709: /etc/cinit/svc/init:65 (0) +LSP:: 32709: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32709: /etc/cinit/svc/test:4 (32708) +LSP:: 32709: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32709: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32709: /etc/cinit/svc/network:4 (32707) +LSP:: 32709: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32709: /etc/cinit/svc/mount:4 (32706) +LSP:: 32709: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32709: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32709: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32709: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32709: /etc/cinit/svc/getty:65 (0) +LSP:: 32702: /etc/cinit/svc/init:4 (32710) +LSP:: 32702: /etc/cinit/svc/test/env:4 (32702) +pid: 0, m_client +LSP:: 32700: /etc/cinit/svc/init:4 (32710) +LSP:: 32700: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32700: /etc/cinit/svc/test:4 (32708) +LSP:: 32700: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32700: /etc/cinit/svc/network/eth0:16 (32700) +pid: 0, m_client +LSP:: 32710: /etc/cinit/svc/init:4 (32710) +pid: 0, m_client +LSP:: 32701: /etc/cinit/svc/init:16 (32719) +LSP:: 32701: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32701: /etc/cinit/svc/test:4 (32708) +LSP:: 32701: /etc/cinit/svc/network/loopback:4 (32701) +pid: 0, m_client +LSP:: 32699: /etc/cinit/svc/init:16 (32719) +LSP:: 32699: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32699: /etc/cinit/svc/test:4 (32708) +LSP:: 32699: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32699: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32699: /etc/cinit/svc/network:4 (32707) +LSP:: 32699: /etc/cinit/svc/mount/root:4 (32699) +pid: 0, m_client +LSP::SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz + 32698: /etc/cinit/svc/init:16 (32719) +LSP:: 32698: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32698: /etc/cinit/svc/test:4 (32708) +LSP:: 32698: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32698: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32698: /etc/cinit/svc/network:4 (32707) +LSP:: 32698: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32698: /etc/cinit/svc/mount:4 (32706) +LSP:: 32698: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32698: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32698: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +pid: 0, m_client +LSP:: 32728: /etc/cinit/svc/init:16 (32719) +LSP:: 32728: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32728: /etc/cinit/svc/test:4 (32708) +LSP:: 32728: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32728: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32728: /etc/cinit/svc/network:4 (32707) +LSP:: 32728: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32728: /etc/cinit/svc/mount:4 (32706) +LSP:: 32728: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32728: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32728: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32728) +pid: 0, m_client +LSP:: 32735: /etc/cinit/svc/init:16 (32719) +LSP:: 32735: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32735: /etc/cinit/svc/test:4 (32708) +LSP:: 32735: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32735: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32735: /etc/cinit/svc/network:4 (32707) +LSP:: 32735: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32735: /etc/cinit/svc/mount:4 (32706) +LSP:: 32735: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32735: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32735: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32735) +pid: 0, m_client +LSP:: 32742: /etc/cinit/svc/init:16 (32719) +LSP:: 32742: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32742: /etc/cinit/svc/test:4 (32708) +LSP:: 32742: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32742: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32742: /etc/cinit/svc/network:4 (32707) +LSP:: 32742: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32742: /etc/cinit/svc/mount:4 (32706) +LSP:: 32742: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32742: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32742: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32742) +pid: 0, m_client +LSP:: 32749: /etc/cinit/svc/init:16 (32719) +LSP:: 32749: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32749: /etc/cinit/svc/test:4 (32708) +LSP:: 32749: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32749: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32749: /etc/cinit/svc/network:4 (32707) +LSP:: 32749: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32749: /etc/cinit/svc/mount:4 (32706) +LSP:: 32749: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32749: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32749: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32749) +pid: 0, m_client +LSP:: 32756: /etc/cinit/svc/init:16 (32719) +LSP:: 32756: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32756: /etc/cinit/svc/test:4 (32708) +LSP:: 32756: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32756: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32756: /etc/cinit/svc/network:4 (32707) +LSP:: 32756: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32756: /etc/cinit/svc/mount:4 (32706) +LSP:: 32756: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32756: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32756: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32756) +pid: 0, m_client +LSP:: 32763: /etc/cinit/svc/init:16 (32719) +LSP:: 32763: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32763: /etc/cinit/svc/test:4 (32708) +LSP:: 32763: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32763: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32763: /etc/cinit/svc/network:4 (32707) +LSP:: 32763: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32763: /etc/cinit/svc/mount:4 (32706) +LSP:: 32763: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32763: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32763: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32763) +pid: 0, m_client +LSP:: 302: /etc/cinit/svc/init:16 (32719) +LSP:: 302: /etc/cinit/svc/test/env:16 (32717) +LSP:: 302: /etc/cinit/svc/test:4 (32708) +LSP:: 302: /etc/ciSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN:: +msgrcv: Interrupted system call +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +nit/svc/network/loopback:16 (32720) +LSP:: 302: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 302: /etc/cinit/svc/network:4 (32707) +LSP:: 302: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 302: /etc/cinit/svc/mount:4 (32706) +LSP:: 302: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 302: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 302: /etc/cinit/svc/local-tuning/keyboard-layout:16 (302) +pid: 0, m_client +LSP:: 312: /etc/cinit/svc/init:16 (32719) +LSP:: 312: /etc/cinit/svc/test/env:16 (32717) +LSP:: 312: /etc/cinit/svc/test:4 (32708) +LSP:: 312: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 312: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 312: /etc/cinit/svc/network:4 (32707) +LSP:: 312: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 312: /etc/cinit/svc/mount:4 (32706) +LSP:: 312: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 312: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 312: /etc/cinit/svc/local-tuning/keyboard-layout:16 (312) +pid: 0, m_client +LSP:: 326: /etc/cinit/svc/init:16 (32719) +LSP:: 326: /etc/cinit/svc/test/env:16 (32717) +LSP:: 326: /etc/cinit/svc/test:4 (32708) +LSP:: 326: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 326: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 326: /etc/cinit/svc/network:4 (32707) +LSP:: 326: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 326: /etc/cinit/svc/mount:4 (32706) +LSP:: 326: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 326: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 326: /etc/cinit/svc/local-tuning/keyboard-layout:16 (326) +pid: 0, m_client +LSP:: 333: /etc/cinit/svc/init:16 (32719) +LSP:: 333: /etc/cinit/svc/test/env:16 (32717) +LSP:: 333: /etc/cinit/svc/test:4 (32708) +LSP:: 333: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 333: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 333: /etc/cinit/svc/network:4 (32707) +LSP:: 333: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 333: /etc/cinit/svc/mount:4 (32706) +LSP:: 333: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 333: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 333: /etc/cinit/svc/local-tuning/keyboard-layout:16 (333) +pid: 0, m_client +LSP:: 340: /etc/cinit/svc/init:16 (32719) +LSP:: 340: /etc/cinit/svc/test/env:16 (32717) +LSP:: 340: /etc/cinit/svc/test:4 (32708) +LSP:: 340: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 340: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 340: /etc/cinit/svc/network:4 (32707) +LSP:: 340: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 340: /etc/cinit/svc/mount:4 (32706) +LSP:: 340: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 340: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 340: /etc/cinit/svc/local-tuning/keyboard-layout:16 (340) +pid: 0, m_client +LSP:: 347: /etc/cinit/svc/init:16 (32719) +LSP:: 347: /etc/cinit/svc/test/env:16 (32717) +LSP:: 347: /etc/cinit/svc/test:4 (32708) +LSP:: 347: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 347: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 347: /etc/cinit/svc/network:4 (32707) +LSP:: 347: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 347: /etc/cinit/svc/mount:4 (32706) +LSP:: 347: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 347: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 347: /etc/cinit/svc/local-tuning/keyboard-layout:16 (347) +pid: 0, m_client +LSP:: 354: /etc/cinit/svc/init:16 (32719) +LSP:: 354: /etc/cinit/svc/test/env:16 (32717) +LSP:: 354: /etc/cinit/svc/test:4 (32708) +LSP:: 354: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 354: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 354: /etc/cinit/svc/network:4 (32707) +LSP:: 354: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 354: /etc/cinit/svc/mount:4 (32706) +LSP:: 354: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 354: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 354: /etc/cinit/svc/local-tuning/keyboard-layout:16 (354) +pid: 0, m_client +LSP:: 372: /etc/cinit/svc/init:16 (32719) +LSP:: 372: /etc/cinit/svc/test/env:16 (32717) +LSP:: 372: /etc/cinit/svc/test:4 (32708) +LSP:: 372: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 372: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 372: /etc/cinit/svc/network:4 (32707) +LSP:: 372: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 372: /etc/cinit/svc/mount:4 (32706) +LSP:: 372: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 372: /etc/cinit/svc/getty/3:4 (327SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +04) +LSP:: 372: /etc/cinit/svc/local-tuning/keyboard-layout:16 (372) +pid: 0, m_client +LSP:: 379: /etc/cinit/svc/init:16 (32719) +LSP:: 379: /etc/cinit/svc/test/env:16 (32717) +LSP:: 379: /etc/cinit/svc/test:4 (32708) +LSP:: 379: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 379: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 379: /etc/cinit/svc/network:4 (32707) +LSP:: 379: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 379: /etc/cinit/svc/mount:4 (32706) +LSP:: 379: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 379: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 379: /etc/cinit/svc/local-tuning/keyboard-layout:16 (379) +pid: 0, m_client +LSP:: 386: /etc/cinit/svc/init:16 (32719) +LSP:: 386: /etc/cinit/svc/test/env:16 (32717) +LSP:: 386: /etc/cinit/svc/test:4 (32708) +LSP:: 386: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 386: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 386: /etc/cinit/svc/network:4 (32707) +LSP:: 386: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 386: /etc/cinit/svc/mount:4 (32706) +LSP:: 386: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 386: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 386: /etc/cinit/svc/local-tuning/keyboard-layout:16 (386) +pid: 0, m_client +LSP:: 393: /etc/cinit/svc/init:16 (32719) +LSP:: 393: /etc/cinit/svc/test/env:16 (32717) +LSP:: 393: /etc/cinit/svc/test:4 (32708) +LSP:: 393: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 393: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 393: /etc/cinit/svc/network:4 (32707) +LSP:: 393: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 393: /etc/cinit/svc/mount:4 (32706) +LSP:: 393: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 393: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 393: /etc/cinit/svc/local-tuning/keyboard-layout:16 (393) +pid: 0, m_client +LSP:: 400: /etc/cinit/svc/init:16 (32719) +LSP:: 400: /etc/cinit/svc/test/env:16 (32717) +LSP:: 400: /etc/cinit/svc/test:4 (32708) +LSP:: 400: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 400: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 400: /etc/cinit/svc/network:4 (32707) +LSP:: 400: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 400: /etc/cinit/svc/mount:4 (32706) +LSP:: 400: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 400: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 400: /etc/cinit/svc/local-tuning/keyboard-layout:16 (400) +pid: 0, m_client +LSP:: 407: /etc/cinit/svc/init:16 (32719) +LSP:: 407: /etc/cinit/svc/test/env:16 (32717) +LSP:: 407: /etc/cinit/svc/test:4 (32708) +LSP:: 407: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 407: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 407: /etc/cinit/svc/network:4 (32707) +LSP:: 407: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 407: /etc/cinit/svc/mount:4 (32706) +LSP:: 407: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 407: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 407: /etc/cinit/svc/local-tuning/keyboard-layout:16 (407) +pid: 0, m_client +LSP:: 414: /etc/cinit/svc/init:16 (32719) +LSP:: 414: /etc/cinit/svc/test/env:16 (32717) +LSP:: 414: /etc/cinit/svc/test:4 (32708) +LSP:: 414: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 414: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 414: /etc/cinit/svc/network:4 (32707) +LSP:: 414: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 414: /etc/cinit/svc/mount:4 (32706) +LSP:: 414: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 414: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 414: /etc/cinit/svc/local-tuning/keyboard-layout:16 (414) +pid: 0, m_client +LSP:: 421: /etc/cinit/svc/init:16 (32719) +LSP:: 421: /etc/cinit/svc/test/env:16 (32717) +LSP:: 421: /etc/cinit/svc/test:4 (32708) +LSP:: 421: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 421: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 421: /etc/cinit/svc/network:4 (32707) +LSP:: 421: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 421: /etc/cinit/svc/mount:4 (32706) +LSP:: 421: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 421: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 421: /etc/cinit/svc/local-tuning/keyboard-layout:16 (421) +pid: 0, m_client +LSP:: 428: /etc/cinit/svc/init:16 (32719) +LSP:: 428: /etc/cinit/svc/test/env:16 (32717) +LSP:: 428: /etc/cinit/svc/test:4 (32708) +LSP:: 428: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 428: /etc/cinit/svc/network/eth0:16SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call + (32718) +LSP:: 428: /etc/cinit/svc/network:4 (32707) +LSP:: 428: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 428: /etc/cinit/svc/mount:4 (32706) +LSP:: 428: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 428: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 428: /etc/cinit/svc/local-tuning/keyboard-layout:16 (428) +pid: 0, m_client +LSP:: 435: /etc/cinit/svc/init:16 (32719) +LSP:: 435: /etc/cinit/svc/test/env:16 (32717) +LSP:: 435: /etc/cinit/svc/test:4 (32708) +LSP:: 435: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 435: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 435: /etc/cinit/svc/network:4 (32707) +LSP:: 435: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 435: /etc/cinit/svc/mount:4 (32706) +LSP:: 435: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 435: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 435: /etc/cinit/svc/local-tuning/keyboard-layout:16 (435) +pid: 0, m_client +LSP:: 452: /etc/cinit/svc/init:16 (32719) +LSP:: 452: /etc/cinit/svc/test/env:16 (32717) +LSP:: 452: /etc/cinit/svc/test:4 (32708) +LSP:: 452: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 452: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 452: /etc/cinit/svc/network:4 (32707) +LSP:: 452: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 452: /etc/cinit/svc/mount:4 (32706) +LSP:: 452: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 452: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 452: /etc/cinit/svc/local-tuning/keyboard-layout:16 (452) +pid: 0, m_client +LSP:: 459: /etc/cinit/svc/init:16 (32719) +LSP:: 459: /etc/cinit/svc/test/env:16 (32717) +LSP:: 459: /etc/cinit/svc/test:4 (32708) +LSP:: 459: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 459: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 459: /etc/cinit/svc/network:4 (32707) +LSP:: 459: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 459: /etc/cinit/svc/mount:4 (32706) +LSP:: 459: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 459: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 459: /etc/cinit/svc/local-tuning/keyboard-layout:16 (459) +pid: 0, m_client +LSP:: 466: /etc/cinit/svc/init:16 (32719) +LSP:: 466: /etc/cinit/svc/test/env:16 (32717) +LSP:: 466: /etc/cinit/svc/test:4 (32708) +LSP:: 466: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 466: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 466: /etc/cinit/svc/network:4 (32707) +LSP:: 466: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 466: /etc/cinit/svc/mount:4 (32706) +LSP:: 466: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 466: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 466: /etc/cinit/svc/local-tuning/keyboard-layout:16 (466) +pid: 0, m_client +LSP:: 473: /etc/cinit/svc/init:16 (32719) +LSP:: 473: /etc/cinit/svc/test/env:16 (32717) +LSP:: 473: /etc/cinit/svc/test:4 (32708) +LSP:: 473: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 473: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 473: /etc/cinit/svc/network:4 (32707) +LSP:: 473: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 473: /etc/cinit/svc/mount:4 (32706) +LSP:: 473: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 473: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 473: /etc/cinit/svc/local-tuning/keyboard-layout:16 (473) +pid: 0, m_client +LSP:: 480: /etc/cinit/svc/init:16 (32719) +LSP:: 480: /etc/cinit/svc/test/env:16 (32717) +LSP:: 480: /etc/cinit/svc/test:4 (32708) +LSP:: 480: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 480: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 480: /etc/cinit/svc/network:4 (32707) +LSP:: 480: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 480: /etc/cinit/svc/mount:4 (32706) +LSP:: 480: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 480: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 480: /etc/cinit/svc/local-tuning/keyboard-layout:16 (480) +pid: 0, m_client +LSP:: 487: /etc/cinit/svc/init:16 (32719) +LSP:: 487: /etc/cinit/svc/test/env:16 (32717) +LSP:: 487: /etc/cinit/svc/test:4 (32708) +LSP:: 487: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 487: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 487: /etc/cinit/svc/network:4 (32707) +LSP:: 487: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 487: /etc/cinit/svc/mount:4 (32706) +LSP:: 487: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 487: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 487: /etc/cinit/svc/local-tuning/keyboard-layout:16 (487) +pid: 0, mLoading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +_client +LSP:: 494: /etc/cinit/svc/init:16 (32719) +LSP:: 494: /etc/cinit/svc/test/env:16 (32717) +LSP:: 494: /etc/cinit/svc/test:4 (32708) +LSP:: 494: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 494: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 494: /etc/cinit/svc/network:4 (32707) +LSP:: 494: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 494: /etc/cinit/svc/mount:4 (32706) +LSP:: 494: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 494: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 494: /etc/cinit/svc/local-tuning/keyboard-layout:16 (494) +pid: 0, m_client +LSP:: 501: /etc/cinit/svc/init:16 (32719) +LSP:: 501: /etc/cinit/svc/test/env:16 (32717) +LSP:: 501: /etc/cinit/svc/test:4 (32708) +LSP:: 501: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 501: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 501: /etc/cinit/svc/network:4 (32707) +LSP:: 501: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 501: /etc/cinit/svc/mount:4 (32706) +LSP:: 501: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 501: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 501: /etc/cinit/svc/local-tuning/keyboard-layout:16 (501) +pid: 0, m_client +LSP:: 510: /etc/cinit/svc/init:16 (32719) +LSP:: 510: /etc/cinit/svc/test/env:16 (32717) +LSP:: 510: /etc/cinit/svc/test:4 (32708) +LSP:: 510: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 510: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 510: /etc/cinit/svc/network:4 (32707) +LSP:: 510: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 510: /etc/cinit/svc/mount:4 (32706) +LSP:: 510: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 510: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 510: /etc/cinit/svc/local-tuning/keyboard-layout:16 (510) +pid: 0, m_client +LSP:: 520: /etc/cinit/svc/init:16 (32719) +LSP:: 520: /etc/cinit/svc/test/env:16 (32717) +LSP:: 520: /etc/cinit/svc/test:4 (32708) +LSP:: 520: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 520: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 520: /etc/cinit/svc/network:4 (32707) +LSP:: 520: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 520: /etc/cinit/svc/mount:4 (32706) +LSP:: 520: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 520: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 520: /etc/cinit/svc/local-tuning/keyboard-layout:16 (520) +pid: 0, m_client +LSP:: 533: /etc/cinit/svc/init:16 (32719) +LSP:: 533: /etc/cinit/svc/test/env:16 (32717) +LSP:: 533: /etc/cinit/svc/test:4 (32708) +LSP:: 533: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 533: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 533: /etc/cinit/svc/network:4 (32707) +LSP:: 533: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 533: /etc/cinit/svc/mount:4 (32706) +LSP:: 533: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 533: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 533: /etc/cinit/svc/local-tuning/keyboard-layout:16 (533) +pid: 0, m_client +LSP:: 541: /etc/cinit/svc/init:16 (32719) +LSP:: 541: /etc/cinit/svc/test/env:16 (32717) +LSP:: 541: /etc/cinit/svc/test:4 (32708) +LSP:: 541: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 541: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 541: /etc/cinit/svc/network:4 (32707) +LSP:: 541: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 541: /etc/cinit/svc/mount:4 (32706) +LSP:: 541: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 541: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 541: /etc/cinit/svc/local-tuning/keyboard-layout:16 (541) +pid: 0, m_client +LSP:: 548: /etc/cinit/svc/init:16 (32719) +LSP:: 548: /etc/cinit/svc/test/env:16 (32717) +LSP:: 548: /etc/cinit/svc/test:4 (32708) +LSP:: 548: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 548: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 548: /etc/cinit/svc/network:4 (32707) +LSP:: 548: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 548: /etc/cinit/svc/mount:4 (32706) +LSP:: 548: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 548: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 548: /etc/cinit/svc/local-tuning/keyboard-layout:16 (548) +pid: 0, m_client +LSP:: 555: /etc/cinit/svc/init:16 (32719) +LSP:: 555: /etc/cinit/svc/test/env:16 (32717) +LSP:: 555: /etc/cinit/svc/test:4 (32708) +LSP:: 555: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 555: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 555: /etc/cinit/svc/network:4 (32707) +LSP:: 555: /etc/cinit/svSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/man/cinit.text b/software/cinit/browse_source/cinit-0.3pre11/doc/man/cinit.text new file mode 100644 index 00000000..19d0015a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/man/cinit.text @@ -0,0 +1,64 @@ +cinit(8) +======== +Nico Schottelius + + +NAME +---- +cinit - fast executing, small and simple init with support for profiles + + +SYNOPSIS +-------- +'cinit' [cprofile:name_of_profile] + + +DESCRIPTION +----------- +Cinit is an init system. It normally gets started by the operating +system (Linux, *BSD, ...) directly after the kernel has been loaded. + +Cinit uses parallel execution of services as far as possible. To +ensure the correct boot order you need to specify which service +'needs' or 'wants' another service. The resulting dependency tree +is used at startup to determine which service to start when. + +This may result in different boot orders depending on whether +one service is one time faster or slower. Due to the dependencies +this is not a problem, but allowed and wished per design. + +For more information refer to the texinfo or html documentation. + + +OPTIONS +------- + +cprofile:name_of_profile:: + If specified, cinit will start the named profile instead of the + standard 'init' service + + +BUGS +---- +cinit is not tested nor documented very well currently. + +The porting to other OS is not finished yet (mainly missing +system level binaries: shutdown, reboot, halt). + +Both is work in progress. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + + +COPYING +------- +Copyright \(C) 2006 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/man/cservice b/software/cinit/browse_source/cinit-0.3pre11/doc/man/cservice new file mode 100644 index 00000000..26a472b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/man/cservice @@ -0,0 +1,37 @@ +WARNING: + cservice is not yet ready for cinit-0.3! + +-------------------------------------------------------------------------------- +cservice, +Nico Schottelius, 2005-06-10 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +cservice - control cinit + +cservice -[phearsu] + -e - (ein) start a service (including all needed dependencies) + -a - (aus) stop a respawing service, don't care about other services + + -r - reboot + -h - halt + -p - poweroff (on some systems the same as halt) + -s - reScue mode - only a shell + + -u - update: hot reboot - shutdown system and execute /sbin/cinit + +A service may be specified either as relative or as absolute path. + +-h, -p, -r, -s and -u need the "Magic Word" to do their work: "thilo" + +-------------------------------------------------------------------------------- + +Some examples: + + cservice -e /etc/cinit/getty/8 # fire up getty/8 + cd /etc/cinit/getty; cservice -a ./8 # shut down getty/8 + cservice -h thilo # halt + cservice -r thilo # reboot + cservice -s thilo # rescue + cservice -u thilo # update + +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/man/halt.kill.text b/software/cinit/browse_source/cinit-0.3pre11/doc/man/halt.kill.text new file mode 100644 index 00000000..4a31e257 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/man/halt.kill.text @@ -0,0 +1,46 @@ +halt.kill(8) +============ +Nico Schottelius + + +NAME +---- +halt.kill - Halts systems running cinit through a kill call + +SYNOPSIS +-------- +'halt.kill' + + +DESCRIPTION +----------- +You normally halt your system through 'cmd'. If cmd is unavailable or +the IPC system has problem there is still the possibilty to halt +it through a signal. See 'src/include/signals.h' for more details which +signals are used. + +OPTIONS +------- + +none:: + No options are used, If you execute halt.kill, your system will be halted. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + +SEE ALSO +--------- +cmd(8) + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/man/poweroff.kill.text b/software/cinit/browse_source/cinit-0.3pre11/doc/man/poweroff.kill.text new file mode 100644 index 00000000..62807ba1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/man/poweroff.kill.text @@ -0,0 +1,47 @@ +poweroff.kill(8) +================ +Nico Schottelius + + +NAME +---- +poweroff.kill - Halts and powers off systems running cinit through a kill call + +SYNOPSIS +-------- +'poweroff.kill' + + +DESCRIPTION +----------- +You normally poweroff your system through 'cmd'. If cmd is unavailable or +the IPC system has problem there is still the possibilty to poweroff +it through a signal. See 'src/include/signals.h' for more details which +signals are used. + +OPTIONS +------- + +none:: + No options are used, If you execute poweroff.kill, your system will be + powered off. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + +SEE ALSO +--------- +cmd(8), halt.kill(8), reboot.kill(8) + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/man/reboot.kill.text b/software/cinit/browse_source/cinit-0.3pre11/doc/man/reboot.kill.text new file mode 100644 index 00000000..a748553e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/man/reboot.kill.text @@ -0,0 +1,47 @@ +reboot.kill(8) +============== +Nico Schottelius + + +NAME +---- +reboot.kill - Reboots systems running cinit through a kill call + +SYNOPSIS +-------- +'reboot.kill' + + +DESCRIPTION +----------- +You normally reboot your system through 'cmd'. If cmd is unavailable or +the IPC system has problem there is still the possibilty to reboot +it through a signal. See 'src/include/signals.h' for more details which +signals are used. + +OPTIONS +------- + +none:: + No options are used, If you execute reboot.kill, your system will be + rebooted. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + +SEE ALSO +--------- +cmd(8), halt.kill(8), poweroff.kill(8) + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/todo/0.3pre11 b/software/cinit/browse_source/cinit-0.3pre11/doc/todo/0.3pre11 new file mode 100644 index 00000000..ec532269 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/todo/0.3pre11 @@ -0,0 +1,10 @@ +Done: +- cleanup ipc: + merge cinit_ipc_logon() and cinit_ipc_connect()? + => already done! +- finish cmd in general, perhaps only including one command. +[18:51] denkbrett:src# LANG=C cp cinit /sbin/cinit +cp: cannot create regular file `/sbin/cinit': Text file busy + => mv & cp! + => documentation! + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/todo/0.3pre12 b/software/cinit/browse_source/cinit-0.3pre11/doc/todo/0.3pre12 new file mode 100644 index 00000000..a47b1a14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/todo/0.3pre12 @@ -0,0 +1,28 @@ + +- begin to write documentation about client functions +- cleanup communication: + put parts of comm.h into cinit.h => global exposure + or define new structure in cinit.h? +- there seems to be a race condition in the execution of the + dependency tree: it happens that services that depend on + mounted /proc, have needs on mount/proc are still exited + before /proc is mounted. + problem of cinit or of mount, exiting too early? + guess the first one, so fix it :-) + +-------------------------------------------------------------------------------- +Add +Hallo, + +Liebster Nico, wuerdest du die dazu durchringen "make install" und +vllt. sogar "make install-test" in die cinit 0.3er branch aufnehmen? + +vlg Lucky +-------------------------------------------------------------------------------- + +Use http://www.opengroup.org/onlinepubs/009695399/basedefs/stdint.h.html + +-------------------------------------------------------------------------------- + +cleanup ipc! +where to call !cinit_ipc_logon and !cinit_ipc_connect? diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/todo/0.3pre13 b/software/cinit/browse_source/cinit-0.3pre11/doc/todo/0.3pre13 new file mode 100644 index 00000000..fb360486 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/todo/0.3pre13 @@ -0,0 +1,9 @@ +- create libcinit.a/so and link against it +- global symbol to track the connection to cinit in the client + => cinit_ipc_cinit() - initalise ipc in the client (only once) +- cleanup headers: + seems to make more sense, to have more than one exposed header. + cinit.h gets to fast too big. so splitoff to: + /* main */ + /* ... */ + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/FAQ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/FAQ new file mode 100644 index 00000000..53494f73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile:home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/NEW_using_cinit_freebsd b/software/cinit/browse_source/cinit-0.3pre11/doc/user/NEW_using_cinit_freebsd new file mode 100644 index 00000000..05499166 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/NEW_using_cinit_freebsd @@ -0,0 +1,21 @@ +11:33 < mux> from sys/kern/init_main.c: +11:33 < telmich> mux: that's true; I just tried with linux and I tell the + bootloader, who tells the kernel then +11:33 < mux> static char init_path[MAXPATHLEN] = +11:33 < mux> #ifdef INIT_PATH __XSTRING(INIT_PATH); +11:33 < mux> #else +"/sbin/init:/sbin/oinit:/sbin/init.bak:/rescue/init:/stand/sysinstall"; +11:33 < mux> #endif +11:33 < mux> but you give a loader tunable +11:34 < mux> if ((var = getenv("init_path")) != NULL) { +11:34 < mux> strlcpy(init_path, var, sizeof(init_path)); +11:34 < mux> freeenv(var); +11:34 < mux> } +11:34 < mux> here you are +11:34 < telmich> ahh, that's good +11:34 * telmich has to try cinit on freebsd the next days :-) +12:34 < mux> (s/you give/you can give/) +11:35 < mux> so, simply init_path)="/sbin/cinit" in /boot/loader.conf should do + it +11:35 < mux> minus the typo + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/README.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/README.text new file mode 100644 index 00000000..3467ba63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/README.text @@ -0,0 +1,21 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit user documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +People using cinit. + +Content +------- + +hints.text: Some general hints +tuning.text: Some tuning hints diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/TODO b/software/cinit/browse_source/cinit-0.3pre11/doc/user/TODO new file mode 100644 index 00000000..6044e97a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/TODO @@ -0,0 +1,4 @@ +All the content in this file is unsorted. Reading may harm you. + +Confdir: /etc/cinit/conf/ +panic: /etc/cinit/conf/panic, /etc/cinit/conf/panic.params diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/compiles.on.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/compiles.on.text new file mode 100644 index 00000000..ad467d38 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/compiles.on.text @@ -0,0 +1,19 @@ +cinit - known configurations cinit compiles on +============================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-12-08 +:Author Initials: NS + + +This document lists all the configuration known to me on that +cinit compiles. If you compiled cinit with another configuration, +drop a mail to nico-cinit-report [at] schottelius.org. + +The list +-------- +cinit is known to compile on: + +- x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +- x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/conf-system.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/conf-system.text new file mode 100644 index 00000000..600112c3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/conf-system.text @@ -0,0 +1,34 @@ +The conf/ system +================= +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-08 +:Author Initials: NS + +This documentes describes the configuration system used by cinit. + + +What is the conf/ system? +------------------------- +The conf/ system is the configuration system for the cinit build. +The first line of each file below conf/ is a configuration value +with the name of the file: + +---------------------------------------------------------------------- +[9:00] hydrogenium:cinit-0.3pre6% head -n 1 conf/cc +gcc +---------------------------------------------------------------------- + +This means that the variable "cc" has the value "gcc". + + +What is the reason for conf/? +----------------------------- +I needed a small and simple configuration system, which may be included +in the full build process. + + +Is conf/ also usable for other projects? +---------------------------------------- +In its current state conf/ is just a prototype, with which I experiement +a lot. But it is possible that the future aim is to provide a simele +configuration and autoconfiguraton mechanism. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/configuring.cinit.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/configuring.cinit.text new file mode 100644 index 00000000..c04da745 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/configuring.cinit.text @@ -0,0 +1,327 @@ +cinit - Configuring +=================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2005-05-28 +:Author Initials: NS + + +This documentes describes how to configure cinit. +You should already have cinit installed, otherwise read +"cinit - Installing" first. + + +General configuration layout +---------------------------- +Cinit uses the <<>> configuration syntax, which means that +the configuration is kept as simple as possible. The following +sections will show you what that means. + +The cinit configuration consists of +- a special configuration directory +- and the service definitions. + +Paths +----- +Normally the configuration is kept below '/etc/cinit' +(though you can change this before compiling in conf/cinit_dir). + +The full description of the path layout of cinit and how to change it +can be found in 'paths.text'. + +Conf +---- +The special configuration directory is normally called `conf/` +(defined at compile-time in `conf/c_confdir`). + +For all executables into this directory apply the same rules as mentioned +below in "Execution: on and off": Appened .params specifies parameters, +appended .env specifies environment. + + +conf/last +~~~~~~~~~ +This is the last part that will be executed. After it has finished, cinit +will halt, power-off or reboot your machine. + +You can use it for whatever task to accomplish (as most things of cinit), but +the idea behind it is to use it for cleaning up things that are not covered +by the off parts of the services. This maybe swapoff (although this is an unecessary +call before poweroff, imho and even if needed this could be handled within the +off part of the same services that enabled it) or `umount -a` for everything +manually mounted and not unmounted yet. + + +conf/sleep_before_kill +~~~~~~~~~~~~~~~~~~~~~~ +This file contains just one line: The number of seconds to sleep after SIGTERM was sent +to every remaining process before sending SIGKILL to all processes. If this file +is unreadable or not existent, cinit will fall back to the value compiled in +(which was specified at build time in conf/sleep_kill). + + +Services +-------- +cinit is service based. Other init systems use shell +scripts (for instance /etc/rc, /etc/init.d/rc as starters +and /etc/rc*.d/* as "service definitions"). + +'current-init-problems.text' explains why cinit does *not* +use nor recommends the use of shell scripts. + +A service is simply a directory. This directory contains information about + +- what should be started when starting the service +- what should be started when stoping the service +- what dependencies the service has +- whether to restart it, when it exits + + +Full service definition +~~~~~~~~~~~~~~~~~~~~~~~ +. A service consists of + - a base directory (like /etc/cinit/svc/mount/root/) + - dependency configuration (`needs` and `wants`) + - start/stop programs (`on` and `off`) + - respawn flag (`respawn`) + + +Base directory +^^^^^^^^^^^^^^ +You can create the base directory everywhere below /etc/cinit/svc. +You may and it is recommened to create a directory structure +(see 'example-directory-structure.text'). + + +Dependencies +^^^^^^^^^^^^ +The subdirectories + +- `wants` +- and `needs` + +contain the dependencies for the service. + +Read 'dependencies.text' for more information. + + +Respawning +^^^^^^^^^^^ +If you create the empty file 'respawn' (adjustable via conf/c_respawn) +the service will be restarted after it exits. + +-------------------------------------------------------------------------------- +# Tell cinit to respawn the eth0.udhcpc service +touch /etc/cinit/svc/network/eth0.udhcpc +-------------------------------------------------------------------------------- + + +Execution: on and off +^^^^^^^^^^^^^^^^^^^^^ +When a service starts, the file `on` in the service +directory is executed. It is ok, if this file is not existing. +When a service stops, the file `off` in the service +directory is executed. + +The file with the extension `.params` is used to specify the arguments +to pass. Each line contains exactly one parameter. + +The file with the extension `.env` is used to specify the environment +to pass. Each line contains exactly one variable definition in the form +'variable=value'. + +. The following six files are possibly used on starting/stoping: + - ./on (the program called on startup) + - ./on.params (the parameters to pass to the program, see conf/c_params) + - ./on.env (the environment to pass to the program, see conf/c_env) + - ./off (the program called when shutting down the service) + - ./off.params (the parameters to pass to the program) + - ./on.env (the environment to pass to the program) + +Some examples: +---------------------------------------------------------------------- + /etc/cinit/svc/init: + ./wants -> services it wants + ./needs -> services it needs +---------------------------------------------------------------------- + +A more or less normal service without dependencies: +---------------------------------------------------------------------- + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it +---------------------------------------------------------------------- + +A service with all options used: +---------------------------------------------------------------------- + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn service + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting +---------------------------------------------------------------------- + + +Profiles +-------- +Profiles allow you to define different startup scenarios and select +those before bootup. Read 'profiles.text' for more information about +profiles. + +The profile support was added in cinit-0.0.6. + + +Service execution order +------------------------ +The first service executed is '/etc/cinit/svc/init'. +If a profile is selected '/etc/cinit/svc/`profilename`' is used +instead. + +Cinit builds a full service dependency tree through the `wants` +and `needs` of the first service and its dependencies +(recursively). + +After the tree is generated, cinit begins to start the services +at the end of the tree. These services have no `needs`. + +If you manage to create circular dependencies your system will not startup. +You can verify the correctness your configuration with the script +`cinit.check.config`. + + +Hints +----- + +Service executing / parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The on and off files can and should be links to the programs you want +to execute instead of a shell script. This way you save yourself the overhead +of loading a shell. The speed enhancement is very big if you have shells +like bash installed as /bin/sh (which is *not* senseful anyway, I would +recommend dash or ksh for /bin/sh). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. +The service could look like this: +---------------------------------------------------------------------- + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). +---------------------------------------------------------------------- + + +Daemons +~~~~~~~~ +Daemons are programs that go away to the background (using fork()) after +start). + +The fork-away strategy seems to be some illness introduced by traditional +init systems, that are dependent on the fact, that a process exits on +startup. + +cinit in contrast remembers the process ID (pid) of the services it +restarts (those with `respawn` enabled). + +So when the daemon fork()s away and the parent process exits it looks to +cinit like the watched service died and cinit will restart it. + +Happily, most processes can be taught not to go to background. +Some processes even do that by default and very less are broken that +one cannot tell them not to background. + +A list of known processes that are normally used in respawn +processes can be found in 'daemons.backgrounding.text'. + +If your process is not listed in `daemons.backgrounding.text', +check the documentation of your daemon program, if may have a +switch to disable forking. + +But, with a small hack it is even possible to respawn those broken processes: + +We start a program, that + - starts the daemon, + - monitors the pidfile of the daemon, + - waits until that pid does not exist anymore + - and then exits. + +Such a program is included into the cinit source tarball, +though I do not recommend using it. The better way is to implement +non forking mode into your process. + +The name of the program (actually a shell script) is 'cinit.wait.for.daemon'. + +You can use it as the `on` part of a service and add + + - the pidfile, + - the process binary + - and the process parameters + +to `on.params`. + +Thus the service could look like: +---------------------------------------------------------------------- + svc-broken-daemon/ + on -> /sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL +---------------------------------------------------------------------- +(This is not a so good example, because Apache supports non-forking mode). + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + + +Logging +~~~~~~~ +Currently there's no special logging support. +When a process writes to stdout, it will be displayed on +the same stdout cinit is connected to. + +In newer versions cinit (perhaps cinit-0.4) will also support logging +stdout and stderr of a service. + + +How to migrate your old init-system configuration to cinit +---------------------------------------------------------- +This is highly dependent on your actual system, your system +configuration and your own ideas. + +Cinit is able to replace all other init systems I know about. + +So the only question is "How to do it?". + +There are some hints on how to migrate to cinit in general and also +some os specific help in the file 'migrating-init-systems.text', + + +Debugging the configuration +---------------------------- +Use `ls -lR /etc/cinit` or one of the tools found in contrib+tools/. + + +Examples +-------- +Currently there are some example configurations available +at http://unix.schottelius.org/cinit/samples/cinit-0.3/, sorted +by host on which they are created. + +In near future, there will also be a file name configuration.example.text, +which will lead you to a sample configuration. + + +References +---------- ++ [[[cconfig]]] http://nico.schotteli.us/papers/linux/cconfig/ diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/cross-compiling.text new file mode 100644 index 00000000..67208534 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/cross-compiling.text @@ -0,0 +1,6 @@ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/current-init-problems.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/current-init-problems.text new file mode 100644 index 00000000..529c2f84 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/current-init-problems.text @@ -0,0 +1,170 @@ +Currently available init systems and their problems +=================================================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-11 +:Author Initials: NS + + +This document describes some other init systems, especially +the "traditional" ones and describes their problems. + + +Introduction +------------- +some history, sysv, bsd, + +minit, runit, initng, cinit, upstart + + +Implementations +--------------- +List of current implementations as of 2006-12-12. + + +Linux Sys-V-Init +~~~~~~~~~~~~~~~~ +Debian Sid + +/etc/inittab + +"First script" /etc/init.d/rcS (specified +/etc/init.d/rcS: Bourne shell script text executable + +Runlevels: 0-6, different states + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% /sbin/runlevel +N 2 +-------------------------------------------------------------------------------- + + +Depending on runlevel, the init calls /etc/init.d/rc $runlevel. + +This is manually configured in /etc/inittab + +/etc/init.d/rc: Bourne shell script text executable + +/etc/init.d/rc + +Calls symlinks in /etc/rc?.d. Each runlevel a directory: + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% ls -ld /etc/rc*.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc0.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc1.d +drwxr-xr-x 3 root root 4096 2006-12-01 16:56 /etc/rc2.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc3.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc4.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc5.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc6.d +drwxr-xr-x 2 root root 4096 2006-11-28 23:17 /etc/rcS.d +-------------------------------------------------------------------------------- + + + +rlmanager: sys-v-init hack +~~~~~~~~~~~~~~~~~~~~~~~~~~ +rlmanager: one script to be executed, sources +simply configuration + +Gentoo Linux +~~~~~~~~~~~~ +no content yet + +BSD init +~~~~~~~~ +Analyzed on FreeBSD. +/etc/rc +/etc/rc.d/ system services +/usr/local/etc/rc.d/ user installed services +Scripts may use values from /etc/rc.conf to check whether +they should be started or not. + +runit +~~~~~ +Three stages: Script1, dependencies, Script3 + + +Initng +~~~~~~ +no content yet + +minit +~~~~~ +Focus on being small. Needs libowfat. +Log support through pipe. + + + + + +Problems overview +----------------- + +Scripts +~~~~~~~ +Scripts are slow. Startup time. Execution time. Unecessary overhead. + + +Sequential startup +~~~~~~~~~~~~~~~~~~ +In the 'old' init systems there is no support of parallel execution. +So if one services hangs at startup, the whole system has to wait +(for instance a dhcp request). In the worst case this may result in +a non-booting system. Systems with dependencies can start the gettys +for login before, in parallel to or even after blocking services are +started. The fact, that they *are* started means you can interact with +the system, you can end looping or blocking services. + +So sequential startup may not only be the reason for a pretty +slow system, but also for an unmaintainable one. + +Unecessary services +~~~~~~~~~~~~~~~~~~~ +Many implementations try to do whatever-is-possible on boot, trying to +cover every possible and impossible situation. + +Portmap without any program that needs it. + +Starting all installed services per default (Debian) vs. let the +user choose what to start (Gentoo). + +Nicht entfernte Altlasten ab und zu. + + +No dependencies +~~~~~~~~~~~~~~~ +Systems without dependencies may result in a chaos state after booting up. + + +Only soft dependencies +~~~~~~~~~~~~~~~~~~~~~~~ +The dependencies are used, but because of soft dependencies, services +may be started although their dependency is missing. + + +Parallel init system debugging +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In contrast to the old init systems, parallel executing init systems +are much harder to debug. If the starting init systems does not have +proper logging / reporting to the user (like cinit-0.2 has), the user +may never find out, what happened and why. + + +Parallel / dependency checking init system with variable boot order +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The boot order may be different each time you boot and is dependent +on the success or failure of services. This way you can never tell +exactly how and in which order they are executed. On multiprocessor +machines, where processes may be truely executed in parallel, there +is no order anymore, but there are n orders on n processors. + +To solve this issue, init systems which support parallel execution +should ship with some testing tools, that simulate a startup. + +cinit will ship with such a tool in cinit-0.4. + + +References +---------- +no content yet diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/daemons.backgrounding.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/daemons.backgrounding.text new file mode 100644 index 00000000..1218f9a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/daemons.backgrounding.text @@ -0,0 +1,83 @@ +cinit - Daemons backgrounding +============================= +Nico Schottelius +0.1, for cinit 0.3, Initial versinon from 2005-06-12 + + +This document describes the backgrounding process and how to disable it. + + + +Definition +----------- +A daemon is a program which runs in the background. +Running in the background means you cannot access the process +directly (like you can press a key in a shell). + + +Daemons and cinit +------------------ +cinit normally watches system services and restarts them +(`respawn` flag in the configuration). If the process goes to background, +cinit cannot control it directly anymore. + +List of daemons and non-forking parameters +------------------------------------------- + +The following daemons / servers are known to avoid backgrounding easily: + +- acpid [x86 power management]: -f (undocumentated but works) +- apache [webserver]: -DFOREGROUND +- asterisk [pbx]: -f +- bind [dns server/caching]: -f +- cardmgr [pcmcia/cardbus]: -f +- cron (vixie) [schedular]: -f +- cupsd [printer server]: -f or -F +- dhclient [dhcp client]: -d +- dhcp3 (isc) [dhcp server]: -f +- distccd [compile server]: normal behaviour +- dovecot [imap/pop3 server]: -F +- fam [file alteration monitor]:-f +- fcron [schedular]: -f +- frox [ftp proxy]: "NoDetach" in config +- freeradius [radiusd]: -f +- gdm [display manager]: -nodaemon +- hybrid [irc server]: -foreground +- icecast2 [sound streamer]: normal behaviour +- mini-lpd [printer server]: normal behaviour +- metalog [log server]: normal behaviour +- monotone [vcs]: normal behaviour +- mpd [music server]: --no-daemon +- nessusd ["security server"]: normal behaviour +- ntpd [time server]: -n +- nylon [socks proxy]: -f (prints output to terminal) +- oidentd [identd server]: -i +- oops [http proxy]: normal behaviour +- openpbx [pbx]: -f +- openssh [ssh server]: -D +- openvpn [vpn server]: normal behaviour +- pbbuttonsd [power management]:normal behaviour +- portmap [portmapper]: -f +- proftpd [ftp server]: -n +- qmail [mta]: normal behaviour +- rsync ["file server"]: --no-detach +- silcd ["secure chat server"]: -F, --foreground +- slapd [ldap]: -d +- snmpd [snmp daemon]: -f +- stunnel [ssl wrapper]: "foreground = yes" in config +- svnserve [vcs]: --foreground +- syslogd [log server]: -n +- syslog-ng [log server]: -F +- tcpserver [super server]: normal behaviour +- udhcpc [dhcp client]: normal behaviour +- vsftpd [ftp server]: normal behaviour (or: config: background=no) +- xinetd [super server]: -dontfork + + +Problematic daemons +------------------- +Those are the daemons that do not offer the possibility (as of release 0.2): + +- atd (no switch, no configuraton option) +- inetd (some variants) +- nscd (no switch, no configuraton option) diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/debugging.configuration b/software/cinit/browse_source/cinit-0.3pre11/doc/user/debugging.configuration new file mode 100644 index 00000000..1289865e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/debugging.configuration @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +Debugging your init configuration, +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +As writing an init configuration is not the easiest thing, +here are some problems (P) and debugging hints (H): + +P: There's no output! +H: If you don't start a service which outputs something there won't be any, + cinit starts up silently. + +P: Service XYZ seems not to work? +H: Try the following in your shell: + cd /etc/cinit/the-service; ./on "$(on.params)" + If that succeeds it has perhaps something missing which should have been + started before. +H: Create a test-service, which contains the following: + on: link to /bin/echo + on.params: "A test string" (with or without the quotes) + Now add the test-service to the needs directory of service XYZ. + If you see output the next time, the service is started. + Otherwise you forgot to make another service dependent on service + XYZ. + +P: How can I test if a non-outputting service successfully started? +H: Create another service, which depends on your service and make + it echo something. + +P: Does that profile support really work? +H: Try that: cprofile:NONEXISTENT and you'll see. + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/dependencies.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/dependencies.text new file mode 100644 index 00000000..e1154a54 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/dependencies.text @@ -0,0 +1,68 @@ +cinit - Dependencies +==================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-13 +:Author Initials: NS + +This document describes the different dependency types of cinit. + + +Dependencies in general +----------------------- +Each service may have two types (non-exclusive) types of dependencies: +The so called `needs` or `wants`. These are directories below the service +directory and contain symbolic links to the dependencies. +The name of the link can be freely chosen. + +An example: + +The service '/etc/cinit/svc/getty/2' needs the service +'/etc/cinit/svc/local-tuning/keyboard-layout': +-------------------------------------------------------------------------------- +[21:35] hydrogenium:needs# cd /etc/cinit/svc/getty/2/needs +[21:35] hydrogenium:needs# ls -l +insgesamt 0 +lrwxrwxrwx 1 root root 37 2006-10-26 17:51 keyboard-layout -> ../../../local-tuning/keyboard-layout +[21:35] hydrogenium:needs# cd keyboard-layout/ +[21:35] hydrogenium:keyboard-layout# pwd -P +/etc/cinit/svc/local-tuning/keyboard-layout +-------------------------------------------------------------------------------- +(Warning: This is an incomplete example, it misses at least `mount/root` +as dependency) + +This service could additionally want something else, too. It is also +possible that a service only `wants` another service or that a service +has no dependencies. + + +Absolute versus relative links +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +cinit does not care whether a link is relative or absolute. And +as far as I can see it does not make any difference to usability. + +In general, it seems to be a little bit 'easier' to use relative links +when manually configuring cinit ('ln -s ../../../service' versus +'ln -s /etc/cinit/svc/category/service'), but easier readable when +analysing them (with `ls -l'). + + +The two types +------------- + +needs +~~~~~ +`Needs` are the 'hard dependencies': If a services fails to start that +is linked in the `needs` directory, the service will not be started. + + +wants +~~~~~ +`Wants` are the 'soft dependencies': cinit will try to start the dependencies +found in `wants` before the service, but the service will also be started, +indenpendend of success of the dependencies. + + +Circular dependency problem +---------------------------- +If you manage to create circular dependencies cinit will fall into an +endless loop. Use `cinit.check.config` to verify your configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/example-directory-structure.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/example-directory-structure.text new file mode 100644 index 00000000..d19ac1fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/example-directory-structure.text @@ -0,0 +1,140 @@ +cinit - Example directory structure +=================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-12 +:Author Initials: NS + + +This document describes a tested directory hierarchy that +you could adapt for your setup. But this is no need, you +are free to design your own layout and/or improve this one. + + +Main idea +--------- +The main reason for this layout is that all services directly located +in /etc/cinit/svc/ would create a not-so-easy maintainable chaos. + + +Categories +---------- +When thinking about grouping some parts together, there came some categories +to my mind: + +- init: This must be there. It is no real choice (well, working with profiles + is an alternative) +- we need to mount things +- things that are used to 'configure' my local system +- network connectivity +- services only locally reachable +- services remote reachable +- something that let me login + +With these requirements the following categories (=directories) were created: + + +getty +~~~~~ +Gettys are those little and nice programs that allow you to login. +As we normally want to have more than one it seems to be senseful +to create a category for it. + +For the creation of the getty services itself, an extremly simply +scheme is used: Simply create services with the number of the getty +that is running. This results in the following setup: + +-------------------------------------------------------------------------------- + /etc/cinit/svc/getty/ + 2/ + 3/ + 4/ + ... +-------------------------------------------------------------------------------- + +The number '1' is skipped, because cinit normally logs to stdout that is +connected to the first console. + +`/etc/cinit/svc/getty/needs/` contains all enabled gettys. This way +`/etc/cinit/svc/init/needs/` can refer to `/etc/cinit/svc/getty/` only +but will catch all gettys. + +If you want to allow users to login via a graphical login screen +(also known as X11 with xdm/gdm/kdm) you could add this service as +`getty/gdm` for instance, because gdm is just another getty (just with +more colours). + + +init +~~~~ +`init` is the service everything begins with. You simply put all other +categories into the `needs` (or if soft-dependencies to `wants`) of this +service. + + +local-services +~~~~~~~~~~~~~~ +This directory contains all the services that are only locally reachable. +This may contain local webserver, a MTA that only accepts mails +via /usr/sbin/sendmail (like qmail is capable of) or some other local +only available services. + + +local-tuning +~~~~~~~~~~~~ +This directory is used for local configuration. It contains services, +that setup the keyboard layout (perhaps called `local-tuning/keyboard-layout` +needed by `getty`!), adjust system to hardware time, cleans /tmp +(`local-tuning/tmpclean`), ... + + +mount +~~~~~ +This directory contains the service to remount the root filesystem +read-write (`mount/root`) which is dependend on the filesystem +check (`mount/root/fsck`, also have a look at 'special-services.text'). +It also contains the services that mount the pseudo filesystems +(`mount/proc` (FreeBSD, Linux) and `mount/sys` (Linux)) and all +other partitions (`mount/home`, `mount/usr`,...) which again contain +a dependency to the filesystem check, if necessary. + + +network +~~~~~~~ +The `network` directory should cover all of the network basics. +This includes setting the hostname (`network/hostname`) configuring +network devices (`network/eth0.static`, `network.ath0.master`) limiting +network accesses (`network/firewall`), enable packet forwarding +(`network/ip-forward`), adjusting the available bandwith +(`network/traffic-shaping`), ... + + +If there are too many network devices, you could create a subfolder named +`network/devices/`. + +I used to suffix the network devices with the mode they run, so I can +use different modes in different profiles (setup the wireless card in +master mode at home, in ad-hoc mode at a friend and in managed mode at +work). + + +remote-services +~~~~~~~~~~~~~~~~ +Remote-services are all services that are reachable from remote hosts. +This includes ssh (`remote-services/opensshd`), webserver +(`remote-services/lighttpd` or `remote-services/apache22`). + +Most servers `need` a working network interface, before they can be +started, but mostly it is enough to have the loopback interface up. + +This results in the possible `needs` dependency for `network/loopback` +and soft dependencies, what we call `wants` on `network`. + +Other examples for remote services are +- dns (`remote-services/dnscache`, `remote-services/tinydns`, + `remote-services/bind`) +- fileserver (`remote-services/smbd`, `remote-services/mmbd`) +- network infrastructure (`remote-services/bgpd`) +- many others + +Many daemons used for `remote-services` are described in +'daemons.backgrounding.text'. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/ideas b/software/cinit/browse_source/cinit-0.3pre11/doc/user/ideas new file mode 100644 index 00000000..d3f13d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/ideas @@ -0,0 +1,3 @@ +- cinit-multi-machine-daemon: + coordinating bootup with several machines + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/installing-cinit.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/installing-cinit.text new file mode 100644 index 00000000..34902057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/installing-cinit.text @@ -0,0 +1,63 @@ +cinit - Installing +================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-06-02 +:Author Initials: NS + +This documentes describes how to install cinit. + + +Installing +---------- +Installing cinit is not a big deal, so is this document. +Where possible I added a list of commands to execute at the +end of each section. + + +From source +~~~~~~~~~~~ +Retrieve the latest source from http://unix.schottelius.org/cinit/. +Then extract it, change to the source directory, adjust your OS in the +file "conf/os" and type "make all". + +To report success run scripts/report.compile and send the output +to nico-cinit-report |at| schottelius.org. I will use this information +to know how and where cinit is compiled. Personal values like hostnames +or your e-mail address will *not* be published. + +Code to install cinit: +---------------------------------------------------------------------- +# the program we use to retrieve the source (fetch on FreeBSD) +get=wget +# change to current version +version=0.3pre6 +url=http://unix.schottelius.org/cinit/cinit-${version}.tar.bz2 +# get it +$get "$url" +# exctract it +tar xvjf "cinit-${version}.tar.bz2" +# build it and report success +who=nico-cinit-report +where=schottelius.org +cd cinit-${version} && make all && \ +./scripts/report.compile | mail -s "cinit: compile report" "${who}@${where}" +---------------------------------------------------------------------- + +Warning: Currently the install target is missing. Simply copy +"src/cinit" to /sbin/cinit. + + +Changing compile time parameters +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +All compile time configurations are kept below the "conf" +directory. Please read 'conf-system.text' for more information. + + +Cross-compiling +--------------- +For cross compiling see 'cross-compiling.text'. + + +Continue reading +---------------- +After having installed cinit, continue reading the document "Configuring cinit". diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/main.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/main.text new file mode 100644 index 00000000..ddf88304 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/main.text @@ -0,0 +1,113 @@ +cinit - a modern init system +============================= +Nico Schottelius +v0.1, for cinit-0.2.2, 2005-01-18 +:Author Initials: NS + + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/meta.dependencies b/software/cinit/browse_source/cinit-0.3pre11/doc/user/meta.dependencies new file mode 100644 index 00000000..fe743c48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/meta.dependencies @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, one would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation (see profile.support). + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +why it does not even need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ + +This way you have the indirection (meta-dependencies) in the filesystem +and cinit does not need any additional code. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/paths.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/paths.text new file mode 100644 index 00000000..d44bca61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/paths.text @@ -0,0 +1,121 @@ +cinit - Configuration +====================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Configuring cinit - the paths used + + +Main structure +--------------- +The base directory under which all configurations are found +is '/etc/cinit' (changable via conf/cinit_dir). + +The basic hierarchy is shown below: +---------------------------------------------------------------------- +/etc/cinit + svc -> services (adjustable: conf/svcdir) + conf -> general configuration (adjustable: conf/confdir) +---------------------------------------------------------------------- + + +The subdirectory 'conf' +~~~~~~~~~~~~~~~~~~~~~~~ +In this directory are general configurations located. +See below for the list of files that are located in this +directory. + + +The subdirectory 'svc' +~~~~~~~~~~~~~~~~~~~~~~ +This directory contains the services. A service is a directory. + + +Filenams for executable files +------------------------------ +When you create something that cinit should execute (like on +starting a service, on stopping a service, on panic, ...), cinit +will recognize the following extensions: + +. cinit executions extensions + - 'name' - the file that should be executed + - `'name'.params` - the parameter to pass to 'name' when executing + - `'name'.env` - the environment to pass to 'name' when executing + + +Name.params +~~~~~~~~~~~ +The 'params' file is a simple file containing one argument on each +line. + +Example: +---------------------------------------------------------------------- +[17:34] hydrogenium:cinit-0.3pre6% ls -l /etc/cinit/svc/init/on +lrwxrwxrwx 1 root root 9 2006-11-16 09:12 /etc/cinit/svc/init/on -> /bin/echo +[17:34] hydrogenium:cinit-0.3pre6% cat /etc/cinit/svc/init/on.params +The initial service has been started. (first parameter) +Some other useful information. (second parameter) +---------------------------------------------------------------------- + +Name.env +~~~~~~~~ +The 'env' file contains the environment definition. +Specify one assignment on each line, containing only "variable=value". + +Example: +---------------------------------------------------------------------- +[18:00] hydrogenium:% cat /etc/cinit/svc/remote-services/tinydns/on.env +IP=192.168.42.23 +---------------------------------------------------------------------- + +eof + +List of executable files +------------------------ +This list shows you what files are executable for cinit. + +on / off +~~~~~~~~~ +The files `on` and `off` are executed if found within a service +definition. `on` is called when starting the service, `off` +is called when stoping it. + + +conf/panic +~~~~~~~~~~ +This file will be executed by cinit if it has to panic. +Panic situation may occur, when there are heavy problems +like failing memory allocation in core areas. You can +change the name of the file in the pre-compilation settings +in `conf/c_panic`. + +If `conf/panic` is missing and cinit has to panic, a builtin +panic action will be called (see `conf/sulogin`). + + +conf/halt +~~~~~~~~~ +`conf/halt` will be called when cinit has shutdown all services +and wants to halt the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_halt`. + + +conf/poweroff +~~~~~~~~~~~~~ +`conf/poweroff` will be called when cinit has shutdown all services +and wants to poweroff the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_poweroff`. + + +conf/reboot +~~~~~~~~~~~ +`conf/reboot` will be called when cinit has shutdown all services +and wants to reboot the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_reboot`. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/problems-and-solutions.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/problems-and-solutions.text new file mode 100644 index 00000000..92cdd241 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/problems-and-solutions.text @@ -0,0 +1,33 @@ +cinit - Problems occured and solutions used +=========================================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2007-05-28 +:Author Initials: NS + +This documentes describes real problems people had with +cinit and their appropriate solutions. Feel free to add +your problems and solutions here. + + +Introduction +------------ + + +Adding problems and solutions +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Simply add your problem and solution and sign your paragraph +with your name. Then send the diff -u to the cinit mailinglist +or setup a git-repository so I can pull the changes. + + +Hibernate +--------- +uses /sbin/runlevel, which should *not* respond with 0 or 6 +as the second number. As cinit does not have /sbin/runlevel, +because cinit does not have any runlevels, you could hardcode +it to values hibernate accepts: + +---------------------------------------------------------------------- +#!/bin/sh +echo N 2 +---------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/problems.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/problems.text new file mode 100644 index 00000000..4fe8a315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/problems.text @@ -0,0 +1,114 @@ +Problems using cinit +==================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2007-04-24 +:Author Initials: NS + + +Using a high-speed, true dependency aware, profile supporting +logical acting and reliable init system like cinit is not +completly problem free. This document describes some common +problems you may have and their solutions. + + +Possible problems +----------------- + +Confused users +~~~~~~~~~~~~~~ +Compared to traditional init systems like sys-v-init or bsd-init +cinit introduces a complet new boot concept. This does not just +mean that you have services instead of shell-scripts (which is +one reason cinit is starting up faster), but also that the boot +order may be changed dynamically at bootup:, if a service fails. +And even if no service fails, the boot order may be different +on each boot, because processes are started in parallel and +may return earlier or later on each boot. To coordinate the +parallel running processes, cinit uses depencies, which are pretty +easy to understad when configurung, but may need some more +detailled watching at boot to understand it. + +The 'confused users'-problem is perhaps also the biggest +problem for introducing cinit as a replacement to current +init systems. + + +Configuration issues +~~~~~~~~~~~~~~~~~~~~ + +Not marking services as respawn +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +When cinit starts, it will wait for every service to exit. +So if you have a dependency on a service +that never exits, the whole init process may hang (dependending +on the dependencies). If you have services that are intendet +*not* to exit after start, you *have* to mark those with +`respawn`: Those services are started and watched by cinit +and will be restarted. This was a design choice to ensure +that all 'always running' processes *are* restarted. + +I did not find any service that should not exit and not +have a respawn flag. If you really really really have such +a service and you can prove to me that the respawn flag +would do harm to your system, I will think about implementing +a flag that tells cinit not to wait for it, but mark it +as successfully run after it has been started. + +User interaction +~~~~~~~~~~~~~~~~ + +User input +~~~~~~~~~~ +There may be the situation that you have to press a key +or enter some data when a service starts up (like entering +the password for your crypto harddisks). With cinit, this +will look like a mess, because other services may write to +the same console the service wrote a user prompt. + +The best solution for this problem is in my humble +opinion to create an user-input daemon that serialises +the requests and displays one after another. + +This could look like this: Your daemon wants to ask for +a passphrase for the SSL-certificate. You add aa needs +to this daemon to the 'input-daemon'. When you +start this service, it will contact the input-daemon +running on another virtual console and displaying a text +and an input field that is passed back to this service. +After that the input daemon changes back to the initial +console or asks for the next input, if there is another +request available. + +This input daemon may also be run on a graphical (X11) display. +. +Output to the user +~~~~~~~~~~~~~~~~~~ +When cinit starts up there may be many messages printed +out that also may look like printed random order. +To prevent your endusers from being confused you can create +some kind of graphical interface (like a framebuffer +or X11 display) that reads the output of cinit and converts +it to flashing images. It could look like this: + +---------------------------------------------------------------------- + + Your (graphical?) display: + -------------------------------------------------------------- + | /-----------------\ | + | | Red border, | | + | | failed to start | | + | \-----------------/ | + | | + | /------ | + | | Green border, | + | image van | + | | + | | + | | + | | + | | + | | + -------------------------------------------------------------- + + +---------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/profiles.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/profiles.text new file mode 100644 index 00000000..ab4d3c4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/profiles.text @@ -0,0 +1,79 @@ +cinit - Profiles +================ +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-06-04 +:Author Initials: NS + + +cinit profiles described. + + +What are profiles? +------------------ +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +How to use profiles? +--------------------- +Simply pass 'cprofile:PROFILENAME' (like cprofile:home) to cinit. + + +How to pass argumenents to cinit? +--------------------------------- +How to pass arguments to your init system depends on your operating +system and on your bootloader. + +Linux +~~~~~ +Under Linux the init-system gets the kernel arguments +(see linux.kernel.eats.arguments) as arguments. +So you can use + + kernel /usr/src/linux/vmlinuz cprofile:work (grub1,grub2) + append="cprofile:work" (LILO,yaboot) + +Other Unices should work like Linux, please consult your local +documentation. + + +How to configure profiles? +-------------------------- +It's very simple: Normally cinit would call /etc/cinit/svc/init as +the first service (with all its dependencies). If you pass 'cprofile=wireless' +to it, cinit will start from /etc/cinit/svc/wireless +instead. + +So the only thing you have to do is to create a service directory +below /etc/cinit/svc with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit/svc; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/svc/init; tar c . | (mkdir ../myprof; cd ../myprof; tar x ) + +That's it! + + +Some examples +------------- + +Here are some examples we found in #cLinux: + +-------------------------------------------------------------------------------- + profile name what it does + + musibox only start mp3blaster + terminal start only minicom, which opens the serial line + net-terminal start a respawning shell script, which starts + ssh to the selected host + video start X+mplayer, which plays the dvd/cdrom + wireless What to start when beeing in an unknown wlan + home/work selected services (nfs, ip, ...) for home or work +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/replacing.init b/software/cinit/browse_source/cinit-0.3pre11/doc/user/replacing.init new file mode 100644 index 00000000..2858c56c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/replacing.init @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and link, move or copy cinit to init (ln -s /sbin/cinit /sbin/init), reboot. + +That's everything in general, the biggest part will be to configuring cinit. + +See also doc/merging.other.initsystems. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/respawning-sleep.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/respawning-sleep.text new file mode 100644 index 00000000..24ed17e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/respawning-sleep.text @@ -0,0 +1,52 @@ +cinit - Respawning and sleeping +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2007-04-13 +:Author Initials: NS + + +How cinit sleeps, before a service is respawned. + +Introduction +------------ +When a service, that is configured to be respawning, exits cinit restarts it. +Because services may be broken and thus cinit would try to restart it many +times in a second, it is necessary to sleep between restarts. + +The big question: How to sleep? +------------------------------------ +The first possibility is to sleep a fixed amount of time between restarts: +For instance one second. This is not a good solution, because this waits +one unecessary second if the process just crashed. It may be too less, if +the service is really broken. + +The second possibility is to sleep a dynamic amount of time. + + +The next big question: How long to sleep? +----------------------------------------- +I think that as long as a service is broken we should not investigate to much +time into restarting it. So we can define a maximum amount of time to sleep +(for instance 30 seconds). The minimum amount of time to sleep is zero seconds. + +When the service is first started, the sleep time defaults to the minimum +amount of time. Each time the service is restarted, the sleep time is adjusted: + +sleep time (st) = Maximum sleep time (mst) / Time the process was running (tr) + +- If tr is < 1 it is adjusted to 1 and thus st is set to mst. +- If tr is > mst, st is set to 0. + + +How to force restart of a service? +---------------------------------- +Use cvsc (to be implemented). + + +Hom is it implemented? +---------------------- +Everytime cinit has to respawn a service it has to fork() itself. +The sleep call is implemented in the fork, so cinit itself does not have +to care about it. After the sleep time is over or the fork() recieves +SIGALARM it executes the real service. cinit itself records as start time +the current time plus sleep time. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/special-services.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/special-services.text new file mode 100644 index 00000000..4367bed1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/special-services.text @@ -0,0 +1,12 @@ +at: + no non-forking mode +fsck: + returns non-zero if it repaired something. + You have to wrap it into a shell-script :-( + + #!/bin/sh + fsck $@ + [ $? -le 1 ] && exit 0 + exit 1 + +Non-zero exit in general diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/supported-os.text b/software/cinit/browse_source/cinit-0.3pre11/doc/user/supported-os.text new file mode 100644 index 00000000..97b29506 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/supported-os.text @@ -0,0 +1,32 @@ +Supported operating systems +=============== +Nico Schottelius +0.1, Initial Version from 2007-02-15 +:Author Initials: NS + +This document lists the supported operating systems. + + +Supported OS +------------ +This means currently that cinit compiles on that system + +Tested by the author +~~~~~~~~~~~~~~~~~~~~ +- GNU/Linux +- FreeBSD +- NetBSD + +Reported by others +~~~~~~~~~~~~~~~~~~ +[none] + +Unsupported OS +-------------- + +OpenBSD +~~~~~~~ +Seems to not comply to Posix / XSI. Have a look at +http://home.schottelius.org/~nico/unix/openbsd/ftok-sys-ipc.h-problem. +This is a demo of the problem on OpenBSD 4.0 with cinit-0.3pre7-git. + diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/updating.cinit b/software/cinit/browse_source/cinit-0.3pre11/doc/user/updating.cinit new file mode 100644 index 00000000..fc0d3fef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/updating.cinit @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. call cservice -u thilo (if you have cinit-0.1 or later) + + For older versions: + + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything running and restart as if you would just + have booted. diff --git a/software/cinit/browse_source/cinit-0.3pre11/doc/user/using.rescue b/software/cinit/browse_source/cinit-0.3pre11/doc/user/using.rescue new file mode 100644 index 00000000..f58ff512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/doc/user/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user"). + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/cconfig.mk.makefile b/software/cinit/browse_source/cinit-0.3pre11/scripts/cconfig.mk.makefile new file mode 100644 index 00000000..822addce --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/cconfig.mk.makefile @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-20, 0110 CEST +# cconfig: create makefile from conf/ directory +# currently: all files +# later: only built-defines +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "#" +echo "# Warning: Autogenerated by $0, do not edit. " +echo "#" +for conf in ${CONFS}; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + echo "${NAME}=${value}" +done diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/cinit.build-env b/software/cinit/browse_source/cinit-0.3pre11/scripts/cinit.build-env new file mode 100644 index 00000000..94e093e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/cinit.build-env @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: build environment to be used in scripts +# * Should be sourced by using scripts +# 2006-10-26 +# + +. $(dirname $0)/cinit.read-conf + +export BASEDIR=${DESTDIR}${CINIT_DIR} +export SERVICES=${BASEDIR}/${SVCDIR} +export CONFIG=${BASEDIR}/${CONFDIR} diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/cinit.get-confdir b/software/cinit/browse_source/cinit-0.3pre11/scripts/cinit.get-confdir new file mode 100644 index 00000000..38d8572d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/cinit.get-confdir @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# Date: 2005-05-24 (Last Changed: 2005-08-08) + +# try environment first +if [ "$CINIT_CONF_DIR" ]; then + CONFDIR=$CINIT_CONF_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +else + echo 'Did not find cinit configuration!' >&2 + echo "Please set the variable CINIT_CONF_DIR" >&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/cinit.install.standard.dirs b/software/cinit/browse_source/cinit-0.3pre11/scripts/cinit.install.standard.dirs new file mode 100644 index 00000000..22cf273d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/cinit.install.standard.dirs @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install standard sub-configuration directories +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.build-env + +for svc in $SERVICE_CATEGORIES; do + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${SERVICES}/${svc}" +done + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/cinit.mkheader b/software/cinit/browse_source/cinit-0.3pre11/scripts/cinit.mkheader new file mode 100644 index 00000000..80e3f7cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/cinit.mkheader @@ -0,0 +1,32 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric: no quotes needed + is_numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + is_string="$(echo $value | grep '^"')" + + # + # Check for quote type + # + if [ ! "$is_numeric" -a ! "$is_string" ]; then + one_char=$(echo -n $value | wc -c) + + if [ "$one_char" -eq 1 ]; then + value="'$value'" + else + # is a string + value="\"$value\"" + fi + fi + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/cinit.read-conf b/software/cinit/browse_source/cinit-0.3pre11/scripts/cinit.read-conf new file mode 100644 index 00000000..80a32463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/cinit.read-conf @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# ~ 2005 +# + +CONFS=$($(dirname $0)/cinit.get-confdir) + +set -e + +for conf in ${CONFS}/*; do + NAME="$(basename $conf | tr a-z A-Z)" + if eval test -z \$$NAME; then + eval $NAME=\"$(head -n 1 $conf)\" + eval export $NAME + fi +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/configuration/README b/software/cinit/browse_source/cinit-0.3pre11/scripts/configuration/README new file mode 100644 index 00000000..64c0d174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/configuration/README @@ -0,0 +1 @@ +Scripts used to generate or aid in creating a configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/configuration/freebsd/create_services.sh b/software/cinit/browse_source/cinit-0.3pre11/scripts/configuration/freebsd/create_services.sh new file mode 100644 index 00000000..52e123a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/configuration/freebsd/create_services.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Reads list of services to create from stdin +# Create services (add correct dependencies) +# +# Options: +# -d: alternate destination directory (instead of /etc/cinit/svc) diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/configuration/freebsd/enable_services.sh b/software/cinit/browse_source/cinit-0.3pre11/scripts/configuration/freebsd/enable_services.sh new file mode 100644 index 00000000..ce4563a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/configuration/freebsd/enable_services.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Reads list of services to enabled from stdin +# Services must already exist +# +# Options: +# -d: alternate destination directory (instead of /etc/cinit/svc) diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/configuration/freebsd/search_enabled_services.sh b/software/cinit/browse_source/cinit-0.3pre11/scripts/configuration/freebsd/search_enabled_services.sh new file mode 100644 index 00000000..69e519b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/configuration/freebsd/search_enabled_services.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Search for enabled services: +# - /etc/rc.conf +# - /usr/local/etc/rc.d/ +# Output list of services to stdout +# +# Options: +# -r diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/configuration/freebsd/search_services.sh b/software/cinit/browse_source/cinit-0.3pre11/scripts/configuration/freebsd/search_services.sh new file mode 100644 index 00000000..2043e857 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/configuration/freebsd/search_services.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Search all services: +# - /etc/rc.conf +# - /usr/local/etc/rc.d/ +# Output list of all services to stdout +# +# Options: +# -r diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/create_baseconfig.sh b/software/cinit/browse_source/cinit-0.3pre11/scripts/create_baseconfig.sh new file mode 100644 index 00000000..7c9b69e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/create_baseconfig.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# 2006-10-23 +# cLinux/cinit + +. $(dirname $0)/cinit.build-env + +set -e + +mkdir -p "${BASEDIR}" + +mkdir -p "${SERVICES}" +mkdir -p "${SERVICES}/${C_INIT}" + +mkdir -p "${CONFIG}" diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/README b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/README new file mode 100644 index 00000000..2162b6b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/README @@ -0,0 +1 @@ +Only to be used by Nico Schottelius. diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/cinit.release b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/cinit.release new file mode 100644 index 00000000..54f1fbe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/cinit.release @@ -0,0 +1,72 @@ +#!/bin/sh +# Nico Schottelius +# Build release tar +# Date: Sat Oct 15 21:38:29 CEST 2005 +# Last Changed: ls -l + +# only release if I tell it to release +[ "$1" = "now" ] || exit 23 + +#if [ $# -ne 2 ]; then +# echo "This is a maintainer-only script to release cinit" +# echo $(basename $0): source-dir version +# exit 1 +#fi + +# paths +DIR="$(cd $(dirname $0)/../../; pwd -P)" +DDIR="$(cd $(dirname $0)/../../../; pwd -P)" +RDIR=$(basename "$DIR") + +# version +VERSION="$(cd "$DIR"; pwd -P | sed 's;.*/cinit-;;')" +VERSION_CONF="$(head -n1 $(dirname $0)/../../conf/version | sed 's/^"\(.*\)"$/\1/')" +VERSION_CHANGES="$(head -n1 "$(dirname $0)/../../CHANGES" | sed 's/cinit-\(.*\):.*/\1/')" +OUT_NAME="cinit-${VERSION}.tar.bz2" + +# remote +D_HOST=home.schottelius.org +D_BASE=www/org/schottelius/unix/www/cinit +D_DIR=${D_BASE}/archives/ +D_SOURCE=${D_BASE}/browse_source/ +LINK=current + +echo "=> Version directory: $VERSION" +echo "=> Version conf/version: $VERSION_CONF" +echo "=> Version CHANGES: $VERSION_CHANGES" + +if [ "$VERSION" = "$VERSION_CONF" -a "$VERSION" = "$VERSION_CHANGES" ]; then + echo "=> Version confirmed." +else + echo "*** VERSION MISMATCH ***" + exit 42 +fi + +echo -n "=> Continue? " +read yes + +if [ ! -d "$DIR" ]; then + echo "$DIR is not a directory" + exit 1 +fi + +# do the work! +( cd "$DIR" && make dist ) || exit 1 + +echo "Creating bzip2 compressed tar" +cd $DDIR +tar cj -X $DIR/.exclude -f "$OUT_NAME" "$RDIR" +chmod 0644 "$OUT_NAME" + +echo "Transfering to $D_HOST" +scp "$OUT_NAME" "$D_HOST:$D_DIR" + +echo "Extracting to $D_SOURCE" +ssh "$D_HOST" "tar xfj $D_DIR/$OUT_NAME -C $D_SOURCE" + +echo "Correcting paranoid permissions" +ssh "$D_HOST" "find \"$D_SOURCE/$RDIR\" -type f -exec chmod 0644 {} \\;" +ssh "$D_HOST" "find \"$D_SOURCE/$RDIR\" -type d -exec chmod 0755 {} \\;" +ssh "$D_HOST" "cd \"$D_SOURCE\" && rm -f \"$LINK\" && ln -s \"$RDIR\" \"$LINK\"" + +echo "Please do not forget to update the website..." diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/compile+run.sh b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/compile+run.sh new file mode 100644 index 00000000..30ec68a6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/compile+run.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# yah - yet another hack + +if [ ! "$1" ]; then + echo "HOSTNAME" + exit 23 +fi + +host="$1" + +hier=$(dirname $0) + +$hier/compile_test.sh "$host" + +if [ $? -ne 0 ]; then + echo "aborting, did not compile on $1" + exit 1 +fi + +ssh "${host}" './cinit/src/cinit & (sleep 30; kill -9 $(pgrep cinit))' diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/compile_local.sh b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/compile_local.sh new file mode 100644 index 00000000..e2bfce5e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/compile_local.sh @@ -0,0 +1,24 @@ +# just a hack + +dir=$(dirname $0) + +sys=$(uname -s) +sys_small=$(echo $sys | tr '[A-Z]' '[a-z]') + +case $(uname -s) in + NetBSD|OpenBSD) + make=gmake + ;; + *) + make=make + ;; +esac + +cd "${dir}/../../" +echo $sys_small > conf/os +# automatically called by make.. +#./bin/cinit.configure.os + +cd "src" +$make clean +$make cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/compile_run_as_compiler.sh b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/compile_run_as_compiler.sh new file mode 100644 index 00000000..f1ba01d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/compile_run_as_compiler.sh @@ -0,0 +1,14 @@ +what=$(dirname $0)/../../ +what_real=$(cd "$what" && pwd -P) +dest=~compiler/cinit-test + +set -e +sudo rsync -av "${what_real}/" "$dest" +sudo chown -R compiler "$dest" +sudo -u compiler "${dest}/scripts/internal/compile_local.sh" +sudo -u compiler "${dest}/src/cinit" & +sleep 13 +sudo -u compiler "${dest}/scripts/internal/stop_cinit.sh" + +# exit 0 for make +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/compile_test.sh b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/compile_test.sh new file mode 100644 index 00000000..335f31ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/compile_test.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# yah - yet another hack + +host="$1" +what=$(dirname $0)/../../ + +rsync --exclude .git --exclude \*.o -av "${what}" "${host}:cinit" +ssh "${host}" "./cinit/scripts/internal/compile_local.sh" diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/create_test_config.sh b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/create_test_config.sh new file mode 100644 index 00000000..720ce969 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/create_test_config.sh @@ -0,0 +1,18 @@ +hier=$(dirname $0) + +set -e +${hier}/../cinit.install.standard.dirs +cat > /etc/cinit/svc/init/on << eof +#!/bin/sh +echo test1 +sleep 4 +echo test2 - \$@ +eof +chmod 0755 /etc/cinit/svc/init/on + +cat > /etc/cinit/svc/init/on.params << eof +es +scheint +zu +gehen +eof diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/find_right_version.sh b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/find_right_version.sh new file mode 100644 index 00000000..759f23c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/find_right_version.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +src="$(dirname $0)/../../" +src_abs=$(cd "$src" && pwd -P) + +for commit in $( git log --pretty=short | awk '/^commit/ { print $2 }'); do + set -e + cd "$src_abs" + temp=$(mktemp -d /tmp/cinit.XXXXXXXXXX) + git-archive --format=tar "$commit" | ( cd "$temp"; tar x ) + cd "${temp}/src" + set +e + make clean && make cinit && ./cinit + if [ "$?" -eq 0 ]; then + echo "Commit $commit is ok" + exit 0 + fi + echo "Broken $commit" + sleep 1 + set -e + rm -rf "$temp" +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/stop_cinit.sh b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/stop_cinit.sh new file mode 100644 index 00000000..86e4d82b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/stop_cinit.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# Linux specific, but don't care, I am the only person that should use it + +killall -TERM cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/test_on_hosts.sh b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/test_on_hosts.sh new file mode 100644 index 00000000..e6df35ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/test_on_hosts.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# yah + +hosts="penrose.bsdprojects.net bot.unixkiste.org suckz.eu jiffies.forkbomb.ch" + +set -e + +for host in $hosts; do + echo "$1 on $host" + "$1" "$host" | sed "s/^/${host}: /" + echo "==> Finished $host" +done diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/valgrind b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/valgrind new file mode 100644 index 00000000..f769f9da --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/internal/valgrind @@ -0,0 +1 @@ +valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes --leak-resolution=high ./cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/report.compile b/software/cinit/browse_source/cinit-0.3pre11/scripts/report.compile new file mode 100644 index 00000000..ac591412 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/report.compile @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# 2006-12-08 +# Report compile success +# + +echo "cinit compile success report" +echo "----------------------------" +"$(dirname $0)/cinit.mkheader" +echo "----------------------------" +uname -a +echo "----------------------------" +. "$(dirname $0)/cinit.read-conf" +echo '$CC' +"$CC" -v +echo "----------------------------" +echo -n "Size: " +ls -l "$(dirname $0)/../src/cinit" diff --git a/software/cinit/browse_source/cinit-0.3pre11/scripts/wrapper/linux-sysvinit/shutdown b/software/cinit/browse_source/cinit-0.3pre11/scripts/wrapper/linux-sysvinit/shutdown new file mode 100644 index 00000000..ce413d17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/scripts/wrapper/linux-sysvinit/shutdown @@ -0,0 +1,38 @@ +#!/bin/sh +# Nico Schottelius (nico-cinit /at/ schottelius.org) +# 2007-05-21 +# Behave as being shutdown from Linux' sysvinit + +# parse options, display usage + +# all the functions + +usage() +{ + +cat << cinit_usage + +*** cinit linux-sysvinit shutdown wrapper *** + +Usage shutdown [-akrhHPfnc] [-t secs] time [warning message] + -a: use /etc/shutdown.allow + -k: don't really shutdown, only warn. + -r: reboot after shutdown. + -h: halt after shutdown. + -P: halt action is to turn off power. + -H: halt action is to just halt. + -f: do a 'fast' reboot (skip fsck). + -F: Force fsck on reboot. + -n: do not go through "init" but go down real fast. + -c: cancel a running shutdown. + -t secs: delay between warning and kill signal. + ** the "time" argument is mandatory! (try "now") ** + +You can also call "cmd" directly instead of using this wrapper. + +cinit_usage + +} + +# the main part +usage diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-17-19:03:48 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-17-19:03:48 new file mode 100644 index 00000000..e379e004 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-17-19:03:48 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 17 19:03 cinit +-rwx------ 1 nico users 46760 Jun 17 19:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-20-12:16:40 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-20-12:16:40 new file mode 100644 index 00000000..1f0c3325 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-20-12:16:40 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 20 12:16 cinit +-rwx------ 1 nico users 50860 Jun 20 12:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-20-15:16:31 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-20-15:16:31 new file mode 100644 index 00000000..75dc3e7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-20-15:16:31 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 15:16 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-20-16:29:28 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-20-16:29:28 new file mode 100644 index 00000000..1294bde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-20-16:29:28 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-20-16:29:50 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-20-16:29:50 new file mode 100644 index 00000000..69fe7490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-20-16:29:50 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 16:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-21-11:53:35 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-21-11:53:35 new file mode 100644 index 00000000..4a1e7b6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-21-11:53:35 @@ -0,0 +1,3 @@ +total 192 +-rwx------ 1 nico users 102039 Jun 21 11:53 cinit +-rwx------ 1 nico users 87871 Jun 21 11:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-07:33:11 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-07:33:11 new file mode 100644 index 00000000..e6c8ff14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-07:33:11 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47544 Jun 22 07:33 cinit +-rwx------ 1 nico users 46760 Jun 22 07:33 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-07:57:13 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-07:57:13 new file mode 100644 index 00000000..17161d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-07:57:13 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47536 Jun 22 07:57 cinit +-rwx------ 1 nico users 46760 Jun 22 07:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-08:08:40 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-08:08:40 new file mode 100644 index 00000000..770083f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-08:08:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47424 Jun 22 08:08 cinit +-rwx------ 1 nico users 46760 Jun 22 08:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-08:30:42 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-08:30:42 new file mode 100644 index 00000000..aa95fb3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-08:30:42 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47360 Jun 22 08:30 cinit +-rwx------ 1 nico users 46760 Jun 22 08:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-09:19:42 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-09:19:42 new file mode 100644 index 00000000..70c261bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-09:19:42 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 09:19 cinit +-rwx------ 1 nico users 50860 Jun 22 09:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-10:43:24 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-10:43:24 new file mode 100644 index 00000000..b8bc4076 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-10:43:24 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 10:43 cinit +-rwx------ 1 nico users 50860 Jun 22 10:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-12:42:57 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-12:42:57 new file mode 100644 index 00000000..c8119859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-12:42:57 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 22 12:42 cinit +-rwx------ 1 nico users 46760 Jun 22 12:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-13:52:41 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-13:52:41 new file mode 100644 index 00000000..793b92fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-13:52:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:52 cinit +-rwx------ 1 nico users 46760 Jun 22 13:52 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-13:59:40 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-13:59:40 new file mode 100644 index 00000000..d114c557 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-13:59:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:59 cinit +-rwx------ 1 nico users 46760 Jun 22 13:59 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-14:19:41 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-14:19:41 new file mode 100644 index 00000000..8d56882f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-14:19:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47640 Jun 22 14:19 cinit +-rwx------ 1 nico users 46760 Jun 22 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-14:37:18 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-14:37:18 new file mode 100644 index 00000000..b7c3e4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-22-14:37:18 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 22 14:37 cinit +-rwx------ 1 nico users 46760 Jun 22 14:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-23-06:22:23 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-23-06:22:23 new file mode 100644 index 00000000..9e38a5e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-23-06:22:23 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 23 06:22 cinit +-rwx------ 1 nico users 46760 Jun 23 06:22 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-24-17:53:55 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-24-17:53:55 new file mode 100644 index 00000000..3b750eaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-24-17:53:55 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:53 cinit +-rwx------ 1 nico users 46760 Jun 24 17:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-24-17:55:29 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-24-17:55:29 new file mode 100644 index 00000000..c30dcaf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-24-17:55:29 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:55 cinit +-rwx------ 1 nico users 46760 Jun 24 17:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-26-13:19:49 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-26-13:19:49 new file mode 100644 index 00000000..a4de830b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-06-26-13:19:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 26 13:19 cinit +-rwx------ 1 nico users 50860 Jun 26 13:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:07:13 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:07:13 new file mode 100644 index 00000000..e2c59ddf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:07:13 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:07 cinit +-rwx------ 1 nico users 50860 Jul 6 08:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:12:20 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:12:20 new file mode 100644 index 00000000..e562350c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:12:20 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:12 cinit +-rwx------ 1 nico users 50860 Jul 6 08:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:13:39 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:13:39 new file mode 100644 index 00000000..32fd8268 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:13:39 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:13 cinit +-rwx------ 1 nico users 50860 Jul 6 08:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:14:19 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:14:19 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:14:19 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:14:59 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:14:59 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:14:59 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:15:56 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:15:56 new file mode 100644 index 00000000..cf26e6f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-08:15:56 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:15 cinit +-rwx------ 1 nico users 50860 Jul 6 08:15 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-10:12:22 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-10:12:22 new file mode 100644 index 00000000..d5f0f2c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-10:12:22 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:08 cinit +-rwx------ 1 nico users 50860 Jul 6 10:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-10:12:31 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-10:12:31 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-10:12:31 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-10:12:49 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-10:12:49 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-07-06-10:12:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-08-29-21:21:34 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-08-29-21:21:34 new file mode 100644 index 00000000..e651a8ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-08-29-21:21:34 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 root root 444508 2005-08-29 21:21 cinit +-rwx------ 1 root root 440412 2005-08-29 21:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-08-29-23:50:55 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-08-29-23:50:55 new file mode 100644 index 00000000..a279aee3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-08-29-23:50:55 @@ -0,0 +1,3 @@ +insgesamt 856 +-rwx------ 1 nico nico 437564 2005-08-29 23:50 cinit +-rwx------ 1 nico nico 436316 2005-08-29 23:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-03-03:36:59 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-03-03:36:59 new file mode 100644 index 00000000..01e555f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-03-03:36:59 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 nico nico 444508 2005-09-03 03:36 cinit +-rwx------ 1 nico nico 440412 2005-09-03 03:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-03-04:34:35 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-03-04:34:35 new file mode 100644 index 00000000..1832930a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-03-04:34:35 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 04:34 cinit +-rwx------ 1 nico nico 440412 Sep 3 04:34 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-03-05:51:17 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-03-05:51:17 new file mode 100644 index 00000000..4e465d06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-03-05:51:17 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 05:51 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-03-05:54:20 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-03-05:54:20 new file mode 100644 index 00000000..9c040d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-03-05:54:20 @@ -0,0 +1,4 @@ +total 1300 +-rwx------ 1 nico nico 440412 Sep 3 05:54 ccontrol +-rwx------ 1 nico nico 444508 Sep 3 05:54 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-03-09:01:59 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-03-09:01:59 new file mode 100644 index 00000000..880422a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-03-09:01:59 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 3 09:01 cinit +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-05-19:41:12 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-05-19:41:12 new file mode 100644 index 00000000..0f07d86e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-05-19:41:12 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 root root 440412 2005-09-05 19:41 ccontrol +-rwx------ 1 root root 444508 2005-09-05 19:41 cinit +-rwx------ 1 root root 440412 2005-09-05 19:41 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-05-19:50:35 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-05-19:50:35 new file mode 100644 index 00000000..32ff19fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-05-19:50:35 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 5 19:50 cinit +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-24-01:42:38 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-24-01:42:38 new file mode 100644 index 00000000..0da6126e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-24-01:42:38 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-09-24 01:42 ccontrol +-rwx------ 1 nico nico 437628 2005-09-24 01:42 cinit +-rwx------ 1 nico nico 436316 2005-09-24 01:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-30-22:50:50 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-30-22:50:50 new file mode 100644 index 00000000..0d510174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-30-22:50:50 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 22:50 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 22:50 cinit +-rwx------ 1 nico nico 436316 2005-09-30 22:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-30-23:06:39 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-30-23:06:39 new file mode 100644 index 00000000..23450914 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-09-30-23:06:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 23:06 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 23:06 cinit +-rwx------ 1 nico nico 436316 2005-09-30 23:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-01-22:09:13 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-01-22:09:13 new file mode 100644 index 00000000..a62b9eb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-01-22:09:13 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-10-01 22:09 ccontrol +-rwx------ 1 nico nico 437308 2005-10-01 22:09 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-01-22:17:39 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-01-22:17:39 new file mode 100644 index 00000000..b1d8b11b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-01-22:17:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-01 22:17 ccontrol +-rwx------ 1 nico nico 437532 2005-10-01 22:17 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-02-11:12:29 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-02-11:12:29 new file mode 100644 index 00000000..e5f7b13d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-02-11:12:29 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:12 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-02-11:13:35 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-02-11:13:35 new file mode 100644 index 00000000..d7c14471 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-02-11:13:35 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-02-11:13:43 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-02-11:13:43 new file mode 100644 index 00000000..1711d01a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-02-11:13:43 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 11:13 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 436316 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-02-16:00:24 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-02-16:00:24 new file mode 100644 index 00000000..ab23228c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-02-16:00:24 @@ -0,0 +1,4 @@ +total 1284 +-rwx------ 1 nico nico 436316 Oct 2 16:00 ccontrol +-rwx------ 1 nico nico 437884 Oct 2 16:00 cinit +-rwx------ 1 nico nico 436316 Oct 2 16:00 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-02-23:17:11 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-02-23:17:11 new file mode 100644 index 00000000..92041cd9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-02-23:17:11 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 23:17 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 23:17 cinit +-rwx------ 1 nico nico 436316 2005-10-02 23:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-03-00:54:39 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-03-00:54:39 new file mode 100644 index 00000000..df47a057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-03-00:54:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:54 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:54 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-03-00:56:29 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-03-00:56:29 new file mode 100644 index 00000000..08db7fec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-03-00:56:29 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:56 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:56 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:56 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-13-09:55:52 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-13-09:55:52 new file mode 100644 index 00000000..d54a7ff4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-13-09:55:52 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:55 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:55 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-13-09:57:11 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-13-09:57:11 new file mode 100644 index 00000000..3b1af9ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-13-09:57:11 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:57 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:57 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-13-10:07:28 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-13-10:07:28 new file mode 100644 index 00000000..58d25315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-13-10:07:28 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 10:07 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 10:07 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 10:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-15-15:26:52 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-15-15:26:52 new file mode 100644 index 00000000..a88291e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-15-15:26:52 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 root root 436316 2005-10-15 15:26 ccontrol +-rwx------ 1 root root 437916 2005-10-15 15:26 cinit +-rwx------ 1 root root 436316 2005-10-15 15:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-15-21:23:56 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-15-21:23:56 new file mode 100644 index 00000000..43a4504d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-10-15-21:23:56 @@ -0,0 +1,4 @@ +total 36 +-rwx------ 1 nico nico 9148 Oct 15 21:23 ccontrol +-rwx------ 1 nico nico 11872 Oct 15 21:23 cinit +-rwx------ 1 nico nico 9768 Oct 15 21:23 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2005-11-17-17:03:53 b/software/cinit/browse_source/cinit-0.3pre11/size/2005-11-17-17:03:53 new file mode 100644 index 00000000..78543f15 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2005-11-17-17:03:53 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2005-11-17 17:03 ccontrol +-rwx------ 1 nico nico 11872 2005-11-17 17:03 cinit +-rwx------ 1 nico nico 9768 2005-11-17 17:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-11-23:45:54 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-11-23:45:54 new file mode 100644 index 00000000..f4852c81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-11-23:45:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-11 23:45 cinit +-rwx------ 1 nico nico 9768 2006-02-11 23:45 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-12-00:06:11 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-12-00:06:11 new file mode 100644 index 00000000..2fe41351 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-12-00:06:11 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-12-00:06:42 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-12-00:06:42 new file mode 100644 index 00000000..bf2ddc36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-12-00:06:42 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:06 ccontrol +-rwx------ 1 nico nico 11560 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-12-00:08:24 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-12-00:08:24 new file mode 100644 index 00000000..e25a49ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-12-00:08:24 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:08 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:08 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-12-00:09:33 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-12-00:09:33 new file mode 100644 index 00000000..0b64fa00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-12-00:09:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:09 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:09 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-12-00:13:32 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-12-00:13:32 new file mode 100644 index 00000000..b6c5c38e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-12-00:13:32 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:13 ccontrol +-rwx------ 1 nico nico 11500 2006-02-12 00:13 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-16-23:57:29 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-16-23:57:29 new file mode 100644 index 00000000..86b9fda9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-16-23:57:29 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11620 2006-02-16 23:57 cinit +-rwx------ 1 nico nico 9768 2006-02-16 23:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-17-00:16:18 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-17-00:16:18 new file mode 100644 index 00000000..28c853a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-17-00:16:18 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 00:16 cinit +-rwx------ 1 nico nico 9768 2006-02-17 00:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-17-22:48:35 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-17-22:48:35 new file mode 100644 index 00000000..5935acfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-17-22:48:35 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-17 22:48 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 22:48 cinit +-rwx------ 1 nico nico 9768 2006-02-17 22:48 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:03:54 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:03:54 new file mode 100644 index 00000000..9222f0b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:03:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:03 cinit +-rwx------ 1 nico nico 9768 2006-02-20 19:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:04:33 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:04:33 new file mode 100644 index 00000000..c5797edc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:04:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:04:36 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:04:36 new file mode 100644 index 00000000..fbcf9fa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:04:36 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:07:47 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:07:47 new file mode 100644 index 00000000..7e1fe18f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:07:47 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:07 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:12:33 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:12:33 new file mode 100644 index 00000000..2b4fda40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:12:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:12 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:12 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:14:56 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:14:56 new file mode 100644 index 00000000..bccb5d65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-02-20-20:14:56 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:14 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:14 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-01-23:32:43 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-01-23:32:43 new file mode 100644 index 00000000..fcbaf372 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-01-23:32:43 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-01 23:32 ccontrol +-rwx------ 1 nico nico 11640 2006-06-01 23:32 cinit +-rwx------ 1 nico nico 9768 2006-06-01 23:32 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-01:08:28 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-01:08:28 new file mode 100644 index 00000000..7683546c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-01:08:28 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:08 ccontrol +-rwx------ 1 nico nico 11688 2006-06-02 01:08 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-01:29:13 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-01:29:13 new file mode 100644 index 00000000..adbc6846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-01:29:13 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:29 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 01:29 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-11:13:39 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-11:13:39 new file mode 100644 index 00000000..46eaef4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-11:13:39 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:13 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:13 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-11:36:37 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-11:36:37 new file mode 100644 index 00000000..306402f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-11:36:37 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:36 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:36 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-15:17:17 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-15:17:17 new file mode 100644 index 00000000..7bb59095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-15:17:17 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:17 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:17 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-15:19:52 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-15:19:52 new file mode 100644 index 00000000..ce65256f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-06-02-15:19:52 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:19 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:19 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-11-29-235834 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-11-29-235834 new file mode 100644 index 00000000..c2c83117 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-11-29-235834 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73645 2006-11-29 23:57 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-02-172536 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-02-172536 new file mode 100644 index 00000000..4079d5db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-02-172536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73617 2006-12-02 17:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-02-174429 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-02-174429 new file mode 100644 index 00000000..5506928d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-02-174429 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73497 2006-12-02 17:44 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-02-182536 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-02-182536 new file mode 100644 index 00000000..14526d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-02-182536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 72092 2006-12-02 18:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-03-173231 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-03-173231 new file mode 100644 index 00000000..aca9d380 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-03-173231 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71944 2006-12-03 17:32 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-03-174544 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-03-174544 new file mode 100644 index 00000000..3c1cfea2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-03-174544 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71952 2006-12-03 17:45 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-03-191215 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-03-191215 new file mode 100644 index 00000000..4f2a2fa1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-03-191215 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-03 19:12 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-06-084947 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-06-084947 new file mode 100644 index 00000000..487af844 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-06-084947 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-06 08:49 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-14-213559 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-14-213559 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-14-213559 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-14-213717 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-14-213717 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-14-213717 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-14-213739 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-14-213739 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-14-213739 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-14-215315 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-14-215315 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-14-215315 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-14-215334 b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-14-215334 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2006-12-14-215334 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2007-02-17-210059 b/software/cinit/browse_source/cinit-0.3pre11/size/2007-02-17-210059 new file mode 100644 index 00000000..69179604 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2007-02-17-210059 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 75783 2007-02-17 20:59 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2007-02-23-202443 b/software/cinit/browse_source/cinit-0.3pre11/size/2007-02-23-202443 new file mode 100644 index 00000000..19cb71b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2007-02-23-202443 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 69439 2007-02-23 20:15 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2007-02-23-202720 b/software/cinit/browse_source/cinit-0.3pre11/size/2007-02-23-202720 new file mode 100644 index 00000000..19cb71b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2007-02-23-202720 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 69439 2007-02-23 20:15 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2007-03-07-231936 b/software/cinit/browse_source/cinit-0.3pre11/size/2007-03-07-231936 new file mode 100644 index 00000000..c2ef3d0b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2007-03-07-231936 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71213 2007-03-07 23:18 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/size/2007-04-06-011811 b/software/cinit/browse_source/cinit-0.3pre11/size/2007-04-06-011811 new file mode 100644 index 00000000..73de8724 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/size/2007-04-06-011811 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71281 2007-04-06 01:17 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/Makefile b/software/cinit/browse_source/cinit-0.3pre11/src/Makefile new file mode 100644 index 00000000..5743d482 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/Makefile @@ -0,0 +1,157 @@ +# +# cinit +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +#include Makefile.tests + +################################################################################ +# +# Build tools / locations +# + +CC=../tmpbin/cc +CFLAGS= +LD=../tmpbin/ld +LDFLAGS= +STRIP=../tmpbin/strip +SBIN=../sbin + +################################################################################ +# +# All objects / binaries +# depend on headers. More or less. FIXME: use gcc -M +# +BIN=halt.kill poweroff.kill reboot.kill cmd +CINIT=cinit +ALLBIN=${BIN} ${CINIT} + +# headers +CONFIG_H=include/config.h +CINIT_HEADERS=${shell cat include/listing} + +# objects +CINIT_OBJ=${shell cat object_lists/cinit} +HALTKILL_OBJ=${shell cat object_lists/halt.kill} +POWEROFFKILL_OBJ=${shell cat object_lists/poweroff.kill} +REBOOTKILL_OBJ=${shell cat object_lists/reboot.kill} +CMD_OBJ=${shell cat object_lists/cmd} + +# +# All objects +# +OBJ=${CINIT_OBJ} ${HALTKILL_OBJ} ${POWEROFFKILL_OBJ} ${REBOOTKILL_OBJ} + +################################################################################ +# +# End user target +# +#all: cinit cservice ccontrol sizecheck docs +all: ${ALLBIN} + + +################################################################################ +# +# Generic +# +${OBJ}: ${CINIT_HEADERS} + +%.o: %.c + ${CC} -c -o $@ $< + +################################################################################ +# +# First do configuration, so we include the right variables +# +Makefile: .configured + +.configured: ../conf/* + @../bin/cinit.configure.os + @../bin/cinit.configure.tools + @../bin/cinit.configure.ipc + @../bin/cinit.configure.mark + +${CINIT_OBJ}: ${CONFIG_H} + +${CONFIG_H}: ../conf/* + ../scripts/cinit.mkheader > ${CONFIG_H} + +################################################################################ +# +# Install targets +# + +#install: install-dir cinit cservice ccontrol +install: install-cinit install-utilities + +install-utilities: ${BIN} + @echo '*** Installing utilities ***' + install $^ /sbin +install-cinit: cinit + @echo '*** Installing cinit ***' + @echo "Need to delete cinit before reinstalling it {text file busy problem}" + rm -f /sbin/cinit + install $^ /sbin + +# FIXME: target broken +install-miniconf: + ./bin/cinit.install.miniconf + +# FIXME: target broken +install-dir: + ./bin/cinit.install.dir + + +################################################################################ +# +# Build targets +# + +cinit: ${CINIT_OBJ} + ${LD} $^ -o $@ + +halt.kill: ${HALTKILL_OBJ} + ${LD} $^ -o $@ + +poweroff.kill: ${POWEROFFKILL_OBJ} + ${LD} $^ -o $@ + +reboot.kill: ${REBOOTKILL_OBJ} + ${LD} $^ -o $@ + +cmd: ${CMD_OBJ} + ${LD} $^ -o $@ + +################################################################################ +# +# Internal test targets +# + +uml: cinit cmd + ../../vm/uml/uml-mount.sh + cp cinit cmd ../../vm/uml/root/sbin/ + ../../vm/uml/uml-umount.sh + +umlstart: uml + ../../vm/uml/uml-start.sh + +################################################################################ +# +# Clenaup targets +# + +.PHONY: dist +dist: distclean + +.PHONY: distclean +distclean: clean + rm -f os/current ipc/current .configured + +.PHONY: clean +clean: + rm -f ../tmpbin/*.configured + rm -f ${BIN} ${CINIT_OBJ} + rm -f client/*.o test/*.o diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/Makefile.tests b/software/cinit/browse_source/cinit-0.3pre11/src/Makefile.tests new file mode 100644 index 00000000..0f4b4626 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/Makefile.tests @@ -0,0 +1,27 @@ +# +# Makefile for cinit tests +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +TEST_BUILD_ARGV=test/test_build_argv.o core/build_argv.o + +PROGS=test_build_argv test_build_argv_link + +tests: $(PROGS) + +test_build_argv: test/test_build_argv.o core/build_argv.o +test_build_argv_link: test/test_build_argv+link.o core/build_argv.o + +test_gen_svc_tree: test/test_gen_svc_tree.o svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/gen_svc_tree.o \ + generic/mini_printf.o \ + svc/list_display_all.o + +test_openreadclose: test/test_openreadclose.o generic/openreadclose.o diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ancient/do_change_status.c b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/do_change_status.c new file mode 100644 index 00000000..94b9be76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/do_change_status.c @@ -0,0 +1,70 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ancient/do_result.c b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/do_result.c new file mode 100644 index 00000000..cb51161b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/do_result.c @@ -0,0 +1,33 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return RT_ERR_COMM; + } + + return *value; +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ancient/do_svc_name.c b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/do_svc_name.c new file mode 100644 index 00000000..d427365f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/do_svc_name.c @@ -0,0 +1,51 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ancient/exec_svc.c b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/exec_svc.c new file mode 100644 index 00000000..f217f9e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/exec_svc.c @@ -0,0 +1,264 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +inline pid_t exec_svc(char *abspath, int action) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + SERVICE_LOG(abspath,LOG_SVC_FAIL); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + P_EXEC_FAILED(nargv[0]); + perror(MSG_ERR_EXECVE); + /* FIXME: remove debug, remove double printing without loosing info */ + sleep(3); /* debug */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ancient/msg_change_status.c b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/msg_change_status.c new file mode 100644 index 00000000..836a0fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* FIXME: change return code validation */ + +int msg_change_status(char *svc, char status, pid_t pid) +{ + if(!begin_msg(CMD_CHG_STATUS)) { + return RT_ERR_COMM; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ancient/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/msg_svc_on_off.c new file mode 100644 index 00000000..02948f2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/msg_svc_on_off.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, char action) +{ + if(!begin_msg(action)) return RT_ERR_COMM; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return RT_ERR_COMM; + return (int) do_result(sock,NULL); +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ancient/respawn_svc.c b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/respawn_svc.c new file mode 100644 index 00000000..5c350045 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/respawn_svc.c @@ -0,0 +1,99 @@ +/* + * (c) 2005,2006 Nico Schottelius (nico-linux at schottelius.org) + * respawn_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + D_PRINTF(abspath); + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, CMD_START_SVC) ) { + if(cpid != 0) { + D_PRINTF("sloefen"); + sleep(SLEEP_SVC); + D_PRINTF("Zuende geschlafen"); + } + } + } while(cpid); /* cpid is reset by sig_terminate() */ + + /* FIXME: put most code of sig_terminate here, look for no_kill */ + + /* start off task */ + exec_svc(abspath,CMD_STOP_SVC); + + D_PRINTF("jetzt weg"); + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ancient/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/run_init_svc.c new file mode 100644 index 00000000..f41c1f4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/run_init_svc.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ancient/run_init_svc2.c b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/run_init_svc2.c new file mode 100644 index 00000000..b613ed6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/run_init_svc2.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include /* _exit, fork */ + +#include "cinit.h" +#include "messages.h" +#include "ipc.h" + +int run_svc(char *rpath) { rpath = "test"; return 0; } /* a hack to compile cinit for now */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + if(!cinit_ipc_logon()) _exit(1); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ancient/run_run_svcs.c b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/run_run_svcs.c new file mode 100644 index 00000000..6486c76f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/run_run_svcs.c @@ -0,0 +1,86 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ancient/run_svc.c b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/run_svc.c new file mode 100644 index 00000000..95cc324d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/run_svc.c @@ -0,0 +1,131 @@ +/* + * (c) 2005 Nico Schottelius (nico-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +#error "needs to be cleaned up" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + print_errno(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + print_errno(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ancient/sig_terminate.c b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/sig_terminate.c new file mode 100644 index 00000000..9b23e349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ancient/sig_terminate.c @@ -0,0 +1,60 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + /* FIXME: only send SIGTERM, if not_kill does not exist */ + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + status = kill(cpid,SIGKILL); + if( status == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + D_PRINTF("muesste weg sein"); + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/client/cmd.c b/software/cinit/browse_source/cinit-0.3pre11/src/client/cmd.c new file mode 100644 index 00000000..957bd0a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/client/cmd.c @@ -0,0 +1,102 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * cmd - the cinit client program - sends commands to cinit + */ + +#include /* getopt */ +#include /* signals */ +#include /* printf() */ +#include /* free() */ + +#include "cmd.h" /* own header */ +#include "signals.h" /* which signal */ +#include "svc.h" /* service related */ +#include "intern.h" /* print_errno() */ + +#include "cinit.h" /* cinit external */ + +#define C_USAGE(error) usage(USAGE_TEXT,error) +#define LOG(a,b) mini_printf(a,1); minit_printf(b,1); + +enum CMD_ARGS { + CMD_ENABLE, + CMD_DISABLE, + CMD_STATUS +}; + +enum CMD_OPTS { + CMD_NO_WANTS = 0x1, + CMD_NO_NEEDS = 0x2 +}; + +/*********************************************************************** + * cmd: main + */ +int main(int argc, char **argv) +{ + int opt, tmp, what; + char *svc; + + tmp = 0; + + /* FIXME: change e/d: make it a must to specify + * -d w(ants) excluded) + * -e n(eeds excluded) + * -d i(nclude everything) + */ + + while((opt = getopt(argc,argv,CMD_OPTIONS)) != -1) { + switch(opt) { + /********************************************/ + case 'e': /* enable service */ + what = CMD_ENABLE; + svc = optarg; + break; + + case 'd': /* disable service */ + what = CMD_DISABLE; + svc = optarg; + break; + + /********************************************/ + case 's': /* get status */ + what = CMD_STATUS; + svc = optarg; + break; + + case 'v': /* get version of cinit */ + svc = cinit_get_version(); + if(svc) { + printf("Version of cinit: %s\n",svc); + free(svc); + return 0; + } else { + printf("Cannot get version of cinit!\n"); + return 1; + } + break; + + /* FIXME: add -V: version of cmd */ + } + } + + switch(what) { + case CMD_STATUS: + printf("get status\n"); + tmp = cinit_get_svc_status(svc); + printf("Status is: %d\n",tmp); + /*switch(tmp) { + case ST_SH_ONCE: + break; + case ST_NEED_FAILD: + break; + }*/ + break; + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/client/halt.kill.c b/software/cinit/browse_source/cinit-0.3pre11/src/client/halt.kill.c new file mode 100644 index 00000000..a84cdf2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/client/halt.kill.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Halt the system through a kill call + */ + +#include /* kill() */ + +#include "messages.h" /* MSG_* */ +#include "intern.h" /* print_errno() */ +#include "signals.h" /* signals mapping */ + +int main() +{ + if(kill(1,SIG_CINIT_HALT) == -1) { + print_errno(MSG_HALT_KILL); + return 1; + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/client/poweroff.kill.c b/software/cinit/browse_source/cinit-0.3pre11/src/client/poweroff.kill.c new file mode 100644 index 00000000..801e119c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/client/poweroff.kill.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Reboot the system through a kill call + */ + +#include /* kill() */ + +#include "messages.h" /* MSG_* */ +#include "intern.h" /* print_errno() */ +#include "signals.h" /* signals mapping */ + +int main() +{ + if(kill(1,SIG_CINIT_POWEROFF) == -1) { + print_errno(MSG_POWEROFF_KILL); + return 1; + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/client/reboot.kill.c b/software/cinit/browse_source/cinit-0.3pre11/src/client/reboot.kill.c new file mode 100644 index 00000000..cd90feda --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/client/reboot.kill.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Reboot the system through a kill call + */ + +#include /* kill() */ + +#include "messages.h" /* MSG_* */ +#include "intern.h" /* print_errno() */ +#include "signals.h" /* signals mapping */ + +int main() +{ + if(kill(1,SIG_CINIT_REBOOT) == -1) { + print_errno(MSG_REBOOT_KILL); + return 1; + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/comm/README b/software/cinit/browse_source/cinit-0.3pre11/src/comm/README new file mode 100644 index 00000000..74a0b376 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/comm/README @@ -0,0 +1,20 @@ +All abstracted communication functions. Do not depend on the underlying +inter process communication mechanism. + + - send_command(): client function: sends a command to cinit + - send_service(): client function: send the service name to operate on + + - read_command(): server function: reads beginning of a command + * Extracts the command + * reads client identification (=pid) + * calls other functions, depending on the command send => switch() + - read_service(): server function: reads service + + - write_answer(): server function: answer? + * sends answers to clients => senseful? + + + TODO: + - define information function, that returns various information about + a service + diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/comm/read_command.c b/software/cinit/browse_source/cinit-0.3pre11/src/comm/read_command.c new file mode 100644 index 00000000..a308edba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/comm/read_command.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * cinit reads a command sent by a client, called by ipc listener + * + */ + +#include /* strncpy */ + +#include "config.h" /* VERSION */ +#include "comm.h" /* message struct definition - OLD?*/ +#include "cinit.h" /* structures */ + +int read_command(struct cinit_question qsn, struct cinit_answer *asr) +{ + switch(qsn.cmd) { + case CINIT_MSG_GET_VERSION: + asr->ret = CINIT_MSG_OK; + strncpy(asr->data,VERSION,PATH_MAX); + break; + + case CMD_SVC_START: + break; + + case CMD_SVC_START_ONLY: + break; + + case CMD_SVC_START_NEEDS: + break; + + case CMD_SVC_STOP: + break; + + case CMD_SVC_STOP_ONLY: + break; + + case CMD_SVC_STOP_WANTS: + break; + + /* return error to client */ + default: + break; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/comm/send_command.c b/software/cinit/browse_source/cinit-0.3pre11/src/comm/send_command.c new file mode 100644 index 00000000..bd2849dc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/comm/send_command.c @@ -0,0 +1,15 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * A client sends a command to cinit + */ + +#include "comm.h" /* message struct definition */ + +send_command(struct s_cmd cmd) +{ + /* cinit_ipc_to_server() */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/core/build_argv.c b/software/cinit/browse_source/cinit-0.3pre11/src/core/build_argv.c new file mode 100644 index 00000000..95add5e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/core/build_argv.c @@ -0,0 +1,166 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Build **argv for execution in cinit way: + * 1. check whether cmd is a valid executable + * 2. try to read cmd.params and write parameters + * 3. try to read cmd.env and setup environment + * + * Returns: + * BA_OK: Everything went well, you can use the struct + * BA_NOTFOUND: Binary executable is not available + * BA_PARAMS: Reading the parameters failed (ignoring non-existence!) + * BA_ENV: Reading the environment failed (same as above) + * BA_OTHER: Other error + */ + +#include /* open() */ +#include /* *alloc() */ +#include /* readlink */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* NULL */ +#include /* strchr */ +#include /* stat() */ + +#include "intern.h" +#include "build_argv.h" + + /* + * char *basename: something we should execute + * (*basename) + ".params" will be added as parameters + * (*basename) + ".env" will be added as environment + */ + +int cinit_build_argv(char *basename, struct ba_argv *bav) +{ + int tmp; + int argc; + char pathtmp[PATH_MAX+1]; + char *sbuf = NULL; + char *p; + + /* sane values */ + bav->argv = NULL; + bav->envp = NULL; + + /*********************************************************************** + * Try to get realname (for links) + */ + if((tmp = readlink(basename,pathtmp,PATH_MAX)) == -1) { + /* nothing there? */ + if(errno == ENOENT) { + return BA_E_NOTFOUND; + } + if (errno != EINVAL) { + return BA_E_OTHER; + } + tmp=strlen(basename); + strncpy(pathtmp,basename,tmp); + } + pathtmp[tmp] = '\0'; + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /*********************************************************************** + * prepare argv0 + */ + bav->argv = malloc(sizeof(char *)); + if(bav->argv == NULL) return BA_E_MEM; + + *bav->argv = malloc(tmp); + if(*(bav->argv) == NULL) return BA_E_MEM; + + strncpy(*(bav->argv),pathtmp,tmp); + + /********************** read params *********************/ + /* FIXME check bounds! */ + strcpy(pathtmp,basename); + strcat(pathtmp,C_PARAMS); + /* ORC_ERR_NONEXISTENT: Ok, have sbuf set to NULL + * ORC_OK: Ok, have a filled buffer (perhaps NULL, too) + * other: Error, print errno + */ + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /*********************************************************************** + * Now split the string, converting \n to \0 + */ + argc = 1; /* argv0 */ + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = sbuf; /* here begins the current argument */ + + if(p != NULL) { /* found another \n */ + *p = '\0'; + sbuf = p+1; + } else { /* end of string */ + sbuf = NULL; + } + + ++argc; + } + + /************ close argv list **************/ + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,basename); + strcat(pathtmp,C_ENV); + + tmp = argc = 0; + sbuf = NULL; + + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /************** build environment string **************/ + argc = 0; + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) return BA_E_MEM; + + bav->envp[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + sbuf = p+1; + } else { + sbuf = NULL; + } + ++argc; + } + + /************ close env list **************/ + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) { + return BA_E_MEM; + } + bav->envp[argc] = NULL; + + return BA_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/core/cinit.c b/software/cinit/browse_source/cinit-0.3pre11/src/core/cinit.c new file mode 100644 index 00000000..ff73fedd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/core/cinit.c @@ -0,0 +1,104 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The main file + * + */ + +#include /* getpid,chdir */ +#include /* str(ncmp,len,cpy,cat) */ +#include /* perror */ +#include /* malloc */ + +#include "intern.h" /* general things */ +#include "messages.h" /* messages */ +#include "ipc.h" /* general ipc methods */ +#include "svc.h" /* gen_svc_tree */ + +struct listitem *svc_list = NULL; +struct dep *svc_init = NULL; + +int main(int argc, char **argv) +{ + char *initdir = CINIT_INIT; /* default init dir */ +// pid_t cpid; + + + /* FIXME: RE-ENABLE as SOON AS PRODUCTIVE cpid = getpid(); + * Is this really needed or should we lock() ourselves? + if(cpid != 1) { + mini_printf(CINIT_VERSION,2); + mini_printf(MSG_USAGE,2); + return 0; + }*/ + + /* Look whether we should start a profile */ + while(argc > 1) { + if(!strncmp(PROFILE, argv[argc-1], strlen(PROFILE) ) ) { + initdir = (char *) malloc( + strlen(CINIT_SVCDIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2); + if(initdir == NULL) { + panic(); + } + strcpy(initdir, CINIT_SVCDIR); + strcat(initdir, SLASH); + strcat(initdir, &argv[argc-1][strlen(PROFILE)]); + break; + } + --argc; + } + + /* Bootup "logo" */ + mini_printf(MSG_BOOTING,1); mini_printf(initdir,1); mini_printf("\n",1); + + if(chdir(initdir) == -1) { + print_errno(initdir); + panic(); + } + + /* initialize ipc method */ + if(!cinit_ipc_init()) { + panic(); + } + + /* listen to signals */ + set_signals(ACT_SERV); + + /* pre-calculate service tree */ + if(!gen_svc_tree(initdir)) { + panic(); + } + + /* free, if we malloc()ed before */ + if(strcmp(initdir,CINIT_INIT)) { + free(initdir); + } + + /* change to /, so applications have that as cwd, too + * Is that really seneful? Does that help any application? + * If not, just for looking nice, that's not a reason to + * enable it. + if(chdir(SLASH) == -1) { + print_errno(SLASH); + panic(); + } */ + + /* start tree from the bottom */ + if(!tree_exec(svc_init)) { + panic(); + } + + D_PRINTF("=> cinit started.\n"); + + mini_printf(MSG_BOOTING,1); mini_printf(initdir,1); mini_printf("\n",1); + /* listen for incomming messages: should never return */ + if(!cinit_ipc_listen()) { + panic(); + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/core/do_reboot.c b/software/cinit/browse_source/cinit-0.3pre11/src/core/do_reboot.c new file mode 100644 index 00000000..c6c715be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/core/do_reboot.c @@ -0,0 +1,97 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#include +#include +#include +#include +#include +#include + +#include "ipc.h" + +/* cleaned up own headers */ +#include "intern.h" /* set_signals */ +#include "svc.h" /* shutdown_services */ +#include "messages.h" /* messages */ +#include "reboot.h" /* cinit_poweroff&co */ + +/* cleaned headers */ +#include /* kill() */ + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void do_reboot(int signal) +{ + //struct listitem *tmp; + //char **cmd; + //int i; + + /* + * New code: + * 0. close user ipc + * - notify user! + * - do not allow user interupt anymore + * 1. shutdown services + * - notify user! + * 2. kill -TERM all processes + * - notify user! + * 3. kill -KILL all processes + * - notify user! + * 4. execute /etc/cinit/conf/{halt,reboot,poweroff} + * - notify user! + */ + + /* do not listen to client requests anymore */ + /* and tell the user what happens */ + LOG(MSG_SHUTDOWN_START); + cinit_ipc_destroy(); + set_signals(ACT_CLIENT); /* reset signal handlers */ + + /* shutdown all services: take care about the dependency tree */ + LOG(MSG_SHUTDOWN_SVC); + shutdown_services(svc_list); + + LOG(MSG_SHUTDOWN_KILL); + /* now: all services are down, let's kill all other processes */ + if(kill(-1,SIGTERM) == -1) { + print_errno(MSG_TERMKILL); + } + + sleep_before_kill(); + + if(kill(-1,SIGKILL) == -1) { + print_errno(MSG_KILLBILL); + } + + /* Execute the last command */ + LOG(MSG_SHUTDOWN_LAST); + execute_and_wait(CINIT_LAST); + + /* do what we really wanted to do */ + switch(signal) { + case SIGTERM: /* power off */ + LOG(MSG_POWER_OFF); + cinit_poweroff(); + break; + case SIGHUP: /* reboot */ + LOG(MSG_REBOOT); + cinit_reboot(); + break; + case SIGUSR1: /* halt */ + LOG(MSG_HALT); + cinit_halt(); + break; + } + /* FIXME: should we exit? */ + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/core/panic.c b/software/cinit/browse_source/cinit-0.3pre11/src/core/panic.c new file mode 100644 index 00000000..d3dd9459 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/core/panic.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something + */ + +#include /* execv */ + +#include "intern.h" +#include "messages.h" + +void panic(void) +{ + char *nargv[2]; + + if(execute_and_wait(CINIT_PANIC)) _exit(0); + + /*********************************************************************** + * THIS SHOULD NOT HAPPEN, fallback to hardcoded sulogin + * (conf/sulogin) + */ + nargv[0] = SULOGIN; + nargv[1] = NULL; + + if(execv(SULOGIN,nargv) == -1) { + print_errno(MSG_FATAL_PANIC); + } + + /* there's nothing todo, if everything fails */ + _exit(23); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/core/set_signals.c b/software/cinit/browse_source/cinit-0.3pre11/src/core/set_signals.c new file mode 100644 index 00000000..0ebb6899 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/core/set_signals.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Define signal handlers + */ + + +#include /* sigaction, sigemtpyset */ +#include /* NULL */ +#include "intern.h" /* defines */ +#include "reboot.h" /* reboot related */ +#include "signals.h" /* reboot related */ + +void set_signals(int action) +{ + struct sigaction sa; + + sigemptyset(&sa.sa_mask); /* no other signals should be blocked */ + sa.sa_flags = 0; + + if(action == ACT_SERV) { + sa.sa_handler = sig_child; + sa.sa_flags = SA_NOCLDSTOP; + } else { + sa.sa_handler = SIG_DFL; + } + + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + sa.sa_flags = 0; /* reset flags */ + if(action == ACT_SERV) { + sa.sa_handler = do_reboot; + } + sigaction(SIG_CINIT_HALT, &sa, NULL); /* halt */ + sigaction(SIG_CINIT_POWEROFF, &sa, NULL); /* poweroff */ + sigaction(SIG_CINIT_REBOOT, &sa, NULL); /* reboot */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/core/sig_child.c b/software/cinit/browse_source/cinit-0.3pre11/src/core/sig_child.c new file mode 100644 index 00000000..f8903263 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/core/sig_child.c @@ -0,0 +1,91 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The child handler + * + */ + +#include /* waitpid */ +#include /* NULL */ +#include /* gettimeofday() */ /* FIXME: CHECK POSIX */ +#include /* time(),gettime.. */ /* FIXME: CHECK POSIX */ + +#include "intern.h" /* mini_printf */ +#include "svc.h" /* list_search_pid */ +#include "messages.h" /* messages/D_PRINTF */ + +/*********************************************************************** + * sig_child: (c)collect the children + */ +void sig_child(int tmp) +{ + /* New code: + * - search for pid in service list + * * if (respawn) -> start new + * - insert delay? if exit code is non-zero? if uptime too less? + * * if (once) -> update service status + * * else ignore, but reap away + */ + pid_t pid; + int delay; + struct listitem *svc; +// struct timeval now; + + while((pid = waitpid(-1, &tmp, WNOHANG)) > 0) { + /* check if it's a watched child */ + svc = list_search_pid((pid_t) pid); + + if(svc != NULL) { + /* Check, that we are operating on it =. that it is no normal child */ + if(svc->status & ST_ONCE_RUN + || svc->status & ST_SH_RESPAWN + || svc->status & ST_RESPAWNING) { + mini_printf("WHILE: svc bekannt!\n",1); + if(WIFEXITED(tmp) && !WEXITSTATUS(tmp)) { + svc_success(svc); + } else { + svc_fail(svc); + } + } + + //mini_printf("WHILE: Vorm respawn!\n",1); + /* respawn: restart: FIXME Delay for regular dying services */ + if(svc->status == ST_RESPAWNING) { + D_PRINTF("WHILE: IM respawn!\n"); + svc_report_status(svc->abs_path,MSG_SVC_RESTART,NULL); + D_PRINTF("WHILE: IM respawn: nach report status!\n"); + + //delay = MAX_DELAY / (time(NULL) - svc->start); + /* if(gettimeofday(&now,NULL) == -1) { + print_errno(MSG_GETTIMEOFDAY);; + delay = 0; + } else { + delay = MAX_DELAY / (now.tv_sec - svc->start); + } */ + + delay = 5; + + /* int test = time(NULL); + test++; + D_PRINTF("WHILE: IM respawn / for printf!\n"); + printf("sig_child: %d, %d, %d, %d\n", + MAX_DELAY, + (int) time(NULL), + (int) svc->start, + (int) (test - svc->start) + ); */ + + // mini_printf("WHILE: Vorm SVC_START!\n",1); + svc_start(svc,delay); + } + //mini_printf("WHILE: NACH respawn!\n",1); + } else { + /* FIXME remove in production version */ + D_PRINTF("Cleanup: reparenting\n"); + } + //mini_printf("WHILE2: Ende sigchild\n",1); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/generic/execute_and_wait.c b/software/cinit/browse_source/cinit-0.3pre11/src/generic/execute_and_wait.c new file mode 100644 index 00000000..ab808ff1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/generic/execute_and_wait.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something, but fork() before + * + */ + +#include /* pid_t */ +#include /* waitpid */ +#include /* fork */ + +#include "messages.h" /* MSG_* */ +#include "intern.h" /* print_errno, execute_sth */ + +int execute_and_wait(char *svc) +{ + pid_t pid; + int status; + + /* fork */ + pid = fork(); + + if(pid == -1) { + print_errno(MSG_ERR_FORK); + return 0; + } + + /* exec / child */ + if(pid == 0) { + execute_sth(svc); /* exits itself */ + } + + /* wait / parent */ + waitpid(pid,&status,0); + + if(WIFEXITED(status)) { + if(WEXITSTATUS(status) == 0) { + return 1; + } + } + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/generic/execute_sth.c b/software/cinit/browse_source/cinit-0.3pre11/src/generic/execute_sth.c new file mode 100644 index 00000000..02593940 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/generic/execute_sth.c @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Executes something: replaces us + */ + +#include /* _exit */ + +#include "intern.h" +#include "build_argv.h" +#include "messages.h" /* D_PRINTF */ + +void execute_sth(char *basename) +{ + int tmp; + struct ba_argv bav; + + tmp = cinit_build_argv(basename,&bav); + if((tmp = cinit_build_argv(basename,&bav)) != BA_OK) { + if(tmp != BA_E_MEM) { /* do not print something on memory errors */ + print_errno(basename); + } + _exit(1); + } + + /* tell the user what we execute */ + mini_printf(MSG_INTRO_EXEC,1); + mini_printf((bav.argv)[0],1); + mini_printf("\n",1); + + execve((bav.argv)[0], bav.argv, bav.envp); + print_errno(basename); + _exit(1); /* simply exit non-zero. That's enough for cinit to recognize + it as faulty */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/generic/file_exists.c b/software/cinit/browse_source/cinit-0.3pre11/src/generic/file_exists.c new file mode 100644 index 00000000..8f383525 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/generic/file_exists.c @@ -0,0 +1,58 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * check whether file exists and is a file + */ + +#include /* errno */ +#include /* stat */ +#include /* NULL */ + +#include "intern.h" /* print_errno() */ +#include "svc.h" /* svc_report_status() */ +#include "messages.h" /* messages.. */ + +int file_exists(char *filename) +{ + struct stat buf; + + /* check: + * - is it a link? if so, is it broken? report! + * - is it non existent? -> return non-existent + * - is it existent, but not a regular file? report! + */ + if(lstat(filename,&buf) == -1) { /* lstat fails? */ + if(errno == ENOENT) { + mini_printf("NIX DA: ok.\n",1); + return FE_NOT; + } else { + mini_printf("anderer fehler.\n",1); + print_errno(filename); + return FE_ERR; + } + } else { + if(S_ISLNK(buf.st_mode)) { /* is a link */ + /* check link destination */ + if(stat(filename,&buf) == -1) { /* do real stat(): */ + if(errno == ENOENT) { + svc_report_status(filename,MSG_BROKENLINK,NULL); + return FE_NOLINK; + } else { + mini_printf("anderer fehler.\n",1); + print_errno(filename); + return FE_ERR; + } + } + } + } /* caught all stat() errors */ + + if(!S_ISREG(buf.st_mode)) { + svc_report_status(filename,MSG_NONREGULAR,NULL); + return FE_OTHER; + } + + return FE_FILE; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre11/src/generic/mini_printf.c new file mode 100644 index 00000000..d5b0d1f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/generic/mini_printf.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Print the world! + * + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) return; + + p = str; + while(*p) p++; + + write(fd,str,(size_t) (p - str)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/generic/openreadclose.c b/software/cinit/browse_source/cinit-0.3pre11/src/generic/openreadclose.c new file mode 100644 index 00000000..b271b410 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/generic/openreadclose.c @@ -0,0 +1,66 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * read a file + * + */ + +#include /* open, read, close */ +#include /* strncpy */ +#include /* realloc */ +#include /* errno */ +#include /* NULL */ +#include /* open */ +#include "intern.h" /* ORC_* */ + +int openreadclose(char *filename, char **where) +{ + + int tmp; + int cnt; + int fd; + char buf[512]; + + *where = NULL; + + /* what a wonderful loop */ + while((fd = open(filename,O_RDONLY)) == -1) { + if(errno == ENOENT) return ORC_ERR_NONEXISTENT; + if(errno != EINTR) return ORC_ERR_OPEN; + } + + cnt = 0; + while (1) { + tmp = read(fd,buf,512); + + if(tmp == -1) { + if(errno == EINTR) + continue; + else + return ORC_ERR_READ; + } else if(tmp == 0) { + break; + } + + cnt += tmp; + *where = realloc(*where,cnt + 1); + if(*where == NULL) return ORC_ERR_MEM; + + /* FIXME check correctness of copied buffer... + * and get some sleep..soon, very soon! */ + strncpy(&(*where)[cnt-tmp],buf,tmp); + } + + while((fd = close(fd)) == -1) { + if(errno == EINTR) continue; + return ORC_ERR_CLOSE; + } + + /* terminate string! */ + (*where)[cnt] = '\0'; + + return ORC_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/generic/path_absolute.c b/software/cinit/browse_source/cinit-0.3pre11/src/generic/path_absolute.c new file mode 100644 index 00000000..ef8b002e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/generic/path_absolute.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create an absulte path + */ + +#include /* chdir(),getcwd */ +#include /* PATH_MAX */ +#include "intern.h" /* print_errno */ +#include "messages.h" /* messages */ + +int path_absolute(char *relpath, char *newpath, size_t size) +{ + char oldpath[PATH_MAX+1]; + + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + if(chdir(relpath) == -1) { + print_errno(relpath); + return 0; + } + + if(!getcwd(newpath,size)) { + print_errno(relpath); + return 0; + } + + if(chdir(oldpath) == -1) { + print_errno(oldpath); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/generic/path_append.c b/software/cinit/browse_source/cinit-0.3pre11/src/generic/path_append.c new file mode 100644 index 00000000..87cc49ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/generic/path_append.c @@ -0,0 +1,28 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create path to needs + */ + +#include /* strlen */ +#include /* PATH_MAX */ + +#include "intern.h" /* mini_printf, PD_ERR */ + +int path_append(char *path, char *append) +{ + size_t end = strlen(path); + + if(strcmp(&path[end-1],SLASH)) { + if((end + strlen(SLASH) + strlen(append)) > PATH_MAX) return 0; + strcat(path,SLASH); + } else { + if((end + strlen(append)) > PATH_MAX) return 0; + } + strcat(path,append); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/generic/print_errno.c b/software/cinit/browse_source/cinit-0.3pre11/src/generic/print_errno.c new file mode 100644 index 00000000..0286f550 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/generic/print_errno.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * stolen from tcpserver_blocker + * + * Author: Nico Schottelius + * Date: 2006-08-24 + * + * Print the error found in errno + */ + +#include /* strerror */ +#include /* errno */ + +#include "intern.h" /* mini_printf, PD_ERR */ + +void print_errno(char *msg) +{ + if(msg) { + mini_printf(msg, FD_ERR); + mini_printf(": ", FD_ERR); + } + mini_printf(strerror(errno), FD_ERR); + mini_printf("\n", FD_ERR); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/generic/sleep_before_kill.c b/software/cinit/browse_source/cinit-0.3pre11/src/generic/sleep_before_kill.c new file mode 100644 index 00000000..e3c92615 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/generic/sleep_before_kill.c @@ -0,0 +1,43 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Sleep: + * read configuration, + * fallback to builtin value if not possible, + * sleep. + * + */ + +#include /* nanosleep */ +#include /* strtol() */ +#include /* errno */ + +#include "intern.h" /* print_errno */ +#include "messages.h" /* messages */ + +void sleep_before_kill() +{ + char *content; + int tmp; + struct timespec ts; + + if(openreadclose(CINIT_SLEEPFILE,&content) == ORC_OK) { + errno = 0; + tmp = strtol(content, NULL, 10); + if(errno != 0) tmp = SLEEP_KILL; + free(content); + } else { + mini_printf(MSG_BUILTIN_SLEEP,1); + tmp = SLEEP_KILL; + } + + ts.tv_sec = tmp; + ts.tv_nsec = 0; + + if(nanosleep(&ts,NULL) == -1) { + print_errno(MSG_ERR_SLEEP); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/generic/strip_final_newline.c b/software/cinit/browse_source/cinit-0.3pre11/src/generic/strip_final_newline.c new file mode 100644 index 00000000..4629bb9f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/generic/strip_final_newline.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * If the last character is \n, shrink the memory and remove it + * + */ + +#include /* NULL */ +#include /* strchr */ +#include /* alloc */ + +char *strip_final_newline(char *str) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) { + return NULL; + } + + p = strrchr(str,'\n'); + if(p) { + if(*(p+1) == '\0') { + *p = '\0'; /* DO NOT FORGET TO TERMINATE STRING */ + str = realloc(str,(p-str)); + } + } + + return str; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/generic/usage.c b/software/cinit/browse_source/cinit-0.3pre11/src/generic/usage.c new file mode 100644 index 00000000..260b4ea5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/generic/usage.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * usage: tell the world what we want - seriously no capitalism + * usage: tell the user what's wrong and a help text + * + */ + +#include /* _exit() */ +#include "intern.h" /* mini_printf */ + +void usage(char *banner, char *text) +{ + /* print banner + error message */ + mini_printf(banner,1); + mini_printf(text,1); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/include/build_argv.h b/software/cinit/browse_source/cinit-0.3pre11/src/include/build_argv.h new file mode 100644 index 00000000..b61b27a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/include/build_argv.h @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * build **argv + */ + +#ifndef CINIT_BA_HEADER +#define CINIT_BA_HEADER + +/***************************************************************************** + * Defines: return values + */ +enum { + BA_OK, + BA_E_NOTFOUND, + BA_E_PARAMS, + BA_E_ENV, + BA_E_MEM, + BA_E_OTHER +}; + +/***************************************************************************** + * Structures + */ +struct ba_argv { + char **argv; + char **envp; +}; + +/***************************************************************************** + * Functions + */ +int cinit_build_argv(char *basename, struct ba_argv *bav); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/include/cinit.h b/software/cinit/browse_source/cinit-0.3pre11/src/include/cinit.h new file mode 100644 index 00000000..0d817641 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/include/cinit.h @@ -0,0 +1,54 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Header file for external programs (in theory) + */ + +#ifndef CINIT_EXTERNAL_HEADER +#define CINIT_EXTERNAL_HEADER + +/* includes */ +#include /* required for functions */ +#include /* PATH_MAX */ + +/* + * structures: independent of the ipc code! + */ + +/* messages from the client */ +struct cinit_question { + int32_t cmd; + char data[PATH_MAX]; + int32_t options; +}; + +/* messages from cinit */ +struct cinit_answer { + int32_t ret; + int32_t options; + char data[PATH_MAX]; +}; + +/* codes for messages */ +enum { + /* questions */ + CINIT_MSG_QUESTIONS=1000, /* begin questions at 1000 */ + CINIT_MSG_GET_STATUS, /* status of a service */ + CINIT_MSG_GET_VERSION, /* version of cinit */ + + /* answers */ + CINIT_MSG_ANSWERS=2000, /* begin answers at 2000 */ + CINIT_MSG_OK, /* general ok value */ + CINIT_MSG_SVC_UNKNOWN /* Services is not known */ +}; + +/* functions */ +int32_t cinit_get_svc_status(char *); +char *cinit_get_version(void); +int cinit_send_to(struct cinit_question *, struct cinit_answer *); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/include/cmd.h b/software/cinit/browse_source/cinit-0.3pre11/src/include/cmd.h new file mode 100644 index 00000000..ffffdd15 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/include/cmd.h @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Header file for the cmd (cinit management) + */ + +#ifndef CINIT_CMD_HEADER +#define CINIT_CMD_HEADER + +#define CMD_USAGE "cmd - cinit management\n\n" \ + "Usage:\n\ncmd -[ed nw v]\n" \ + " -e: enable service\n" \ + " including dependencies\n" \ + " -d: disable service\n" \ + " including dependencies\n" \ + " -n: without needs\n" \ + " Skip wants when en/disabling\n" \ + " -w: without wants\n" \ + " Skip needs when en/disabling\n" \ + " -s: get status\n" \ + " of specified service\n" \ + " -v: get version\n" \ + " of cinit\n" \ + "" + +#define CMD_OPTIONS "e:d:hnprs:vw" + +#define MSG_KILL "kill()" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/include/comm.h b/software/cinit/browse_source/cinit-0.3pre11/src/include/comm.h new file mode 100644 index 00000000..4fbe8c50 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/include/comm.h @@ -0,0 +1,81 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit (at) schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#ifndef CINIT_COMM_HEADER +#define CINIT_COMM_HEADER + +#include /* PATH_MAX */ +#include /* pid_t */ + +/*********************************************************************** + * Commands the clients may issue to us + * maximum number of commands: 2^8 = 256 + */ +enum commands { + CMD_MIN='A', /* minimum command number */ + CMD_SVC_START, /* the client wants US to start a service */ + CMD_SVC_START_ONLY, /* start this service without dependencies */ + CMD_SVC_START_NEEDS, /* start this service, needs, but no wants */ + CMD_SVC_STOP, /* stop svc and all svcs that need it */ + CMD_SVC_STOP_ONLY, /* we should stop _only_ this service */ + CMD_SVC_STOP_WANTS, /* stop svc, all svcs that need or want it */ + CMD_CHG_STAT, /* the client reports a status change */ /* FIXME: NEEDED? */ + CMD_RESCUE, /* we should start the rescue mode */ /* UNIMPLEMENTED */ + CMD_HALT, /* halt the system */ + CMD_REBOOT, /* reboot the system */ + CMD_POWEROFF, /* poweroff the system */ + CMD_WBOOT, /* shutdown and restart everything */ /* UNIMPLEMENTED */ + CMD_INFO, /* send information about that service */ /* UNIMPLEMENTED */ + CMD_MAX , /* maximum command number */ +}; + +/* old + RT_ERR_COMM, * communication failed * + RT_ERR, * service starting failed * + RT_UNSPEC, * some kind of error, unspecified * + RT_SUCCESS, * successfully started: respawning or once * + RT_SVC_FAILED, * tried earlier, service failed, won't retry * + +*/ + +/*********************************************************************** + * client issues a command: start_command + */ +struct s_cmd { + char cmd; + pid_t pid; +}; + +/*********************************************************************** + * messages from the client + * Prefix: qst_ (question) + */ +struct msg_client { + pid_t pid; /* pid of the telling client */ + char cmd; /* which cmd is issued to us */ + char status; /* status of the service */ + char svc[PATH_MAX]; /* name of the service */ + char svc_orig[PATH_MAX]; /* the service, which wants to start us */ +}; + +/*********************************************************************** + * messages from the server + * Prefix: asw_ (answer) + */ + +/*********************************************************************** + * return short status + */ +struct asw_sstatus { + long mtype; + char status; + char msg[PATH_MAX]; +}; + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/include/intern.h b/software/cinit/browse_source/cinit-0.3pre11/src/include/intern.h new file mode 100644 index 00000000..323dd1fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/include/intern.h @@ -0,0 +1,116 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * internal header + */ + + +#ifndef _CINIT_INTERN_H +#define _CINIT_INTERN_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ +#include "cinit.h" /* structures: answer / question */ + +/*********************************************************************** + * Defines + */ +#define SLASH "/" +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC + +enum { /* FIXME: there are some default defines somewhere for that */ + FD_IN=0, + FD_OUT=1, + FD_ERR=2 +}; + +enum { /* returns of openreadclose */ + ORC_OK, /* everything went fine */ + ORC_ERR_NONEXISTENT, /* file does not exist */ + ORC_ERR_OPEN, /* error opening the file */ + ORC_ERR_READ, + ORC_ERR_CLOSE, + ORC_ERR_MEM +}; + +/* values for execute_sth: + * STRICT: print and error, if .../on does not exist + * NOSTRICT: no .../on is fine + */ +enum { + EXEC_STRICT, + EXEC_NOSTRICT +}; + +enum { + FE_FILE, /* file exists and is a file */ + FE_OTHER, /* file exists, but is no file */ + FE_NOT, /* file does not exist */ + FE_NOLINK, /* file is a broken symbolic link*/ + FE_ERR /* some error occured */ +}; + +/*********************************************************************** + * Paths + */ +#define CINIT_SVCDIR CINIT_DIR SLASH SVCDIR +#define CINIT_INIT CINIT_SVCDIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK +#define CINIT_BIN PREFIX SLASH "sbin" SLASH "cinit" + +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC +#define CINIT_LAST CINIT_CONFDIR SLASH C_LAST +#define CINIT_SLEEPFILE CINIT_CONFDIR SLASH SLEEP_BEFORE_KILL + +/* needed by set_signals */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* functions (used by server and client) */ +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +void usage(char *banner, char *stext); + +int do_svc_name(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* core functions */ +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +int msg_svc_on_off(char *svc, char action); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +pid_t respawn_svc(char *abspath); +char **read_file(char *file); +void sig_terminate(int signal); + +/* communication */ +int read_command(struct cinit_question, struct cinit_answer *); + +/* generic */ +void execute_sth(char *basename); +int execute_and_wait(char *svc); +int path_append(char *path, char *append); +int path_absolute(char *relpath, char *buf, size_t size); +int openreadclose(char *filename, char **where); +char *strip_final_newline(char *str); +int file_exists(char *filename); +void sleep_before_kill(); + +/* util */ +void print_errno(char *text); + +#endif /* _CINIT_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/include/ipc.h b/software/cinit/browse_source/cinit-0.3pre11/src/include/ipc.h new file mode 100644 index 00000000..f10fa998 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/include/ipc.h @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Prototypes for ipc handler + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +/* FIXME: change to cinit/types.h later */ +#include "cinit.h" + +/***************************************************************************** + * Functions: in server + */ +int cinit_ipc_init(void); /* init in init */ +int cinit_ipc_listen(void); /* listen in init */ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + +/***************************************************************************** + * Functions: in clients + */ +int cinit_ipc_logon(void); /* logon to init */ + +int cinit_ipc_connect(void); /* connect to init */ + +int cinit_ipc_csend(struct cinit_question *); /* ask the server */ +int cinit_ipc_cread(struct cinit_answer *); /* read answer */ + +int cinit_ipc_logoff(void); /* logoff */ + +/***************************************************************************** + * Functions: shared + */ + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/include/listing b/software/cinit/browse_source/cinit-0.3pre11/src/include/listing new file mode 100644 index 00000000..edf4b7e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/include/listing @@ -0,0 +1,9 @@ +include/intern.h +include/comm.h +include/config.h +include/ipc.h +include/messages.h +include/os.h +include/reboot.h +include/signals.h +include/svc.h diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/include/messages.h b/software/cinit/browse_source/cinit-0.3pre11/src/include/messages.h new file mode 100644 index 00000000..582d4dc4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/include/messages.h @@ -0,0 +1,161 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit (at) schottelius.org) + * + * part of cLinux/cinit + * + * All messages + */ + +#ifndef _CINIT_MSG_H +#define _CINIT_MSG_H + +/* version */ +#define CINIT_VERSION "cinit-" VERSION +#define MSG_BOOTING CINIT_VERSION ": Booting from " + +#define MSG_DP ": " + +/* OLD Messages to the outside */ +//#define MSG_BIND "bind" +//#define MSG_CONNECT "connect" +//#define MSG_FCNTL "fcntl" +//#define MSG_LISTEN "listen" +//#define MSG_SOCKET "socket" +#define MSG_USAGE_1 ": fast executing, small and simple init " +#define MSG_USAGE_2 "with support for profiles\n" +#define MSG_USAGE_3 "\nError: cinit must be started as PID 1.\n" +#define MSG_USAGE MSG_USAGE_1 MSG_USAGE_2 MSG_USAGE_3 +#define MSG_ERR_FORK "fork" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_OPEN "open" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_READ "read" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" + +#define MSG_ERR_DEPS "Too many dependencies" +#define MSG_ERR_ACCEPT "accept" +#define MSG_ERR_WAITPID "waitpid" +#define MSG_ERR_POLL "poll" +#define MSG_ERR_MODIFY "modify list failed" +#define MSG_ERR_COMM "Communication failed" + +#define MSG_ERR_LESS_ARGS "Too less arguments!" +#define MSG_ERR_BAD_ARGS "Wrong arguments / parameter" +#define MSG_ERR_ARGS_LEN "Wrong parameter length" + +#define LOG_SVC_STOPED "Service stoped" +#define LOG_SVC_ONCE "Started once" +#define LOG_SVC_RESPAWN "Respawns now" +#define LOG_NEED_FAIL "One or more need failed" +#define LOG_SVC_FAILED "Service already failed, not starting." +#define LOG_SVC_NOTEXIST "Service does not exist" + +#define MSG_EXEC_FAILED "Failed to execute " + +#define MSG_RESCUE "Switching to rescue mode ..." +#define MSG_UPDATE "Updating cinit ..." +#define MSG_HOT_REBOOT "Hot reboot in progress ..." + +#define MSG_SHOULD_NOT_HAPPEN "This should not happen, I do not know what todo!" + +/* DEBUG */ +#ifdef DEBUG +# include +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) {} +#endif + +/* macros */ +#define SERVICE_LOG(svc,message) { \ + mini_printf(svc,1); \ + mini_printf(MSG_DP,1); \ + mini_printf(message,1); \ + mini_printf("\n",1); \ +} +#define LOG(s) { \ + mini_printf(s,1); \ + mini_printf("\n",1); \ +} +#define P_START_SERVICE(name) { mini_printf(MSG_START_SVC,1); mini_printf(name,1); mini_printf("\n",1); } +#define P_EXEC_FAILED(name) { mini_printf(MSG_EXEC_FAILED,1); mini_printf(name,1); mini_printf("\n",1); } + +/* NEW (clean) Service status: Messages to the outside */ + +/* services: how they should be printed + * /etc/cinit/svc/long/name: started once + * /etc/cinit/svc/long/name: is respawning + * /etc/cinit/svc/long/name: FAILED (why it happened) + */ + +#define MSG_INTRO_CINIT "cinit:" +#define MSG_INTRO_SPACE MSG_INTRO_CINIT " " +#define MSG_INTRO_SVC MSG_INTRO_CINIT +//#define MSG_INTRO_SVC MSG_INTRO_CINIT "service:" +#define MSG_INTRO_STOP MSG_INTRO_CINIT "stop: " +#define MSG_INTRO_EXEC MSG_INTRO_CINIT "exec: " + +/* FIXME: remove/append, but no intro! */ +#define MSG_INTRO_FAIL "FAILED " +#define MSG_INTRO_RESPAWN MSG_INTRO_CINIT "respawn: " +#define MSG_INTRO_OK MSG_INTRO_CINIT "ok: " + +#define MSG_SVC_FORK "fork() failed" +#define MSG_SVC_NEED_FAIL MSG_INTRO_FAIL "Needs failed for service" +#define MSG_SVC_FAIL MSG_INTRO_FAIL "Service failed!" + + +#define MSG_BUILTIN_SLEEP MSG_INTRO_STOP "Using built-in sleep" + +#define MSG_TREE_EXEC MSG_INTRO_SPACE "Execution of reverse service tree\n" + +/* general errors */ +#define MSG_GETCWD "Getcwd failed! Your system is most likely broken!" +#define MSG_FATAL_PANIC MSG_INTRO_SPACE "I tried everything, but even panic() failed: " +#define MSG_ERR_SLEEP MSG_INTRO_SPACE "Sleep did not succeed" +#define MSG_GETTIMEOFDAY MSG_INTRO_SPACE "gettimeofday() failed!" + +/* execution */ +//#define MSG_EXECUTING MSG_INTRO_EXEC + +/* stat() errors */ +#define MSG_NONREGULAR "Is not a regular file." +#define MSG_BROKENLINK "Is a broken link." + +/* Service messages */ +#define MSG_SVC_START "Starting... " +#define MSG_SVC_STOP "Stoping... " +#define MSG_SVC_RESTART "Restarted." +#define MSG_SVC_SLEEP "Sleeping before restart" +#define MSG_SVC_OK_ONCE "Started once." +#define MSG_SVC_OK_RESPAWN "Is respawning." + +/* Status messages */ +#define MSG_SHUTDOWN_START MSG_INTRO_STOP "\nBeginning the shutdown process..." +#define MSG_SHUTDOWN_SVC MSG_INTRO_STOP "Shutting down services now..." +#define MSG_SHUTDOWN_KILL MSG_INTRO_STOP "Killing remaining processes..." +#define MSG_SHUTDOWN_LAST MSG_INTRO_STOP "Executing final service..." +#define MSG_POWER_OFF MSG_INTRO_STOP "Powering off..." +#define MSG_HALT MSG_INTRO_STOP "Halting system ..." +#define MSG_REBOOT MSG_INTRO_STOP "Rebooting ..." + +/* client messages */ +#define MSG_HALT_KILL "halt.kill" +#define MSG_REBOOT_KILL "reboot.kill" +#define MSG_POWEROFF_KILL "poweroff.kill" + + +/* reboot */ +#define MSG_TERMKILL MSG_INTRO_FAIL "SIGTERM" +#define MSG_KILLBILL MSG_INTRO_FAIL "SIGKILL" + +#endif /* _CINIT_MSG_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/include/os.h b/software/cinit/browse_source/cinit-0.3pre11/src/include/os.h new file mode 100644 index 00000000..b3320c0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/include/os.h @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * os specific functions + */ + +#ifndef CINIT_OS_HEADER +#define CINIT_OS_HEADER + +/***************************************************************************** + * Functions + */ +void cinit_halt(void); +void cinit_poweroff(void); +void cinit_reboot(void); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/include/reboot.h b/software/cinit/browse_source/cinit-0.3pre11/src/include/reboot.h new file mode 100644 index 00000000..cd8a345e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/include/reboot.h @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot specific functions + * + */ + +#ifndef CINIT_REBOOT_HEADER +#define CINIT_REBOOT_HEADER + +/***************************************************************************** + * the main reboot function + */ +void do_reboot(int signal); + + +/***************************************************************************** + * os specific functions + */ +void cinit_reboot(void); +void cinit_halt(void); +void cinit_poweroff(void); + + +/***************************************************************************** + * Functions: abstract do_reboot + */ +#define cinit_do_reboot() do_reboot(SIGHUP) +#define cinit_do_halt() do_reboot(SIGUSR1) +#define cinit_do_poweroff() do_reboot(SIGTERM) + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/include/signals.h b/software/cinit/browse_source/cinit-0.3pre11/src/include/signals.h new file mode 100644 index 00000000..a51e402d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/include/signals.h @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Define signals to use: needs signal.h to be included before. + */ + +#ifndef CINIT_SIGNALS_HEADER +#define CINIT_SIGNALS_HEADER + +#define SIG_CINIT_HALT SIGUSR1 +#define SIG_CINIT_POWEROFF SIGTERM +#define SIG_CINIT_REBOOT SIGHUP + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/include/svc.h b/software/cinit/browse_source/cinit-0.3pre11/src/include/svc.h new file mode 100644 index 00000000..86c83e62 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/include/svc.h @@ -0,0 +1,130 @@ +/*********************************************************************** + * + * 2006,2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + + +#ifndef _CINIT_SVC_H +#define _CINIT_SVC_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* service list */ +struct listitem { + struct listitem *prev; /* previous item */ + struct listitem *next; /* next item */ + + char *abs_path; /* name of service */ + long int status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + time_t start; /* time the process was started last time */ + + + struct dep *wanted; /* list of services that want this service */ + struct dep *needed; /* list of services that need this service */ + + struct dep *wants; /* list of services that this service wants */ + struct dep *needs; /* list of services that this service needs */ +}; + +/* list of dependencies */ +struct dep { + struct dep *prev; + struct dep *next; + struct listitem *svc; +}; + +/* variables */ +extern struct dep *svc_init; /* the services to start */ +extern struct listitem *svc_list; /* the list of services */ + +/* list functions */ +struct listitem *list_insert(char *path, int status); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); +struct listitem *list_search(char *path); +struct listitem *list_search_pid(pid_t pid); +//int list_display_all(); /* debug only */ + + +/* service */ +struct listitem *svc_create(char *svc); +struct listitem *gen_svc_tree(char *svc); +int check_add_deps(struct listitem *svc, int type); +void dep_entry_add(struct dep **list, struct dep *new); +struct dep *dep_entry_del(struct dep *del); +int tree_exec(struct dep *start); +int svc_set_status(struct listitem *li, int status); +int svc_should_respawn(struct listitem *li); +int svc_needs_status(struct listitem *li); +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type); +struct dep *dep_create(struct listitem *svc); +void svc_success(struct listitem *li); +void svc_fail(struct listitem *li); +void svc_report_status(char *svc, char *msg, char *err); +void svc_start(struct listitem *li, int delay); +void shutdown_services(struct listitem *start); + + +/*********************************************************************** + * to decide whether to operate on needs or wants + */ +enum dep_types { + DEP_WANTS, + DEP_NEEDS +}; + +/*********************************************************************** + * status of a service and return codes - errors and success + */ +enum svc_status_old { + ST_TMPNOW=1, /* the client is now starting the service NEEDED??? */ + ST_NOTEXIST, /* service does not exist */ + + ST_NEED_FAIL, /* failed to start a need for this service */ + ST_FAIL, /* failed to start service */ + + ST_OFF, /* service is off */ + ST_OFF_ALL, /* service and those that need it are off */ + ST_OFF_ALL_F, /* same, but something failed */ + ST_OFF_WANTS, /* service + those that need or want it are off */ + ST_OFF_WANTS_F, /* same, but something failed */ + + ST_TMP, /* currently working on it */ + ST_ONCE, /* executed once */ + ST_RESPAWN /* running and respawning */ +}; + +/*********************************************************************** + * The real status types a service may have (ignore above) + * We have 32 Bits, we should use them ;-) + */ +enum svc_status { + /* first define basics */ + ST_SH_ONCE = 0x1, /* service SHould be started once */ + ST_SH_RESPAWN = 0x2, /* service SHould respawn */ + ST_ONCE_OK = 0x4, /* service was successfully started once */ + ST_ONCE_FAIL = 0x8, /* service failed to start */ + ST_RESPAWNING = 0x10, /* service is respawning */ + ST_NEED_FAILD = 0x20, /* this service is not started, need failed */ + ST_IN_LIST = 0x40, /* this service is being started (= in list) */ + ST_BAD_ERR = 0x80, /* some kind of error that SHOULD NOT happen */ + ST_ONCE_RUN = 0x100, /* the once process is currently running */ + ST_NOT_EXIST = 0x200 /* there's no such service in our database */ +}; + +/*********************************************************************** + * Possibilities the needs of a service may have + */ +enum svc_needs_status { + SNS_NEEDS_STARTED = 1, /* all needs are started. We may start, too */ + SNS_NEEDS_FAILED, /* one ore more needs failed */ + SNS_NEEDS_UNFINISHED /* one ore more needs are not yet started */ +}; +#endif /* _CINIT_SVC_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq-rt/README b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq-rt/README new file mode 100644 index 00000000..cc1a1b7e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq-rt/README @@ -0,0 +1,2 @@ +This implementation uses the new realtime inferface of +posix instead of the old one functions. diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq-rt/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq-rt/cinit_ipc_init.c new file mode 100644 index 00000000..ef22b6d1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq-rt/cinit_ipc_init.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include + +#include "cinit.h" +#include "config.h" +#include "msgq-rt.h" + +int cinit_ipc_init(void) +{ + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq-rt/mq_open.c b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq-rt/mq_open.c new file mode 100644 index 00000000..445e7dc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq-rt/mq_open.c @@ -0,0 +1,20 @@ +#include +#include + +int main() +{ + mqd_t readq = mq_open("/test",O_RDWR|O_CREAT|O_EXCL); + //mqd_t readq = mq_open("/bin/ls",O_RDWR|O_CREAT|O_EXCL); + + if(readq == -1) { + perror("oh nein"); + return 1; + } + mqd_t writeq = mq_open("/bin/cp",O_WRONLY|O_CREAT|O_EXCL); + if(readq == -1) { + perror("oh oh nein"); + return 1; + } +} + + diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq-rt/msgq-rt.h b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq-rt/msgq-rt.h new file mode 100644 index 00000000..d09a2808 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq-rt/msgq-rt.h @@ -0,0 +1,39 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +#define MSGQ_PATHNAME "/cinit" /* identifier */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + pid_t pid; + struct msg_client msg; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server_short { + long mtype; + struct asw_sstatus answer; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/README.text b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/README.text new file mode 100644 index 00000000..c9a1acf2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/README.text @@ -0,0 +1,20 @@ +cinit/src/ipc/msgq: About this msqg implementation +=================================================== +Nico Schottelius +0.1, Initial Version from 2006-08-04 +:Author Initials: NS + +Intro here + +Introduction +------------ + +cinit opens a + +Files +----- +- README.text: This file +- cinit_init_ipc.c: Init +msgq.h +objects + diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_cread.c b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_cread.c new file mode 100644 index 00000000..f2c23568 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_cread.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Client reads messages from cinit + * + */ + +/* FIXME: cleanup headers */ +#include /* ftok */ +#include /* msgget */ + +#include /* memcpy() */ + +#include "intern.h" /* print_errno */ +#include "msgq.h" /* __cinit_cpid */ + + #include +int cinit_ipc_cread(struct cinit_answer *buf) +{ + struct msgq_server msg; + + if(msgrcv(mq_in, &msg, sizeof(msg.asr), __cinit_cpid, 0) == -1) { + /* FIXME: msg* */ + print_errno("msgrcv,cread"); + return 0; + } + memcpy(buf, &(msg.asr), sizeof(*buf)); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_csend.c b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_csend.c new file mode 100644 index 00000000..1f173bef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_csend.c @@ -0,0 +1,37 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Client sends messages to cinit + * + */ + +/* FIXME: cleanup headers */ +#include /* ftok */ +#include /* msgget */ + +#include /* memcpy() */ +#include "config.h" +#include "intern.h" /* print_errno */ +#include "msgq.h" /* structure */ + +int cinit_ipc_csend(struct cinit_question *qsn) +{ + struct msgq_client msg; + + msg.mtype = 1; /* cinit = 1 */ + msg.w.pid = __cinit_cpid; + + /* copy structure into the msgq-structure */ + memcpy(&(msg.w.qsn), qsn, sizeof(msg.w.qsn)); + + if(msgsnd(mq_out, &msg, sizeof(msg.w), 0) == -1) { + /* FIXME: msg */ + print_errno("msgsnd,csend"); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_destroy.c b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_destroy.c new file mode 100644 index 00000000..aa0f27c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_destroy.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Destory ipc mechanism, cinit is gonna die soon. + * + */ + +#include /* msgget */ +#include /* NULL */ + +#include "msgq.h" /* mq_in, mq_out */ +#include "intern.h" /* print_errno */ + +void cinit_ipc_destroy(void) +{ + if(msgctl(mq_in,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } + if(msgctl(mq_out,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_init.c new file mode 100644 index 00000000..67edc538 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_init.c @@ -0,0 +1,46 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "intern.h" /* print_errno */ +#include "msgq.h" /* message queue */ + +int cinit_ipc_init(void) +{ + key_t k_tmp; + + /* to_server */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + if(k_tmp == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + mq_in = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_in == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + /* to_client */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + if(k_tmp == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + mq_out = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_listen.c new file mode 100644 index 00000000..b43c515f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_listen.c @@ -0,0 +1,74 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* printf() */ + +#include /* ftok */ +#include /* msgget */ +#include /* errno */ + +#include "intern.h" /* print_errno */ +#include "config.h" +#include "msgq.h" /* structs */ +#include "comm.h" /* the cmd struct */ + +int cinit_ipc_listen(void) +{ + int tmp; + struct msgq_client qsn; + struct msgq_server asr; + + while (1) { + qsn.mtype = 1; /* listen only to mtype = 1, == init */ + tmp = msgrcv(mq_in, &qsn, sizeof (qsn.w), 0, 0); + + if(tmp == -1) { + if(errno != EINTR) { + print_errno(MSG_MSGQ_MSGRCV); + } + continue; + } + + printf("pid: %d, cmd: %d\n",qsn.w.pid, qsn.w.qsn.cmd); + + if(!read_command(qsn.w.qsn, &(asr.asr))) { + /* FIXME: msg */ + printf("read command failed\n"); + } + + /* answer something for now */ + asr.mtype = qsn.w.pid; + /* FIXME: do different things on differen errnos ... */ + if(msgsnd(mq_out, &asr, sizeof(asr.asr), 0) == -1) { + print_errno("msgsend/answer"); + } + + /* + + switch(msg.cmd) { + case CINIT_MSG_GET_STATUS: + break; + + } + + * send back: use pid as the message type + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + return 0; + } */ + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_logoff.c b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_logoff.c new file mode 100644 index 00000000..ac8306d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_logoff.c @@ -0,0 +1,14 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Disconnect from cinit + * + */ + +int cinit_ipc_logoff(void) +{ + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_logon.c b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_logon.c new file mode 100644 index 00000000..b085dc87 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/cinit_ipc_logon.c @@ -0,0 +1,46 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ +#include /* getpid() */ + +#include "config.h" +#include "intern.h" /* print_errno */ +#include "msgq.h" /* msgq constants */ + +int cinit_ipc_logon(void) +{ + key_t k_in, k_out; /* FIXME: remove one variable */ + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + k_out = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* FIXME: do not create new queue => cinit should have created them! */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + /* we use the pid as identifier, so initialise it here */ + /* FIXME: check whether posix includes transfer of pid anyway */ + __cinit_cpid = getpid(); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/msgq.h b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/msgq.h new file mode 100644 index 00000000..314e3e9a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/msgq.h @@ -0,0 +1,62 @@ +/* + * (c) 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * part of cinit + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER +/* FIXME: add _cinit_ to it, we may be in client namespace now! */ + +//#include /* structures */ +#include /* structures */ + +/*********************************************************************** + * configuration + */ + +#define MSGQ_PATHNAME "/bin/sh" /* should be on every *nix */ +#define MSGQ_TO_SERVER 'i' /* also for ftok */ +#define MSGQ_TO_CLIENT 'o' /* also for ftok */ +#define MSGQ_PERMS 0660 /* queue permissions */ + +/*********************************************************************** + * global variables: FIXME: rename, we're in client namespace! + */ +int mq_in; /* input */ +int mq_out; /* output */ +pid_t __cinit_cpid; /* our (p)id*/ + +/*********************************************************************** + * structures + */ + +/* wrapper needed: msgsnd wants size of everything, + * everything = struct|array after mtype + */ +struct msgq_wrapper { + pid_t pid; + struct cinit_question qsn; +}; + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + struct msgq_wrapper w; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server { + long mtype; + struct cinit_answer asr; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_FTOK "ftok" +#define MSG_MSGQ_MSGGET "msgget" +#define MSG_MSGQ_MSGRCV "msgrcv" +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/objects b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/objects new file mode 100644 index 00000000..7c99d09f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/msgq/objects @@ -0,0 +1,5 @@ +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/socket+linux-tmpfs/begin_msg.c b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/socket+linux-tmpfs/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/socket+linux-tmpfs/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c new file mode 100644 index 00000000..88c310f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c @@ -0,0 +1,125 @@ +/* + * (c) 2005, 2006 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * create a socket, when we recieved a signal + */ +int main(int argc, char **argv) +{ + struct sockaddr_un addr; + struct pollfd plist; + char *initdir; + + list = NULL; /* list of services is empty currently */ + initdir = CINIT_INIT; /* default init dir */ + + cpid = getpid(); + if(cpid != 1) { + usage(MSG_USAGE,MSG_NOT_ONE); + } + + set_signals(ACT_SERV); /* set signal handlers */ + + /* read args, profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* tell the world we are there FIXME: do we really need three calls? */ + mini_printf(MSG_CINIT,1); mini_printf(initdir,1); mini_printf("\n",1); + + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c new file mode 100644 index 00000000..a174d78d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c @@ -0,0 +1,141 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int socket) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + while ( (nsock = accept(socket,(struct sockaddr *) NULL, + (socklen_t *) NULL)) != -1) { + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = ST_FAIL; + } else { + status = RT_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP (RESPAWNING) *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; + list_tmp = list_search(buf); + + /* FIXME: + - handle off + - handle switching off once services + - perhaps remove old cinit code, which has respawing childs + */ + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + /* kill cinit watcher, which kills the real process */ + kill(list_tmp->pid,SIGTERM); + + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + } + + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + status = ST_FAIL; + } else { /* return status */ + status = list_tmp->status; + } + } else { /* no service there */ + status = RT_NOTEXIST; + } + do_result(nsock,&status); + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + SERVICE_LOG(buf,MSG_ERR_MODIFY); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + case CMD_UPDATE: + sig_reboot(SIGCONT); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } + + /* hier kommt man haeufiger herein, interrupted system call */ + if( errno != EAGAIN && errno != EINTR) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/ipc/socket+linux-tmpfs/connect_sock.c b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/socket+linux-tmpfs/connect_sock.c new file mode 100644 index 00000000..2c2d45de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/ipc/socket+linux-tmpfs/connect_sock.c @@ -0,0 +1,38 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include /* memset, strcpy */ + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/README b/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/README new file mode 100644 index 00000000..096cc779 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/README @@ -0,0 +1,22 @@ +Build a small library that can be used by different applications, that provides: + + Constants / Macros: + for cinit_halt: + CINIT_HALT + CINIT_REBOOT + CINIT_POWEROFF + + for cinit_svc_start/stop: + CINIT_SVC_NORMAL + CINIT_SVC_NEEDS + CINIT_SVC_ONLY + CINIT_SVC_WANTS + + Functions: + void cinit_halt(int how); + int cinit_svc_start(char *svc, int how); + int cinit_svc_stop(char *svc, int how); + int cinit_svc_stop(char *svc, int how); + +This lib must then include: + - choosen ipc functions diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_enable_service.c b/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_enable_service.c new file mode 100644 index 00000000..f357d7bf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_enable_service.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * enables a service + */ + + +#include "" /* include global header */ + +int cinit_enable_service(char *name, int how) +{ + int tmp; + + /* every client has to connect to cinit first */ + tmp = cinit_ipc_logon(); + if(!tmp) return 0; + + switch(how) { + case 'p': /* power off */ + break; + + default: + break; + } + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_get_svc_status.c b/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_get_svc_status.c new file mode 100644 index 00000000..07344586 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_get_svc_status.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Retrieves status of a service + */ + + +#include /* malloc */ +#include /* str* */ +#include /* integers */ + +#include "cinit.h" /* header for clients */ + +/* returns either the status (>0) + * or -1 on memory error + */ +int32_t cinit_get_svc_status(char *name) +{ + struct cinit_question ask; + struct cinit_answer answer; + + ask.cmd = CINIT_MSG_GET_STATUS; + strcpy((ask.data), name); + ask.options = 0; + + cinit_send_to(&ask, &answer); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_get_version.c b/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_get_version.c new file mode 100644 index 00000000..557982d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_get_version.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Retrieves version of cinit + */ + +#include /* malloc */ +#include /* str*, memset */ +#include /* NULL */ + +#include "cinit.h" /* header for clients */ + +char *cinit_get_version() +{ + struct cinit_question ask; + struct cinit_answer answer; + char *ret; + + memset(&ask,'\0',sizeof(ask)); + ask.cmd = CINIT_MSG_GET_VERSION; + + if(!cinit_send_to(&ask, &answer)) return NULL; + + ret = malloc(strlen(answer.data) +1); + if(!ret) return NULL; + strcpy(ret,answer.data); + + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_halt.c b/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_halt.c new file mode 100644 index 00000000..c388ba89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_halt.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * cinit_halt(): call for library + */ + + +#include "" /* include global header */ +int cinit_halt(int how) +{ + switch(how) { + case 'p': /* power off */ + break; + + default: + break; + } + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_read_from.c b/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_read_from.c new file mode 100644 index 00000000..54499be3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_read_from.c @@ -0,0 +1,23 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * read data from cinit to the client + */ + + +#include "ipc.h" /* IPC */ + +/* gets a bunch of bytes and returns the answer from cinit */ +int cinit_read_from(char **dest, int len) +{ + if(!cinit_ipc_logon()) return NULL; + if(!cinit_ipc_connect()) return NULL; + + /* FIXME: add length to ipc function? */ + if(!cinit_ipc_csend(data)) return NULL; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_send_to.c b/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_send_to.c new file mode 100644 index 00000000..49edc481 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/libcinit/cinit_send_to.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * sends data from the client to cinit + */ + + +#include "ipc.h" /* IPC */ +#include "cinit.h" /* struct cinit_message */ + +int cinit_send_to(struct cinit_question *data, struct cinit_answer *res) +{ + if(!cinit_ipc_logon()) return 0; + if(!cinit_ipc_csend(data)) return 0; + if(!cinit_ipc_cread(res)) return 0; + if(!cinit_ipc_logoff()) return 0; + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/object_lists/cinit b/software/cinit/browse_source/cinit-0.3pre11/src/object_lists/cinit new file mode 100644 index 00000000..a19741e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/object_lists/cinit @@ -0,0 +1,51 @@ +core/build_argv.o +core/cinit.o +core/panic.o +core/set_signals.o +core/do_reboot.o +core/sig_child.o +generic/execute_sth.o +generic/file_exists.o +generic/mini_printf.o +generic/path_absolute.o +generic/path_append.o +generic/print_errno.o +generic/openreadclose.o +generic/strip_final_newline.o +generic/sleep_before_kill.o +generic/execute_and_wait.o +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +svc/gen_svc_tree.o +svc/gen_halt_tree.o +svc/list_delete.o +svc/list_insert.o +svc/list_search.o +svc/list_search_pid.o +svc/svc_create.o +svc/check_add_deps.o +svc/dep_entry_add.o +svc/dep_entry_del.o +svc/shutdown_services.o +svc/tree_exec.o +svc/svc_set_status.o +svc/svc_should_respawn.o +svc/svc_needs_status.o +svc/dep_needs_wants_add.o +svc/dep_create.o +svc/svc_success.o +svc/svc_report_status.o +svc/svc_start.o +svc/svc_fail.o +comm/read_command.o diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/object_lists/cmd b/software/cinit/browse_source/cinit-0.3pre11/src/object_lists/cmd new file mode 100644 index 00000000..48a8211b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/object_lists/cmd @@ -0,0 +1,10 @@ +client/cmd.o +generic/print_errno.o +generic/mini_printf.o +libcinit/cinit_get_svc_status.o +libcinit/cinit_get_version.o +libcinit/cinit_send_to.o +ipc/current/cinit_ipc_logon.o +ipc/current/cinit_ipc_csend.o +ipc/current/cinit_ipc_cread.o +ipc/current/cinit_ipc_logoff.o diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/object_lists/halt.kill b/software/cinit/browse_source/cinit-0.3pre11/src/object_lists/halt.kill new file mode 100644 index 00000000..e5b12a36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/object_lists/halt.kill @@ -0,0 +1,3 @@ +client/halt.kill.o +generic/print_errno.o +generic/mini_printf.o diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/object_lists/poweroff.kill b/software/cinit/browse_source/cinit-0.3pre11/src/object_lists/poweroff.kill new file mode 100644 index 00000000..306fc0bf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/object_lists/poweroff.kill @@ -0,0 +1,3 @@ +client/poweroff.kill.o +generic/print_errno.o +generic/mini_printf.o diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/object_lists/reboot.kill b/software/cinit/browse_source/cinit-0.3pre11/src/object_lists/reboot.kill new file mode 100644 index 00000000..f851badf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/object_lists/reboot.kill @@ -0,0 +1,3 @@ +client/reboot.kill.o +generic/print_errno.o +generic/mini_printf.o diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/os/freebsd/halt.c b/software/cinit/browse_source/cinit-0.3pre11/src/os/freebsd/halt.c new file mode 100644 index 00000000..37064cc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/os/freebsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/os/freebsd/objects b/software/cinit/browse_source/cinit-0.3pre11/src/os/freebsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/os/freebsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/os/freebsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre11/src/os/freebsd/poweroff.c new file mode 100644 index 00000000..c73dd079 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/os/freebsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWEROFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/os/freebsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre11/src/os/freebsd/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/os/freebsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/os/linux/halt.c b/software/cinit/browse_source/cinit-0.3pre11/src/os/linux/halt.c new file mode 100644 index 00000000..5ee3eb53 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/os/linux/halt.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * How to halt the system + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT_SYSTEM); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/os/linux/objects b/software/cinit/browse_source/cinit-0.3pre11/src/os/linux/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/os/linux/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/os/linux/poweroff.c b/software/cinit/browse_source/cinit-0.3pre11/src/os/linux/poweroff.c new file mode 100644 index 00000000..c7d2b1c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/os/linux/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff the system + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWER_OFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/os/linux/reboot.c b/software/cinit/browse_source/cinit-0.3pre11/src/os/linux/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/os/linux/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/os/netbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre11/src/os/netbsd/halt.c new file mode 100644 index 00000000..972aecf9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/os/netbsd/halt.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_halt(void) +{ + reboot(RB_HALT,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/os/netbsd/objects b/software/cinit/browse_source/cinit-0.3pre11/src/os/netbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/os/netbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/os/netbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre11/src/os/netbsd/poweroff.c new file mode 100644 index 00000000..17d7b259 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/os/netbsd/poweroff.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_poweroff(void) +{ + reboot(RB_HALT|RB_POWERDOWN,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/os/netbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre11/src/os/netbsd/reboot.c new file mode 100644 index 00000000..14313e17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/os/netbsd/reboot.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/os/openbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre11/src/os/openbsd/halt.c new file mode 100644 index 00000000..37064cc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/os/openbsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/os/openbsd/objects b/software/cinit/browse_source/cinit-0.3pre11/src/os/openbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/os/openbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/os/openbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre11/src/os/openbsd/poweroff.c new file mode 100644 index 00000000..bf4120e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/os/openbsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_HALT | RB_POWERDOWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/os/openbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre11/src/os/openbsd/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/os/openbsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/check_add_deps.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/check_add_deps.c new file mode 100644 index 00000000..36d8a2cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/check_add_deps.c @@ -0,0 +1,128 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +/* FIXME: clean headers, check: + * getcwd */ +#include + +#include +#include +#include +#include +#include +#include +#include + + +#include /* PATH_MAX */ +#include /* malloc */ +#include /* strcpy */ + +#include "intern.h" /* mini_printf */ +#include "messages.h" +#include "svc.h" + +int check_add_deps(struct listitem *svc, int type) +{ + char buf[PATH_MAX+1]; + char oldpath[PATH_MAX+1]; + struct dirent *tdirent; + struct dep *deps = NULL; + struct listitem *new_svc; + DIR *d_tmp; + + /* remember where we started */ + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + /* FIXME remove in production */ + D_PRINTF("CAD::"); + D_PRINTF(svc->abs_path); + D_PRINTF("\n"); + + /* Create path */ + strcpy(buf,svc->abs_path); + if(type == DEP_NEEDS) { + if(!path_append(buf,C_NEEDS)) return 0; + } else { + if(!path_append(buf,C_WANTS)) return 0; + } + + d_tmp = opendir(buf); + if(d_tmp == NULL) { + if(errno != ENOENT) { + print_errno(buf); + return 0; + } + return 1; /* it's fine when there's no dependencies */ + } + + if(chdir(buf) == -1) { /* change to needs or wants */ + print_errno(buf); + return 0; + } + + while((tdirent=readdir(d_tmp))!=NULL) { + if(*(tdirent->d_name) == '.') continue; /* ignore .* */ + + /* skip non-working directories / broken links + * path_absolute reports errors on failure */ + if(!path_absolute(tdirent->d_name,buf,PATH_MAX+1)) continue; + + /* 1. create the service we depend on + * 2. initialize its dependencies + */ + if(!(new_svc = gen_svc_tree(buf))) return 0; + + /* We need ALL dependencies, as we are called only once + * per service; no need to test that first! + * + * And the other service CANNOT know anything about us yet, + * so we always add us to its list. + */ + + /* Dependencies: + * - a.needs b; add b to the list of dependencies. + * - a.needs b; add a to the list of needed by b. + * + * 1. check whether the dependency already exists + * 2. otherwise add it + * 3. do it once for needs, once for needed_by + */ + + /* create a dependency entry containing us */ + deps = dep_create(svc); + if(!deps) return 0; + + if(type == DEP_NEEDS) { + dep_entry_add(&(new_svc->needed),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->needs),deps); + } else { + dep_entry_add(&(new_svc->wanted),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->wants),deps); + } + } + if(chdir(oldpath) == -1) { + print_errno(buf); + return 0; + } + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/dep_create.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/dep_create.c new file mode 100644 index 00000000..691d66b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/dep_create.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Create dependency + */ + +#include /* NULL */ +#include /* malloc() */ +#include "svc.h" /* structs */ + +/* search for an entry by path, reverse: from end to the beginning */ +struct dep *dep_create(struct listitem *svc) +{ + struct dep *entry; + + entry = malloc(sizeof(struct dep)); + if(!entry) return NULL; + entry->svc = svc; + + return entry; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/dep_entry_add.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/dep_entry_add.c new file mode 100644 index 00000000..2ac16443 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/dep_entry_add.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include "svc.h" /* types */ + +/* + * list: pointer to the list + * new: pointer to data to insert (already filled up) + * + * We add the new element BEFORE the existing element! + */ +void dep_entry_add(struct dep **deplist, struct dep *new) +{ + if(*deplist == NULL) { /* new list */ + *deplist = new; + (*deplist)->prev = *deplist; + (*deplist)->next = *deplist; + } else { /* already existing */ + new->next = *deplist; /* new-> first */ + new->prev = (*deplist)->prev; /* last <- new */ + (*deplist)->prev->next = new; /* last -> new */ + (*deplist)->prev = new; /* new <- first */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/dep_entry_del.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/dep_entry_del.c new file mode 100644 index 00000000..ab822a73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/dep_entry_del.c @@ -0,0 +1,37 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include /* free() */ + +#include "svc.h" /* struct *dep */ + +/* + * tmp: pointer to data to remove (must not be NULL) + * + * Returns either the next object or NULL if there's no next object + */ +struct dep *dep_entry_del(struct dep *del) +{ + struct dep *tmp; + + /* last service in the list */ + if(del->next == del && del->prev == del) { + tmp=NULL; + } else { + /* remove from list */ + del->prev->next = del->next; + del->next->prev = del->prev; + tmp = del->next; + } + + free(del); + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/dep_needs_wants_add.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/dep_needs_wants_add.c new file mode 100644 index 00000000..58e18b14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/dep_needs_wants_add.c @@ -0,0 +1,65 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Add all wants or needs from a specific service to dep list + * -> this builds the needs and needed_by and + * -> or this builds the wants and wanted_by and + * + * This function is used to fillup the starting list with dependencies + * after a service has sucessfully been executed. + */ + +#include /* NULL */ + +#include "svc.h" /* struct *dep */ + +/* + * list: pointer to the list + * svc: pointer to data to the service + */ + +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type) +{ + struct dep *tmp, *new, *end; + + if(type == DEP_NEEDS) { + end = svc->needed; + } else { + end = svc->wanted; + } + + /* Place to the first dependency of this service */ + tmp = end; + if(tmp != NULL) { + do { + /* Add service to the starter list, which + * - should be started once + * - should be respawned (both VIRGIN services!) + * - and which are not already in the list! + */ + if(((tmp->svc->status & ST_SH_ONCE) || + (tmp->svc->status & ST_SH_RESPAWN)) && + !(tmp->svc->status & ST_IN_LIST)) { + new = dep_create(tmp->svc); + if(!new) return 0; + tmp->svc->status |= ST_IN_LIST; + dep_entry_add(list,new); + } + /* FIXME: Clearify if we should go forward or backwards? + * this decision will influence starting order + * and may thereby add a minimal mount of speed enhancement + * + * As far as I can see it is not predictable, which way is + * better, because it heavily depends on the other services. + * + * If you know better, provide me with a patch ;-) + */ + tmp = tmp->next; + } while(tmp != end); + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/gen_halt_tree.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/gen_halt_tree.c new file mode 100644 index 00000000..fc297de7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/gen_halt_tree.c @@ -0,0 +1,44 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * This function reads the full service tree and generates + * a list of services to begin shutdown (those that are not + * wanted or needed by any other service). + */ + +#include /* NULL */ + +#include "svc.h" /* structs */ +#include "intern.h" /* structs */ + +struct dep *gen_halt_list(struct listitem *svc_tree) +{ + struct dep *list = NULL, *new = NULL; + struct listitem *tmp; + + /* no tree? nothing to shutdown. */ + if(!svc_tree) { + return NULL; + } + + /* find all services that do not depend on other services: + * - empty wants? (currently ignore them) + * - empty needs! + */ + tmp = svc_tree; + do { + if(tmp->needs == NULL) { + /* create new dependency */ + new = dep_create(tmp); + if(!new) return NULL; + + dep_entry_add(&list,new); + } + tmp = tmp->next; + } while(tmp != svc_tree); + + return list; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/gen_svc_tree.c new file mode 100644 index 00000000..80ea6463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/gen_svc_tree.c @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +#include + +#include "intern.h" /* functions */ +#include "svc.h" + +struct listitem *gen_svc_tree(char *svc) +{ + struct listitem *li; + struct dep *deps; + + /* only do something if the service is not already known */ + if((li=list_search(svc))) return li; + + /* create a template, so other instances won't try to recreate us */ + if(!(li=svc_create(svc))) return NULL; + + if(!check_add_deps(li,DEP_NEEDS)) return NULL; + if(!check_add_deps(li,DEP_WANTS)) return NULL; + + /* no dependencies? then you are a start service */ + if(!li->wants && !li->needs) { + deps = dep_create(li); + if(!deps) return NULL; + dep_entry_add(&svc_init,deps); + + /* Mark it as being in the startup list, so it does not + * get added again in a dep_needs_wants_add call */ + li->status |= ST_IN_LIST; + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_delete.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_delete.c new file mode 100644 index 00000000..d036b979 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_delete.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* free */ +#include "intern.h" /* list_search */ +#include "svc.h" /* listitem */ + +/* ... */ +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if(tmp == NULL) { + return 0; + } + + tmp->next->prev = tmp->prev; + tmp->prev->next = tmp->next; + + free(tmp->abs_path); + free(tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_display_all.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_display_all.c new file mode 100644 index 00000000..4955acbb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_display_all.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Show all list elements - mainly for debugging + */ + +#include /* NULL */ + +#include "messages.h" /* D_PRINTF */ +#include "svc.h" + +int list_display_all() +{ + struct listitem *tmp; + + if(svc_list == NULL) { + return 0; + } else { + tmp = svc_list; + } + + do { + D_PRINTF("Service: "); + D_PRINTF(tmp->abs_path); + D_PRINTF("\n"); + + tmp = tmp->prev; + } while(tmp != svc_list); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_insert.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_insert.c new file mode 100644 index 00000000..a0ad6f2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_insert.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* malloc */ +#include /* bzero / memset */ +#include "svc.h" /* the list pointer */ + +struct listitem *list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc(sizeof(struct listitem)); + if(tmp == NULL) return NULL; + memset(tmp, '\0', sizeof(struct listitem)); + + if(svc_list == NULL) { /* list is empty, we have to init it */ + svc_list = tmp; + svc_list->next = svc_list; + svc_list->prev = svc_list; + } else { /* list has members,add this one */ + tmp->next = svc_list; /* begin after the new element */ + tmp->prev = svc_list->prev; /* change to the ex-last */ + svc_list->prev->next = tmp; /* change last element */ + svc_list->prev = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc(strlen(path) + 1); + if(tmp->abs_path == NULL) return NULL; + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_modify.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_modify.c new file mode 100644 index 00000000..267539d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_modify.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED. Not in use anymore. + * + * part of cLinux/cinit + * + * List handling + */ + +#error "NOT IN USE" + +#include +#include +#include "cinit.h" +#include "comm.h" /* for ST_OFF */ +#include "svc.h" /* for ST_OFF */ + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + + tmp = list_search(path); + if(tmp == NULL) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_search.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_search.c new file mode 100644 index 00000000..6591f988 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_search.c @@ -0,0 +1,36 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* NULL */ +#include /* strcmp */ + +#include "intern.h" +#include "svc.h" + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if(svc_list == NULL) { /* think positive */ + return NULL; + } else { + tmp = svc_list; + } + + do { + if(!strcmp(path, tmp->abs_path)) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_search_pid.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_search_pid.c new file mode 100644 index 00000000..4f9634c9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/list_search_pid.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Search by pid + */ + +#include /* NULL */ +#include /* pid_t */ + +#include "svc.h" /* struct listitem */ + +struct listitem *list_search_pid(pid_t pid) +{ + struct listitem *tmp; + + if(svc_list == NULL) { + return NULL; + } else { + tmp = svc_list; + } + + do { + if(pid == tmp->pid) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/shutdown_services.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/shutdown_services.c new file mode 100644 index 00000000..3432c8ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/shutdown_services.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Shutdown all services: This is more or less the negative + * version of 'tree_exec()' + */ + +#include "svc.h" /* struct */ +void shutdown_services(struct listitem *svc) +{ + while(0) { + svc++; + } + /* stop services in the correct order: + * - begin at a random process, and walk the tree up to the wanted_by and needed_by + * - switch to next service, as soon as this tree is finished + */ + +// while(we_are_wanted_or_needed) { +// shutdown_services(next_wants_or_needs_us); +// } + +// shutdown_services(svc) + + /* begin at svc, iterate until a service without dependencies is found, + * continue stopping through wanted-by / needed-by / wants / needs */ + + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_add_needs.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_add_needs.c new file mode 100644 index 00000000..2c045328 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_add_needs.c @@ -0,0 +1,69 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED! + * + * part of cLinux/cinit + * + * List handling + */ + +#error "NOT IN USE" + +#include "cinit.h" +#include "messages.h" + +int svc_add_needs(char *needs, char *is_needed) +{ + struct listitem *svc_needs, *svc_is_needed; + + + /* retrieve service entries in global service list */ + svc_needs = svc_is_needed = NULL; + svc_needs = list_search(needs); + svc_is_needed = list_search(is_needed); + + /* and exit if one is missing */ + if( !svc_needs || !svc_is_needed ) { + return 0; + } + + /* first add needs */ + + /* now add needed_by */ + + malloc... /* for adding */ + + if(svc->needs == NULL) { + svc->needs = neu; + } else { + svc->next = neu; + } + + /* write generic function for dependencies or even all lists */ + dep_entry_add(list_pointer,new_entry); + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members,add this one */ + tmp->after = list; /* begin after the new element */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_create.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_create.c new file mode 100644 index 00000000..3d9e05bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_create.c @@ -0,0 +1,52 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* strcpy */ +#include /* stat */ +#include /* stat */ +#include /* PATH_MAX */ +#include /* errno */ + +#include "svc.h" /* listitem */ +#include "intern.h" /* path_append */ +#include "messages.h" /* D_PRINTF */ + +/* checking for existence is done before! */ +/* FIXME: check heedars for conformance with POSIX */ +struct listitem *svc_create(char *svc) +{ + char buf[PATH_MAX+1]; + struct stat statbuf; + struct listitem *li; + + li = list_insert(svc,-1); + if(!li) return NULL; + + /* FIXME: add two path length checks? svc and svc+strlen(C_RESPAWN)? */ + strcpy(buf,svc); + if(!path_append(buf,C_RESPAWN)) return NULL; + + if(stat(buf,&statbuf) == -1) { + if(errno == ENOENT) { + svc_set_status(li,ST_SH_ONCE); + } else { + return NULL; + } + } else { + /* FIXME remove debug */ + D_PRINTF("respawn: "); + D_PRINTF(li->abs_path); + D_PRINTF("\n"); + + svc_set_status(li,ST_SH_RESPAWN); + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_fail.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_fail.c new file mode 100644 index 00000000..7c150c85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_fail.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Mark the service as being failed + */ + +#include "svc.h" + +void svc_fail(struct listitem *li) +{ + if(li->status & ST_ONCE_RUN) + li->status = ST_ONCE_FAIL; + else { + /* FIXME: do something senseful, record time of dead? */ + li->status = ST_RESPAWNING; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_needs_status.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_needs_status.c new file mode 100644 index 00000000..ad00ed4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_needs_status.c @@ -0,0 +1,37 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return status of the needs of this service + */ + +#include /* NULL */ + +#include "svc.h" /* service information */ + +int svc_needs_status(struct listitem *svc) +{ + int retval = SNS_NEEDS_STARTED; + struct dep *deps = svc->needs; + + if(deps == NULL) return SNS_NEEDS_STARTED; /* no needs, everything fine */ + + do { + /* worst case: need failed */ + if((deps->svc->status & ST_NEED_FAILD) || + (deps->svc->status & ST_ONCE_FAIL)) { + retval = SNS_NEEDS_FAILED; + break; + } + /* services are being started */ + if((deps->svc->status & ST_SH_ONCE) || + (deps->svc->status & ST_SH_RESPAWN)) { + retval = SNS_NEEDS_UNFINISHED; + } + deps = deps->next; + } while(deps != svc->needs); + + return retval; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_report_status.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_report_status.c new file mode 100644 index 00000000..3802afe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_report_status.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Tell the world what happened to the service + */ + +#include "intern.h" /* mini_printf */ +#include "messages.h" /* MSG_INTRO_SVC */ + +void svc_report_status(char *svc, char *msg, char *err) +{ + mini_printf(MSG_INTRO_SVC,1); + mini_printf(svc,1); + mini_printf(": ",1); + mini_printf(msg,1); + if(err) { + mini_printf(" (",1); + mini_printf(err,1); + mini_printf(")",1); + } + mini_printf("\n",1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_respawn_check.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_respawn_check.c new file mode 100644 index 00000000..0fae4def --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_respawn_check.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED? not in use. + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#error "NOT IN USE" + +#include /* NULL */ +#include /* PATH_MAX */ +#include "svc.h" + +/* checking for existence is done before! */ +int svc_respawn_check(struct listitem *svc) +{ + char buf[PATH_MAX+1]; + + strcpy(buf,svc->abs_path); + if(!path_append(buf,C_RESPAWN)) return 0 +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_set_status.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_set_status.c new file mode 100644 index 00000000..73d5da91 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_set_status.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_set_status(struct listitem *li, int status) +{ + return (li->status = status); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_should_respawn.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_should_respawn.c new file mode 100644 index 00000000..04acfe1d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_should_respawn.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return whether should respawn or not + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_should_respawn(struct listitem *li) +{ + return (li->status & ST_SH_RESPAWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_start.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_start.c new file mode 100644 index 00000000..8ab08e3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_start.c @@ -0,0 +1,93 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start a service + */ + +#include /* NULL */ +#include /* fork */ +#include /* strerror */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* nanosleep() */ +//#include /* gettimeofday() */ + +#include "svc.h" /* struct * */ +#include "messages.h" /* MSG_* */ +#include "intern.h" /* execute_sth */ + +//void svc_start(struct listitem *li, int strict) +void svc_start(struct listitem *li, int delay) +{ + char buf[PATH_MAX+1]; + struct timespec ts; + + /* FIXME: All cleanup must go here + * close(fds); + * reset signals + * reset env? + * + * FIXME: Add logging possibility to here + * open (0,1,2) to other processes, if specified */ + D_PRINTF("VORM Fork()\n"); + li->pid = fork(); + + /********************** Error ************************/ + if(li->pid < 0) { + svc_report_status(li->abs_path,MSG_SVC_FORK,strerror(errno)); + svc_set_status(li,ST_BAD_ERR); + return; + } + /********************** parent ************************/ + if(li->pid > 0) { + D_PRINTF("ELTERN\n"); + /* set start time */ + li->start = time(NULL); + + if(li->status & ST_SH_ONCE) + li->status = ST_ONCE_RUN; + else + li->status = ST_RESPAWNING; + return; + } + + /********************** Client / fork() ************************/ + /* sleep, if necesseray */ + printf("Delay: %d\n", delay); + if(delay) { + ts.tv_sec = delay; + ts.tv_nsec = 0; + + /* FIXME: also report value; int2char */ + svc_report_status(li->abs_path,MSG_SVC_SLEEP,NULL); + + /* do not need to check for errors, because we can continue anyway */ + nanosleep(&ts,NULL); + } + svc_report_status(li->abs_path,MSG_SVC_START,NULL); + + /* length check is done by path_append */ + strcpy(buf,li->abs_path); + if(!path_append(buf,C_ON)) return; + + /* Check for existence */ + li->status = file_exists(buf); + + if(li->status == FE_NOT) { + _exit(0); /* nothing there? fine! */ + } + + if(li->status == FE_FILE) { + /* FIXME: reset signals: Is this necessary? Or does fork clean it anyway? */ + set_signals(ACT_CLIENT); + + /* and now, fire it up */ + execute_sth(buf); + } else { + /* either no file or an error */ + _exit(1); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_success.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_success.c new file mode 100644 index 00000000..dc4057e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/svc_success.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include /* NULL */ + +#include "svc.h" /* listitem, svc_report_status */ +#include "messages.h" /* messages */ + +void svc_success(struct listitem *li) +{ + if(li->status & ST_ONCE_RUN) { + svc_report_status(li->abs_path,MSG_SVC_OK_ONCE,NULL); + li->status = ST_ONCE_OK; + } else { + svc_report_status(li->abs_path,MSG_SVC_OK_RESPAWN,NULL); + li->status = ST_RESPAWNING; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/svc/tree_exec.c b/software/cinit/browse_source/cinit-0.3pre11/src/svc/tree_exec.c new file mode 100644 index 00000000..1a789457 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/svc/tree_exec.c @@ -0,0 +1,67 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + +#include /* NULL */ + +#include "intern.h" /* mini_printf */ +#include "svc.h" /* svc_init */ +#include "messages.h" /* messages */ + +/* some thoughts... + * + * - we already generated the tree, we now need to start it from + * the ends + * + * - after starting the first service we have to care about SIG_CHILD + * to record changes + * + * - we execute all services in parallel without problems, because of + * SIG_CHILD notification + * + * - After successfully starting the service we start the services that + * need or want that service + */ +int tree_exec(struct dep *start) +{ + struct dep *tmp = start; + + mini_printf(MSG_TREE_EXEC,1); + + /* the main starting loop: All services in this list should be + * started, but it is possible that dependent services are in the + * list. In this case simply skip the current service + */ + do { + switch(svc_needs_status(tmp->svc)) { + case SNS_NEEDS_STARTED: + svc_report_status(tmp->svc->abs_path,"Needs sind durch",NULL); + /* execute service, add dependencies, remowe from list */ + svc_start(tmp->svc,0); + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_NEEDS)) return 0; + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_WANTS)) return 0; + tmp = dep_entry_del(tmp); + break; + + case SNS_NEEDS_FAILED: + /* mark service as NEED_FAILD and delete from list */ + svc_report_status(tmp->svc->abs_path,MSG_SVC_NEED_FAIL,NULL); + svc_set_status(tmp->svc,ST_NEED_FAILD); + tmp = dep_entry_del(tmp); + break; + + case SNS_NEEDS_UNFINISHED: + svc_report_status(tmp->svc->abs_path,"Needs am abarbeiten",NULL); + /* continue with the next item */ + tmp = tmp->next; + break; + } + } while(tmp != NULL); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/test/data1.c b/software/cinit/browse_source/cinit-0.3pre11/src/test/data1.c new file mode 100644 index 00000000..341c6615 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/test/data1.c @@ -0,0 +1,47 @@ +#include +#include +#include + +int main() +{ + int a, b, e; + char *c = "/etc/cinit/svc/...", *data; + + int a2, b2; + char *c2; + + a2 = b2 = 0; + + a = 1001; + b = strlen(c); + c2 = malloc(b+1); + if(!c2) return 40; + + e = sizeof(a) + sizeof(b) + b; + + printf("e=%d (b=%d)\n",e,b); + + data = malloc(e); + if(!data) return 20; + + /* in */ + strcpy(data,(char *) &a); + e = sizeof(a); + strcpy(&data[e],(char *) &b); + e += sizeof(b); + strcpy(&data[e],c); + + /* out */ + strncpy((char *) &a2,data,sizeof(a2)); + printf("a2=%d\n",a2); + e = sizeof(a2); + + strncpy((char *) &b2,&data[e],sizeof(b2)); + printf("b2=%d\n",b2); + e += sizeof(b2); + + strncpy(c2,&data[e],b2); + printf("c2=%s\n",c2); + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/test/memcpy.c b/software/cinit/browse_source/cinit-0.3pre11/src/test/memcpy.c new file mode 100644 index 00000000..b3abfcb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/test/memcpy.c @@ -0,0 +1,46 @@ +#include /* memcpy() */ +#include + +struct cinit_answer { + int options; + char data[2045]; +}; + +int f1(struct cinit_answer *buf); +int f2(struct cinit_answer *buf); + + +int f2(struct cinit_answer *buf) +{ + struct cinit_answer msg; + + printf("f2: %p\n",buf); + + msg.options = 12; + strcpy(msg.data,"stringit"); + + printf("addr= %p\n", memcpy(buf,&msg,sizeof(*buf))); + + printf("ok\n"); + + return 1; +} + +int f1(struct cinit_answer *buf) +{ + printf("f1: %p\n",buf); + printf("ret=%d\n",f2(buf)); + + return 1; +} + +int main() +{ + struct cinit_answer test; + + if(!f1(&test)) return 1; + + printf("s: %s d: %d\n",test.data, test.options); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/test/test-newline.c b/software/cinit/browse_source/cinit-0.3pre11/src/test/test-newline.c new file mode 100644 index 00000000..95e03a36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/test/test-newline.c @@ -0,0 +1,29 @@ +#include +#include +#include +#include + +char *strip_final_newline(char *test1); + +int main() +{ + //char *test1 = "zeile1\nzeile2\n"; + //char *test2 = "zeile1\nzeile2\nzeile3"; + char *test1; + char *test2; + + test1 = malloc(50); + test2 = malloc(50); + + strcpy(test1,"zeile1\nzeile2\n"); + strcpy(test2,"zeile1\nzeile2\nzeile3"); + + char *result; + result = strip_final_newline(test1); + printf("A%sA\n",result); + + result = strip_final_newline(test2); + printf("B%sB\n",result); + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/test/test_build_argv+link.c b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_build_argv+link.c new file mode 100644 index 00000000..f74b4f36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_build_argv+link.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec_link"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/test/test_build_argv.c b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_build_argv.c new file mode 100644 index 00000000..3938aa0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_build_argv.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec new file mode 100644 index 00000000..e5cf3f01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec @@ -0,0 +1,7 @@ +#!/bin/sh +# Nico Schottelius +# Test-skript for cinit + +echo '$0': "$0" +echo '$@': "$@" +echo 'cinit_is_great:' $cinit_is_great diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec.env b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec.env new file mode 100644 index 00000000..853e0663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec.env @@ -0,0 +1 @@ +cinit_is_great=yes diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec.params b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec.params new file mode 100644 index 00000000..afe0f2ef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec.params @@ -0,0 +1 @@ +Let's see if we read the arguments....YES! diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec_link b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec_link new file mode 120000 index 00000000..c2ec9306 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec_link @@ -0,0 +1 @@ +test_exec \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec_link.env b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec_link.env new file mode 120000 index 00000000..30ea4990 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec_link.env @@ -0,0 +1 @@ +test_exec.env \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec_link.params b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec_link.params new file mode 120000 index 00000000..0b77c256 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_exec_link.params @@ -0,0 +1 @@ +test_exec.params \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/test/test_gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_gen_svc_tree.c new file mode 100644 index 00000000..c13c46b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_gen_svc_tree.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test gen_svc_tree + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + gen_svc_tree("/etc/cinit/svc/init"); + list_display_all(); +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/test/test_openreadclose.c b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_openreadclose.c new file mode 100644 index 00000000..2f722da5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/test/test_openreadclose.c @@ -0,0 +1,16 @@ +#include + +int openreadclose(char *filename, char **where); + +int main() +{ + char *data; + char *file = "test_openreadclose.c"; + + openreadclose(file,&data); + + printf("%s\n",data); + + return 1; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/test/tired.c b/software/cinit/browse_source/cinit-0.3pre11/src/test/tired.c new file mode 100644 index 00000000..112424ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/test/tired.c @@ -0,0 +1,22 @@ +#include + +struct msgq_server_short { + long mtype; + int mu; +}; + +main() +{ + struct msgq_server_short t1, *t2; + + t2 = &t1; + + int a = sizeof(t1); + int b = sizeof(t2); + int c = sizeof(*t2); + + printf("a=%d,b=%d,c=%d\n",a,b,c); + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/src/test/transfer_structure.c b/software/cinit/browse_source/cinit-0.3pre11/src/test/transfer_structure.c new file mode 100644 index 00000000..5e95b997 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/src/test/transfer_structure.c @@ -0,0 +1,56 @@ +#include +#include +#include +#include + +struct test { + char buf[2048]; + int cmd; +}; + +struct badtest { + char *buf; + int cmd; +}; + +#define PATH "/etc/cinit/svc/local-tuning/udev" + +int main() +{ + struct test cmd; + struct badtest nocmd; + int pfd[2]; + int tmp; + + strcpy(cmd.buf,"/which/service/to/disable"); + cmd.cmd = 42; + + if(pipe(pfd) == -1) return 1; + nocmd.cmd = 42; + nocmd.buf = malloc(strlen(PATH)+1); + strcpy(nocmd.buf,PATH); + + + if(fork() > 1) { + tmp = write(pfd[1],&cmd,sizeof(cmd)); + printf("PA: tmp=%d\n",tmp); + + tmp = write(pfd[1],&nocmd,sizeof(nocmd)); + printf("PA: tmp2=%d\n",tmp); + } else { + strcpy(cmd.buf,""); + cmd.cmd = 0; + + tmp = read(pfd[0],&cmd,sizeof(cmd)); + printf("CH: tmp = %d, cmd = %d, buf = %s\n",tmp,cmd.cmd,cmd.buf); + + free(nocmd.buf); + nocmd.cmd = 0; + + tmp = read(pfd[0],&nocmd,sizeof(nocmd)); + printf("CH: tmp = %d, cmd = %d, buf = %s\n",tmp,nocmd.cmd,nocmd.buf); + } + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre11/util/README b/software/cinit/browse_source/cinit-0.3pre11/util/README new file mode 100644 index 00000000..f66e0ddb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/util/README @@ -0,0 +1,4 @@ +-- OBSOLETED -- + -> This code is not in use in cinit-0.3 anymore! +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.3pre11/util/ccontrol.c b/software/cinit/browse_source/cinit-0.3pre11/util/ccontrol.c new file mode 100644 index 00000000..95bc5212 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/util/ccontrol.c @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * ccontrol: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define USAGE_TEXT "ccontrol - control cinit\n\n" \ + "Usage:\n\nccontrol -[phurs]\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-u\t- (update) Reboot (warm) and update cinit\n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n\n" \ + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * ccontrol: control cinit + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 2) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + + switch(argv[1][1]) { + case 'p': /* power off */ + LOG(MSG_POWER_OFF); + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + LOG(MSG_HALT); + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + LOG(MSG_REBOOT); + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + LOG(MSG_RESCUE); + msg_reboot(CMD_RESCUE); + break; + + case 'u': /* update */ + LOG(MSG_UPDATE); + msg_reboot(CMD_UPDATE); + break; + + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* cinit-0.2 return codes implemented - nothing changed*/ diff --git a/software/cinit/browse_source/cinit-0.3pre11/util/cservice.c b/software/cinit/browse_source/cinit-0.3pre11/util/cservice.c new file mode 100644 index 00000000..66be6563 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/util/cservice.c @@ -0,0 +1,164 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * cservice: control cinit services + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit services + */ + +#define USAGE_TEXT "cservice - start and stop cinit services\n\n" \ + "cservice -[ear] \n" \ + "\t-e\t- (ein,on ) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n" \ + "\t-r\t- (restart) stop and start a service\n" + +/*********************************************************************** + * fuzzy_path: allow other kinds of path specification .. + */ +char *fuzzy_path(char *rpath) +{ + char pathtmp[PATH_MAX]; + char *re = NULL; + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return NULL; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(rpath); + return NULL; + } + + re = malloc( strlen(pathtmp) + 1); + + if(re != NULL) { + strcpy(re,pathtmp); + } + + return re; +} + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + char *real_name = NULL; + + /* argv */ + if(argc != 3) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + if(strlen(argv[1]) != 2) C_USAGE(MSG_ERR_ARGS_LEN); + + real_name = fuzzy_path(argv[2]); + + /* fuzzy path failed, exit! */ + if(real_name == NULL) { + return 1; + } + switch(argv[1][1]) { + case 'a': /* aus */ + case 'r': /* restart */ + switch( msg_svc_on_off(real_name,CMD_STOP_SVC) ) { + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_OFF: + SERVICE_LOG(real_name,LOG_SVC_STOPED); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + /* FIX THIS AFTER cinit-0.2 */ + case RT_TMPNOW: + case RT_ERR: + case RT_SVC_FAILED: + case RT_UNSPEC: + case RT_SUCCESS: + case ST_NEED_FAIL: + case ST_TMP: + case ST_ONCE: + case RT_NOTEXIST: + case ST_RESPAWN: +// SERVICE_LOG(real_name,"Ein bekanntest ding"); + break; +/* default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; */ + } + if( argv[1][1] == 'a') break; /* only continue if restarting */ + + case 'e': /* ein */ + switch (run_svc(real_name)) { /* run_svc fuzzys itself */ + case RT_NOTEXIST: + SERVICE_LOG(real_name,LOG_SVC_NOTEXIST); + break; + case RT_SVC_FAILED: + SERVICE_LOG(real_name,LOG_SVC_FAILED); + break; + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_ONCE: + SERVICE_LOG(real_name,LOG_SVC_ONCE); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + case ST_RESPAWN: + SERVICE_LOG(real_name,LOG_SVC_RESPAWN); + break; + case ST_NEED_FAIL: + SERVICE_LOG(real_name,LOG_NEED_FAIL); + break; + default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; + } + break; + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* uses cinit-0.2 return code style */ diff --git a/software/cinit/browse_source/cinit-0.3pre11/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.3pre11/util/msg_reboot.c new file mode 100644 index 00000000..efe78ec6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre11/util/msg_reboot.c @@ -0,0 +1,21 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + if(!begin_msg(cmd)) return 0; + close(sock); + return 1; +} +/* clean for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre12/ b/software/cinit/browse_source/cinit-0.3pre12/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.3pre12/.gitignore b/software/cinit/browse_source/cinit-0.3pre12/.gitignore new file mode 100644 index 00000000..c346b4fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/.gitignore @@ -0,0 +1,29 @@ +*.o +*.a +*0? +MT +ddoc +contrib+tools/cinit.graph.text +config.h +sbin +tmp +os/current +tmpbin +src/os/current +src/ipc/current +src/cinit +*.html +*.htm +*.man +*.texi +*.texi +*.docbook +src/halt.kill +src/poweroff.kill +src/reboot.kill +doc/man/*.[0-9] +doc/man/*.xml +src/cmd +.*.swp +.exclude +src/.configured diff --git a/software/cinit/browse_source/cinit-0.3pre12/CHANGES b/software/cinit/browse_source/cinit-0.3pre12/CHANGES new file mode 100644 index 00000000..9683857e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/CHANGES @@ -0,0 +1,90 @@ +cinit-0.3pre12: 2007-09-06 + - Added DESTDIR support + - Added support to get service status via cmd: cmd -s + * also supports relative paths to CINIT_DIR ("/etc/cinit") + - Fixed git clone problem: hooks are needed for dumb git + - Fixed bug: We did not wait for services to finsh, which we depend on being + ran once. + +cinit-0.3pre11: 2007-09-01 + - Added basic communication: + * client binary "cmd" with argument -v returns cinit-version + - Updated {halt,reboot,poweroff}.kill + +cinit-0.3pre10: + - Fixed make install target + - Added halt.kill, poweroff.kill and reboot.kill (including manpages!) + - Fixed invalid comparision in core/cinit.c + - Be verbose: Print what we execute + - Updated documentation + +cinit-0.3pre9: 2007-05-15 + - Implemented sleeping before respawn (static delay) + - Report broken links on execution, but ignore empty services + - Cleaned up message queue error reporting + +cinit-0.3pre8: 2007-04-06 + - Updated and merged documentation: Codingstyle and Codingguide + - Cleaned sigaction-code (fixes segfault on glibc) + - Cleaned object listings + - Added notifications at shutdown + - Fixed status check + +cinit-0.3pre7: 2007-02-17 + - Many code cleanups + - Fixed glibc problem with sigaction (for details view src/core/set_signals.c) + - Added general shutdown support (will *NOT* yet stop services, + but still stop your system) + +cinit-0.3pre6: + - Many code cleanups + - Added user documentation and cleaned up documentation in general + +cinit-0.3pre5: + - Finished new SIGCHLD handler + - First cleanups for real release. + - This version is the first 0.3pre version that can handle respawn! + +cinit-0.3pre4: + - Re-implemented execution of services. + - This version is the first 0.3pre version that COULD bootup your system! + +cinit-0.3pre3: + - Finished execution all services via the reversed service tree. + +cinit-0.3pre2: + - Finished generation of the dependency tree. + +cinit-0.3pre1: + - cinit should now compile on mostly all unices + - introduced much new code + - THIS IS A DEVELOPER RELEASE, NOT USABLE IN PRODUCTION ENVIRONMENTS. + +cinit-0.2.1: (Bugfix release) + - Fixed problem in contrib+tools/Makefile when installing + - added many new scripts to convert sys-v-init, which are still early beta + (see bin/cinit.merge.sysvinit-debian-sid) + +cinit-0.2: + - Much more verbose error reporting + - You can now also disable 'once ran' services, + - You can restart services with csevice -r + - Online speech in German is available + - C_DELAY support - variable delay for sending SIGKILL after SIGTERM + - First /etc/csys configuration example (wasserstoff) is available + - a Mailing list was created + - Added tools to analyze cinit configuration + (cinit-vis.pl, cinit.graph.text.c) + - Added tools to import and export configuration to XML + (make.cconfig.from.xml.rb,cconfig.graph.xml.rb) + - Removed unecessary signalling + - Added many helper scripts to install services (cinit.install.service*) + - Fixed many small bugs in old helper scripts (cinit.add.getty, cinit.get-conf, ...) + - Added ccontrol, which allows to control cinit + - Added update (-u) via ccontrol + - Stripped cservice, which now "only" controls services + - Removed swapoff from cinit code, should be handled by off + - Much better error and processing descriptions + - A bit more verbose reporting + - Restructured run_svc, now with better error detection + - Removed Kernel panic, when halting system diff --git a/software/cinit/browse_source/cinit-0.3pre12/COPYING b/software/cinit/browse_source/cinit-0.3pre12/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.3pre12/CREDITS b/software/cinit/browse_source/cinit-0.3pre12/CREDITS new file mode 100644 index 00000000..febdcf4b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/CREDITS @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: ls -l) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete + * providing cinit-vs.pl to visualize the cinit-tree +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) +Sandro Koechli + * testing, testing and testing cinit and cinit documentation +Marcus Wagner + * building and maintaining the Debian package +Peter Portmann + * testing cinit and documentation, writing cinit.graph.text in C, other coding +Tonnerre Lombard + * NetBSD support (host + hints) diff --git a/software/cinit/browse_source/cinit-0.3pre12/Changelog b/software/cinit/browse_source/cinit-0.3pre12/Changelog new file mode 100644 index 00000000..0fbf76f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/Changelog @@ -0,0 +1,10 @@ +Mo Okt 3 00:19:40 CEST 2005 + *Changelog can now be found in git database (cg-log) +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.3pre12/Makefile b/software/cinit/browse_source/cinit-0.3pre12/Makefile new file mode 100644 index 00000000..cce0f217 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/Makefile @@ -0,0 +1,108 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# Directories and files +CDIRS=src doc + +# +# Targets +# + +# +# Warn per default, make sure the user knows what she does +# +warn: + @cat doc/.buildwarn + +all: sources documentation +dev-all: all sizecheck + +install clean dist distclean: + @for subdir in ${CDIRS}; do \ + echo "Making $@ in $$subdir"; \ + (cd $$subdir && ${MAKE} ${MAKEFLAGS} $@) || break; \ + done; + +.PHONY: sources +sources: + ${MAKE} -C src all + +.PHONY: documentation +documentation: + ${MAKE} -C doc documentation + +sizecheck: sources + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l src/cinit > $$FILE; cat $$FILE; \ + cg-add $$FILE + cg-commit $$FILE -m "Size added" + #cg-commit $$FILE -m "Size: $$(awk '{ print $5 }' $$FILE)" + +source-size: clean + @echo -n "Source size (in KiB): " + @du -s src/ | awk '{ sum+=$$1 } END { print sum }' + + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + +config: + @./bin/cinit.configure.os + @./bin/cinit.configure.tools + @./bin/cinit.configure.ipc + @touch src/.configured + + +################################################################################ +# Tests +# +tests: + # does not work, due getting killed, due to design :-) + #./scripts/internal/compile_run_as_compiler.sh + ./scripts/internal/test_on_hosts.sh ./scripts/internal/compile_test.sh + +################################################################################ +# old +#DDOC=ddoc +#SDIRS=bin client conf comm doc generic serv util +# DO NOT CHANGE THIS. +#SBIN=sbin +#CINIT_BIN=$(SBIN)/cinit +# +#%.o: %.c +# $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< +#$(DDOC): +# mkdir $(DDOC) +# +#$(SBIN): +# mkdir $(SBIN) +# +#docs: $(DDOC) bin/cdoc-man.sh +# ./bin/cdoc-man.sh doc/cinit-doc > $(DDOC)/cinit.8 +# ./bin/cdoc-man.sh doc/cservice-doc > $(DDOC)/cservice.8 +#$(CSVC_OBJ) $(OBJ): $(CONFIG_H) +#clean: +# $(MAKE) -C src clean +# rm -f tmpbin/* +################################################################################ +#cservice: $(SBIN)/cservice +# +#$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) +# $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ +# $(STRIP) $@ +# +#ccontrol: $(SBIN)/ccontrol +# +#$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) +# $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ +# $(STRIP) $@ +# +#install:: install-dir cinit cservice ccontrol +# @echo '*** Installing cinit ***' +# ./bin/cinit.install.binary diff --git a/software/cinit/browse_source/cinit-0.3pre12/NEXTTODO b/software/cinit/browse_source/cinit-0.3pre12/NEXTTODO new file mode 100644 index 00000000..fd2517a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/NEXTTODO @@ -0,0 +1,16 @@ +-------------------------------------------------------------------------------- +- create some boot profiles +- cinit.install.standard.dirs.argv +check needs: + really started, after started or after finished starting? +wants: + are they checked? + +implement commands! +- fix devel/codingguideline.text! +- chdir to / after startup + +merge svc_need_status to svc_status + +cinit-communication: + cinit_get_failed_needs(char *name, int *cnt); diff --git a/software/cinit/browse_source/cinit-0.3pre12/README b/software/cinit/browse_source/cinit-0.3pre12/README new file mode 100644 index 00000000..00f2651b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/README @@ -0,0 +1,106 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Unix +- true dependencies (soft and hard!) +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +FIXME: Add mailing list here + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre12/ROADMAP b/software/cinit/browse_source/cinit-0.3pre12/ROADMAP new file mode 100644 index 00000000..945f30bf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/ROADMAP @@ -0,0 +1,115 @@ +-------------------------------------------------------------------------------- +THIS DOCUMENT SHOULD VANISH AS SOON AS EVERYTHING IS FINE +-------------------------------------------------------------------------------- + +Timeline +--------- + * ~ End of October 2006: Reunderstand the code, manifest changes [DONE] + * ~ Mid of November 2006: Have a compile-able cinit [DONE] + * ~ End of November 2006: Have a testsystem booting cinit [DONE] + * ~ Mid of December 2006: Have production stable cinit + - Begin with migration scripts + - publish installable pre-releases + * ~ End of December 2006: Have some generic migration scripts + - Have (different) understanable documents + * ~ Mid of January 2007: Begin official release of cinit-0.3 + + + + +Versions +--------- + +0.3: +~~~ + code: Make cinit compile again :) [DONE] + code: double check to remove Linux specific source from general tree [DONE] + code: seperate ipc from the rest [DONE] + code: fix / check signal handlers [DONE] + code: cleanup makefile + code: add porting code: add support for any unix in general [DONE] + code: stabilize code, remove experimenting parts + code: remove delay support, let off/off.params do that. [DONE] + code: add special directory (/etc/cinit/conf?) for non-services [DONE] + code: move production code to src/ [DONE] + end user doc: add warning for special binaries and hint for r/o only + amiga alike systems + + doc: begin to merge old documents into new structure and move them + to the doc/ancient directory [DONE] + +0.3.1: + devel doc: how to write merging scripts + devel doc: merging framework: + - minimal (do not look at the current configuration, build minimal) + - use current system (slowly, may use old scripts) + - rebuilt current system (recommened) + + tools: general framework for merging + end user doc: merging old init to cinit + + code: add porting code: add support for freebsd + code: better readable output: + -> starting + [ started once ] + [ respawning ] + [ failed ] (+ REASON!) + [ needs failed ] (which ones) + + -> stopping + [ stopping ] (for dependencies) + [ stopped ] ? + [ not running ] ? + + code: export profile information (CINIT_PROFILE) + end user doc: using different profiles in user space + end user doc: write examples for profiles: + o switch ssh known_hosts based on profile + o different proxy settings in browsers + - environment + - mozilla settings + o start samba (for lan) + o start samba (for company lan) + o use nis and nfs (company profile) + + doc: continue to merge old documents into new structure and move them + to the doc/ancient directory +0.3.2: + end user doc: what to read to use cinit + end user doc: installing cinit + end user doc: configuring cinit + tools: writing cinit-config (graphical (dialog based?) configuration tool) + code: add porting code: add support for openbsd + + code: add reverse dependency chain (or earlier?) + code: better support for external tools + o neustarten + o mit herunterfahren + o mit herunterfahren und allen Diensten, die abhaengen + o ohne herunterfahren + o Statische Daten + o pid vom Daemon + o pid vom einmal ausgefuehrten Programm + + + doc: end to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.3: + devel doc: writing an init system + devel doc: the conf/-configuration system + + code: check conf/ and perhaps rewrite b0rken english sentences + + code / doc: add logging support for services -> use multilog? + code: add porting code: add support for netbsd + +0.4: + first stable, tested, well documented version. + + code: check for optimisation + + other: compare with other init systems + +0.4.x: + code: add porting code: add support for other unices diff --git a/software/cinit/browse_source/cinit-0.3pre12/TODO b/software/cinit/browse_source/cinit-0.3pre12/TODO new file mode 100644 index 00000000..a583a941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/TODO @@ -0,0 +1,327 @@ +-------------------------------------------------------------------------------- +- define how it should work (doc/braindums/big-picture.text) +- define service status in one document, so repeatition stops! +-------------------------------------------------------------------------------- +- remove client/ from top level +-------------------------------------------------------------------------------- +Generate automatic asciidoc from conf/* +-------------------------------------------------------------------------------- + Ausgaben nach Beendigung vom Starten des Services. + + [ on ] %s + Ergebnis + [ off ] %s + + Rekursives herunter/rauffahren +-------------------------------------------------------------------------------- +- add error handling to cinit.install.binary +-------------------------------------------------------------------------------- +1. Entfernung mount + -> Example configuration + -> was man alles machen muss +-------------------------------------------------------------------------------- +- add code do implement stopping / restarting with dependency tree +-------------------------------------------------------------------------------- +- print service name or cinit: before _everything_ WE print + + - is the reporting ok? + +# cinit.create.empty.service: can only be started from the bin directory + +- Fix Switching services off !! +- Error codes when shutting down a service? +- Delay dokumentieren +- no_kill dokumentieren + +- on.out, on.err, on.in? + -> reading/writing from/to files + +- implement "no_kill" until cinit-0.2 or 0.3? + + +-------------------------------------------------------------------------------- +- Source Logic issues + - remove FIXME entries (and what should be fixed, too) +-------------------------------------------------------------------------------- +Helper scripts, rausgenommen aus Der Doku, muessen fuer +cinit-0.3 ueberprueft werden: + +Configure help scripts +~~~~~~~~~~~~~~~~~~~~~~ +cinit-conf later +Using prepared scripts + +In the bin/ directory of this tarball you'll find at least: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +Optimisations +------------- + - Installing cinit + o compiling cinit from source + o debian / gentoo + - Configuring + * add scripts! see below + - define coding guidelines -> general, with url? + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml + +tree_exec +~~~~~~~~~ +- only check dependencies (=needs) after the basic run? + +Documentation +------------- + +developer +~~~~~~~~~ +- ST_IN_LIST == startup marker, used to (NOT) insert services into startup +- dep_needs_wants_add is used to add dependencies of a service to the general + starter list + + +user +---- +- do we really need swapoff? remove umount, swapoff! + * to services! + -> they have to do it! +- dependencies with leading '.' (dot) are ignored. +- about cinit-configuration structure + * cconfig + * svc/ + * special/ (or however we called it) + - panic + - halt + - poweroff + - reboot + +-------------------------------------------------------------------------------- +FAQ +~~~ +- DOKU: what happens when a service does not terminate.... + und er als once drin ist +--> Wenn kein ReSPAWN und der Prozess beendet sich nicht, + dann haengt init! + +- multuicall probleme -> busysbox --> GIBT ES NICHT!! + ---> DOKU DAZU! mit links, doppelt links, aus test + ---> erklaeren, dass es unproblematisch ist! + +-------------------------------------------------------------------------------- +csvc: +11:09 < folken23> telmich: oder service allready started. +-------------------------------------------------------------------------------- +cinit: +11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet + werden konnte. +11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0 + zurueckgeworfen. + ---> errno in execute_sth! + +Child handlin +~~~~~~~~~~~~~g +- free() everything before starting child + +Later +~~~~~ +- close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? + -> yep, clean environment! +- logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? +-------------------------------------------------------------------------------- +- Doc + * main.text -> cleanup / remove / split + * config-dirs + * FAQ + * ideas + * meta.dependencies + - config/hints/meta depps + * optimising + - integrate into other + * README.text + - update + * replacing.init + - update / integrate + * special-services.text + - into configuring/hints? + * TODO + - into paths, if necessary + * updating.cinit + - update as soon as update is possible? + * using.rescue + - update as soon as update is possible? + * 'os-integration.text' + * 'daemons.backgrounding' + * There are some hints on how to migrate to cinit in general and also + some os specific help in the file 'migrating-init-systems.text', +- CODECHECK: + * what happens with the wants of the last services? + - are they added? + - are they added at the correct position? +- scripts + * `cinit.check.config` (doc/user/configuring.cinit.text) + -> circular depedencies! +- Doc.next: + - installing: report! + -> write report script. +- Doc later + * current-init-problems.text + - current-init-problems.text explains why cinit does not use nor recommends the use of shell scripts. + * special-services.text + +- Begin documentation + * Check Makefile + * Integrate Makefile into main Makefile + * create manpage + * Write a small manual + - install + - configure + - boot (different OS) + * generate asciidoc! +- Doc way: + * installing + * configuring + - testconfig! + * booting + - different OS / bootloader + * debugging +- Shutdomn code: + * begin at init, then shutdown wants/needs, ... +- check that the new wants and need elements are nserted the other way round + * we go to next, elements must be put before us! +- replace cinit_ipc_logon with cinit_ipc_init... + * delay ipc code -> after start! + +- Cleanup / create object lists + object-lists/ + cinit + cservice + ccontrol + cinit.halt + cinit.reboot + cinit.shutdown (shell script?!?) + + +TODO.pre9: + + Done: + - pfad korrigieren (home/..../ -> cinit.release) + - cg-add nicht aufrufen beim make all! +ser/nico/oeffentlich/computer/projekte/cinit/cinit-0.3pre8/doc' +FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l src/cinit > $FILE; cat $FILE; \ + cg-add $FILE +-rwx------ 1 nico nico 72601 2007-04-06 17:52 src/cinit +There is no GIT repository here (.git not found) +make: *** [sizecheck] Fehler 1 + - setup VM for testing: qemu/kvm/virtualbox (no commercial bloaty) + -> uml! + - sleep when respawnig! + -> static delay of five seconds + do_reboot.c: + is ipc closed? -> check! => done! + - ignore msgrcv: Interrupted system call +Session terminated, killing shell...msgq-destroy: Invalid argument +msgq-destroy: Invalid argument + - do not print an error if /etc/cinit/conf/last is non-existent! + => print it. Do not not print it, as this can aid debugging. + include locking via shm, remove test on pid1 + => not necessary imho currently + + +TODO.pre10: + Done: + cleanup client/ comm/ contrib+tools/ util/ tmp/ + Debugging cinit-configuration: + ls -lR /etc/cinit + or: cinit.read.... + +TODO.pre11: + Remove some debugging, re-introduce DEBUG() macro.. + Fix doc: + + make dist should cleanup cc / ld to sane values? + or do I experiement in tmp/*? + + http://linux.schottelius.org/cinit/browse_source/current/doc/user/config-dirs + conf/c_halt + + IPC: + * check msqg-code + * documentate the ipc functions: update devel/ipc.text + * check cinit_read_command() (devel/ipc.h) + + do_reboot.c: + write cinit_svc_shutdown + - implement do_reboot() + * so not only booting with cinit works, but also the shutdown + - write libcinit for use in cmd() + - find out why gettimeofday() and time() do strange things when called in SIG_CHLD + => bug opened in glibc, got to code testprogram + - write cinit.conf.check + * report broken links in needs/wants + * report circular dependencies + - pretty print, reporting is ugly! + Add handler for ctrl+alt+delete + * document in paths + * check whether there's an os-unspecific way to do that + cleanup bin/ + - write sys-v-init-shutdown-wrapper + * shutdown + * halt + * reboot + * poweroff + - write manpages for + - *.kill + - cmd + + install: + make install => does not overwrite critical targets + * cinit + * *.kill (see client/*) + * cmd + make force-install => overwrites /sbin/{halt,poweroff,reboot}? + => with script that wraps cmd + make install-template: + * creates categories + make install-miniconf: + * creates categories + * creates one service starting a shell (depending on the OS!) + + cleanup src/ + finish ipc code so clients can access cinit + implement CMD_INFO (see comm.h) + + +TODO.pre12: + Check and clean doc/ + Remove *TODO*+ROADMAP and leave behin doc/TODO + +TODO.pre13: + code cmd=(cservice ccontrol halt reboot shutdown poweroff) + => halt/r/... also with kill ... + Test, release and prepare for final cinit-0.3 + +TODO.0.3.1 + add log support + cinit logs to + -> shm saver + services log to + +TODO unclear + - create migration scripts diff --git a/software/cinit/browse_source/cinit-0.3pre12/TODO.doc b/software/cinit/browse_source/cinit-0.3pre12/TODO.doc new file mode 100644 index 00000000..a170a50d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/TODO.doc @@ -0,0 +1,29 @@ +- doc/user/paths.text + * finish + * add examples +- add cross-compilation howto +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + +caveats +------- + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- cinit ignores the Keyboard request +- Currently there is no support to react on 'ctr+alt+del': +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + diff --git a/software/cinit/browse_source/cinit-0.3pre12/TODO.lucky b/software/cinit/browse_source/cinit-0.3pre12/TODO.lucky new file mode 100644 index 00000000..3ac57ee5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/TODO.lucky @@ -0,0 +1,16 @@ +18:18 hey, ich hatte gerade ein wenig lust mich mit cinit zu befassen, hier also mein + kleiner bug-report: in src/include fehlt cinit.h, (alles auf das aktuelle + tarball bezogen), ich hab's aus pre9 genommen, hatte ich noch da, da git nicht + wollte(Cannot get remote repository information.), ausserdem hast du _ statt - + in doc/man/cinit.text verwendet bei der email, das mag docbook nicht, die + beiden zeilen habe ich korrigiert, danch ging schon mal make all und auch make + ins +18:35 und warum installiert er die man pages nicht mit? +07:20 so, kleiner zwischenbericht, das argv problem bei lvm gibt es mit pre10 nicht + mehr, d.h. dass man auch kein shell-skript mehr braucht um lvm/luks-devices zu + mounten :) +07:20 soweit sieht eig. alles gut aus +07:21 wenn das so bleibt, dann werd' ich dauerhaft auf cinit umsteigen :) +07:21 und wenn sich die gelegenheit bietet, dann stell ich cinit auch mal in der + info-ag von unserer schule vor :) + diff --git a/software/cinit/browse_source/cinit-0.3pre12/TODO.optimisations b/software/cinit/browse_source/cinit-0.3pre12/TODO.optimisations new file mode 100644 index 00000000..8a686b4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/TODO.optimisations @@ -0,0 +1,19 @@ +This file describes enhancements or optimisations that +could be done / checked. + + +Code +---- + +fork() +~~~~~~ + +Security +^^^^^^^^^ +- Closed fds? +- Close other things? +- IPC? + +Cleanup +^^^^^^^ +- Do we have to reset signals or is that done anyway by fork()? diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cdoc-man.sh b/software/cinit/browse_source/cinit-0.3pre12/bin/cdoc-man.sh new file mode 100644 index 00000000..fc1adde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cdoc-man.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Nico Schottelius +# Date: 21-Aug-2005 +# Last Modified: - +# + +set -e + +[ $# -ne 1 ] && exit 23 + +SRC=$1 + +cd "$SRC" + +# +# Title heading +# +echo .TH $(cat "meta/name" "meta/man_section" "meta/date") + +# +# Name +# +echo .SH NAME +echo $(cat meta/name) - $(cat meta/short_description) + +# +# Synopsis +# +echo .SH SYNOPSIS +echo $(cat path) $(cat parameters) + +# +# description +# +echo .SH DESCRIPTION +echo $(cat long_description) + +# +# availability +# +for section in availability examples "see also" author; do + if [ -f "$section" ]; then + echo .SH $section | tr '[a-z]' '[A-Z]' + cat "$section" + fi +done + +# +# files +# +if [ -f files ]; then + echo .SH FILES + cat files | sed 's/\(.*\)/.IP "\1" /' +fi + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.add.dependency new file mode 100644 index 00000000..7bc9cc65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.add.dependency @@ -0,0 +1,51 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or wants Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +# adding 'wishes' for x-mas and requires for 'the mass' and 'tv' +case $DEP in + wishes|wants) DEP=$C_WANTS ;; + needs|requires) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could someone PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEP_DIR="${BASEDIR}/${SVC_A}/${DEP}" + +if [ ! -d "$DEP_DIR" ]; then + echo "$DEP_DIR does not exist, creating..." + mkdir "$DEP_DIR" + if [ $? -ne 0 ]; then + echo "Error occured due to creating directory. Exiting." + exit 1 + fi +fi + +DEST="${DEP_DIR}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.add.getty new file mode 100644 index 00000000..987a5bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.add.getty @@ -0,0 +1,75 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# Date: 2005-05-24 (Last changed: 2005-08-07) +# + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | sort -n | tail -n 1) + +[ ! "$LAST_NUMBER" ] && LAST_NUMBER=0 + +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +#echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + */mgetty) + mygetty=$getty + params="38400 tty${NUMBER}" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +# check input +if [ ! "$mygetty" ]; then + read -p "Getty to use [$mygetty]: " rgetty +fi +if [ ! "$params" ]; then + read -p "Parameters to pass [$params]: " rparams +fi +if [ ! "$params" -o ! "$mygetty" ]; then + echo "Sorry, either getty or parameters are not supplied." + exit 23 +fi + +echo -n "Creating $mygetty ($params) in $DDIR ... " +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DDIR" +ln -s "$mygetty" "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.configure.ipc b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.configure.ipc new file mode 100644 index 00000000..65190baa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.configure.ipc @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius, 2006-07-28 +# +# cinit: configure the ipc method to use +# + +HIER=$(dirname $0) +DDIR=$HIER/../src/ipc +DFILE=${DDIR}/current +IPC_METHOD=$(head -n 1 "$HIER/../conf/ipc_method") + +echo "Configure: IPC: Using \"$IPC_METHOD\" as IPC method" + +# always remove link before, as ln seems to be broken +# Doing ln -sf src/ipc/$method current twice, will create the file +# "current" _BELOW_ src/ipc/$method and not overwrite the link +# src/ipc/current + +rm -f "${DFILE}" +ln -sf "${IPC_METHOD}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.configure.mark b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.configure.mark new file mode 100644 index 00000000..62454c7f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.configure.mark @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: touch a file to mark everything configured +# 2006-08-27 +# + +echo "Configure: MK: Marking directory as configured" +touch .configured diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.configure.os b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.configure.os new file mode 100644 index 00000000..d5b8e6e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.configure.os @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups symlinks for the os +# + +DDIR=$(dirname $0)/../src/os +DFILE="$DDIR/current" +OSCONFIG=$(dirname $0)/../conf/os + +OS=$(head -n 1 "$OSCONFIG") + +echo "Configure: OS: Binaries are created for $OS ..." + +rm -f "${DFILE}" +ln -sf "${OS}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.configure.tools b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.configure.tools new file mode 100644 index 00000000..43242a01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.configure.tools @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups scripts for compiling and linking +# + +HIER=$(dirname $0) +DDIR=$HIER/../tmpbin/ +CC=$(head -n 1 "$HIER/../conf/cc") +CFLAGS=$(head -n 1 "$HIER/../conf/cflags") +LD=$(head -n 1 "$HIER/../conf/ld") +LDFLAGS=$(head -n 1 "$HIER/../conf/ldflags") +STRIP=$(head -n 1 "$HIER/../conf/strip") + +echo "Configure: CC: Creating cc, ld and strip ..." + +mkdir -p "$DDIR" +cd "$DDIR" + +echo "$CC $CFLAGS \"\$@\"" > cc +echo "$LD $LDFLAGS \"\$@\"" > ld +echo "$STRIP \"\$@\"" > strip + +# set correct permissions +chmod 0700 * diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.create.empty.service new file mode 100644 index 00000000..365c4bc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.create.empty.service @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.binary new file mode 100644 index 00000000..a368ac23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.binary @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: - +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice +"$INSTALL_PROG" sbin/ccontrol $DESTDIR/$PREFIX/sbin/ccontrol +"$INSTALL_PROG" bin/cinit.reboot $DESTDIR/$PREFIX/sbin/cinit.reboot +"$INSTALL_PROG" bin/cinit.shutdown $DESTDIR/$PREFIX/sbin/cinit.shutdown +"$INSTALL_PROG" bin/cinit.wait.for.daemon \ + $DESTDIR/$PREFIX/sbin/cinit.wait.for.daemon + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi + +# install as /sbin/shutdown, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/shutdown ]; then + ln -s $PREFIX/sbin/cinit.shutdown $DESTDIR/$PREFIX/sbin/shutdown +fi + +# install as /sbin/reboot, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/reboot ]; then + ln -s $PREFIX/sbin/cinit.reboot $DESTDIR/$PREFIX/sbin/reboot +fi diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.config-dir b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.config-dir new file mode 100644 index 00000000..c9adb70f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.config-dir @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.dir new file mode 100644 index 00000000..5e16f690 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.dir @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/sbin" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.fsck b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.fsck new file mode 100644 index 00000000..4508860a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.fsck @@ -0,0 +1,36 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 3 ]; then + echo "$(basename $0): name device filesystem-type" + exit 1 +fi + +NAME=$1 +DEVICE=$2 +FS_TYPE=$3 + +FSCK=/sbin/fsck.$FS_TYPE + +if [ ! -f "$FSCK" ]; then + echo "Missing $FSCK, abort." + exit 1 +fi + +if [ ! -e "$DEVICE" ]; then + echo "Missing $DEVICE abort." + exit 1 +fi + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME" +ln -sf "$FSCK" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON" +echo "$DEVICE" > "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.miniconf b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.miniconf new file mode 100644 index 00000000..45dcc632 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.miniconf @@ -0,0 +1,103 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: 2005-08-07 +# + + +. $(dirname $0)/cinit.read-conf + +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" +echo "" +echo "This will install a minimal cinit configuration." +echo "This configuration _SHOULD_ be able to run on _MOST_ systems." +echo "Still, it's highly EXPERIEMENTAL, use with CAUTION." +echo "" +echo "Please make sure, that" +echo " - you are using a journaling filesystem (fsck is not used)" +echo " - you have agetty, fgetty or mingetty installed" +echo " - you are runnig Linux 2.6 (sysfs is used)" +echo " - you have udev or static device nodes (you need /dev/tty*)" +echo " - getties will run on tty2-tty7, tty1 is used or logging" +echo "" +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" + +notosoftwarepatents="Please keep an eye on software patents, they are evil." +read -p "Do you really want to continue? [y/N] " notosoftwarepatents + +if [ "$notosoftwarepatents" = "y" -o "$notosoftwarepatents" = "Y" ]; then + echo "Let us try it ..." +else + echo 'Bye bye!' + exit 0 +fi + +set -e + +# Create basic layout +$(dirname $0)/cinit.install.standard-dirs + +# Install services: +# - mount root r/w +# - mount /proc +# - mount /sys +# - install getties on tty2-tty7 +# - add cleanup for /etc/mtab +# - add loopback device +# - init service + echo + +################################### mount ##################################### +# mount root read/write +$(dirname $0)/cinit.install.service.mount-root + +# - mount /proc +$(dirname $0)/cinit.install.service.mount-proc + +# - mount /sys +$(dirname $0)/cinit.install.service.mount-sys + +# mount needs everything below it +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/root" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/proc" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/sys" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" + +################################### getty ##################################### +# mount root read/write +# install getties +begin_getty=2 +end_getty=7 +i=$begin_getty + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" +while [ "$i" -le "$end_getty" ]; do + $(dirname $0)/cinit.add.getty + ln -sf "${DESTDIR}/${CINIT_DIR}/getty/$i" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" + i=$(($i+1)) +done + +################################### mtab ##################################### +# - add cleanup for /etc/mtab +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" +$(dirname $0)/cinit.install.service.cleanup-mtab +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" + +################################### lo ##################################### +# - add loopback device +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" +$(dirname $0)/cinit.install.service.network-lo +ln -sf "${DESTDIR}/${CINIT_DIR}/network/lo" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" + +# - init service + echo +# init depends on mount, getty -> everything from base-layout +$(dirname $0)/cinit.install.service.init +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" + +ln -sf "${DESTDIR}/${CINIT_DIR}/local-services/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/getty/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/network/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.cleanup-mtab b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.cleanup-mtab new file mode 100644 index 00000000..30a8dd48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.cleanup-mtab @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: cleanup mtab +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" +echo '#!/bin/sh' > "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'rm -f /etc/mtab' >>"${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'ln -s /proc/mounts /etc/mtab' \ + >> "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +chmod 0700 "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.hostname.generic b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.hostname.generic new file mode 100644 index 00000000..2d72f50e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.hostname.generic @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service, which sets the hostname +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): hostname" + exit 1 +fi + +HOSTNAME=$1 +HOSTNAME_BIN=${HOSTNAME_BIN:-/bin/hostname} + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/network/hostname" +ln -sf "$HOSTNAME_BIN" "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON" +echo "$HOSTNAME" > "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.init b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.init new file mode 100644 index 00000000..c3a10931 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.init @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +ln -sf /bin/echo "${DESTDIR}/${CINIT_DIR}/${C_INIT}/$C_ON" +echo '*** cinit initial service successfully started ***' \ + > "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.keymap.c_keymap b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.keymap.c_keymap new file mode 100644 index 00000000..235a329e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.keymap.c_keymap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install keymap from environment setting +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +if [ -z "$C_KEYMAP" ]; then + echo "Set C_KEPMAP to the wanted keymap." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" ]; then + echo "Service keymap already exists." + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find loadkeys) + +if [ $? -ne 0 ]; then + echo "Did not find binary loadkeys." + exit 1 +fi + +echo -n "Installing keymap to ${DESTDIR}/${CINIT_DIR}/local-tuning/keymap ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON" + +echo "$C_KEYMAP" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.mount-proc b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.mount-proc new file mode 100644 index 00000000..024847a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.mount-proc @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /proc +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/proc" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/proc/$C_ON" +echo proc > "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo /proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.mount-root b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.mount-root new file mode 100644 index 00000000..a1bd56ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.mount-root @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount root r/w +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# mount root read/write +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/root" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/root/$C_ON" +echo -n > "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo -o >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo remount,rw >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo / >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.mount-sys b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.mount-sys new file mode 100644 index 00000000..8c8191aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.mount-sys @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /sys +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /sys +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/sys" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/sys/$C_ON" +echo sys > "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo sysfs >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo /sys >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.network-lo b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.network-lo new file mode 100644 index 00000000..45bff6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.network-lo @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: loopback device +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/lo" +ln -sf /sbin/ifconfig "${DESTDIR}/${CINIT_DIR}/network/lo/$C_ON" +echo lo > "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo 127.0.0.1/8 >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo up >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.ntpdate.debian b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.ntpdate.debian new file mode 100644 index 00000000..2af2ee4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.ntpdate.debian @@ -0,0 +1,47 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install ntpdate +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +. /etc/default/ntpdate + +if [ -z "$NTPSERVERS" ]; then + echo "No ntp servers found, aborting" + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find ntpdate) + +if [ $? -ne 0 ]; then + echo "Did not find binary ntpdate." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" ]; then + echo "Service ntpdate already exists." + exit 1 +fi + +echo -n "Installing ntpdate to ${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON" + +for server in $NTPSERVERS; do + echo "$server" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON$C_PARAMS" +done + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.udev b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.udev new file mode 100644 index 00000000..d91f01cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.service.udev @@ -0,0 +1,64 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install udev +# Date: 2005-10-15 +# Comment: DO NOT RSYNC TO THE WRONG SIDE! +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BIN_UDEVSEND=$($(dirname $0)/cinit.path-find udevsend) +BIN_UDEVSTART=$($(dirname $0)/cinit.path-find udevstart) +BIN_SYSCTL=$($(dirname $0)/cinit.path-find sysctl) +BIN_MOUNT=$($(dirname $0)/cinit.path-find mount) +SERVICE="local-tuning/udev" + +if [ -z "$BIN_UDEVSEND" -o -z "$BIN_UDEVSTART" -o -z "$BIN_SYSCTL" -o -z "$BIN_MOUNT" ]; then + echo "Did not find a binary." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo "Installing ${SERVICE} to ${DESTDIR}/${CINIT_DIR}/ ..." + +# 0. general udev +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}" +# 1. udevmount +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/mount/udev" +ln -sf "$BIN_MOUNT" "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON" +echo "udev" > "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "-t" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "tmpfs" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "/dev" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" + +# 2. udevstart +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart" +ln -sf "$BIN_UDEVSTART" "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart/$C_ON" + +# dependencies +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/sys +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/udev + +# 3. udev to hotplug +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug" +ln -sf "$BIN_SYSCTL" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug/$C_ON" +echo "$BIN_UDEVSEND" > "${DESTDIR}${CINIT_DIR}/${SERVICE}/hotplug/$C_ON$C_PARAMS" + +$(dirname $0)/cinit.add.dependency ${SERVICE}/hotplug needs mount/proc + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.standard.init.deps b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.standard.init.deps new file mode 100644 index 00000000..dcc5cd07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.standard.init.deps @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add standard sub-configuration directories to init wants +# Date: 2005-10-11 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.standard.mounts b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.standard.mounts new file mode 100644 index 00000000..bb1fc0c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.standard.mounts @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create normal mounts +# Date: 2005-10-16 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.swap b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.swap new file mode 100644 index 00000000..84e6c928 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.swap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install swap +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +SERVICE=mount/swap + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BINARY=swapon +BINARY_PATH=$($(dirname $0)/cinit.path-find $BINARY) +if [ $? -ne 0 ]; then + echo "Did not find binary $BINARY." + exit 1 +fi + +HAS_SWAP=$(awk '$3 ~ /swap/ { print $3 }' /etc/fstab) +if [ -z "$HAS_SWAP" ]; then + echo "Seems you have no swap, service not installing" + exit 1 +fi +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo -n "Installing ${SERVICE} to ${DESTDIR}${CINIT_DIR}/${SERVICE} ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON" + +echo "-a" >> "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.merge.sysvinit-debian-sid b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.merge.sysvinit-debian-sid new file mode 100644 index 00000000..3ef0ce03 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.merge.sysvinit-debian-sid @@ -0,0 +1,137 @@ +#!/bin/sh +# Nico Schottelius +# Date: Sun Oct 16 16:57:03 CEST 2005 +# cLinux/cinit +# Automagically convert Debian-Sysv-Iinit +# THIS IS NOT CLEAN. +# THIS IS NOT EVEN INTENTED TO BE CLEAN. +# This is just a small hack, because my girlfriend wants her notebook back. + +echo "***> $(basename $0): converting Debian-Sys-V-Init" + +# read standard values, may be overwritten from outside +. $(dirname $0)/cinit.read-conf + +echo "***> Finding standard config ..." +# variables, which can be set from the outside +ROOT_DEV=${ROOT_DEV:-$(awk '$2 ~ /^\/$/ { print $1 }' /etc/fstab)} +ROOT_FSCK=${ROOT_FSCK:-$(awk '$2 ~ /^\/$/ { print $6 }' /etc/fstab)} +ROOT_FS=${ROOT_FS:-$(awk '$2 ~ /^\/$/ { print $3 }' /etc/fstab)} +RUNLEVEL=${RUNLEVEL:-$(runlevel | awk '{ print $2 }')} + +echo "***> Detecting keymap (this may take some time)" + +if [ -z "$C_KEYMAP" ]; then + echo "Please set the variable C_KEYMAP to your keymap." + echo "It is impossible to detect reliable your keymap in Debian." + exit 1 +fi + + +echo "***> Configuration" +echo "Hostname (\$HOSTNAME): $HOSTNAME" +echo "Keymap (\$C_KEYMAP): $C_KEYMAP" +echo "Root device (\$ROOT_DEV): $ROOT_DEV" +echo "Root fsck (\$ROOT_FSCK): $ROOT_FSCK" +echo "Root FS (\$ROOT_FS): $ROOT_FS" +echo "Runlevel (\$RUNLEVEL): $RUNLEVEL" +echo "Destdir: (\$DESTDIR): $DESTDIR" +echo "Config-Dir: (\$CINIT_DIR): $CINIT_DIR" +read -p "Is this correct (Y/n) " correct + +if [ "$correct" != "y" -a "$correct" != "Y" ]; then + echo "***> Abort." + exit 1 +fi + +if [ -d "${DESTDIR}${CINIT_DIR}" ]; then + echo "ERROR: Configuration already exists at ${DESTDIR}${CINIT_DIR}." + exit 1 +fi + +echo "***> Installing standard structure and dependencies" +set -e +$(dirname $0)/cinit.install.config-dir +$(dirname $0)/cinit.install.standard.dirs +$(dirname $0)/cinit.install.standard.init.deps + +echo "***> Adding mount / r/w" +$(dirname $0)/cinit.install.service.mount-root + +if [ "$ROOT_FSCK" = "1" ]; then + echo "***> Adding fsck for $ROOT_DEV ..." + $(dirname $0)/cinit.install.fsck root "$ROOT_DEV" "$ROOT_FS" + echo "***> Adding dependency" + $(dirname $0)/cinit.add.dependency mount/root needs fsck/root +else + echo "***> Skipping fsck for $ROOT_DEV ..." +fi + +echo "***> Setting up standard mounts ..." +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up hostname: $HOSTNAME" +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up keymap" +$(dirname $0)/cinit.install.service.keymap.c_keymap + +echo "***> Creating getties (tty1-8)" +for i in `seq 1 8`; do + $(dirname $0)/cinit.add.getty + + # each getty needs: + # - root r/w + $(dirname $0)/cinit.add.dependency getty/$i needs mount/root + # - hostname + $(dirname $0)/cinit.add.dependency getty/$i needs network/hostname +done + +echo "***> Enabling getties (tty2-8)" +for i in `seq 2 8`; do + # add getties to getty/ + $(dirname $0)/cinit.add.dependency getty wants getty/$i +done + +# +# Convert services: check /etc/rcS.d and /etc/rcX.d +# +echo "***> Converting services ..." +for script in $(cd /etc/rcS.d/; ls S*; cd /etc/rc${RUNLEVEL}.d/; ls S*); do + echo -n "$script: " + case $script in + # SCRIPTS READY + *ntpdate) + $(dirname $0)/cinit.install.service.ntpdate.debian + $(dirname $0)/cinit.add.dependency local-tuning/ntpdate needs network + ;; + *udev*) + $(dirname $0)/cinit.install.service.udev + + # SCRIPTS NEVER READY + *glibc.sh|*module-init-tools|*modutils|*procps.sh|*hotplug-net|*bootmisc.sh|*nviboot|*screen-cleanup|*x11-common|*sudo|*makedev|*rmnologin) + echo "Ignoring (useless)." + ;; + + # SCRIPTS NOT YET READY + *mountvirtfs|*checkroot.sh|*ifupdown-clean|*checkfs.sh|*mountall.sh|*ifupdown|*hostname*|*mountnfs.sh|*alsa|*rsync|*ssh|*fam|*cron|*gdm) + echo "converting planned later." + ;; + + # SCRIPTS LATER TO DO + *bootlogd|*keymap.sh|*hwclock*|*discover|*pppd-dns|*dns-clean|*networking|*portmap|*console-screen.sh|*urandom|*klogd|*apmd|*dbus-1|*exim4|*pcmcia|*nfs-common|*stop-bootlogd) + echo "unsupported currently (FIXME PLEASE)." + ;; + *sysklogd|*ppp|*inetd|*lpd|*aumix|*atd) + echo "unsupported (choose a better alternative)." + ;; + *initrd-tools.sh|*libdevmapper*|*hotplug) + echo "Ignoring (general or bloated script)." + ;; + *) + echo "Ignoring (unknown)" + ;; + esac +done + +echo "***> Finished." diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.path-find b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.path-find new file mode 100644 index 00000000..0d0f362b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.path-find @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: find binary in path +# Date: 2005-10-15 +# + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): searched binary" + exit 1 +fi + +binary=$1 + +# this is NOT really clean, paths can also contain spaces +for pfad in $(echo $PATH | sed 's/:/ /g'); do + fullname=$pfad/$binary + if [ -f "$fullname" ]; then + echo "$fullname" + exit 0 + fi +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.remove.getty new file mode 100644 index 00000000..4950eeed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.remove.getty @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + +if [ ! "$NUMBER" ]; then + echo "There is no getty to remove." + exit 1 +fi + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r "$DDIR" +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.shutdown new file mode 100644 index 00000000..702c8a17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.shutdown @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# TODO: use ccontrol! +# 2005-05-24 (Last changed: 2005-06-18) + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -p|--power-off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " -s|--rescue: Rescue mode" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -p|--power-off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + -s|--rescue) kill -USR2 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.uml.test new file mode 100644 index 00000000..f6ea7fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.1 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG umid=cinit$$ init=/sbin/cinit" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..7f027455 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 (Last Changed: 2005-06-17) + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +PIDFILE=$1; shift +DAEMON=$1; shift + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/.README b/software/cinit/browse_source/cinit-0.3pre12/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/c_confdir b/software/cinit/browse_source/cinit-0.3pre12/conf/c_confdir new file mode 100644 index 00000000..091e6192 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/c_confdir @@ -0,0 +1,3 @@ +conf + +The directory below cinit_dir for cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/c_delay b/software/cinit/browse_source/cinit-0.3pre12/conf/c_delay new file mode 100644 index 00000000..dc30f147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGTERM for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/c_env b/software/cinit/browse_source/cinit-0.3pre12/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/c_init b/software/cinit/browse_source/cinit-0.3pre12/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/c_last b/software/cinit/browse_source/cinit-0.3pre12/conf/c_last new file mode 100644 index 00000000..8debf155 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/c_last @@ -0,0 +1,7 @@ +last + +Name of the file below cinit_dir/c_confdir/ to execute right before +reboot/halt/poweroff. + +This maybe a shellscript with the OS-specific umount procedure (like umount -a), +see doc/user/configuring.cinit for more details. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/c_needs b/software/cinit/browse_source/cinit-0.3pre12/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/c_off b/software/cinit/browse_source/cinit-0.3pre12/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/c_on b/software/cinit/browse_source/cinit-0.3pre12/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/c_panic b/software/cinit/browse_source/cinit-0.3pre12/conf/c_panic new file mode 100644 index 00000000..7fdb77b3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/c_panic @@ -0,0 +1,5 @@ +panic + +Name of the file below cinit_dir/c_confdir/ to execute on panic. +This name .params (normally panic.params) will be passed as parameters/ +argumunts to panic. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/c_params b/software/cinit/browse_source/cinit-0.3pre12/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/c_respawn b/software/cinit/browse_source/cinit-0.3pre12/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/c_sock b/software/cinit/browse_source/cinit-0.3pre12/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/c_tmp b/software/cinit/browse_source/cinit-0.3pre12/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.3pre12/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.3pre12/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/c_wants b/software/cinit/browse_source/cinit-0.3pre12/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/cc b/software/cinit/browse_source/cinit-0.3pre12/conf/cc new file mode 100644 index 00000000..b168ae6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/cc @@ -0,0 +1,3 @@ +gcc + +The c-compiler to use. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/cflags b/software/cinit/browse_source/cinit-0.3pre12/conf/cflags new file mode 100644 index 00000000..f205afb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/cflags @@ -0,0 +1,6 @@ +-pipe -W -Wall -Werror -Iinclude -g -D_XOPEN_SOURCE=600 -D_USE_POSIX + +Standard flags to pass to (g)cc. + +-D_XOPEN_SOURCE=600 must be used on glibc to select the right standard. +-D_USE_POSIX is needed for sigemptyset on glibc diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/cinit_dir b/software/cinit/browse_source/cinit-0.3pre12/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/confdir b/software/cinit/browse_source/cinit-0.3pre12/conf/confdir new file mode 100644 index 00000000..55fb65e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/confdir @@ -0,0 +1,3 @@ +conf + +The subdirectory below /etc/cinit to be used for general configurations. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/destdir b/software/cinit/browse_source/cinit-0.3pre12/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/getty_dir b/software/cinit/browse_source/cinit-0.3pre12/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/install_directory b/software/cinit/browse_source/cinit-0.3pre12/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/install_prog b/software/cinit/browse_source/cinit-0.3pre12/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/ipc_method b/software/cinit/browse_source/cinit-0.3pre12/conf/ipc_method new file mode 100644 index 00000000..fc75e273 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/ipc_method @@ -0,0 +1,5 @@ +msgq + +The type of IPC (inter process communication) to use. +Valid values can be optained by issuing `ls src/ipc/`. + diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/ld b/software/cinit/browse_source/cinit-0.3pre12/conf/ld new file mode 100644 index 00000000..b60e4836 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/ld @@ -0,0 +1,3 @@ +gcc + +Comment missing. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/ldflags b/software/cinit/browse_source/cinit-0.3pre12/conf/ldflags new file mode 100644 index 00000000..fc214daf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/ldflags @@ -0,0 +1,3 @@ + + +No flags specified normally. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/max_delay b/software/cinit/browse_source/cinit-0.3pre12/conf/max_delay new file mode 100644 index 00000000..30725bf8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/max_delay @@ -0,0 +1,4 @@ +30 + +Maximum number of seconds to sleep between retrying to start it +(respawn only). diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/max_deps b/software/cinit/browse_source/cinit-0.3pre12/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/msgq_pathname b/software/cinit/browse_source/cinit-0.3pre12/conf/msgq_pathname new file mode 100644 index 00000000..1bef0b6b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/msgq_pathname @@ -0,0 +1,4 @@ +/bin/sh + +Used to generate an unique identifier for the message queue. +See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/msgq_to_clients b/software/cinit/browse_source/cinit-0.3pre12/conf/msgq_to_clients new file mode 100644 index 00000000..dd15808a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/msgq_to_clients @@ -0,0 +1,4 @@ +o + +This is use in ftok to generate a key_t for the message queue use to write +to the clients. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/msgq_to_server b/software/cinit/browse_source/cinit-0.3pre12/conf/msgq_to_server new file mode 100644 index 00000000..f87ae3f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/msgq_to_server @@ -0,0 +1,4 @@ +i + +This is use in ftok to generate a key_t for the message queue use to write +to the server. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/os b/software/cinit/browse_source/cinit-0.3pre12/conf/os new file mode 100644 index 00000000..ddbf8f9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/os @@ -0,0 +1,14 @@ +linux + +Select the operating system compiling for. + +Current possibilities: + + - linux + + +Currently Planned possibilities: + + - freebsd + - openbsd + - netbsd diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/p_asciidoc b/software/cinit/browse_source/cinit-0.3pre12/conf/p_asciidoc new file mode 100644 index 00000000..52485c86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/p_asciidoc @@ -0,0 +1,6 @@ +asciidoc + +The binary on your system (with or without path) which does what I expect +asciidoc todo. + +Default: asciidoc diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/p_docbooktoman b/software/cinit/browse_source/cinit-0.3pre12/conf/p_docbooktoman new file mode 100644 index 00000000..d62c9015 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/p_docbooktoman @@ -0,0 +1,6 @@ +docbook2x-man + +The binary on your system (with or without path) which converts +docbook to manpages. + +Default: docbook2x-man diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/p_docbooktotexi b/software/cinit/browse_source/cinit-0.3pre12/conf/p_docbooktotexi new file mode 100644 index 00000000..278f6805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/p_docbooktotexi @@ -0,0 +1,6 @@ +docbook2x-texi + +The binary on your system (with or without path) which converts +docbook to texinfo. + +Default: docbook2x-texi diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/prefix b/software/cinit/browse_source/cinit-0.3pre12/conf/prefix new file mode 100644 index 00000000..6b90469f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/prefix @@ -0,0 +1,5 @@ + + +Where to install cinit. Normally this will be /, but you can put it anywhere. +The subdirectory 'sbin' under this prefix must be readable by the kernel. +This is normally either empty or "/". diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/profile b/software/cinit/browse_source/cinit-0.3pre12/conf/profile new file mode 100644 index 00000000..b9104bf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/profile @@ -0,0 +1,9 @@ +cprofile: + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile:" is the standard, as +the Linux kernel eats everything in the form 'var=parm'. +The old (pre cinit-0.1) option "cprofile=" should therefore +NOT be used. + +Under Linux you tell it the bootloader like grub or LILO. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/service_categories b/software/cinit/browse_source/cinit-0.3pre12/conf/service_categories new file mode 100644 index 00000000..2216ea97 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/service_categories @@ -0,0 +1,7 @@ +getty init local-tuning local-services mount network remote-services + +List of directories normally created below /etc/cinit/svc/ as +'pseudo-services'. + +Btw, 'init' is the first service and has always to be there, but it does not really +fit into here, because it's a real one, compraed to the pseudo services. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/sleep_before_kill b/software/cinit/browse_source/cinit-0.3pre12/conf/sleep_before_kill new file mode 100644 index 00000000..2671f22d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/sleep_before_kill @@ -0,0 +1,7 @@ +sleep_before_kill + +The file that specifies how long to sleep after sending SIGTERM, before sending +SIGKILL to every process. If this file is non-existing the builtin value from +'sleep_kill'. + +The file should be located below conf/ diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/sleep_kill b/software/cinit/browse_source/cinit-0.3pre12/conf/sleep_kill new file mode 100644 index 00000000..b419241a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/sleep_kill @@ -0,0 +1,8 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. + +Note: This does NOT affect terminating services, they are shutdown by +their own 'off' functions. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.3pre12/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.3pre12/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/sleep_svc b/software/cinit/browse_source/cinit-0.3pre12/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/sock_queue b/software/cinit/browse_source/cinit-0.3pre12/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/strip b/software/cinit/browse_source/cinit-0.3pre12/conf/strip new file mode 100644 index 00000000..08736418 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/strip @@ -0,0 +1,3 @@ +strip -R .comment -R .note + +Strip out unecessary parts of the binaries. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/sulogin b/software/cinit/browse_source/cinit-0.3pre12/conf/sulogin new file mode 100644 index 00000000..24859afc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/sulogin @@ -0,0 +1,6 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it, if the standard panic +action fails (as specified in cinit_dir/c_confdir/panic). + +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/svcdir b/software/cinit/browse_source/cinit-0.3pre12/conf/svcdir new file mode 100644 index 00000000..087a3848 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/svcdir @@ -0,0 +1,3 @@ +svc + +Directory below /etc/cinit that contains the services. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf/version b/software/cinit/browse_source/cinit-0.3pre12/conf/version new file mode 100644 index 00000000..5f00ce98 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf/version @@ -0,0 +1,3 @@ +"0.3pre12" + +The version. diff --git a/software/cinit/browse_source/cinit-0.3pre12/conf2/README b/software/cinit/browse_source/cinit-0.3pre12/conf2/README new file mode 100644 index 00000000..c753107d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/conf2/README @@ -0,0 +1,33 @@ +Migrate conf/ to general conf/-buildsystem (write documentation for it). + +gpm2 may be an example for this! + +conf/targets: + targets to make available in Makefile and their dependencies + + abstract the build-process somehow, so one can create build-targets? + + c-programs/ (includes cc / ld) + cinit (link to conf/object_listings cinit?) +conf/object_listings + lists of dependencies: + conf/object_listings/cinit contains all objects needed for cinit + +conf/programs/ + like cc, ld, install, ... + +conf/built-options/ + like --... in ./configure + +conf/install/ + + options/ + destdir (prefixed before everything) + prefix (standard prefix) + bin (relative to prefix, if not beginning with a /) + sbin (relative to prefix, if not beginning with a /) + lib (relative to prefix, if not beginning with a /) + targets/ + cinit/ + built-target (link to conf/targets/cinit) + destination (relative to diff --git a/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/Makefile b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/Makefile new file mode 100644 index 00000000..23cc41f0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/Makefile @@ -0,0 +1,70 @@ +# +# (c) 2005 Peter Portmann (pp at bluewin.ch) +# cinit/contrib+tools +# +# This script is written for the clinux-System and published +# under the terms of GPL 2.0 +# +# Version: 0.2 +# clean with a single command instead of two commands. +# +# ChangeLog: +# 0.1 initial version +# +# Todo: +# +# Features: + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +DEBUG=-g -DDEBUG +#OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! +LDFLAGS= + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. -I../ +LD=gcc +STRIP=strip -R .comment -R .note + +INSTALL = install + +prefix = /usr +bindir = $(prefix)/bin + +# objects + +CLIENT=cinit.graph.text.o + +COMMUNICATION=error.o usage.o mini_printf.o + +OBJ=$(CLIENT) $(COMMUNICATION) + +# +PROGRAMS=cinit.graph.text +SCRIPTS=cconfig.graph.xml.rb \ + make.cconfig.from.xml.rb \ + cinit-vis.pl + +# targets +all: $(PROGRAMS) + +cinit.graph.text: $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +clean: + rm -f *.o $(PROGRAMS) + +install: all + @echo '*** Installing contrib+tools ***' + $(INSTALL) -d -m755 $(DESTDIR)$(bindir) + for bin in $(SCRIPTS) $(PROGRAMS); do \ + $(INSTALL) $$bin $(DESTDIR)/$(bindir); \ + done diff --git a/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/README b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/README new file mode 100644 index 00000000..85fa2f5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/README @@ -0,0 +1,11 @@ +contrib+tools/ + programs written by others and external tools not necessary + needed but (very) nice to have + + + cinit-vis.pl - draw an ascii graph of cinit configuration [perl] + cinit.graph.text - draw an ascii graph of cinit configuration [c] + + cconfig.graph.xml.rb - creates a xml file from a cconfig [ruby] + make.cconfig.from.xml.rb - creates a cconfig from a xml file [ruby] + diff --git a/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/README.ruby b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/README.ruby new file mode 100644 index 00000000..ed210cee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/README.ruby @@ -0,0 +1,7 @@ +The ruby tools for general cconfig [0] are written by René Nussbaumer [1]. +You can find the documentation for them at [2]. + + +[0]: http://nico.schotteli.us/papers/linux/cconfig/ +[1]: http://killerfox.forkbomb.ch/ +[2]: http://killerfox.forkbomb.ch/articles/cconfig/tools diff --git a/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/cconfig.graph.xml.rb b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/cconfig.graph.xml.rb new file mode 100644 index 00000000..d18ba422 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/cconfig.graph.xml.rb @@ -0,0 +1,117 @@ +#!/usr/bin/env ruby + +=begin + + Writes an XML-Tree for a cconfig directory + Idea by Nico Schottelius aka telmich + Implemented and (C) by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added support for binary files + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Changed checking order: symlink, directory, file. Because of + a logical bug -> directory follows symlink so, when a symlink + points to a directory no «link» element is created. + + Version 0.1 (René Nussbaumer): + * Holy hack for directory scanning (needs to be optimized) + * Hack for rexml to print out «lost» tags. This rexml sux. + + Todo: + * Optimize scanning. + * Use another xml library instead of rexml crap. + Problem: Produce dependencies -> no std-lib + + Features: + * Create a flat (no deepnes without directory) and 1:1 image + of an cconfig directory + +=end + +require 'rexml/document' +require 'base64' +require 'digest/sha1' + +require 'filemagic' + +@version = '0.3' + +def determineTarget(entry) + return 'external' if(!File.expand_path(entry).index(@initpath)) + return 'link' if(FileTest.symlink?(entry)) + return 'object' if(FileTest.directory?(entry)) + return 'attribute' if(FileTest.file?(entry)) + return 'unknown' # Should never be reached +end + +def createTree(dir, parent) + dir.each { |entry| + next if(entry =~ /^(\.|\.\.)$/) + + if(FileTest.symlink?(entry)) + e = parent.add_element('link') + + # Much fun with links + e.add_attributes( { 'name' => entry, 'target' => determineTarget(File.readlink(entry)) } ) + e.add_text(File.readlink(entry)) + elsif(FileTest.directory?(entry)) + e = parent.add_element('object') + e.add_attribute('name', entry) + + # Bad, that we need to change the directory every time. + oldPwd = Dir.pwd + Dir.chdir(entry) + createTree(Dir.new('.'), e) + Dir.chdir(oldPwd) + elsif(FileTest.file?(entry)) + e = parent.add_element('attribute') + e.add_attribute('name', entry) + if(File.stat(entry).size?) + # Yeah, we got one WITH content! W00h00, let's party. + + fm = FileMagic.new(FileMagic::MAGIC_MIME) + if(fm.file(entry) =~ /executable/) + e.add_attribute('type', 'binary') + text = File.new(entry).read + e.add_attribute('sha1', Digest::SHA1.hexdigest(text)) + e.add_text(Base64.encode64(text)) + else + e.add_text(File.new(entry).read) + end + fm.close() + end + end + } +end + + +if(!ARGV[0] || !FileTest.directory?(ARGV[0])) + puts 'You need to specify a directory' + Kernel.exit(-1) +end + +doc = REXML::Document.new + +e = doc.add_element('cconfig') +e.add_attribute('name', File.basename(ARGV[0])) +e.add_attribute('version', @version) + +@initpath = File.expand_path(ARGV[0]) +Dir.chdir(ARGV[0]) +createTree(Dir.new('.'), doc.root) + +out = '' +doc.write(out, 0, false, true) + +REXML::XMLDecl.new('1.0', 'utf-8').write($stdout) # This should automatically printed by rexml. Damn bugs. +puts '' +puts out # Workaround for a buggy rexml + diff --git a/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/cinit-vis.pl b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/cinit-vis.pl new file mode 100644 index 00000000..4a439fc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/cinit-vis.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# (c) by Marcus Przyklink (downhill-clinux@burningchaos.org) +# written for cinit and published under GPL +# beautified a bit by Nico Schottelius +# optimized by René Nussbaumer +# Version: 0.1 + +use strict; +use warnings; + +# +# Variables for location and output +# +# cinit-directory +my $path = "/etc/cinit/svc/"; +# started profile +my $starting_point = "init"; +# the spaces for each level (integer: amount of spaces) +my $space = 3; +# marker for need +my $need = "-->"; +# marker for want +my $want = "==>"; + +# +# main function, recursively list the components of the cinit system +# +if (@ARGV) { + if( $ARGV[0] =~ /-(h|-help)/ ) { + print "Usage: " . __FILE__ . " without parameters for standard-use (check variables in file)\n"; + print " Parameters:\n"; + print " -h for this help\n"; + print " profile-name for a profile\n"; + exit(0); + } + else { + $starting_point = $ARGV[0]; + } +} + +# +# start first instance +# +sub get_deeper { + my ($point, $tmp_counter, $need_want) = splice @_; + + print " " x ($space * $tmp_counter) . ($need_want ? $need : $want) . " " . $point . "\n"; + + opendir(DIR, "${path}${point}/needs") and + my @next_need = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + opendir(DIR, "${path}${point}/wants") and + my @next_want = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + + for(@next_need) { + get_deeper($_, $tmp_counter + 1, 1); + } + for(@next_want) { + get_deeper($_, $tmp_counter + 1, 0); + } +} + +# +# start first instance +# +get_deeper($starting_point, 0, 0); + +# +# work done, go home +# +exit(0); diff --git a/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/cinit.graph.text.c b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/cinit.graph.text.c new file mode 100644 index 00000000..5e5316ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/cinit.graph.text.c @@ -0,0 +1,200 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + cinit.graph.text.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.2 + + ChangeLog: + Version 0.2 (Peter Portmann): + * Not assigned link destinies are marked by (!). + * Not readable directories are marked by "directory not readable". + + Version 0.1 (Peter Portmann): + * Print of the directory structure of the contained files and links + without following the links. + + Todo: + + Features: +*/ + +//#include +#include +#include +#include +#include +#include +#include +#include +//#include "cinit.h" +#include "error.h" + +#define FTW_F 1 /* file isn't a directory */ +#define FTW_D 2 /* file is a directory */ +#define FTW_DNR 3 /* not readable directory */ +#define FTW_NS 4 /* unsuccesfully stat on this file */ +#define MAX_CHAR 4096 + +/*********************************************************************** + * cinit.graph.text - textual representation of the cinit directory + */ + +#define CSERVICE_BANNER "cinit.graph.text - textual representatio of the cinit directory\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncinit.graph.text \n" \ + "\tpath\t- cinit installationpath\n" + +typedef int EACH_ENTRY(const char *, const struct stat *, int); +typedef enum { FALSE=0, TRUE=1 } bool; + +static char dirpath[PATH_MAX]; +static int depth = 0; +static long int filecount = 0; + +static EACH_ENTRY each_entry; +static int pp_ftw(char *, EACH_ENTRY *); +static int each_getinfo(EACH_ENTRY *); + +/*********************************************************************** + * pp_ftw: file tree walk + */ +static int pp_ftw(char *filepath, EACH_ENTRY *function) +{ + int n; + + if(chdir(filepath) < 0) /* In angegebenen Pfad wechseln */ + err_msg(FATAL_SYS, "can't change to %s", filepath); + + if(getcwd(dirpath, PATH_MAX) == 0) /* Absoluten Pfadnamen ermitteln */ + err_msg(FATAL_SYS, "error using getcwd for %s", filepath); + + n = each_getinfo(function); + + return(n); +} + +/*********************************************************************** + * each_getinfo: get more info for each file. + */ +static int each_getinfo(EACH_ENTRY *function) +{ + struct stat statpuff; + struct dirent *direntz; + DIR *dirz; + int n; + char *zgr; + + if(lstat(dirpath, &statpuff) < 0) + return(function(dirpath, &statpuff, FTW_NS)); /* Error on stat */ + + if(S_ISDIR(statpuff.st_mode) == 0) + return(function(dirpath, &statpuff, FTW_F)); /* no directory */ + + /* It's a directory. + * Call function() for it. After that handel each file in the directory. */ + + if((dirz = opendir(dirpath)) == NULL) { /* Directory not readable */ + closedir(dirz); + return(function(dirpath, &statpuff, FTW_DNR)); + } + + if((n = function(dirpath, &statpuff, FTW_D)) != 0) /* return the directorydirpath */ + return(n); + + zgr = dirpath + strlen(dirpath); /* append slash to the dirpathname */ + *zgr++ = '/'; + *zgr = '\0'; + + while((direntz = readdir(dirz)) != NULL) { + /* ignor . and .. */ + if(strcmp(direntz->d_name, ".") && strcmp(direntz->d_name, "..")) { + strcpy(zgr, direntz->d_name); /* append filename after slash */ + depth++; + if(each_getinfo(function) != 0) { /* Recursion */ + depth--; + break; + } + depth--; + } + } + *(zgr-1) = '\0'; /* deleting evrything after the slash */ + + if(closedir(dirz) < 0) + err_msg(WARNING, "closedir for %s failed", dirpath); + + return(n); +} + +/*********************************************************************** + * each_entry: handling each file and build the graph step by step. + */ +static int each_entry(const char *filepath, const struct stat *statzgr, int filetype) +{ + struct stat statpuff; + static bool erstemal=TRUE; + int i; + + char link[MAX_CHAR]; + + filecount++; + if(!erstemal) { + for(i=1 ; i<=depth ; i++) + printf("%4c|", ' '); + printf("----%s", strrchr(filepath, '/')+1); + } else { + printf("%s", filepath); + erstemal = FALSE; + } + + switch(filetype) { + case FTW_F: + switch(statzgr->st_mode & S_IFMT) { + case S_IFREG: break; + case S_IFCHR: printf(" c"); break; + case S_IFBLK: printf(" b"); break; + case S_IFIFO: printf(" f"); break; + case S_IFLNK: + printf(" -> "); + if(( i=readlink(filepath, link, MAX_CHAR)) != -1) + printf("%.*s", i, link); + if(stat(filepath, &statpuff) < 0) + printf(" (!)"); + break; + case S_IFSOCK: printf(" s"); break; + default: printf(" ?"); break; + } + printf("\n"); + break; + + case FTW_D: + printf("/\n"); + break; + + case FTW_DNR: + printf("/ directory not readable\n"); + break; + + case FTW_NS: + err_msg(WARNING_SYS, "Error using 'stat' on file %s", filepath); + break; + + default: + err_msg(FATAL_SYS, "Unknown Filetype (%d) by file %s", filetype, filepath); + break; + } + + return(0); +} + +/*********************************************************************** + * main: + */ +int main(int argc, char *argv[]) +{ + if(argc != 2) + usage(CSERVICE_BANNER, USAGE_TEXT); + + exit(pp_ftw(argv[1], each_entry)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/cinit.h b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/cinit.h new file mode 100644 index 00000000..cbde3195 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/cinit.h @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Dummy header file to intgrate mini_printf and usage + */ + +#ifndef CINIT_DUMMY_HEADER +#define CINIT_DUMMY_HEADER + +void usage(char *banner, char *text); +void mini_printf(char *str,int fd); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/error.c b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/error.c new file mode 100644 index 00000000..8174c702 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/error.c @@ -0,0 +1,124 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#include "error.h" +#include +#include +#include +#include +#include +#include + +#define MAX_CHAR 4096 + +int debug; /* Aufrufer von log_msg oder log_open muss debug setzen: + 0, wenn interaktiv; 1, wenn Daemon-Prozess */ + +/*---- Lokale Routinen zur Abarbeitung der Argumentliste --------------------*/ +static void msg_err(int sys_msg, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + return; +} + +static void msg_log(int sys_msg, int prio, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + if (debug) { + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + } else { + strcat(puffer, "\n"); + syslog(prio, puffer); + } + return; +} + +/*---- Global aufrufbare Fehlerroutinen -------------------------------------*/ +void err_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_err(0, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + case DUMP: + msg_err(1, fmt, az); + break; + default: + msg_err(1, "Falscher Aufruf von err_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + else if (kennung==DUMP) + abort(); /* core dump */ + exit(1); +} + +void log_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_log(0, LOG_ERR, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + msg_log(1, LOG_ERR, fmt, az); + break; + default: + msg_log(1, LOG_ERR, "Falscher Aufruf von log_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + exit(2); +} + +/*---- log_open --------------------------------------------------------------- + initialisiert syslog() bei einem Daemon-Prozess */ +void log_open(const char *kennung, int option, int facility) +{ + if (debug==0) + openlog(kennung, option, facility); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/error.h b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/error.h new file mode 100644 index 00000000..a55690fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/error.h @@ -0,0 +1,29 @@ +#ifndef ERROR_H +#define ERROR_H +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.h + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#define WARNING 0 +#define WARNING_SYS 1 +#define FATAL 2 +#define FATAL_SYS 3 +#define DUMP 4 + +void log_msg(int kennung, const char *fmt, ...); +void err_msg(int kennung, const char *fmt, ...); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/make.cconfig.from.xml.rb b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/make.cconfig.from.xml.rb new file mode 100644 index 00000000..05f35cc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/make.cconfig.from.xml.rb @@ -0,0 +1,227 @@ +#!/usr/bin/env ruby + +=begin + + Create a cconfig directory based on a xml input. + (C) 2005 by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added binary file support + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Added some commandline options + * Added «level» so control the restrictivity of the program + * Added more «intelligence» to the program, to detect internal broken dependcies. + * Support «debug»-Levels. + * Print statistic at the end of the programs about warnings and errors. + + Version 0.1 (René Nussbaumer): + * Initial + + Todo: + * Use an rexml alternative + * Some cleanup + * Optimize + * Testing? + + Features: + * Create a cconfig directory based on a xml + +=end + +require 'rexml/document' +require 'getoptlong' +require 'base64' +require 'digest/sha1' + +@verbose = 0 +@level = 1 +@version = '0.3' + +@warnings = 0 +@errors = 0 +@checklist = Array.new + +def printMsg(prefix, msg) + puts '%-12s %s' % [prefix + ':', msg] +end + +def error(msg, fatal = 0) + @errors += 1 + fatal = 0 if(@level < 1) + fatal = 255 if(@level > 1 && !fatal) + printMsg(fatal != 0 ? 'PANIC' : 'ERROR', msg) + Kernel.exit(-fatal) if(fatal != 0) +end + +def warn(msg) + error(msg, 1) if(@level > 1) + @warnings += 1 + printMsg('WARNING', msg) +end + +def info(msg) + printMsg('INFO', msg) +end + +def debug(msg, verbosity = 1) + if(@verbose >= verbosity) + printMsg("DEBUG(#{verbosity})", msg) + end +end + +def createObject(name) + error("#{name} already exists.", 1) if(FileTest.exists?(name)) + begin + Dir.mkdir(name) + rescue + error("Could not create directory #{name}: #{$!}. Abort.", 7) + end + debug("Object #{File.expand_path(name)} has been created.", 4) +end + +def createAttribute(name, content = nil) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + begin + file = File.new(name, 'w') + file.print content if(content && !content.empty?) + file.close + debug("Attribute #{File.expand_path(name)} has been created", 4) + rescue + error("Could not create file #{name}: #{$!}. Skipped.") + end +end + +def createLink(name, target, type) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + error("Broken dependencies! Please take a look if #{target} exists on your system", 2) if(type == 'external' && !FileTest.exists?(target)) + if(!FileTest.exists?(target) && type != 'external') + #info("Possible break. But maybe the target #{target} does not yet exists. Checking later.") + exptarget = File.expand_path(target) + @checklist << exptarget + debug("Adding #{target} to the list of internal dependcies to check.", 2) + end + begin + error('You\'ve a system which does not support symbolic links. Abort.', 3) if(File.symlink(target, name) != 0) + rescue + error("Could not create symlink #{name} => #{target}: #{$!}.", 3) + end + debug("Link #{File.expand_path(name)} has been created", 4) +end + +def doWork(elm) + name = elm.name + attrname = elm.attributes['name'] + error("XML Tag with missing name attribute!", 5) if(!attrname) + if(name =~ /(object|cconfig)/) + if(name == 'cconfig') + if(elm.attributes['version']) + info("Found a version string: #{elm.attributes['version']}") + warn("This XML is maybe incompatible with this programm. I'm a version #{@version} script. The XML is generated with a version #{elm.attributes['version']} script. Please update.") if(elm.attributes['version'] > @version) + end + end + createObject(attrname) + if(elm.has_elements?) + pwd = Dir.pwd + Dir.chdir(attrname) + elm.each_element { |e| + doWork(e) + } + Dir.chdir(pwd) + end + elsif(name == 'attribute') + text = nil + e = nil + text = e.value if((e = elm.get_text)) + if(text && elm.attributes['type'] && elm.attributes['type'] == 'binary') + text = Base64.decode64(text) + if(Digest::SHA1.hexdigest(text) != elm.attributes['sha1']) + warn("SHA1 differs from file: #{Dir.pwd}#{attrname}") + end + end + createAttribute(attrname, text) + elsif(name == 'link') + error("link-Tag without content.", 6) if(!elm.has_text?) + error("link with missing target. Skipped.") if(!elm.attributes['target']) + createLink(attrname, elm.get_text.value, elm.attributes['target']) + end +end + +puts "This is #{File.basename(__FILE__)} v#{@version} by René Nussbaumer" +puts + +opts = GetoptLong.new( + ['--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT], + ['--level', '-l', GetoptLong::REQUIRED_ARGUMENT], + ['--version', '-V', GetoptLong::NO_ARGUMENT] +) + +opts.each { |arg,value| + case arg + when '--verbose' + @verbose += 1 + value.each_byte { |x| + if(x.chr == 'v') + @verbose += 1 + end + } + debug("Verbosity set to: #{@verbose}") + when '--level' + debug("Setting level to: #{value}", 3) + case value + when 'low' + @level = 0 + when 'normal' + @level = 1 + when 'paranoid' + @level = 2 + else + warn('Unknown level: ' + value) + end + when '--version' + Kernel.exit(0) + else + warn("Unknown option #{arg}#{value && !value.empty? ? ('with value ' + value) : ''}") + end +} + +if(!ARGV[0]) + puts 'Need at least one argument' + puts "Usage: #{__FILE__} " + Kernel.exit(1) +end + + +filedesc = $stdin + +if(ARGV[0] != '-') + filedesc = File.new(ARGV[0]) +end + +doc = REXML::Document.new filedesc + +doWork(doc.root) + +if(!@checklist.empty?) + info('Now checking all broken internal dependcies again') + broken = 0 + @checklist.each { |path| + debug("Checking #{path}.", 2) + if(!FileTest.exists?(path)) + broken += 1 + warn("Broken dependcies. #{path} does not exist. Please fix.") + end + } + info('Looks good.') if(broken == 0) + info('Bad, bad.') if(broken > 0) +end + +info("Successed. #{@warnings} warnings, #{@errors} errors") + diff --git a/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/mini_printf.c new file mode 120000 index 00000000..3e9a596c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/mini_printf.c @@ -0,0 +1 @@ +../src/generic/mini_printf.c \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/usage.c b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/usage.c new file mode 120000 index 00000000..c26691ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/contrib+tools/usage.c @@ -0,0 +1 @@ +../src/generic/usage.c \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/.buildwarn b/software/cinit/browse_source/cinit-0.3pre12/doc/.buildwarn new file mode 100644 index 00000000..3a0354dd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/.buildwarn @@ -0,0 +1,23 @@ +**************************************************************************** +Welcome, cinit greets you. +**************************************************************************** + +Hints: +------ + - Settings used for compiling (not only) can be found in conf/* + - The boot configuration normally resides below /etc/cinit + +Documentation +------------- +The documentation can be found in doc/: + + - doc/user/ contains documentation for users + - doc/devel/ contains documentation for developers + + Please read doc/user/installing-cinit.text _BEFORE_ installing. + +Building cinit +-------------- + + "make all" - to build cinit + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/Makefile b/software/cinit/browse_source/cinit-0.3pre12/doc/Makefile new file mode 100644 index 00000000..0daac842 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/Makefile @@ -0,0 +1,107 @@ +# +# Makefile stolen from ccollect +# Nico Schottelius, Fri Jan 13 12:13:08 CET 2006 +# + +A2X=a2x +ASCIIDOC=asciidoc +DOCBOOKTOTEXI=docbook2x-texi +DOCBOOKTOMAN=docbook2x-man +XSLTPROC=xsltproc +XSL=/usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl + +# +# Asciidoc will be used to generate other formats later +# +MANDOCS = man/cinit.text man/halt.kill.text man/poweroff.kill.text \ + man/reboot.kill.text man/cmd.text +USERDOCS = user/compiles.on.text user/configuring.cinit.text \ + user/conf-system.text \ + user/cross-compiling.text user/current-init-problems.text \ + user/daemons.backgrounding.text user/dependencies.text \ + user/example-directory-structure.text \ + user/installing-cinit.text user/paths.text \ + user/profiles.text user/README.text +DEVELDOCS = devel/codingguideline.text +DOCS = $(MANDOCS) $(USERDOCS) $(DEVELDOCS) + +# +# Doku +# +HTMLDOCS = $(DOCS:.text=.html) +DBHTMLDOCS = $(DOCS:.text=.htm) + +#TEXIDOCS = $(DOCS:.text=.texi) + +MANPDOCS = $(MANDOCS:.text=.man) + +DOCBDOCS = $(DOCS:.text=.docbook) + +DOC_ALL = $(HTMLDOCS) $(DBHTMLDOCS) $(TEXIDOCS) $(MANPDOCS) + +# +# End user targets +# +help: + @echo "----------- documentation make targets --------------" + @echo "documentation: generate HTML, Texinfo and manpage" + @echo "html: only generate HTML (via asciidoc/docbook/xsltproc)" + @echo "htm: only generate HTML (via asciidoc)" + @echo "info: only generate Texinfo" + @echo "man: only generate manpages" + @echo "pdf: only generate pdfs (requires: fop)" + +install: $(DOC_ALL) + @echo "===> Copy " man/*.[0-9] "to the correct manpaths" + +# +# Internal targets +# +html: $(HTMLDOCS) +htm: $(DBHTMLDOCS) +info: $(TEXIDOCS) +man: $(MANPDOCS) +documentation: $(DOC_ALL) + + +# +# Generic targets +# + +# docbook gets .htm, asciidoc directly .html (or the other way round) +%.html: %.docbook + ${XSLTPROC} -o $@ ${XSL} $< + +%.htm: %.text + ${ASCIIDOC} -n -o $@ $< + +%.docbook: %.text + ${ASCIIDOC} -n -b docbook -o $@ $< + +%.texi: %.docbook + ${DOCBOOKTOTEXI} --to-stdout $< > $@ + +%.mandocbook: %.text + ${ASCIIDOC} -b docbook -d manpage -o $@ $< + +#%.man: %.mandocbook +# ${DOCBOOKTOMAN} --to-stdout $< > $@ + +%.man: %.text + ${A2X} -f manpage $< + +%.pdf: %.text + ${A2X} -f pdf $< + +# +# Distribution +# +clean distclean: + rm -f $(DOC_ALL) + rm -f man/*.texi man/*.xml man/*.[0-9] + +# +# Be nice with the users and generate documentation for them +# +dist: distclean documentation + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/README.text b/software/cinit/browse_source/cinit-0.3pre12/doc/README.text new file mode 100644 index 00000000..46fe59fe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/README.text @@ -0,0 +1,57 @@ +cinit/doc +========= +Nico Schottelius +0.1, Initial Version from 2006-11-30 +:Author Initials: NS + +This directory contains the cinit documentation. + +Files and directories in this directory +---------------------------------------- + +ancient +~~~~~~~ +Old documents, only thought to irritate you. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +braindumps +~~~~~~~~~~ +Files I used to make the situation clear to myself. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +devel +~~~~~ +Developer related documents. Contains information for adding code, +for developing external tools to cinit or code guidelines for writing +patches to cinit. + + +logs +~~~~ +Logfiles or raw data dumps. + + +Makefile +~~~~~~~~ +The makefile used to generate the documentation. + + +man +~~~ +Manpages. + + +README.text +~~~~~~~~~~~ +This file + + +user +~~~~ +The most important part: Documentation for users (aka sysadmins, +hackers, endusers?): Explains howto install, configure, use and +debug cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/README b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/README new file mode 100644 index 00000000..45e193f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/README @@ -0,0 +1,16 @@ +Ancient +======= +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 + + +These files may be incorrect, outdated, totally wrong or even trying +to take over world dominance. + + +Why are they still there? +------------------------- + +Just because to document the early days of cinit. If you are +a software archaeologist in the year 2423, you'll be happy that +I saved those files. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/caveats b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/caveats new file mode 100644 index 00000000..5ab123e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/caveats @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/author b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/availability b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/availability new file mode 100644 index 00000000..cfb3f8a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/availability @@ -0,0 +1 @@ +cinit is currently Linux-specific. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/examples b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/examples new file mode 100644 index 00000000..1a7d2dcb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/examples @@ -0,0 +1 @@ +See http://linux.schottelius.org/cinit/#config diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/files b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/files new file mode 100644 index 00000000..4d6c0921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/files @@ -0,0 +1,5 @@ +/sbin/cinit - the init system +/sbin/cservice - control cinit +/sbin/cinit.reboot (/sbin/reboot if non-existent before) +/sbin/cinit.shutdown (/sbin/shutdown if non-existent before) +/etc/cinit - configuration directory diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/long_description b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/long_description new file mode 100644 index 00000000..18c3c082 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/long_description @@ -0,0 +1,5 @@ +cinit is a fast executing, small and simple init with support for profiles. It +minds dependencies (hard and soft, 'needs' and 'wants') and executes processes +in parallel. And it has a simple configuration, which makes many shell-scripts +unecessary (but you still could use them if you really want), which leads to +better performance and less memory using. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/meta/name new file mode 100644 index 00000000..b853da25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/meta/name @@ -0,0 +1 @@ +cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/parameters b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/parameters new file mode 100644 index 00000000..54df4727 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/parameters @@ -0,0 +1 @@ +cprofile: diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/path b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/path new file mode 100644 index 00000000..37edf339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/path @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/see also b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit.commands b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit.commands new file mode 100644 index 00000000..d34d13bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cinit.commands @@ -0,0 +1,73 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (using SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. +CMD_UPDATE: Update cinit, hot-reboot the system. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/author b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/long_description b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/long_description new file mode 100644 index 00000000..82818a93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/long_description @@ -0,0 +1 @@ +cservice controls cinit. Please use cservice -h for help. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/meta/name new file mode 100644 index 00000000..49c847bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/meta/name @@ -0,0 +1 @@ +cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/parameters b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/parameters new file mode 100644 index 00000000..605b08b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/parameters @@ -0,0 +1 @@ +[-eaphru] [thilo] diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/path b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/path new file mode 100644 index 00000000..85b0cb56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/path @@ -0,0 +1 @@ +/sbin/cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/see also b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/cservice-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/extern/README b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/extern/README new file mode 100644 index 00000000..e734d6d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/extern/README @@ -0,0 +1,2 @@ +doc/extern/ + Some things related to cinit from the outside world. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/extern/ipc.thoughts b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/extern/ipc.thoughts new file mode 100644 index 00000000..e2619d34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/extern/ipc.thoughts @@ -0,0 +1,83 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2 ), +1024 is the maximum opened file deskriptors, +minus 3 (stdin/stdout/stderr) already opened, divided +by two, because two fds needed per client. + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt, + - poweroff, + - update itself (hot-reboot) + - and to start a rescue mode (see using.rescue). + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + CONT: update + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/extern/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/extern/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/extern/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/extern/linux.kernel.eats.arguments b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/extern/linux.kernel.eats.arguments new file mode 100644 index 00000000..dbaf57d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/extern/linux.kernel.eats.arguments @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +Linux, the kernel, eats arguments +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +If you specify + + variable=value + +to the Linux kernel, the argument will NOT be passed to cinit. + +Here's the relevant code block from init/main.c of the Linux kernel: + +------------------------------------------------------------------------------- + +From init(void * unused) the function run_init_process(char *init_filename) +is called, which passes argv_init (char * argv_init[MAX_INIT_ARGS+2]) to init. + +First init_setup(char *str) resets all elements of the argv_init to NULL. + +The function unknown_bootoption(char *param, char *val) fills the +argv_init array, but only with parameters, which have no value +(val). + +The function parse_args calls unknown_bootoption with the unknown options. + +------------------------------------------------------------------------------- + +This way the profile support in all cinit versions below cinit-0.1 will +only work if you change conf/profile, because "cprofile=value" will +not be given to cinit, because it's not treated as a command line option. + +The original value "cprofile=" is replaced by "cprofile:" as of cinit-0.1. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/extern/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/extern/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/extern/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/fun-testing b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/fun-testing new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/fun-testing @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/how_it_works_internally b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/init-idea-first b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/init-idea-first new file mode 100644 index 00000000..2d677d8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/init-idea-first @@ -0,0 +1,38 @@ +- restarting/respawning + touch respawn +- dependencies + a needs started b +- clean multiply dependencies +- start & stop dependencies + start_depends + stop_depends +- parallel executation +- start and stop commands + start -> link + start_param -> parameters, like minit + stop -> link + stop_param -> parameters, like minit + + if no stop command is available, try to kill the pid we started at stop + +/startup/ + start_depends=gettys +/shutdown/ + stop_depends=power_off + + +gettys/ + start_depends=getty/1 + start_depends=getty/2 + start_depends=getty/3 + start_depends=getty/4 ... + +getty/1/ + start=/sbin/fgetty + respawn + +power_off/ + stop_depend=umount + +umount/ + stop_depend= diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/porting.to.other.os b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/porting.to.other.os new file mode 100644 index 00000000..65fdc07b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will perhaps become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/removing.zombies b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/removing.zombies new file mode 100644 index 00000000..9527e652 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + cinit in general will keep the behaviour of reaping the vestiges, + which broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/security b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/security new file mode 100644 index 00000000..f1dac591 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/security @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation, which will not accept connect() +by others than root. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console then! + +For extra parnoid settings you can do the following: + + ei # chmod 700 /etc/cinit/tmp/coala + ei # chown root:root /etc/cinit/tmp/coala diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/socket.poll_vs_o_async b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/socket.poll_vs_o_async new file mode 100644 index 00000000..477f2bff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/socket.poll_vs_o_async @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------------- +Socket: poll(2) vs. O_ASYNC, +Nico Schottelius 2005-06-22 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +0. General problem +1. O_ASYNC +2. poll(2) + + +0. General problem + +cinit has to react, as soon as there's data on the socket. + +1. O_ASYNC + +When you open a socket with O_ASYNC (or specify it with fcntl(2)) under +Linux, your process recieves the SIGIO signal from the kernel, as soon +as data is available. + +The problem is the handling of signals seems not to be serialised: + +The function, which is called on the SIGIO signal (called sigio() here) +calls other functions. Those functions way recieve SIGIO while working, +so the first data stream is not yet finished, though the next +stream is beeing read. + +This gives very nice race-conditions, which are very nice to debug. + +2. poll(2) + +poll(2) is a standard Unix-call (XPG4-UNIX), which waits a specific +timeout (or infinite time if you specify a value less that zero) for +the socket (or the fd in general) to be in a state where +data is available to read (in fact poll can do much more, but we are +not interested only in POLLIN and POLLPRI). + +While poll(2) seems to be a very bit slower than sigio it works reliable. + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/thoughts.closed b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/thoughts.closed new file mode 100644 index 00000000..91a8e080 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/ancient/thoughts.closed @@ -0,0 +1,52 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c + +7. Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. As this is not needed + currently, it's not implemented. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/README.text b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/README.text new file mode 100644 index 00000000..c4947a13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/README.text @@ -0,0 +1,2 @@ +DO NOT READ CONTENT IN THIS DIRECTORY. +(or at least do not blame me, if you get really confused after reading it) diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/big-picture.text b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/big-picture.text new file mode 100644 index 00000000..4426c236 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/big-picture.text @@ -0,0 +1,122 @@ +Just a small hint-file for me to see how cinit works: + + - cinit starts + * cinit executes either init or a profile + - the dependency-tree begins + + - now cinit begins to try to execute the dependencies + * first the needs (if those fail, wants are never called) + - fork() for every dependency? + +-------------------------------------------------------------------------------- +another idea: + + - cinit starts + - cinit reads the full depedency tree + * it builds n-depth trees + * it begins at the set init service (profile or init!) + * init is the first entry. always. + * read full service information (like on/off/params/respawn) + * design of each tree element: see below + - add a tree for the needs + - add a tree for the wants + - the elements have links, one service is created only once + - after the tree is created, execution begins + * begin from the bottom + * save a pointer to the last level somehow before? + +Pre calculation: + - need to act on changes (some kind of file watcher) + * need to keep status (?) + * what with now missing needs / wants? + - missing needs: shutdown now missing needs? + - simply ignore them? + - shut them down if not needed (no one has a link in needs?) + * +-------------------------------------------------------------------------------- +Sample dependency tree: + + init + / \ + needs wants + / | \ / | \ + a b c d e f + / | \ / | \ + needs needs needs END needs END + / | \ \ | | | | + b c d c f a e a +-------------------------------------------------------------------------------- +How this would be sorted:: + init: + needs: a b c + wants: d e f + a: + needs: b c d + b: + needs: c f + c: + needs: a e + d: + - + e: + needs: a + f: + - +-------------------------------------------------------------------------------- +So in this case, cinit may start services the following way: + d f + -> Wouldn't be possible in pre-calculation, because of circular dependencies. +-------------------------------------------------------------------------------- + Try a 'real' dependency tree: + a needs b c d + b needs c d + c and d do not need other stuff +-------------------------------------------------------------------------------- +Now cinit would it do the following way: + start c, start d + b will be started, as soon as c and d successfully finish + as soon as b is finished, a will be started +-------------------------------------------------------------------------------- +Now let's think about how this could look like in code... +- when we built up the tree, we have some ends (n to say) +- we can / must start starting (;-) at the end +- we would have more than one line back (z may be needed by c, i, and a) + * like in "c is needed by s, c, o" + * maxdepth counter? + * asynchronous rollback? + +--> to think more about it! +-------------------------------------------------------------------------------- + +tree elements: + * name (= path) + * on, off, +params + * respawn_delay + - -1 if not respawning + - >= 0 time to wait between restart + * status + - NOT STARTED (status on initialisation) + - RESPAWNING (running, respawning) + - RESPAWN_DELAY (waiting to respawn it) + - ONCE (started once) + * errormsg + - pointer to an error message in case of failure + * needs + - List of services we need + * wants + - List of services we want + * used_by + - List of services which use this service +-------------------------------------------------------------------------------- + +Conclusions +------------ + +cinit as the main executor +~~~~~~~~~~~~~~~~~~~~~~~~~~ +If cinit should start all services directly and manage dependencies +only internally, it will need to have build a reverse dependency tree, +so it begins starting at the end. + +cinit could execute all possible parallel running services in parallel +and open pipes to the (dumb) service executors. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/circular-dependencies.text b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/circular-dependencies.text new file mode 100644 index 00000000..dcc91ea7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/circular-dependencies.text @@ -0,0 +1,35 @@ +What todo with circular dependencies? + a needs b + b needs a + + - try to start them? + status a: is_starting + status b: not_set + a wants b, so a service starter for b starts + status a: is_starting, waiting for b + status b: is_starting + service starter for b sees that a is needed + service starter for b sees that a is already being started + service starter for b begins to execute b + status a: is_starting, waiting for b + status b: is_starting, executing "on" + service starter b finishes + status a: is_starting, waiting for b + status b: FAILED | RESPAWN | ONCE + service a continues + b successful: execute on + b failed: register / print that we do not start, because + b failed + + -> this would only catch possible deadlocks, if the dependency + tree / status check is done dynamically + -> in case of pre-building the dep-tree this situation must + be concerned: + - start both a and b? + - or stop due to circular dependency? + + - Abort on detection of a circular dependency + * possible without pre-calculating? + - perhaps only with direct communication possible? + * pre calculate + - do not start that services? diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/converting-debian b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/converting-debian new file mode 100644 index 00000000..ee40fdff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/converting-debian @@ -0,0 +1,30 @@ +# If you would like to automatically convert a debian system, you could +# use this script as a start point +# +# how it could look like +# + +# create cinit base configuration + +# analyse enabled services +level=$(awk -F: '/^id/ { print $2 }' /etc/inittab) +rcdir="/etc/rc${level}.d/" +initdir=/etc/init.d + +cd "$rcdir" +for svc in *; do + if [ -d "${debian_map_dir}/${svc}" ]; then + echo "Adding $svc" + else + + fi +done + +# Also add existing services in /etc/init.d +for ... + if [ ! -e $rcdir/$svc ] + if [ -d "${debian_map_dir}/${svc}" ]; then + echo "Adding, but not enabling" + fi + fi +done diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/converting-general b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/converting-general new file mode 100644 index 00000000..8a0a2e40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/converting-general @@ -0,0 +1,10 @@ +kern=$(uname -s) + +case "${kern}" in + $known_kern) + $scriptdir/$kern + ;; + *) + echo "Unknown system" + ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/creating-new-configurations b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/creating-new-configurations new file mode 100644 index 00000000..a251de5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/creating-new-configurations @@ -0,0 +1,6 @@ +scripts/create_baseconfig.sh # create base +scripts/cinit.install.standard.dirs # create common categories + +- create fsck +- set hostname +- create getty(s) diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/messages.text b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/messages.text new file mode 100644 index 00000000..f4ef769e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/messages.text @@ -0,0 +1,6 @@ +This document describes the messages used between cinit and its +"clients" (i.e. ccontrol, cservice, cinit.halt, ...): + +Signal messages +--------------- +As signals diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/possible_service_pre_calculation.text b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/possible_service_pre_calculation.text new file mode 100644 index 00000000..96ec3a73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/possible_service_pre_calculation.text @@ -0,0 +1,19 @@ +- start at + * create a new service entry (if not exists) <--- + * reads needs | + - follow dependencies ------------------------ + * only if service does not yet exist! | + * read wants | + - follow dependencies ------------------------ + * only if service does not yet exist! + * create + - needed by entry in dependencies + - needs entry in service + - wanted by entry in dependencies + - wants entry in service + + * record + - (on,off)(,.env,.params)? + - alternatively put that code into service starter + * add services without further needs into a special + "begin" structure to be reused at fireing of the services? diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/possible_service_status.text b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/possible_service_status.text new file mode 100644 index 00000000..eb0f21e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/possible_service_status.text @@ -0,0 +1,14 @@ + + - NOT_SET: this service has not yet been initialized + - RESPAWNING: happily respawning + - RESPAWN_DELAY: waiting delay before restarting + * HINT: using alarm()? + - senseful for single process service watcher + * HINT: using nanosleep()? + - senseful for per service process watcher + - NEED_FAILED + * add a (somehow terminated) list of services that failed? + * use global status to checkout which services failed? + - WANT_FAILED? + * NOT NECESSARY, it is a simple want, we do not need it. + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/registering_needs_wants.text b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/registering_needs_wants.text new file mode 100644 index 00000000..ededbd41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/registering_needs_wants.text @@ -0,0 +1,55 @@ +Each service has a list of services it + - needs + - is needed by + - wants + - is wanted by + + +Each entry is a service pointer. +The simplest list could look like this: + + service a: + needs: + b f g NULL + +So the needs pointer is NULL terminated: + needs = realloc(count_links) + -> how to get the count? + 0x02 + 0x + + Better: A double linked list (like the main service list)? + +Could look like: + service a: + needs: + *service + *next + *prev + +This design could also be used for wants. + +On the other hand, we've to register us at the needed/wanted service: + + service b: + needed_by: + *service + *next + *prev + + +So each service needs four pointers: + needs + needed_by + wants + wanted_by + +And on each request both lists have to be modified! + +Example: + + Service "a" adds "b" as needed: + + - add "a" needs "b" + - add "b" needed_by "a" + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/root-vm-testing b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/root-vm-testing new file mode 100644 index 00000000..a8773dea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/root-vm-testing @@ -0,0 +1,9 @@ +[19:33] denkbrett:root% cat uml-mount.sh +SDIR=$(dirname $0) +DDIR=$(dirname $0)/root +sudo mount "$SDIR/Debian-3.0r0.ext2" "$DDIR" -o loop,acl + +denkbrett# tar cfj ~nico/projekte/cinit/conf-vm-2007-03-05.tar.bz2 cinit +denkbrett# chown -R nico cinit +denkbrett# chown nico ../sbin + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/shutdown.text b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/shutdown.text new file mode 100644 index 00000000..ac76425d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/shutdown.text @@ -0,0 +1,84 @@ +cinit - braindumps - shutdown +============================= +Nico Schottelius +v0.1, for cinit-0.3, 2007-01-11 +:Author Initials: NS + +Just some braindumps. Do not read. + +Introduction +------------ +Shutting down the system. + +When? +----- +- reboot +- halt +- power off +- further needed? + +How / What? +------------ +- Stop services in the correct order + * reuse the service tree / needs / needed_by! + * call off, if existent + * if respawning, send SIGTERM? + - not if off is existent? + * give some variables to off? + - $RESPAWN_PID: if respawning +- send SIGTERM to other apps? + * or put that into special? special/post_svc_shutdown +- call special/{halt,poweroff,reboot} + * no, implemented that directly into cinit! +- implement timely controlled shutdown: + * cinit.shutdown forks (?) itself and waits, then sends a signal + to cinit to initiate the shutdown process + * create mappers for target OS + - Linux + - {free,net,open}bsd + - others may contribute theirself +- also implement poweroff + * kill -TERM 1 +- also implement reboot + * kill -HUP 1 +- also implement halt + * kill -USR1 1 + + +The implementation +----------------- +x shutdown is initiated +x disable communication (nobody can influence us anymore) +x install special signal handler? + - no. we do not care about zombies anymore, we are gone soon anyway + - simply reset to the default +- begin to shutdown services + * where to start? + * begin shutdown at the end of the tree, viewing/sorting it by the 'needed_by' + -> where to begin sort? + -> worst implementation: scan all services (easy for now) + -> result: list of services, that noone needs :-) + * stop those services and step above + - stop a service, as soon as noone needs it anymore + * check all needed_by links + * more or less the inverted gen_svc_tree +- how to shutdown a service + * if existing, call off + - if off does not exist: + * if respawn: send sigterm to the process + * also implement sigkill at this stage? + - think we can delay it to the end + - otherwise users can use off! + - implement environment for off ($cinit_respawn_pid, $cinit_service_name) + - do *NOT* care about the return value, we can't do anything for it + anymore anyway +- after all services are shutdown, kill all remaining services + * SIGTERM + * wait(defined_time_in_seconds) + * SIGKILL +- call the last command + * to cleanup the system + - umount -a (if needed) + - swapoff (if needed) + - sync (if needed) +- switch off diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/sizes b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/sizes new file mode 100644 index 00000000..ddd30f75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/braindumps/sizes @@ -0,0 +1,6 @@ +sysvinit: +root 1 0.0 0.0 1944 648 ? Ss 02:12 0:00 init [2] + +cinit-0.3pre8-glibc-linux: +compiler 25323 0.0 0.0 1564 392 pts/2 S+ 20:22 0:00 ./cinit + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/devel/README.text b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/README.text new file mode 100644 index 00000000..20524651 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/README.text @@ -0,0 +1,18 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit development documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +(cinit-)developers. + +Content +------- diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/devel/cinit-0.4.text b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/cinit-0.4.text new file mode 100644 index 00000000..61b718f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/cinit-0.4.text @@ -0,0 +1,115 @@ +cinit 0.4 - Redesign of cinit +============================================ +Nico Schottelius +0.4.0, for cinit 0.4, Initial Version from 2006-03-11 +:Author Initials: NS + + +cinit 0.2 ran fine and the general project of developing a +parallel executing init system is finished. +With cinit 0.4 there are new aims to reach. + + +Introduction +------------ + +. AIMS + - portability: no Linux-dependency anymore + - cleaner signal handling + - better documentation so more people can use it + + +Current problems +---------------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The mount(2) system call is os-specific. +The temporary fs is os-specific. + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Race conditions when multiple signals arrive + + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +serv/sig_reboot.c contains umount, remount hard coded. + + +Solutions +--------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Remove +- the mount call +- do not create an initial socket + +Wait until we recieve a signal, then we create a socket +under the configured socket directory (see `conf/sockdir`). + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +Misc +~~~~ + +- Configuration + /etc/cinit/config/ + init -> link to initial service + pre_boot + pre_boot_args + post_boot + post_boot_args + /etc/cinit/services/ + /etc/cinit/profiles/ + links to the starting services + + + +cinit - Internals +================= +Nico Schottelius +0.1 for cinit-0.3, Initial version: So Feb 19 10:25:46 CET 2006 +:Author Initials: NS + + +Introduction +------------ +This document describes the internals of cinit. It is thought +to be read by developers. + + +Child handler code in cinit-0.3 +------------------------------- + +In cinit versions <= cinit-0.2.1 the respawning services where +handled by an extra child handler, which was a fork of cinit. This +had some problems: + + - We allocated more memory than necessary, unecessary parts of + cinit were copied + - The SIG_CHILD-handler was not written very clean, in some versions + it was completly missing. + + +. So in `cinit-0.3` we changed it the following way: + - no extra child handlers + - handle everything in the SIG_CHILD handling function + - when sig_child is recieved do: + - check against respawn list + - if it is a respawning service, [do the following in a seperate fork?] + check whether it successfully stoped + - if yes: restart immediatly + - if no: sleep $sleep_time and then restart diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/devel/codingguideline.text b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/codingguideline.text new file mode 100644 index 00000000..d4686d8f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/codingguideline.text @@ -0,0 +1,149 @@ +Coding style +============ +Nico Schottelius +0.1, for cinit, Initial version from 2006-11-13 +:Author Initials: NS + +This document describes the coding style used in cinit. + + +Indent +------ +Indent the code by 3 spaces for each level. +Indent variable names, so the names begin all at the same position. +Use three spaces to place them. + + +Whitespaces +----------- +Where to put or avoid whitespaces (space or linefeed (lf)). + + +Spaces +~~~~~~ +- After closing brace "if(test) return 0;" +- Spaces before and after '=', '>', '<', '==', '!='', '>=', '<=', '>>', '<<', '&', '&&', '|', '||' +- After start of comment and before end of comment: '/* text */' + + + After ')', ',' + +No spaces +~~~~~~~~~ +- Within braces and code "(!test)", +- Before braces "if(code)" +- No space before ), so if '))', do not put a space after the first ')' + + +Linebreaks +~~~~~~~~~~ +This somehow includes the setting of braces (indirectly through (not) setting +spaces. + +If +^^ + +Put the if, the braces and the opening curly brace on one line, +put the closing one together with `else` and the new opening +curly brace on one line: + +------------------------------------------------------------------------------ +if(...) { + /* code */ +} else { + /* else: code */ +} +------------------------------------------------------------------------------ + +While +^^^^^ +------------------------------------------------------------------------------ +while(condition) { + /* repeat */ +} +------------------------------------------------------------------------------ + +Do-While +^^^^^^^^ +------------------------------------------------------------------------------ +do { + /* something */ +} while(running); +------------------------------------------------------------------------------ + +Switch +^^^^^^ + +------------------------------------------------------------------------------ +switch(value) { + case DO_SOMETHING: + /* code */ + break; + default: + break; +} +------------------------------------------------------------------------------ + + + +Where to put curly braces +------------------------- + +Functions +~~~~~~~~~ +Opening and closing curly braces are placed on a seperate row: + +------------------------------------------------------------------------------ +int func(int params) +{ + body +} +------------------------------------------------------------------------------ + + +If, else, while, do-while +~~~~~~~~~~~~~~~~~~~~~~~~~ +See above. + + +Comments +--------- +where necessery, do not state the obvious in comments: + + /* this code increments tmp */ + ++tmp; + +If there is more than one line containing a comment, try to adjust them +so they look the same in width and position: + +------------------------------------------------------------------------------ + int illuminati = 23; /* do not want to comment that */ + int the_answer_to_everything = 42; /* 42. */ + + [...] + + while(illuminati < the_answer_to_everything) { /* only try before them */ + overtake_world(&self); /* overtake is complex */ + } +------------------------------------------------------------------------------ + + +Header +------- +Put a header into each file, containing: + + - Date of file being put into existence (year is enough) + - Name and e-mail (obfuscated if you want) of the author(s) + - Description of the function + - Copyright statement (if not included GPLv2 or later is assumed) + + +Includes +~~~~~~~~ +Include system headers first, then place own headers. Comment the includes, +wherefore you added them. Example: + +------------------------------------------------------------------------------ +#include /* write */ +#include "cinit.h> /* cinit_ipc_* */ +------------------------------------------------------------------------------ diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/devel/communication.text b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/communication.text new file mode 100644 index 00000000..ea5351a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/communication.text @@ -0,0 +1,247 @@ +cinit - communication +===================== +Nico Schottelius +0.1 for cinit-0.3, Initial version: 2006-08-11 +:Author Initials: NS + +This document describes the internal communication of cinit. +It is thought to be read by developers. + + +Introduction +------------ +This document describes the messages used between cinit, cinit forks +and other programs that want to talk to cinit. It does NOT +describe the communication method, but only the messages sent +(for the communication method read "ipc.text"). + +Document status +~~~~~~~~~~~~~~~ +This document is still being written, it is not finished. + + +About Messages +-------------- + +Order +~~~~~ +The client always initiates the communication. +cinit will begin listening to messages directly after its start. + + +Numbers +~~~~~~~ +Can be found in include/cinit.h. + + +Data +~~~~~ +A message always conists of a predefined structure (see src/headers/comm.h). +Can't use a structure, were missing the point that we cannot transfer dynamic +length strings. Thus the protocol consists of: + + client(int) => cinit + cinit(ini) => client + => after that follows command specific data + +The byte order is host specific (may be little or big endian). + +STRUCTURE WITH STATIC SIZE. MSGRCV! +IPC LAYER CREATES TRANSPORT! + +Type +~~~~ +Messages are binary data. + +The messages +------------ +The client always uses the same structure (struct msg_client) to contact +cinit. This way cinit does not need to handle dynamic data structures. + +cinit in contrast delivers different data structures to its clients, +depending on the question. + +The questions are issued by any type of client, the internal command used is +noted in square brackets ([]). + +The answers are given by cinit. + + +Question: Start a service (and its dependencies) [CMD_START_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to start the service and its dependencies. + +The client must provide cinit with the following information: +. Name of the service to be started +. Reason why to start it +. eventually additional information (see below) + +The reason +^^^^^^^^^^ +Can be one of: +- RS_NONE (it's a manual start request) +- RS_WANTS (a currently starting service wants to start this service) +- RS_NEEDS (a currently starting service needs to start this service) + +If the reason is RS_WANTS or RS_NEEDS the client must supply the name +of the service, which wants it to be started. + + +Question: Start a service (nothing else) [CMD_START_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to start the service and which will +report the status back. + + +Question: Stop a service (and its dependencies) [CMD_STOP_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to stop the service and each service +that 'needs' it. + +This function works recursively, thus also killing those services, that +need the service that need the current service. + + +Question: Stop a service (nothing else) [CMD_STOP_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to stop this service and which will +report the status back. + + +Question: Stop a service (plus 'needs' and 'wants') [CMD_STOP_SVC_WANTS] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Same as 'Stop a service (and its dependencies)', but also stop the +services that want to have this service. + +This function works recursively, thus also killing those services, that +'need' or 'want' the service that 'need' or 'want' the current service. + + +Question: What's the status of service XYZ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Code, length of service name, the service name (without \0). +int, int, char[]; + + + +Question: Could you change the status? [CMD_CHG_STAT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A cinit fork reports the new status of a service. + + +Question: Could you start the rescue mode? [CMD_RESCUE] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +spawn the rescue program. + + +Question: Could you halt the system? [CMD_HALT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +halt the system. + + +Question: Could you reboot the system? [CMD_REBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +reboot the system. + + +Question: Could you poweroff the system? [CMD_POWEROFF] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +poweroff the system. If poweroff is not possible, the system will +be halted. + + +Question: Could you warmboot the system? [CMD_WBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +restart itself and the bootup process. + + +Question: Could you send information about a service? [CMD_INFO] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will respond with detailled information about the service +to the client. + + +Answer: Return short status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Start a service (and its dependencies) + - Question: Start a service (nothing else) + - Question: Stop a service (and its dependencies) + - Question: Stop a service (nothing else) + - Question: Stop a service (plus 'needs' and 'wants') + - Question: Could you change the status? + +cinit only responds the status of the asked service. +The structure send is "asw_sstatus", which only include a status byte. + + +Answer: Return long status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Could you send information about a service? + + +old Messages (to be transferred into this document) +--------------------------------------------------- + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Service status: + +-------------------------------------------------------------------------------- +service status (cinit), +Nico Schottelius 2005-09-29 (Last Modified: -) +-------------------------------------------------------------------------------- + +There are service status and service returns. Service status is a status +a service can have. A service return is a value from a function that +describes what happened with the service. + +Status has ST_ prefix, return has RT_ prefix. +See cinit.h for most up to date versions. + + +ST_NEED_FAIL - this service will not be started, until the needs are started +ST_FAIL - this service failed to start +ST_UNSPEC - some unknown error. This should never happen. +ST_ERR - ??? /* tried earlier, service failed, won't retry */ + +ST_SUCCESS - service was successfully started - senseful? +ST_TMP - some instance is currently working on it +ST_ONCE - executed once sucessfully +ST_RESPAWN - service is running and respawning + +ST_TMPNOW 55 /* now you are on it - only for clients */ +#define ST_OFF 56 /* Switching service off */ + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/devel/configuring.text b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/configuring.text new file mode 100644 index 00000000..405a4d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/configuring.text @@ -0,0 +1,18 @@ +cinit/doc/devel/using-conf.text +================================ +Nico Schottelius +0.1, Initial Version from 2006-07-28 +:Author Initials: NS + +About conf/* and how to use the configurations. + +Introduction +------------ + +Who should read those documents? +-------------------------------- + +Content +------- + + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/devel/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/cross-compiling.text new file mode 100644 index 00000000..fdf70564 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/cross-compiling.text @@ -0,0 +1,36 @@ +TODO: + - merge into "Cross compiling" + +cinit - Problems that may arise +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Max open files + OS dependent + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/devel/ipc.text b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/ipc.text new file mode 100644 index 00000000..cdab4fcc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/ipc.text @@ -0,0 +1,141 @@ +IPC - in cinit and in general +============================= +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +IPC - Inter process communication + +Introduction +------------ +This document describes the IPC methods used and/or tested for +cinit. + +It does not describe in detail, how the different methods work +(this is already done many times, there's great documentation +available online), but more the advantages and disadvantages +(especially for an init system). + +What is IPC? +~~~~~~~~~~~~ +IPC describes methods to communicate between different processes +(programs). + +IPC as described by SUSV3 (The Single UNIX Specification Version 3) +aka IEEE Std 1003.1, 2004 Edition aka POSIX only defines +MSQ, SHM and Semaphores as IPC. This document also covers +Sockets and FIFOs. + + +What is not (yet) covered by this document? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Speed of different IPC methods, different behaviour on different +unices. + + +Why do you need IPC for an init system? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +cinit IPC history + analysis +---------------------------- + + +FIFOs +~~~~~ +First in - first out +File on the filesystem +Always need two files for two way communication + +Hints +^^^^^ +The first idea for IPC in cinit was to use two FIFOs, like minit does. +Wrong assumption: +runit also uses fifos, but two fifos for each services. That way +more parallel transmissions is possible. +You have to pay attention: Maximum number of opened files! +(On Linux 2.6 this is 1024, which makes a maximum of 512 services. +This limit is most likely never reached, but you have to keep it +in mind). + +Sockets +~~~~~~~ +Clean and beautiful. They allow easy two way communication. + +If you created a socket, fs is r/o, you cannot use it, although +there is SO_REUSE. + +First method: Using memory mapped part (tmpfs). +Second method: use interal communication (pipes!) and external after +/etc/cinit/ becomes writable. + + +Current IPC configuration +-------------------------- + +- switchable (conf/ipc_method) +- each ipc implementation needs: + + ipc.h -> for global variables and ipc specific things + prefix variables with ipc_ + int cinit_ipc_init(void); -> general initialization + return 1 on success, 0 on failure + int cinit_ipc_listen(void); -> begin to listen for messages + int cinit_ipc_send(void *data) -> send data to a client + +Abstraction layer: cinit_ipc_* +------------------------------ +You can choose or even reimplement ipc code for cinit. You only have to create +a directory below src/ipc/ and create the following necessary functions: + +int cinit_ipc_init(void); +~~~~~~~~~~~~~~~~~~~~~~~~~ +Initialise the IPC functions in cinit. + + +int cinit_ipc_listen(void); +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Never ending looping function that listens for commands and passes the +retrieved command to read_command(). + +other +~~~~~~ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + + +cinit_get_data(int ident, int size, void *data) => read size bytes from client +with ident + +/***************************************************************************** + * Functions: in clients + */ + int cinit_ipc_logon(void); /* logon to init (client init) */ + int cinit_ipc_connect(void); /* connect to init */ + int cinit_ipc_csend(struct cinit_message *data); /* send to the server from a client */ + + +-------------------------------------------------------------------------------- +TO SORT: + +1. message queues + o clients schreiben rein + o datenpaket gross genug fuer antwort? + +2. shared memory + o client kann direkt rauslesen, was gestartet werden muss + o client kann direkt abhaengigkeiten starten, muss diese aber + eintragen + +Ausprobieren: + - Mutexe + - Message Queues + - + +Ideen: + Message queue + 1. Client geht auf die normale + als id = pid (cast!) + dann rueck via anderer queue + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/devel/lists.text b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/lists.text new file mode 100644 index 00000000..6360acb3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/lists.text @@ -0,0 +1,22 @@ +Lists in cinit-0.3 are generalized, all have the same general layout: + + - double linked + - have 'prev' and 'next' as pointers + + Add an element to a list + + /--------------------------\ + |<->first<->middle<->last<->| + + + After insert: + + /-------------------------------\ + |<->first<->middle<->last<->new<->| + + We alway have 'first'. + Need to adjust: + - new->prev = last (= first->next) + - new->next = first + - first->prev = new + - first->prev->next (= last->next) = new diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/devel/merging.other.initsystems.text b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/merging.other.initsystems.text new file mode 100644 index 00000000..0baa4789 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/merging.other.initsystems.text @@ -0,0 +1,68 @@ +TODO: + - rewrite to asciidoc + - implement a sample merge + +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not mean that he does not accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated! + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/devel/optimising.cinit b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/optimising.cinit new file mode 100644 index 00000000..4f4b5c02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/optimising.cinit @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options +2. striping + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + +The current standard for cinit is: (see CFLAGS in the Makefile). + + +2. striping + +With strip(1) you can remove specific sections of object files. +You have to find out, which ones you can remove safely +(for instance with objdump(1)). + +The current standard for cinit is: (see STRIP in the Makefile) diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/devel/testing.text b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/testing.text new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/devel/testing.text @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/logs/2006-10-25.config.wasserstoff b/software/cinit/browse_source/cinit-0.3pre12/doc/logs/2006-10-25.config.wasserstoff new file mode 100644 index 00000000..f28bd71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/logs/2006-10-25.config.wasserstoff @@ -0,0 +1,16 @@ +[17:12] wasserstoff:svc# pwd +/etc/cinit/svc +[17:12] wasserstoff:svc# ls +init +17:12] wasserstoff:svc# mkdir getty +[17:12] wasserstoff:svc# mkdir getty/2/ +[17:12] wasserstoff:svc# cd getty/2 +[17:12] wasserstoff:2# ln -s /sbin/getty on +17:12] wasserstoff:2# echo 38400 > on.params +[17:13] wasserstoff:2# echo tty2 >> on.params +[17:13] wasserstoff:2# cd ../../init +[17:14] wasserstoff:init# mkdir needs +[17:14] wasserstoff:init# cd needs +[17:14] wasserstoff:needs# ln -s ../../getty/2 getty-2 +[17:14] wasserstoff:needs# + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/logs/2006-11-22.startup-with-debug b/software/cinit/browse_source/cinit-0.3pre12/doc/logs/2006-11-22.startup-with-debug new file mode 100644 index 00000000..44121cf4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/logs/2006-11-22.startup-with-debug @@ -0,0 +1,55 @@ +[0:08] wasserstoff:cinit-0.3pre3% ./src/cinit +cinit-0.3pre3: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty:: +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2:: +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout:: +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3:: +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning:: +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount:: +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root:: +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network:: +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0:: +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback:: +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::/etc/cinit/svc/init +========> tree_exec() +/etc/cinit/svc/local-tuning/keyboard-layout:::abhaengigkeiten gestartet, exec; add wants, needsdep_needs_wants_add::/etc/cinit/svc/local-tuning/keyboard-layout add: (/etc/cinit/svc/getty/2) + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/logs/2006-11-30.startup-0.3pre5 b/software/cinit/browse_source/cinit-0.3pre12/doc/logs/2006-11-30.startup-0.3pre5 new file mode 100644 index 00000000..2ded7712 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/logs/2006-11-30.startup-0.3pre5 @@ -0,0 +1,1821 @@ +cinit-0.3pre4: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2 +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3 +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0 +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/test +gen_tree::/etc/cinit/svc/test +CAD::/etc/cinit/svc/test +CAD::NEW::/etc/cinit/svc/test::/etc/cinit/svc/test/env +gen_tree::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +START::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test +CAD::/etc/cinit/svc/init +========> tree_exec() +TEX::/etc/cinit/svc/local-tuning/keyboard-layout +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout::/etc/cinit/svc/getty/2::(A)::::/etc/cinit/svc/getty/3::(A)::::/etc/cinit/svc/local-tuning::(A):: +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout +TEX::/etc/cinit/svc/mount/root +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +DNWA::/etc/cinit/svc/mount/root::/etc/cinit/svc/mount::(A):: +DNWA::/etc/cinit/svc/mount/root +TEX::/etc/cinit/svc/network/eth0 +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +DNWA::/etc/cinit/svc/network/eth0::/etc/cinit/svc/network::(A):: +DNWA::/etc/cinit/svc/network/eth0 +TEX::/etc/cinit/svc/network/loopback +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +DNWA::/etc/cinit/svc/network/loopback::/etc/cinit/svc/network +DNWA::/etc/cinit/svc/network/loopback +TEX::/etc/cinit/svc/test/env +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +DNWA::/etc/cinit/svc/test/env::/etc/cinit/svc/test::(A):: +DNWA::/etc/cinit/svc/test/env +TEX::/etc/cinit/svc/getty/2 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/2/on +CBA::/etc/cinit/svc/getty/2/on +DNWA::/etc/cinit/svc/getty/2::/etc/cinit/svc/getty::(A):: +DNWA::/etc/cinit/svc/getty/2 +TEX::/etc/cinit/svc/getty/3 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/3/on +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +DNWA::/etc/cinit/svc/getty/3::/etc/cinit/svc/getty +DNWA::/etc/cinit/svc/getty/3 +TEX::/etc/cinit/svc/local-tuning +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +/etc/cinit/svc/local-tuning/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/local-tuning::/etc/cinit/svc/init::(A):: +DNWA::/etc/cinit/svc/local-tuning +TEX::/etc/cinit/svc/mount +::/etc/cinit/svc/mount/root +/etc/cinit/svc/mount/root: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +/etc/cinit/svc/mount/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/mount::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/mount +TEX::/etc/cinit/svc/network +::/etc/cinit/svc/network/eth0 +/etc/cinit/svc/network/eth0: <<16>> +::/etc/cinit/svc/network/loopback +/etc/cinit/svc/network/loopback: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +/etc/cinit/svc/network/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/network::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/network +TEX::/etc/cinit/svc/test +::/etc/cinit/svc/test/env +/etc/cinit/svc/test/env: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +/etc/cinit/svc/test/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/test::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/test +TEX::/etc/cinit/svc/getty +::/etc/cinit/svc/getty/2 +/etc/cinit/svc/getty/2: <<4>> +::/etc/cinit/svc/getty/3 +/etc/cinit/svc/getty/3: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +/etc/cinit/svc/getty/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/getty::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/getty +TEX::/etc/cinit/svc/init +::/etc/cinit/svc/getty +/etc/cinit/svc/getty: <<4>> +::/etc/cinit/svc/local-tuning +/etc/cinit/svc/local-tuning: <<4>> +::/etc/cinit/svc/mount +/etc/cinit/svc/mount: <<4>> +::/etc/cinit/svc/network +/etc/cinit/svc/network: <<4>> +::/etc/cinit/svc/test +/etc/cinit/svc/test: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +DNWA::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/init +=> cinit started. +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +ORC:/etc/cinit/svc/init/on.params +ORC:/etc/cinit/svc/getty/2/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test +SC::/etc/cinit/svc/test/env::FAILED::::RESPAWN::ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test + +msgrcv: Interrupted system call +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/2/on +ORC:/etc/cinit/svc/getty/2/on.params +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted +SC::/etc/cinit/svc/network/eth0::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted + +msgrcv: Interrupted system call +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. +SC::/etc/cinit/svc/init::FAILED::::RESPAWN::ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. + +msgrcv: Interrupted system call +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. +SC::/etc/cinit/svc/network/loopback::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. + +msgrcv: Interrupted system call +mount: only root can do that +SC::/etc/cinit/svc/mount/root::FAILED::::RESPAWN::ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +mount: only root can do that + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +LSP:: 32705: /etc/cinit/svc/init:1 (0) +LSP:: 32705: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32705: /etc/cinit/svc/test:65 (0) +LSP:: 32705: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32705: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32705: /etc/cinit/svc/network:65 (0) +LSP:: 32705: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32705: /etc/cinit/svc/mount:65 (0) +LSP:: 32705: /etc/cinit/svc/local-tuning:65 (0) +LSP:: 32705: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32705: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32705: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32705: /etc/cinit/svc/getty:65 (0) +LSP:: 32706: /etc/cinit/svc/init:65 (0) +LSP:: 32706: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32706: /etc/cinit/svc/test:65 (0) +LSP:: 32706: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32706: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32706: /etc/cinit/svc/network:65 (0) +LSP:: 32706: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32706: /etc/cinit/svc/mount:65 (0) +LSP:: 32706: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32706: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32706: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32706: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32706: /etc/cinit/svc/getty:65 (0) +LSP:: 32707: /etc/cinit/svc/init:65 (0) +LSP:: 32707: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32707: /etc/cinit/svc/test:65 (0) +LSP:: 32707: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32707: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32707: /etc/cinit/svc/network:65 (0) +LSP:: 32707: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32707: /etc/cinit/svc/mount:4 (32706) +LSP:: 32707: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32707: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32707: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32707: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32707: /etc/cinit/svc/getty:65 (0) +LSP:: 32708: /etc/cinit/svc/init:65 (0) +LSP:: 32708: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32708: /etc/cinit/svc/test:65 (0) +LSP:: 32708: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32708: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32708: /etc/cinit/svc/network:4 (32707) +LSP:: 32708: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32708: /etc/cinit/svc/mount:4 (32706) +LSP:: 32708: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32708: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32708: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32708: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32708: /etc/cinit/svc/getty:65 (0) +LSP:: 32709: /etc/cinit/svc/init:65 (0) +LSP:: 32709: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32709: /etc/cinit/svc/test:4 (32708) +LSP:: 32709: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32709: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32709: /etc/cinit/svc/network:4 (32707) +LSP:: 32709: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32709: /etc/cinit/svc/mount:4 (32706) +LSP:: 32709: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32709: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32709: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32709: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32709: /etc/cinit/svc/getty:65 (0) +LSP:: 32702: /etc/cinit/svc/init:4 (32710) +LSP:: 32702: /etc/cinit/svc/test/env:4 (32702) +pid: 0, m_client +LSP:: 32700: /etc/cinit/svc/init:4 (32710) +LSP:: 32700: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32700: /etc/cinit/svc/test:4 (32708) +LSP:: 32700: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32700: /etc/cinit/svc/network/eth0:16 (32700) +pid: 0, m_client +LSP:: 32710: /etc/cinit/svc/init:4 (32710) +pid: 0, m_client +LSP:: 32701: /etc/cinit/svc/init:16 (32719) +LSP:: 32701: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32701: /etc/cinit/svc/test:4 (32708) +LSP:: 32701: /etc/cinit/svc/network/loopback:4 (32701) +pid: 0, m_client +LSP:: 32699: /etc/cinit/svc/init:16 (32719) +LSP:: 32699: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32699: /etc/cinit/svc/test:4 (32708) +LSP:: 32699: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32699: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32699: /etc/cinit/svc/network:4 (32707) +LSP:: 32699: /etc/cinit/svc/mount/root:4 (32699) +pid: 0, m_client +LSP::SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz + 32698: /etc/cinit/svc/init:16 (32719) +LSP:: 32698: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32698: /etc/cinit/svc/test:4 (32708) +LSP:: 32698: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32698: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32698: /etc/cinit/svc/network:4 (32707) +LSP:: 32698: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32698: /etc/cinit/svc/mount:4 (32706) +LSP:: 32698: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32698: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32698: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +pid: 0, m_client +LSP:: 32728: /etc/cinit/svc/init:16 (32719) +LSP:: 32728: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32728: /etc/cinit/svc/test:4 (32708) +LSP:: 32728: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32728: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32728: /etc/cinit/svc/network:4 (32707) +LSP:: 32728: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32728: /etc/cinit/svc/mount:4 (32706) +LSP:: 32728: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32728: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32728: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32728) +pid: 0, m_client +LSP:: 32735: /etc/cinit/svc/init:16 (32719) +LSP:: 32735: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32735: /etc/cinit/svc/test:4 (32708) +LSP:: 32735: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32735: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32735: /etc/cinit/svc/network:4 (32707) +LSP:: 32735: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32735: /etc/cinit/svc/mount:4 (32706) +LSP:: 32735: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32735: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32735: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32735) +pid: 0, m_client +LSP:: 32742: /etc/cinit/svc/init:16 (32719) +LSP:: 32742: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32742: /etc/cinit/svc/test:4 (32708) +LSP:: 32742: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32742: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32742: /etc/cinit/svc/network:4 (32707) +LSP:: 32742: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32742: /etc/cinit/svc/mount:4 (32706) +LSP:: 32742: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32742: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32742: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32742) +pid: 0, m_client +LSP:: 32749: /etc/cinit/svc/init:16 (32719) +LSP:: 32749: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32749: /etc/cinit/svc/test:4 (32708) +LSP:: 32749: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32749: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32749: /etc/cinit/svc/network:4 (32707) +LSP:: 32749: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32749: /etc/cinit/svc/mount:4 (32706) +LSP:: 32749: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32749: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32749: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32749) +pid: 0, m_client +LSP:: 32756: /etc/cinit/svc/init:16 (32719) +LSP:: 32756: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32756: /etc/cinit/svc/test:4 (32708) +LSP:: 32756: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32756: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32756: /etc/cinit/svc/network:4 (32707) +LSP:: 32756: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32756: /etc/cinit/svc/mount:4 (32706) +LSP:: 32756: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32756: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32756: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32756) +pid: 0, m_client +LSP:: 32763: /etc/cinit/svc/init:16 (32719) +LSP:: 32763: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32763: /etc/cinit/svc/test:4 (32708) +LSP:: 32763: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32763: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32763: /etc/cinit/svc/network:4 (32707) +LSP:: 32763: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32763: /etc/cinit/svc/mount:4 (32706) +LSP:: 32763: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32763: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32763: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32763) +pid: 0, m_client +LSP:: 302: /etc/cinit/svc/init:16 (32719) +LSP:: 302: /etc/cinit/svc/test/env:16 (32717) +LSP:: 302: /etc/cinit/svc/test:4 (32708) +LSP:: 302: /etc/ciSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN:: +msgrcv: Interrupted system call +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +nit/svc/network/loopback:16 (32720) +LSP:: 302: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 302: /etc/cinit/svc/network:4 (32707) +LSP:: 302: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 302: /etc/cinit/svc/mount:4 (32706) +LSP:: 302: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 302: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 302: /etc/cinit/svc/local-tuning/keyboard-layout:16 (302) +pid: 0, m_client +LSP:: 312: /etc/cinit/svc/init:16 (32719) +LSP:: 312: /etc/cinit/svc/test/env:16 (32717) +LSP:: 312: /etc/cinit/svc/test:4 (32708) +LSP:: 312: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 312: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 312: /etc/cinit/svc/network:4 (32707) +LSP:: 312: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 312: /etc/cinit/svc/mount:4 (32706) +LSP:: 312: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 312: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 312: /etc/cinit/svc/local-tuning/keyboard-layout:16 (312) +pid: 0, m_client +LSP:: 326: /etc/cinit/svc/init:16 (32719) +LSP:: 326: /etc/cinit/svc/test/env:16 (32717) +LSP:: 326: /etc/cinit/svc/test:4 (32708) +LSP:: 326: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 326: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 326: /etc/cinit/svc/network:4 (32707) +LSP:: 326: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 326: /etc/cinit/svc/mount:4 (32706) +LSP:: 326: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 326: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 326: /etc/cinit/svc/local-tuning/keyboard-layout:16 (326) +pid: 0, m_client +LSP:: 333: /etc/cinit/svc/init:16 (32719) +LSP:: 333: /etc/cinit/svc/test/env:16 (32717) +LSP:: 333: /etc/cinit/svc/test:4 (32708) +LSP:: 333: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 333: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 333: /etc/cinit/svc/network:4 (32707) +LSP:: 333: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 333: /etc/cinit/svc/mount:4 (32706) +LSP:: 333: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 333: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 333: /etc/cinit/svc/local-tuning/keyboard-layout:16 (333) +pid: 0, m_client +LSP:: 340: /etc/cinit/svc/init:16 (32719) +LSP:: 340: /etc/cinit/svc/test/env:16 (32717) +LSP:: 340: /etc/cinit/svc/test:4 (32708) +LSP:: 340: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 340: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 340: /etc/cinit/svc/network:4 (32707) +LSP:: 340: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 340: /etc/cinit/svc/mount:4 (32706) +LSP:: 340: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 340: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 340: /etc/cinit/svc/local-tuning/keyboard-layout:16 (340) +pid: 0, m_client +LSP:: 347: /etc/cinit/svc/init:16 (32719) +LSP:: 347: /etc/cinit/svc/test/env:16 (32717) +LSP:: 347: /etc/cinit/svc/test:4 (32708) +LSP:: 347: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 347: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 347: /etc/cinit/svc/network:4 (32707) +LSP:: 347: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 347: /etc/cinit/svc/mount:4 (32706) +LSP:: 347: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 347: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 347: /etc/cinit/svc/local-tuning/keyboard-layout:16 (347) +pid: 0, m_client +LSP:: 354: /etc/cinit/svc/init:16 (32719) +LSP:: 354: /etc/cinit/svc/test/env:16 (32717) +LSP:: 354: /etc/cinit/svc/test:4 (32708) +LSP:: 354: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 354: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 354: /etc/cinit/svc/network:4 (32707) +LSP:: 354: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 354: /etc/cinit/svc/mount:4 (32706) +LSP:: 354: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 354: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 354: /etc/cinit/svc/local-tuning/keyboard-layout:16 (354) +pid: 0, m_client +LSP:: 372: /etc/cinit/svc/init:16 (32719) +LSP:: 372: /etc/cinit/svc/test/env:16 (32717) +LSP:: 372: /etc/cinit/svc/test:4 (32708) +LSP:: 372: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 372: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 372: /etc/cinit/svc/network:4 (32707) +LSP:: 372: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 372: /etc/cinit/svc/mount:4 (32706) +LSP:: 372: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 372: /etc/cinit/svc/getty/3:4 (327SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +04) +LSP:: 372: /etc/cinit/svc/local-tuning/keyboard-layout:16 (372) +pid: 0, m_client +LSP:: 379: /etc/cinit/svc/init:16 (32719) +LSP:: 379: /etc/cinit/svc/test/env:16 (32717) +LSP:: 379: /etc/cinit/svc/test:4 (32708) +LSP:: 379: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 379: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 379: /etc/cinit/svc/network:4 (32707) +LSP:: 379: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 379: /etc/cinit/svc/mount:4 (32706) +LSP:: 379: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 379: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 379: /etc/cinit/svc/local-tuning/keyboard-layout:16 (379) +pid: 0, m_client +LSP:: 386: /etc/cinit/svc/init:16 (32719) +LSP:: 386: /etc/cinit/svc/test/env:16 (32717) +LSP:: 386: /etc/cinit/svc/test:4 (32708) +LSP:: 386: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 386: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 386: /etc/cinit/svc/network:4 (32707) +LSP:: 386: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 386: /etc/cinit/svc/mount:4 (32706) +LSP:: 386: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 386: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 386: /etc/cinit/svc/local-tuning/keyboard-layout:16 (386) +pid: 0, m_client +LSP:: 393: /etc/cinit/svc/init:16 (32719) +LSP:: 393: /etc/cinit/svc/test/env:16 (32717) +LSP:: 393: /etc/cinit/svc/test:4 (32708) +LSP:: 393: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 393: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 393: /etc/cinit/svc/network:4 (32707) +LSP:: 393: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 393: /etc/cinit/svc/mount:4 (32706) +LSP:: 393: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 393: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 393: /etc/cinit/svc/local-tuning/keyboard-layout:16 (393) +pid: 0, m_client +LSP:: 400: /etc/cinit/svc/init:16 (32719) +LSP:: 400: /etc/cinit/svc/test/env:16 (32717) +LSP:: 400: /etc/cinit/svc/test:4 (32708) +LSP:: 400: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 400: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 400: /etc/cinit/svc/network:4 (32707) +LSP:: 400: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 400: /etc/cinit/svc/mount:4 (32706) +LSP:: 400: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 400: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 400: /etc/cinit/svc/local-tuning/keyboard-layout:16 (400) +pid: 0, m_client +LSP:: 407: /etc/cinit/svc/init:16 (32719) +LSP:: 407: /etc/cinit/svc/test/env:16 (32717) +LSP:: 407: /etc/cinit/svc/test:4 (32708) +LSP:: 407: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 407: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 407: /etc/cinit/svc/network:4 (32707) +LSP:: 407: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 407: /etc/cinit/svc/mount:4 (32706) +LSP:: 407: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 407: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 407: /etc/cinit/svc/local-tuning/keyboard-layout:16 (407) +pid: 0, m_client +LSP:: 414: /etc/cinit/svc/init:16 (32719) +LSP:: 414: /etc/cinit/svc/test/env:16 (32717) +LSP:: 414: /etc/cinit/svc/test:4 (32708) +LSP:: 414: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 414: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 414: /etc/cinit/svc/network:4 (32707) +LSP:: 414: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 414: /etc/cinit/svc/mount:4 (32706) +LSP:: 414: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 414: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 414: /etc/cinit/svc/local-tuning/keyboard-layout:16 (414) +pid: 0, m_client +LSP:: 421: /etc/cinit/svc/init:16 (32719) +LSP:: 421: /etc/cinit/svc/test/env:16 (32717) +LSP:: 421: /etc/cinit/svc/test:4 (32708) +LSP:: 421: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 421: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 421: /etc/cinit/svc/network:4 (32707) +LSP:: 421: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 421: /etc/cinit/svc/mount:4 (32706) +LSP:: 421: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 421: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 421: /etc/cinit/svc/local-tuning/keyboard-layout:16 (421) +pid: 0, m_client +LSP:: 428: /etc/cinit/svc/init:16 (32719) +LSP:: 428: /etc/cinit/svc/test/env:16 (32717) +LSP:: 428: /etc/cinit/svc/test:4 (32708) +LSP:: 428: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 428: /etc/cinit/svc/network/eth0:16SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call + (32718) +LSP:: 428: /etc/cinit/svc/network:4 (32707) +LSP:: 428: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 428: /etc/cinit/svc/mount:4 (32706) +LSP:: 428: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 428: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 428: /etc/cinit/svc/local-tuning/keyboard-layout:16 (428) +pid: 0, m_client +LSP:: 435: /etc/cinit/svc/init:16 (32719) +LSP:: 435: /etc/cinit/svc/test/env:16 (32717) +LSP:: 435: /etc/cinit/svc/test:4 (32708) +LSP:: 435: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 435: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 435: /etc/cinit/svc/network:4 (32707) +LSP:: 435: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 435: /etc/cinit/svc/mount:4 (32706) +LSP:: 435: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 435: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 435: /etc/cinit/svc/local-tuning/keyboard-layout:16 (435) +pid: 0, m_client +LSP:: 452: /etc/cinit/svc/init:16 (32719) +LSP:: 452: /etc/cinit/svc/test/env:16 (32717) +LSP:: 452: /etc/cinit/svc/test:4 (32708) +LSP:: 452: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 452: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 452: /etc/cinit/svc/network:4 (32707) +LSP:: 452: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 452: /etc/cinit/svc/mount:4 (32706) +LSP:: 452: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 452: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 452: /etc/cinit/svc/local-tuning/keyboard-layout:16 (452) +pid: 0, m_client +LSP:: 459: /etc/cinit/svc/init:16 (32719) +LSP:: 459: /etc/cinit/svc/test/env:16 (32717) +LSP:: 459: /etc/cinit/svc/test:4 (32708) +LSP:: 459: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 459: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 459: /etc/cinit/svc/network:4 (32707) +LSP:: 459: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 459: /etc/cinit/svc/mount:4 (32706) +LSP:: 459: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 459: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 459: /etc/cinit/svc/local-tuning/keyboard-layout:16 (459) +pid: 0, m_client +LSP:: 466: /etc/cinit/svc/init:16 (32719) +LSP:: 466: /etc/cinit/svc/test/env:16 (32717) +LSP:: 466: /etc/cinit/svc/test:4 (32708) +LSP:: 466: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 466: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 466: /etc/cinit/svc/network:4 (32707) +LSP:: 466: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 466: /etc/cinit/svc/mount:4 (32706) +LSP:: 466: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 466: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 466: /etc/cinit/svc/local-tuning/keyboard-layout:16 (466) +pid: 0, m_client +LSP:: 473: /etc/cinit/svc/init:16 (32719) +LSP:: 473: /etc/cinit/svc/test/env:16 (32717) +LSP:: 473: /etc/cinit/svc/test:4 (32708) +LSP:: 473: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 473: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 473: /etc/cinit/svc/network:4 (32707) +LSP:: 473: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 473: /etc/cinit/svc/mount:4 (32706) +LSP:: 473: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 473: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 473: /etc/cinit/svc/local-tuning/keyboard-layout:16 (473) +pid: 0, m_client +LSP:: 480: /etc/cinit/svc/init:16 (32719) +LSP:: 480: /etc/cinit/svc/test/env:16 (32717) +LSP:: 480: /etc/cinit/svc/test:4 (32708) +LSP:: 480: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 480: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 480: /etc/cinit/svc/network:4 (32707) +LSP:: 480: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 480: /etc/cinit/svc/mount:4 (32706) +LSP:: 480: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 480: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 480: /etc/cinit/svc/local-tuning/keyboard-layout:16 (480) +pid: 0, m_client +LSP:: 487: /etc/cinit/svc/init:16 (32719) +LSP:: 487: /etc/cinit/svc/test/env:16 (32717) +LSP:: 487: /etc/cinit/svc/test:4 (32708) +LSP:: 487: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 487: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 487: /etc/cinit/svc/network:4 (32707) +LSP:: 487: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 487: /etc/cinit/svc/mount:4 (32706) +LSP:: 487: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 487: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 487: /etc/cinit/svc/local-tuning/keyboard-layout:16 (487) +pid: 0, mLoading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +_client +LSP:: 494: /etc/cinit/svc/init:16 (32719) +LSP:: 494: /etc/cinit/svc/test/env:16 (32717) +LSP:: 494: /etc/cinit/svc/test:4 (32708) +LSP:: 494: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 494: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 494: /etc/cinit/svc/network:4 (32707) +LSP:: 494: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 494: /etc/cinit/svc/mount:4 (32706) +LSP:: 494: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 494: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 494: /etc/cinit/svc/local-tuning/keyboard-layout:16 (494) +pid: 0, m_client +LSP:: 501: /etc/cinit/svc/init:16 (32719) +LSP:: 501: /etc/cinit/svc/test/env:16 (32717) +LSP:: 501: /etc/cinit/svc/test:4 (32708) +LSP:: 501: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 501: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 501: /etc/cinit/svc/network:4 (32707) +LSP:: 501: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 501: /etc/cinit/svc/mount:4 (32706) +LSP:: 501: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 501: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 501: /etc/cinit/svc/local-tuning/keyboard-layout:16 (501) +pid: 0, m_client +LSP:: 510: /etc/cinit/svc/init:16 (32719) +LSP:: 510: /etc/cinit/svc/test/env:16 (32717) +LSP:: 510: /etc/cinit/svc/test:4 (32708) +LSP:: 510: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 510: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 510: /etc/cinit/svc/network:4 (32707) +LSP:: 510: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 510: /etc/cinit/svc/mount:4 (32706) +LSP:: 510: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 510: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 510: /etc/cinit/svc/local-tuning/keyboard-layout:16 (510) +pid: 0, m_client +LSP:: 520: /etc/cinit/svc/init:16 (32719) +LSP:: 520: /etc/cinit/svc/test/env:16 (32717) +LSP:: 520: /etc/cinit/svc/test:4 (32708) +LSP:: 520: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 520: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 520: /etc/cinit/svc/network:4 (32707) +LSP:: 520: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 520: /etc/cinit/svc/mount:4 (32706) +LSP:: 520: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 520: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 520: /etc/cinit/svc/local-tuning/keyboard-layout:16 (520) +pid: 0, m_client +LSP:: 533: /etc/cinit/svc/init:16 (32719) +LSP:: 533: /etc/cinit/svc/test/env:16 (32717) +LSP:: 533: /etc/cinit/svc/test:4 (32708) +LSP:: 533: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 533: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 533: /etc/cinit/svc/network:4 (32707) +LSP:: 533: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 533: /etc/cinit/svc/mount:4 (32706) +LSP:: 533: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 533: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 533: /etc/cinit/svc/local-tuning/keyboard-layout:16 (533) +pid: 0, m_client +LSP:: 541: /etc/cinit/svc/init:16 (32719) +LSP:: 541: /etc/cinit/svc/test/env:16 (32717) +LSP:: 541: /etc/cinit/svc/test:4 (32708) +LSP:: 541: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 541: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 541: /etc/cinit/svc/network:4 (32707) +LSP:: 541: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 541: /etc/cinit/svc/mount:4 (32706) +LSP:: 541: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 541: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 541: /etc/cinit/svc/local-tuning/keyboard-layout:16 (541) +pid: 0, m_client +LSP:: 548: /etc/cinit/svc/init:16 (32719) +LSP:: 548: /etc/cinit/svc/test/env:16 (32717) +LSP:: 548: /etc/cinit/svc/test:4 (32708) +LSP:: 548: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 548: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 548: /etc/cinit/svc/network:4 (32707) +LSP:: 548: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 548: /etc/cinit/svc/mount:4 (32706) +LSP:: 548: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 548: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 548: /etc/cinit/svc/local-tuning/keyboard-layout:16 (548) +pid: 0, m_client +LSP:: 555: /etc/cinit/svc/init:16 (32719) +LSP:: 555: /etc/cinit/svc/test/env:16 (32717) +LSP:: 555: /etc/cinit/svc/test:4 (32708) +LSP:: 555: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 555: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 555: /etc/cinit/svc/network:4 (32707) +LSP:: 555: /etc/cinit/svSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/man/cinit.text b/software/cinit/browse_source/cinit-0.3pre12/doc/man/cinit.text new file mode 100644 index 00000000..19d0015a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/man/cinit.text @@ -0,0 +1,64 @@ +cinit(8) +======== +Nico Schottelius + + +NAME +---- +cinit - fast executing, small and simple init with support for profiles + + +SYNOPSIS +-------- +'cinit' [cprofile:name_of_profile] + + +DESCRIPTION +----------- +Cinit is an init system. It normally gets started by the operating +system (Linux, *BSD, ...) directly after the kernel has been loaded. + +Cinit uses parallel execution of services as far as possible. To +ensure the correct boot order you need to specify which service +'needs' or 'wants' another service. The resulting dependency tree +is used at startup to determine which service to start when. + +This may result in different boot orders depending on whether +one service is one time faster or slower. Due to the dependencies +this is not a problem, but allowed and wished per design. + +For more information refer to the texinfo or html documentation. + + +OPTIONS +------- + +cprofile:name_of_profile:: + If specified, cinit will start the named profile instead of the + standard 'init' service + + +BUGS +---- +cinit is not tested nor documented very well currently. + +The porting to other OS is not finished yet (mainly missing +system level binaries: shutdown, reboot, halt). + +Both is work in progress. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + + +COPYING +------- +Copyright \(C) 2006 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/man/cmd.text b/software/cinit/browse_source/cinit-0.3pre12/doc/man/cmd.text new file mode 100644 index 00000000..ccd372d3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/man/cmd.text @@ -0,0 +1,81 @@ +cmd(8) +====== +Nico Schottelius + + +NAME +---- +cmd - cinit management and information tool + + +SYNOPSIS +-------- +'cmd' [-ed (i|w|n)] [-(p|s) ] [-v] + + +DESCRIPTION +----------- +cmd adds the management possibility to cinit(8). You can retrieve +several information from cinit and change services. + +OPTIONS +------- +-d:: + Disable service (see below for required parameters) + (NOT YET IMPLEMENTED) + +-e:: + Enable service + - i: Included all needs and wants + - n: Exclude needs + - w: Exclude wants + (NOT YET IMPLEMENTED) + +-p:: + Retrieve last process id (pid) for the specific service. For respawn + services this is the pid of the running service. For services that are + started only once it is the pid it had when running. + (NOT YET IMPLEMENTED) + +-s:: + Retrieve status of a service. Warning: Do not add trailing slash. + Path can be specified absolute (/etc/cinit/svc/mount/root) or + relative (mount/root). + +-v:: + Get version of cinit. + + + +EXAMPLES +-------- +Get version:: + [8:44] denkbrett:src# cmd -v + + Version of cinit: 0.3pre12 + +Get status:: + [8:37] denkbrett:src# ./cmd -s mount/root + + Status of /etc/cinit/svc/mount/root is: 2001 + + +BUGS +---- +Not everything is implemented. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License Version 3 (GPLv3). diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/man/cservice b/software/cinit/browse_source/cinit-0.3pre12/doc/man/cservice new file mode 100644 index 00000000..26a472b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/man/cservice @@ -0,0 +1,37 @@ +WARNING: + cservice is not yet ready for cinit-0.3! + +-------------------------------------------------------------------------------- +cservice, +Nico Schottelius, 2005-06-10 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +cservice - control cinit + +cservice -[phearsu] + -e - (ein) start a service (including all needed dependencies) + -a - (aus) stop a respawing service, don't care about other services + + -r - reboot + -h - halt + -p - poweroff (on some systems the same as halt) + -s - reScue mode - only a shell + + -u - update: hot reboot - shutdown system and execute /sbin/cinit + +A service may be specified either as relative or as absolute path. + +-h, -p, -r, -s and -u need the "Magic Word" to do their work: "thilo" + +-------------------------------------------------------------------------------- + +Some examples: + + cservice -e /etc/cinit/getty/8 # fire up getty/8 + cd /etc/cinit/getty; cservice -a ./8 # shut down getty/8 + cservice -h thilo # halt + cservice -r thilo # reboot + cservice -s thilo # rescue + cservice -u thilo # update + +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/man/halt.kill.text b/software/cinit/browse_source/cinit-0.3pre12/doc/man/halt.kill.text new file mode 100644 index 00000000..4a31e257 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/man/halt.kill.text @@ -0,0 +1,46 @@ +halt.kill(8) +============ +Nico Schottelius + + +NAME +---- +halt.kill - Halts systems running cinit through a kill call + +SYNOPSIS +-------- +'halt.kill' + + +DESCRIPTION +----------- +You normally halt your system through 'cmd'. If cmd is unavailable or +the IPC system has problem there is still the possibilty to halt +it through a signal. See 'src/include/signals.h' for more details which +signals are used. + +OPTIONS +------- + +none:: + No options are used, If you execute halt.kill, your system will be halted. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + +SEE ALSO +--------- +cmd(8) + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/man/poweroff.kill.text b/software/cinit/browse_source/cinit-0.3pre12/doc/man/poweroff.kill.text new file mode 100644 index 00000000..62807ba1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/man/poweroff.kill.text @@ -0,0 +1,47 @@ +poweroff.kill(8) +================ +Nico Schottelius + + +NAME +---- +poweroff.kill - Halts and powers off systems running cinit through a kill call + +SYNOPSIS +-------- +'poweroff.kill' + + +DESCRIPTION +----------- +You normally poweroff your system through 'cmd'. If cmd is unavailable or +the IPC system has problem there is still the possibilty to poweroff +it through a signal. See 'src/include/signals.h' for more details which +signals are used. + +OPTIONS +------- + +none:: + No options are used, If you execute poweroff.kill, your system will be + powered off. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + +SEE ALSO +--------- +cmd(8), halt.kill(8), reboot.kill(8) + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/man/reboot.kill.text b/software/cinit/browse_source/cinit-0.3pre12/doc/man/reboot.kill.text new file mode 100644 index 00000000..a748553e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/man/reboot.kill.text @@ -0,0 +1,47 @@ +reboot.kill(8) +============== +Nico Schottelius + + +NAME +---- +reboot.kill - Reboots systems running cinit through a kill call + +SYNOPSIS +-------- +'reboot.kill' + + +DESCRIPTION +----------- +You normally reboot your system through 'cmd'. If cmd is unavailable or +the IPC system has problem there is still the possibilty to reboot +it through a signal. See 'src/include/signals.h' for more details which +signals are used. + +OPTIONS +------- + +none:: + No options are used, If you execute reboot.kill, your system will be + rebooted. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + +SEE ALSO +--------- +cmd(8), halt.kill(8), poweroff.kill(8) + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre11 b/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre11 new file mode 100644 index 00000000..ec532269 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre11 @@ -0,0 +1,10 @@ +Done: +- cleanup ipc: + merge cinit_ipc_logon() and cinit_ipc_connect()? + => already done! +- finish cmd in general, perhaps only including one command. +[18:51] denkbrett:src# LANG=C cp cinit /sbin/cinit +cp: cannot create regular file `/sbin/cinit': Text file busy + => mv & cp! + => documentation! + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre12 b/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre12 new file mode 100644 index 00000000..edbe41d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre12 @@ -0,0 +1,41 @@ +Wished release date: 6/7. September + +-------------------------------------------------------------------------------- +Done: +- begin to write documentation about client functions + => noone needs that anyway. skip and concentrate on functions now. + +cleanup ipc! + where to call !cinit_ipc_logon and !cinit_ipc_connect? + +-------------------------------------------------------------------------------- +Add +Hallo, + +Liebster Nico, wuerdest du die dazu durchringen "make install" und +vllt. sogar "make install-test" in die cinit 0.3er branch aufnehmen? + +vlg Lucky + ==> added make install in previous releases, make test maybe come back + later again. +- cleanup communication: + put parts of comm.h into cinit.h => global exposure + or define new structure in cinit.h? + => removed comm.h +- check svc path in cmd: if it's relative, add /etc/cinit/svc to it + => added. +- add update for git => so cloning does not fail! + => added hook. +Use http://www.opengroup.org/onlinepubs/009695399/basedefs/stdint.h.html + => partly implemented + +- remove manual pid support, use the one supplied by msgctl() + => ok. +- there seems to be a race condition in the execution of the + dependency tree: it happens that services that depend on + mounted /proc, have needs on mount/proc are still exited + before /proc is mounted. + problem of cinit or of mount, exiting too early? + guess the first one, so fix it :-) + + => missing check in svc_needs_status.c diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre13 b/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre13 new file mode 100644 index 00000000..7ab3802f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre13 @@ -0,0 +1,17 @@ +Wished released date: 10./11. September + +- add get_svc_pid() +- cleanup cmd: add real usage, add -h for help +- cleanup msgq.h: namespace! +- cleanup cinit_ipc_logon()! +- create libcinit.a/so and link against it +- global symbol to track the connection to cinit in the client + => cinit_ipc_cinit() - initalise ipc in the client (only once) +- cleanup headers: + seems to make more sense, to have more than one exposed header. + cinit.h gets to fast too big. so splitoff to: + /* main */ + /* ... */ +- map status numbers to messages + +Done: diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre14 b/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre14 new file mode 100644 index 00000000..e44373ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre14 @@ -0,0 +1,3 @@ +Wished release date: 13. September +- add support for shutting down services on halt +- diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre15 b/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre15 new file mode 100644 index 00000000..a8a98f93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre15 @@ -0,0 +1,2 @@ +Wished release date: 20. September +- Add support for starting/stoping services via cmd diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre16 b/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre16 new file mode 100644 index 00000000..a5884020 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre16 @@ -0,0 +1,8 @@ +Wished release date: 27. September +- check porting code: + * advise users to set conf/os + * add uname -r | tr ... as make osconfig +- check that all parts of cinit compile at least under: + * linux, linux on 64bit + * FreeBSD + * NetBSD diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre17 b/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre17 new file mode 100644 index 00000000..82976e37 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.3pre17 @@ -0,0 +1,11 @@ +Wished release date: 3. October + +"Code quality assurance release" + +- Fix bugs all outstanding bugs. +- Give cinit some time, write some documentation and make pre17 the last pre of the 0.3 + serie. +- Give the code out to other developers, request explicit strong critics + => So even + "This could be in theory, if Mars is behind Pluto on Sunday evening" bugs + are out. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.4 b/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.4 new file mode 100644 index 00000000..285af994 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/todo/0.4 @@ -0,0 +1,37 @@ +16:13 < KillerFox> telmich: hast du eigentlich schon hooks in cinit? +20:07 < KillerFox> Vapier führt mal wieder Selbstgespräche. +23:39 < telmich> KillerFox: wozu? +23:42 < KillerFox> telmich: es wäre durchaus interessant, um z.B. sterbende Prozesse wieder zu + starten und so. +23:42 < KillerFox> oder einen Hinweis per Mail zu verschicken. +23:43 < telmich> ahh, du meinst so benachrichtigungen von cinit an $prozess? +23:43 < KillerFox> jein +23:43 < KillerFox> du machst z.B. /etc/cinit/hooks/ +23:43 < KillerFox> darin gibts dann Scripte die bei bestimmten Ereignise aufgerufen werden. +23:43 < KillerFox> z.B. wenn ein Prozess stirbt +23:44 < KillerFox> du kannst dir natürlich auch überlegen, es auf Prozessebene herunter zu + hacken +23:44 < telmich> ja, eher letzeres +23:44 < KillerFox> so könnte man auch ein paar nette Sachen machen. z.B. Aufräumarbeiten + nachdem ein Prozess beendet wurde oder so +23:45 < KillerFox> telmich: ich finde beides Sinnvoller +23:45 < KillerFox> telmich: globale und lokale Hooks +23:45 < KillerFox> lokale überschreiben globale oder so +23:45 < telmich> oder laufen beide +23:45 < KillerFox> oder man kaskadiert sie. +23:45 < KillerFox> genau +23:46 < KillerFox> sinnvolle hooks: pre-start, start, post-start, pre-stop, stop, post-stop, + crash +23:46 < KillerFox> oder sowas +23:47 < KillerFox> vielleicht fallen dir noch mehr ein. +23:48 < KillerFox> die Kommunikation könnte man dann wahlweise über Parameter oder + Umgebungsvariablen lösen +23:48 < KillerFox> um z.B. mitzuteilen welcher Prozess gestoppt wurde +23:49 < KillerFox> z.B. wenn man in pre-stop je nach Bedingung den Stop-Vorgang abbrechen will. +23:49 < telmich> via ${ipc} => kommt darauf an, was implementiert ist; zZ ist es ja msgq +23:50 < telmich> ahh, so +23:50 < telmich> das waere noch recht trivial ueber pipes +23:50 < KillerFox> fifos/sockets, was auch immer. +23:50 < KillerFox> das müsste man dann mit einer Bibliothek lösen oder so +23:50 < telmich> ja, die ist auch im aufbau in libcinit/ + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/FAQ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/FAQ new file mode 100644 index 00000000..53494f73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile:home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/NEW_using_cinit_freebsd b/software/cinit/browse_source/cinit-0.3pre12/doc/user/NEW_using_cinit_freebsd new file mode 100644 index 00000000..05499166 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/NEW_using_cinit_freebsd @@ -0,0 +1,21 @@ +11:33 < mux> from sys/kern/init_main.c: +11:33 < telmich> mux: that's true; I just tried with linux and I tell the + bootloader, who tells the kernel then +11:33 < mux> static char init_path[MAXPATHLEN] = +11:33 < mux> #ifdef INIT_PATH __XSTRING(INIT_PATH); +11:33 < mux> #else +"/sbin/init:/sbin/oinit:/sbin/init.bak:/rescue/init:/stand/sysinstall"; +11:33 < mux> #endif +11:33 < mux> but you give a loader tunable +11:34 < mux> if ((var = getenv("init_path")) != NULL) { +11:34 < mux> strlcpy(init_path, var, sizeof(init_path)); +11:34 < mux> freeenv(var); +11:34 < mux> } +11:34 < mux> here you are +11:34 < telmich> ahh, that's good +11:34 * telmich has to try cinit on freebsd the next days :-) +12:34 < mux> (s/you give/you can give/) +11:35 < mux> so, simply init_path)="/sbin/cinit" in /boot/loader.conf should do + it +11:35 < mux> minus the typo + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/README.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/README.text new file mode 100644 index 00000000..3467ba63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/README.text @@ -0,0 +1,21 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit user documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +People using cinit. + +Content +------- + +hints.text: Some general hints +tuning.text: Some tuning hints diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/TODO b/software/cinit/browse_source/cinit-0.3pre12/doc/user/TODO new file mode 100644 index 00000000..6044e97a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/TODO @@ -0,0 +1,4 @@ +All the content in this file is unsorted. Reading may harm you. + +Confdir: /etc/cinit/conf/ +panic: /etc/cinit/conf/panic, /etc/cinit/conf/panic.params diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/compiles.on.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/compiles.on.text new file mode 100644 index 00000000..ad467d38 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/compiles.on.text @@ -0,0 +1,19 @@ +cinit - known configurations cinit compiles on +============================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-12-08 +:Author Initials: NS + + +This document lists all the configuration known to me on that +cinit compiles. If you compiled cinit with another configuration, +drop a mail to nico-cinit-report [at] schottelius.org. + +The list +-------- +cinit is known to compile on: + +- x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +- x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/conf-system.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/conf-system.text new file mode 100644 index 00000000..600112c3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/conf-system.text @@ -0,0 +1,34 @@ +The conf/ system +================= +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-08 +:Author Initials: NS + +This documentes describes the configuration system used by cinit. + + +What is the conf/ system? +------------------------- +The conf/ system is the configuration system for the cinit build. +The first line of each file below conf/ is a configuration value +with the name of the file: + +---------------------------------------------------------------------- +[9:00] hydrogenium:cinit-0.3pre6% head -n 1 conf/cc +gcc +---------------------------------------------------------------------- + +This means that the variable "cc" has the value "gcc". + + +What is the reason for conf/? +----------------------------- +I needed a small and simple configuration system, which may be included +in the full build process. + + +Is conf/ also usable for other projects? +---------------------------------------- +In its current state conf/ is just a prototype, with which I experiement +a lot. But it is possible that the future aim is to provide a simele +configuration and autoconfiguraton mechanism. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/configuring.cinit.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/configuring.cinit.text new file mode 100644 index 00000000..c04da745 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/configuring.cinit.text @@ -0,0 +1,327 @@ +cinit - Configuring +=================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2005-05-28 +:Author Initials: NS + + +This documentes describes how to configure cinit. +You should already have cinit installed, otherwise read +"cinit - Installing" first. + + +General configuration layout +---------------------------- +Cinit uses the <<>> configuration syntax, which means that +the configuration is kept as simple as possible. The following +sections will show you what that means. + +The cinit configuration consists of +- a special configuration directory +- and the service definitions. + +Paths +----- +Normally the configuration is kept below '/etc/cinit' +(though you can change this before compiling in conf/cinit_dir). + +The full description of the path layout of cinit and how to change it +can be found in 'paths.text'. + +Conf +---- +The special configuration directory is normally called `conf/` +(defined at compile-time in `conf/c_confdir`). + +For all executables into this directory apply the same rules as mentioned +below in "Execution: on and off": Appened .params specifies parameters, +appended .env specifies environment. + + +conf/last +~~~~~~~~~ +This is the last part that will be executed. After it has finished, cinit +will halt, power-off or reboot your machine. + +You can use it for whatever task to accomplish (as most things of cinit), but +the idea behind it is to use it for cleaning up things that are not covered +by the off parts of the services. This maybe swapoff (although this is an unecessary +call before poweroff, imho and even if needed this could be handled within the +off part of the same services that enabled it) or `umount -a` for everything +manually mounted and not unmounted yet. + + +conf/sleep_before_kill +~~~~~~~~~~~~~~~~~~~~~~ +This file contains just one line: The number of seconds to sleep after SIGTERM was sent +to every remaining process before sending SIGKILL to all processes. If this file +is unreadable or not existent, cinit will fall back to the value compiled in +(which was specified at build time in conf/sleep_kill). + + +Services +-------- +cinit is service based. Other init systems use shell +scripts (for instance /etc/rc, /etc/init.d/rc as starters +and /etc/rc*.d/* as "service definitions"). + +'current-init-problems.text' explains why cinit does *not* +use nor recommends the use of shell scripts. + +A service is simply a directory. This directory contains information about + +- what should be started when starting the service +- what should be started when stoping the service +- what dependencies the service has +- whether to restart it, when it exits + + +Full service definition +~~~~~~~~~~~~~~~~~~~~~~~ +. A service consists of + - a base directory (like /etc/cinit/svc/mount/root/) + - dependency configuration (`needs` and `wants`) + - start/stop programs (`on` and `off`) + - respawn flag (`respawn`) + + +Base directory +^^^^^^^^^^^^^^ +You can create the base directory everywhere below /etc/cinit/svc. +You may and it is recommened to create a directory structure +(see 'example-directory-structure.text'). + + +Dependencies +^^^^^^^^^^^^ +The subdirectories + +- `wants` +- and `needs` + +contain the dependencies for the service. + +Read 'dependencies.text' for more information. + + +Respawning +^^^^^^^^^^^ +If you create the empty file 'respawn' (adjustable via conf/c_respawn) +the service will be restarted after it exits. + +-------------------------------------------------------------------------------- +# Tell cinit to respawn the eth0.udhcpc service +touch /etc/cinit/svc/network/eth0.udhcpc +-------------------------------------------------------------------------------- + + +Execution: on and off +^^^^^^^^^^^^^^^^^^^^^ +When a service starts, the file `on` in the service +directory is executed. It is ok, if this file is not existing. +When a service stops, the file `off` in the service +directory is executed. + +The file with the extension `.params` is used to specify the arguments +to pass. Each line contains exactly one parameter. + +The file with the extension `.env` is used to specify the environment +to pass. Each line contains exactly one variable definition in the form +'variable=value'. + +. The following six files are possibly used on starting/stoping: + - ./on (the program called on startup) + - ./on.params (the parameters to pass to the program, see conf/c_params) + - ./on.env (the environment to pass to the program, see conf/c_env) + - ./off (the program called when shutting down the service) + - ./off.params (the parameters to pass to the program) + - ./on.env (the environment to pass to the program) + +Some examples: +---------------------------------------------------------------------- + /etc/cinit/svc/init: + ./wants -> services it wants + ./needs -> services it needs +---------------------------------------------------------------------- + +A more or less normal service without dependencies: +---------------------------------------------------------------------- + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it +---------------------------------------------------------------------- + +A service with all options used: +---------------------------------------------------------------------- + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn service + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting +---------------------------------------------------------------------- + + +Profiles +-------- +Profiles allow you to define different startup scenarios and select +those before bootup. Read 'profiles.text' for more information about +profiles. + +The profile support was added in cinit-0.0.6. + + +Service execution order +------------------------ +The first service executed is '/etc/cinit/svc/init'. +If a profile is selected '/etc/cinit/svc/`profilename`' is used +instead. + +Cinit builds a full service dependency tree through the `wants` +and `needs` of the first service and its dependencies +(recursively). + +After the tree is generated, cinit begins to start the services +at the end of the tree. These services have no `needs`. + +If you manage to create circular dependencies your system will not startup. +You can verify the correctness your configuration with the script +`cinit.check.config`. + + +Hints +----- + +Service executing / parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The on and off files can and should be links to the programs you want +to execute instead of a shell script. This way you save yourself the overhead +of loading a shell. The speed enhancement is very big if you have shells +like bash installed as /bin/sh (which is *not* senseful anyway, I would +recommend dash or ksh for /bin/sh). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. +The service could look like this: +---------------------------------------------------------------------- + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). +---------------------------------------------------------------------- + + +Daemons +~~~~~~~~ +Daemons are programs that go away to the background (using fork()) after +start). + +The fork-away strategy seems to be some illness introduced by traditional +init systems, that are dependent on the fact, that a process exits on +startup. + +cinit in contrast remembers the process ID (pid) of the services it +restarts (those with `respawn` enabled). + +So when the daemon fork()s away and the parent process exits it looks to +cinit like the watched service died and cinit will restart it. + +Happily, most processes can be taught not to go to background. +Some processes even do that by default and very less are broken that +one cannot tell them not to background. + +A list of known processes that are normally used in respawn +processes can be found in 'daemons.backgrounding.text'. + +If your process is not listed in `daemons.backgrounding.text', +check the documentation of your daemon program, if may have a +switch to disable forking. + +But, with a small hack it is even possible to respawn those broken processes: + +We start a program, that + - starts the daemon, + - monitors the pidfile of the daemon, + - waits until that pid does not exist anymore + - and then exits. + +Such a program is included into the cinit source tarball, +though I do not recommend using it. The better way is to implement +non forking mode into your process. + +The name of the program (actually a shell script) is 'cinit.wait.for.daemon'. + +You can use it as the `on` part of a service and add + + - the pidfile, + - the process binary + - and the process parameters + +to `on.params`. + +Thus the service could look like: +---------------------------------------------------------------------- + svc-broken-daemon/ + on -> /sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL +---------------------------------------------------------------------- +(This is not a so good example, because Apache supports non-forking mode). + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + + +Logging +~~~~~~~ +Currently there's no special logging support. +When a process writes to stdout, it will be displayed on +the same stdout cinit is connected to. + +In newer versions cinit (perhaps cinit-0.4) will also support logging +stdout and stderr of a service. + + +How to migrate your old init-system configuration to cinit +---------------------------------------------------------- +This is highly dependent on your actual system, your system +configuration and your own ideas. + +Cinit is able to replace all other init systems I know about. + +So the only question is "How to do it?". + +There are some hints on how to migrate to cinit in general and also +some os specific help in the file 'migrating-init-systems.text', + + +Debugging the configuration +---------------------------- +Use `ls -lR /etc/cinit` or one of the tools found in contrib+tools/. + + +Examples +-------- +Currently there are some example configurations available +at http://unix.schottelius.org/cinit/samples/cinit-0.3/, sorted +by host on which they are created. + +In near future, there will also be a file name configuration.example.text, +which will lead you to a sample configuration. + + +References +---------- ++ [[[cconfig]]] http://nico.schotteli.us/papers/linux/cconfig/ diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/cross-compiling.text new file mode 100644 index 00000000..67208534 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/cross-compiling.text @@ -0,0 +1,6 @@ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/current-init-problems.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/current-init-problems.text new file mode 100644 index 00000000..529c2f84 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/current-init-problems.text @@ -0,0 +1,170 @@ +Currently available init systems and their problems +=================================================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-11 +:Author Initials: NS + + +This document describes some other init systems, especially +the "traditional" ones and describes their problems. + + +Introduction +------------- +some history, sysv, bsd, + +minit, runit, initng, cinit, upstart + + +Implementations +--------------- +List of current implementations as of 2006-12-12. + + +Linux Sys-V-Init +~~~~~~~~~~~~~~~~ +Debian Sid + +/etc/inittab + +"First script" /etc/init.d/rcS (specified +/etc/init.d/rcS: Bourne shell script text executable + +Runlevels: 0-6, different states + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% /sbin/runlevel +N 2 +-------------------------------------------------------------------------------- + + +Depending on runlevel, the init calls /etc/init.d/rc $runlevel. + +This is manually configured in /etc/inittab + +/etc/init.d/rc: Bourne shell script text executable + +/etc/init.d/rc + +Calls symlinks in /etc/rc?.d. Each runlevel a directory: + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% ls -ld /etc/rc*.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc0.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc1.d +drwxr-xr-x 3 root root 4096 2006-12-01 16:56 /etc/rc2.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc3.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc4.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc5.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc6.d +drwxr-xr-x 2 root root 4096 2006-11-28 23:17 /etc/rcS.d +-------------------------------------------------------------------------------- + + + +rlmanager: sys-v-init hack +~~~~~~~~~~~~~~~~~~~~~~~~~~ +rlmanager: one script to be executed, sources +simply configuration + +Gentoo Linux +~~~~~~~~~~~~ +no content yet + +BSD init +~~~~~~~~ +Analyzed on FreeBSD. +/etc/rc +/etc/rc.d/ system services +/usr/local/etc/rc.d/ user installed services +Scripts may use values from /etc/rc.conf to check whether +they should be started or not. + +runit +~~~~~ +Three stages: Script1, dependencies, Script3 + + +Initng +~~~~~~ +no content yet + +minit +~~~~~ +Focus on being small. Needs libowfat. +Log support through pipe. + + + + + +Problems overview +----------------- + +Scripts +~~~~~~~ +Scripts are slow. Startup time. Execution time. Unecessary overhead. + + +Sequential startup +~~~~~~~~~~~~~~~~~~ +In the 'old' init systems there is no support of parallel execution. +So if one services hangs at startup, the whole system has to wait +(for instance a dhcp request). In the worst case this may result in +a non-booting system. Systems with dependencies can start the gettys +for login before, in parallel to or even after blocking services are +started. The fact, that they *are* started means you can interact with +the system, you can end looping or blocking services. + +So sequential startup may not only be the reason for a pretty +slow system, but also for an unmaintainable one. + +Unecessary services +~~~~~~~~~~~~~~~~~~~ +Many implementations try to do whatever-is-possible on boot, trying to +cover every possible and impossible situation. + +Portmap without any program that needs it. + +Starting all installed services per default (Debian) vs. let the +user choose what to start (Gentoo). + +Nicht entfernte Altlasten ab und zu. + + +No dependencies +~~~~~~~~~~~~~~~ +Systems without dependencies may result in a chaos state after booting up. + + +Only soft dependencies +~~~~~~~~~~~~~~~~~~~~~~~ +The dependencies are used, but because of soft dependencies, services +may be started although their dependency is missing. + + +Parallel init system debugging +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In contrast to the old init systems, parallel executing init systems +are much harder to debug. If the starting init systems does not have +proper logging / reporting to the user (like cinit-0.2 has), the user +may never find out, what happened and why. + + +Parallel / dependency checking init system with variable boot order +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The boot order may be different each time you boot and is dependent +on the success or failure of services. This way you can never tell +exactly how and in which order they are executed. On multiprocessor +machines, where processes may be truely executed in parallel, there +is no order anymore, but there are n orders on n processors. + +To solve this issue, init systems which support parallel execution +should ship with some testing tools, that simulate a startup. + +cinit will ship with such a tool in cinit-0.4. + + +References +---------- +no content yet diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/daemons.backgrounding.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/daemons.backgrounding.text new file mode 100644 index 00000000..1218f9a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/daemons.backgrounding.text @@ -0,0 +1,83 @@ +cinit - Daemons backgrounding +============================= +Nico Schottelius +0.1, for cinit 0.3, Initial versinon from 2005-06-12 + + +This document describes the backgrounding process and how to disable it. + + + +Definition +----------- +A daemon is a program which runs in the background. +Running in the background means you cannot access the process +directly (like you can press a key in a shell). + + +Daemons and cinit +------------------ +cinit normally watches system services and restarts them +(`respawn` flag in the configuration). If the process goes to background, +cinit cannot control it directly anymore. + +List of daemons and non-forking parameters +------------------------------------------- + +The following daemons / servers are known to avoid backgrounding easily: + +- acpid [x86 power management]: -f (undocumentated but works) +- apache [webserver]: -DFOREGROUND +- asterisk [pbx]: -f +- bind [dns server/caching]: -f +- cardmgr [pcmcia/cardbus]: -f +- cron (vixie) [schedular]: -f +- cupsd [printer server]: -f or -F +- dhclient [dhcp client]: -d +- dhcp3 (isc) [dhcp server]: -f +- distccd [compile server]: normal behaviour +- dovecot [imap/pop3 server]: -F +- fam [file alteration monitor]:-f +- fcron [schedular]: -f +- frox [ftp proxy]: "NoDetach" in config +- freeradius [radiusd]: -f +- gdm [display manager]: -nodaemon +- hybrid [irc server]: -foreground +- icecast2 [sound streamer]: normal behaviour +- mini-lpd [printer server]: normal behaviour +- metalog [log server]: normal behaviour +- monotone [vcs]: normal behaviour +- mpd [music server]: --no-daemon +- nessusd ["security server"]: normal behaviour +- ntpd [time server]: -n +- nylon [socks proxy]: -f (prints output to terminal) +- oidentd [identd server]: -i +- oops [http proxy]: normal behaviour +- openpbx [pbx]: -f +- openssh [ssh server]: -D +- openvpn [vpn server]: normal behaviour +- pbbuttonsd [power management]:normal behaviour +- portmap [portmapper]: -f +- proftpd [ftp server]: -n +- qmail [mta]: normal behaviour +- rsync ["file server"]: --no-detach +- silcd ["secure chat server"]: -F, --foreground +- slapd [ldap]: -d +- snmpd [snmp daemon]: -f +- stunnel [ssl wrapper]: "foreground = yes" in config +- svnserve [vcs]: --foreground +- syslogd [log server]: -n +- syslog-ng [log server]: -F +- tcpserver [super server]: normal behaviour +- udhcpc [dhcp client]: normal behaviour +- vsftpd [ftp server]: normal behaviour (or: config: background=no) +- xinetd [super server]: -dontfork + + +Problematic daemons +------------------- +Those are the daemons that do not offer the possibility (as of release 0.2): + +- atd (no switch, no configuraton option) +- inetd (some variants) +- nscd (no switch, no configuraton option) diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/debugging.configuration b/software/cinit/browse_source/cinit-0.3pre12/doc/user/debugging.configuration new file mode 100644 index 00000000..1289865e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/debugging.configuration @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +Debugging your init configuration, +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +As writing an init configuration is not the easiest thing, +here are some problems (P) and debugging hints (H): + +P: There's no output! +H: If you don't start a service which outputs something there won't be any, + cinit starts up silently. + +P: Service XYZ seems not to work? +H: Try the following in your shell: + cd /etc/cinit/the-service; ./on "$(on.params)" + If that succeeds it has perhaps something missing which should have been + started before. +H: Create a test-service, which contains the following: + on: link to /bin/echo + on.params: "A test string" (with or without the quotes) + Now add the test-service to the needs directory of service XYZ. + If you see output the next time, the service is started. + Otherwise you forgot to make another service dependent on service + XYZ. + +P: How can I test if a non-outputting service successfully started? +H: Create another service, which depends on your service and make + it echo something. + +P: Does that profile support really work? +H: Try that: cprofile:NONEXISTENT and you'll see. + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/dependencies.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/dependencies.text new file mode 100644 index 00000000..e1154a54 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/dependencies.text @@ -0,0 +1,68 @@ +cinit - Dependencies +==================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-13 +:Author Initials: NS + +This document describes the different dependency types of cinit. + + +Dependencies in general +----------------------- +Each service may have two types (non-exclusive) types of dependencies: +The so called `needs` or `wants`. These are directories below the service +directory and contain symbolic links to the dependencies. +The name of the link can be freely chosen. + +An example: + +The service '/etc/cinit/svc/getty/2' needs the service +'/etc/cinit/svc/local-tuning/keyboard-layout': +-------------------------------------------------------------------------------- +[21:35] hydrogenium:needs# cd /etc/cinit/svc/getty/2/needs +[21:35] hydrogenium:needs# ls -l +insgesamt 0 +lrwxrwxrwx 1 root root 37 2006-10-26 17:51 keyboard-layout -> ../../../local-tuning/keyboard-layout +[21:35] hydrogenium:needs# cd keyboard-layout/ +[21:35] hydrogenium:keyboard-layout# pwd -P +/etc/cinit/svc/local-tuning/keyboard-layout +-------------------------------------------------------------------------------- +(Warning: This is an incomplete example, it misses at least `mount/root` +as dependency) + +This service could additionally want something else, too. It is also +possible that a service only `wants` another service or that a service +has no dependencies. + + +Absolute versus relative links +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +cinit does not care whether a link is relative or absolute. And +as far as I can see it does not make any difference to usability. + +In general, it seems to be a little bit 'easier' to use relative links +when manually configuring cinit ('ln -s ../../../service' versus +'ln -s /etc/cinit/svc/category/service'), but easier readable when +analysing them (with `ls -l'). + + +The two types +------------- + +needs +~~~~~ +`Needs` are the 'hard dependencies': If a services fails to start that +is linked in the `needs` directory, the service will not be started. + + +wants +~~~~~ +`Wants` are the 'soft dependencies': cinit will try to start the dependencies +found in `wants` before the service, but the service will also be started, +indenpendend of success of the dependencies. + + +Circular dependency problem +---------------------------- +If you manage to create circular dependencies cinit will fall into an +endless loop. Use `cinit.check.config` to verify your configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/example-directory-structure.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/example-directory-structure.text new file mode 100644 index 00000000..d19ac1fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/example-directory-structure.text @@ -0,0 +1,140 @@ +cinit - Example directory structure +=================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-12 +:Author Initials: NS + + +This document describes a tested directory hierarchy that +you could adapt for your setup. But this is no need, you +are free to design your own layout and/or improve this one. + + +Main idea +--------- +The main reason for this layout is that all services directly located +in /etc/cinit/svc/ would create a not-so-easy maintainable chaos. + + +Categories +---------- +When thinking about grouping some parts together, there came some categories +to my mind: + +- init: This must be there. It is no real choice (well, working with profiles + is an alternative) +- we need to mount things +- things that are used to 'configure' my local system +- network connectivity +- services only locally reachable +- services remote reachable +- something that let me login + +With these requirements the following categories (=directories) were created: + + +getty +~~~~~ +Gettys are those little and nice programs that allow you to login. +As we normally want to have more than one it seems to be senseful +to create a category for it. + +For the creation of the getty services itself, an extremly simply +scheme is used: Simply create services with the number of the getty +that is running. This results in the following setup: + +-------------------------------------------------------------------------------- + /etc/cinit/svc/getty/ + 2/ + 3/ + 4/ + ... +-------------------------------------------------------------------------------- + +The number '1' is skipped, because cinit normally logs to stdout that is +connected to the first console. + +`/etc/cinit/svc/getty/needs/` contains all enabled gettys. This way +`/etc/cinit/svc/init/needs/` can refer to `/etc/cinit/svc/getty/` only +but will catch all gettys. + +If you want to allow users to login via a graphical login screen +(also known as X11 with xdm/gdm/kdm) you could add this service as +`getty/gdm` for instance, because gdm is just another getty (just with +more colours). + + +init +~~~~ +`init` is the service everything begins with. You simply put all other +categories into the `needs` (or if soft-dependencies to `wants`) of this +service. + + +local-services +~~~~~~~~~~~~~~ +This directory contains all the services that are only locally reachable. +This may contain local webserver, a MTA that only accepts mails +via /usr/sbin/sendmail (like qmail is capable of) or some other local +only available services. + + +local-tuning +~~~~~~~~~~~~ +This directory is used for local configuration. It contains services, +that setup the keyboard layout (perhaps called `local-tuning/keyboard-layout` +needed by `getty`!), adjust system to hardware time, cleans /tmp +(`local-tuning/tmpclean`), ... + + +mount +~~~~~ +This directory contains the service to remount the root filesystem +read-write (`mount/root`) which is dependend on the filesystem +check (`mount/root/fsck`, also have a look at 'special-services.text'). +It also contains the services that mount the pseudo filesystems +(`mount/proc` (FreeBSD, Linux) and `mount/sys` (Linux)) and all +other partitions (`mount/home`, `mount/usr`,...) which again contain +a dependency to the filesystem check, if necessary. + + +network +~~~~~~~ +The `network` directory should cover all of the network basics. +This includes setting the hostname (`network/hostname`) configuring +network devices (`network/eth0.static`, `network.ath0.master`) limiting +network accesses (`network/firewall`), enable packet forwarding +(`network/ip-forward`), adjusting the available bandwith +(`network/traffic-shaping`), ... + + +If there are too many network devices, you could create a subfolder named +`network/devices/`. + +I used to suffix the network devices with the mode they run, so I can +use different modes in different profiles (setup the wireless card in +master mode at home, in ad-hoc mode at a friend and in managed mode at +work). + + +remote-services +~~~~~~~~~~~~~~~~ +Remote-services are all services that are reachable from remote hosts. +This includes ssh (`remote-services/opensshd`), webserver +(`remote-services/lighttpd` or `remote-services/apache22`). + +Most servers `need` a working network interface, before they can be +started, but mostly it is enough to have the loopback interface up. + +This results in the possible `needs` dependency for `network/loopback` +and soft dependencies, what we call `wants` on `network`. + +Other examples for remote services are +- dns (`remote-services/dnscache`, `remote-services/tinydns`, + `remote-services/bind`) +- fileserver (`remote-services/smbd`, `remote-services/mmbd`) +- network infrastructure (`remote-services/bgpd`) +- many others + +Many daemons used for `remote-services` are described in +'daemons.backgrounding.text'. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/ideas b/software/cinit/browse_source/cinit-0.3pre12/doc/user/ideas new file mode 100644 index 00000000..d3f13d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/ideas @@ -0,0 +1,3 @@ +- cinit-multi-machine-daemon: + coordinating bootup with several machines + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/installing-cinit.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/installing-cinit.text new file mode 100644 index 00000000..34902057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/installing-cinit.text @@ -0,0 +1,63 @@ +cinit - Installing +================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-06-02 +:Author Initials: NS + +This documentes describes how to install cinit. + + +Installing +---------- +Installing cinit is not a big deal, so is this document. +Where possible I added a list of commands to execute at the +end of each section. + + +From source +~~~~~~~~~~~ +Retrieve the latest source from http://unix.schottelius.org/cinit/. +Then extract it, change to the source directory, adjust your OS in the +file "conf/os" and type "make all". + +To report success run scripts/report.compile and send the output +to nico-cinit-report |at| schottelius.org. I will use this information +to know how and where cinit is compiled. Personal values like hostnames +or your e-mail address will *not* be published. + +Code to install cinit: +---------------------------------------------------------------------- +# the program we use to retrieve the source (fetch on FreeBSD) +get=wget +# change to current version +version=0.3pre6 +url=http://unix.schottelius.org/cinit/cinit-${version}.tar.bz2 +# get it +$get "$url" +# exctract it +tar xvjf "cinit-${version}.tar.bz2" +# build it and report success +who=nico-cinit-report +where=schottelius.org +cd cinit-${version} && make all && \ +./scripts/report.compile | mail -s "cinit: compile report" "${who}@${where}" +---------------------------------------------------------------------- + +Warning: Currently the install target is missing. Simply copy +"src/cinit" to /sbin/cinit. + + +Changing compile time parameters +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +All compile time configurations are kept below the "conf" +directory. Please read 'conf-system.text' for more information. + + +Cross-compiling +--------------- +For cross compiling see 'cross-compiling.text'. + + +Continue reading +---------------- +After having installed cinit, continue reading the document "Configuring cinit". diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/main.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/main.text new file mode 100644 index 00000000..ddf88304 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/main.text @@ -0,0 +1,113 @@ +cinit - a modern init system +============================= +Nico Schottelius +v0.1, for cinit-0.2.2, 2005-01-18 +:Author Initials: NS + + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/meta.dependencies b/software/cinit/browse_source/cinit-0.3pre12/doc/user/meta.dependencies new file mode 100644 index 00000000..fe743c48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/meta.dependencies @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, one would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation (see profile.support). + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +why it does not even need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ + +This way you have the indirection (meta-dependencies) in the filesystem +and cinit does not need any additional code. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/paths.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/paths.text new file mode 100644 index 00000000..d44bca61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/paths.text @@ -0,0 +1,121 @@ +cinit - Configuration +====================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Configuring cinit - the paths used + + +Main structure +--------------- +The base directory under which all configurations are found +is '/etc/cinit' (changable via conf/cinit_dir). + +The basic hierarchy is shown below: +---------------------------------------------------------------------- +/etc/cinit + svc -> services (adjustable: conf/svcdir) + conf -> general configuration (adjustable: conf/confdir) +---------------------------------------------------------------------- + + +The subdirectory 'conf' +~~~~~~~~~~~~~~~~~~~~~~~ +In this directory are general configurations located. +See below for the list of files that are located in this +directory. + + +The subdirectory 'svc' +~~~~~~~~~~~~~~~~~~~~~~ +This directory contains the services. A service is a directory. + + +Filenams for executable files +------------------------------ +When you create something that cinit should execute (like on +starting a service, on stopping a service, on panic, ...), cinit +will recognize the following extensions: + +. cinit executions extensions + - 'name' - the file that should be executed + - `'name'.params` - the parameter to pass to 'name' when executing + - `'name'.env` - the environment to pass to 'name' when executing + + +Name.params +~~~~~~~~~~~ +The 'params' file is a simple file containing one argument on each +line. + +Example: +---------------------------------------------------------------------- +[17:34] hydrogenium:cinit-0.3pre6% ls -l /etc/cinit/svc/init/on +lrwxrwxrwx 1 root root 9 2006-11-16 09:12 /etc/cinit/svc/init/on -> /bin/echo +[17:34] hydrogenium:cinit-0.3pre6% cat /etc/cinit/svc/init/on.params +The initial service has been started. (first parameter) +Some other useful information. (second parameter) +---------------------------------------------------------------------- + +Name.env +~~~~~~~~ +The 'env' file contains the environment definition. +Specify one assignment on each line, containing only "variable=value". + +Example: +---------------------------------------------------------------------- +[18:00] hydrogenium:% cat /etc/cinit/svc/remote-services/tinydns/on.env +IP=192.168.42.23 +---------------------------------------------------------------------- + +eof + +List of executable files +------------------------ +This list shows you what files are executable for cinit. + +on / off +~~~~~~~~~ +The files `on` and `off` are executed if found within a service +definition. `on` is called when starting the service, `off` +is called when stoping it. + + +conf/panic +~~~~~~~~~~ +This file will be executed by cinit if it has to panic. +Panic situation may occur, when there are heavy problems +like failing memory allocation in core areas. You can +change the name of the file in the pre-compilation settings +in `conf/c_panic`. + +If `conf/panic` is missing and cinit has to panic, a builtin +panic action will be called (see `conf/sulogin`). + + +conf/halt +~~~~~~~~~ +`conf/halt` will be called when cinit has shutdown all services +and wants to halt the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_halt`. + + +conf/poweroff +~~~~~~~~~~~~~ +`conf/poweroff` will be called when cinit has shutdown all services +and wants to poweroff the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_poweroff`. + + +conf/reboot +~~~~~~~~~~~ +`conf/reboot` will be called when cinit has shutdown all services +and wants to reboot the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_reboot`. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/problems-and-solutions.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/problems-and-solutions.text new file mode 100644 index 00000000..92cdd241 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/problems-and-solutions.text @@ -0,0 +1,33 @@ +cinit - Problems occured and solutions used +=========================================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2007-05-28 +:Author Initials: NS + +This documentes describes real problems people had with +cinit and their appropriate solutions. Feel free to add +your problems and solutions here. + + +Introduction +------------ + + +Adding problems and solutions +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Simply add your problem and solution and sign your paragraph +with your name. Then send the diff -u to the cinit mailinglist +or setup a git-repository so I can pull the changes. + + +Hibernate +--------- +uses /sbin/runlevel, which should *not* respond with 0 or 6 +as the second number. As cinit does not have /sbin/runlevel, +because cinit does not have any runlevels, you could hardcode +it to values hibernate accepts: + +---------------------------------------------------------------------- +#!/bin/sh +echo N 2 +---------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/problems.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/problems.text new file mode 100644 index 00000000..4fe8a315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/problems.text @@ -0,0 +1,114 @@ +Problems using cinit +==================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2007-04-24 +:Author Initials: NS + + +Using a high-speed, true dependency aware, profile supporting +logical acting and reliable init system like cinit is not +completly problem free. This document describes some common +problems you may have and their solutions. + + +Possible problems +----------------- + +Confused users +~~~~~~~~~~~~~~ +Compared to traditional init systems like sys-v-init or bsd-init +cinit introduces a complet new boot concept. This does not just +mean that you have services instead of shell-scripts (which is +one reason cinit is starting up faster), but also that the boot +order may be changed dynamically at bootup:, if a service fails. +And even if no service fails, the boot order may be different +on each boot, because processes are started in parallel and +may return earlier or later on each boot. To coordinate the +parallel running processes, cinit uses depencies, which are pretty +easy to understad when configurung, but may need some more +detailled watching at boot to understand it. + +The 'confused users'-problem is perhaps also the biggest +problem for introducing cinit as a replacement to current +init systems. + + +Configuration issues +~~~~~~~~~~~~~~~~~~~~ + +Not marking services as respawn +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +When cinit starts, it will wait for every service to exit. +So if you have a dependency on a service +that never exits, the whole init process may hang (dependending +on the dependencies). If you have services that are intendet +*not* to exit after start, you *have* to mark those with +`respawn`: Those services are started and watched by cinit +and will be restarted. This was a design choice to ensure +that all 'always running' processes *are* restarted. + +I did not find any service that should not exit and not +have a respawn flag. If you really really really have such +a service and you can prove to me that the respawn flag +would do harm to your system, I will think about implementing +a flag that tells cinit not to wait for it, but mark it +as successfully run after it has been started. + +User interaction +~~~~~~~~~~~~~~~~ + +User input +~~~~~~~~~~ +There may be the situation that you have to press a key +or enter some data when a service starts up (like entering +the password for your crypto harddisks). With cinit, this +will look like a mess, because other services may write to +the same console the service wrote a user prompt. + +The best solution for this problem is in my humble +opinion to create an user-input daemon that serialises +the requests and displays one after another. + +This could look like this: Your daemon wants to ask for +a passphrase for the SSL-certificate. You add aa needs +to this daemon to the 'input-daemon'. When you +start this service, it will contact the input-daemon +running on another virtual console and displaying a text +and an input field that is passed back to this service. +After that the input daemon changes back to the initial +console or asks for the next input, if there is another +request available. + +This input daemon may also be run on a graphical (X11) display. +. +Output to the user +~~~~~~~~~~~~~~~~~~ +When cinit starts up there may be many messages printed +out that also may look like printed random order. +To prevent your endusers from being confused you can create +some kind of graphical interface (like a framebuffer +or X11 display) that reads the output of cinit and converts +it to flashing images. It could look like this: + +---------------------------------------------------------------------- + + Your (graphical?) display: + -------------------------------------------------------------- + | /-----------------\ | + | | Red border, | | + | | failed to start | | + | \-----------------/ | + | | + | /------ | + | | Green border, | + | image van | + | | + | | + | | + | | + | | + | | + -------------------------------------------------------------- + + +---------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/profiles.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/profiles.text new file mode 100644 index 00000000..ab4d3c4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/profiles.text @@ -0,0 +1,79 @@ +cinit - Profiles +================ +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-06-04 +:Author Initials: NS + + +cinit profiles described. + + +What are profiles? +------------------ +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +How to use profiles? +--------------------- +Simply pass 'cprofile:PROFILENAME' (like cprofile:home) to cinit. + + +How to pass argumenents to cinit? +--------------------------------- +How to pass arguments to your init system depends on your operating +system and on your bootloader. + +Linux +~~~~~ +Under Linux the init-system gets the kernel arguments +(see linux.kernel.eats.arguments) as arguments. +So you can use + + kernel /usr/src/linux/vmlinuz cprofile:work (grub1,grub2) + append="cprofile:work" (LILO,yaboot) + +Other Unices should work like Linux, please consult your local +documentation. + + +How to configure profiles? +-------------------------- +It's very simple: Normally cinit would call /etc/cinit/svc/init as +the first service (with all its dependencies). If you pass 'cprofile=wireless' +to it, cinit will start from /etc/cinit/svc/wireless +instead. + +So the only thing you have to do is to create a service directory +below /etc/cinit/svc with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit/svc; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/svc/init; tar c . | (mkdir ../myprof; cd ../myprof; tar x ) + +That's it! + + +Some examples +------------- + +Here are some examples we found in #cLinux: + +-------------------------------------------------------------------------------- + profile name what it does + + musibox only start mp3blaster + terminal start only minicom, which opens the serial line + net-terminal start a respawning shell script, which starts + ssh to the selected host + video start X+mplayer, which plays the dvd/cdrom + wireless What to start when beeing in an unknown wlan + home/work selected services (nfs, ip, ...) for home or work +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/replacing.init b/software/cinit/browse_source/cinit-0.3pre12/doc/user/replacing.init new file mode 100644 index 00000000..2858c56c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/replacing.init @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and link, move or copy cinit to init (ln -s /sbin/cinit /sbin/init), reboot. + +That's everything in general, the biggest part will be to configuring cinit. + +See also doc/merging.other.initsystems. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/respawning-sleep.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/respawning-sleep.text new file mode 100644 index 00000000..24ed17e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/respawning-sleep.text @@ -0,0 +1,52 @@ +cinit - Respawning and sleeping +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2007-04-13 +:Author Initials: NS + + +How cinit sleeps, before a service is respawned. + +Introduction +------------ +When a service, that is configured to be respawning, exits cinit restarts it. +Because services may be broken and thus cinit would try to restart it many +times in a second, it is necessary to sleep between restarts. + +The big question: How to sleep? +------------------------------------ +The first possibility is to sleep a fixed amount of time between restarts: +For instance one second. This is not a good solution, because this waits +one unecessary second if the process just crashed. It may be too less, if +the service is really broken. + +The second possibility is to sleep a dynamic amount of time. + + +The next big question: How long to sleep? +----------------------------------------- +I think that as long as a service is broken we should not investigate to much +time into restarting it. So we can define a maximum amount of time to sleep +(for instance 30 seconds). The minimum amount of time to sleep is zero seconds. + +When the service is first started, the sleep time defaults to the minimum +amount of time. Each time the service is restarted, the sleep time is adjusted: + +sleep time (st) = Maximum sleep time (mst) / Time the process was running (tr) + +- If tr is < 1 it is adjusted to 1 and thus st is set to mst. +- If tr is > mst, st is set to 0. + + +How to force restart of a service? +---------------------------------- +Use cvsc (to be implemented). + + +Hom is it implemented? +---------------------- +Everytime cinit has to respawn a service it has to fork() itself. +The sleep call is implemented in the fork, so cinit itself does not have +to care about it. After the sleep time is over or the fork() recieves +SIGALARM it executes the real service. cinit itself records as start time +the current time plus sleep time. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/special-services.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/special-services.text new file mode 100644 index 00000000..4367bed1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/special-services.text @@ -0,0 +1,12 @@ +at: + no non-forking mode +fsck: + returns non-zero if it repaired something. + You have to wrap it into a shell-script :-( + + #!/bin/sh + fsck $@ + [ $? -le 1 ] && exit 0 + exit 1 + +Non-zero exit in general diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/supported-os.text b/software/cinit/browse_source/cinit-0.3pre12/doc/user/supported-os.text new file mode 100644 index 00000000..97b29506 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/supported-os.text @@ -0,0 +1,32 @@ +Supported operating systems +=============== +Nico Schottelius +0.1, Initial Version from 2007-02-15 +:Author Initials: NS + +This document lists the supported operating systems. + + +Supported OS +------------ +This means currently that cinit compiles on that system + +Tested by the author +~~~~~~~~~~~~~~~~~~~~ +- GNU/Linux +- FreeBSD +- NetBSD + +Reported by others +~~~~~~~~~~~~~~~~~~ +[none] + +Unsupported OS +-------------- + +OpenBSD +~~~~~~~ +Seems to not comply to Posix / XSI. Have a look at +http://home.schottelius.org/~nico/unix/openbsd/ftok-sys-ipc.h-problem. +This is a demo of the problem on OpenBSD 4.0 with cinit-0.3pre7-git. + diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/updating.cinit b/software/cinit/browse_source/cinit-0.3pre12/doc/user/updating.cinit new file mode 100644 index 00000000..fc0d3fef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/updating.cinit @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. call cservice -u thilo (if you have cinit-0.1 or later) + + For older versions: + + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything running and restart as if you would just + have booted. diff --git a/software/cinit/browse_source/cinit-0.3pre12/doc/user/using.rescue b/software/cinit/browse_source/cinit-0.3pre12/doc/user/using.rescue new file mode 100644 index 00000000..f58ff512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/doc/user/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user"). + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/cconfig.mk.makefile b/software/cinit/browse_source/cinit-0.3pre12/scripts/cconfig.mk.makefile new file mode 100644 index 00000000..822addce --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/cconfig.mk.makefile @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-20, 0110 CEST +# cconfig: create makefile from conf/ directory +# currently: all files +# later: only built-defines +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "#" +echo "# Warning: Autogenerated by $0, do not edit. " +echo "#" +for conf in ${CONFS}; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + echo "${NAME}=${value}" +done diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/cinit.build-env b/software/cinit/browse_source/cinit-0.3pre12/scripts/cinit.build-env new file mode 100644 index 00000000..94e093e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/cinit.build-env @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: build environment to be used in scripts +# * Should be sourced by using scripts +# 2006-10-26 +# + +. $(dirname $0)/cinit.read-conf + +export BASEDIR=${DESTDIR}${CINIT_DIR} +export SERVICES=${BASEDIR}/${SVCDIR} +export CONFIG=${BASEDIR}/${CONFDIR} diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/cinit.get-confdir b/software/cinit/browse_source/cinit-0.3pre12/scripts/cinit.get-confdir new file mode 100644 index 00000000..38d8572d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/cinit.get-confdir @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# Date: 2005-05-24 (Last Changed: 2005-08-08) + +# try environment first +if [ "$CINIT_CONF_DIR" ]; then + CONFDIR=$CINIT_CONF_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +else + echo 'Did not find cinit configuration!' >&2 + echo "Please set the variable CINIT_CONF_DIR" >&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/cinit.install.standard.dirs b/software/cinit/browse_source/cinit-0.3pre12/scripts/cinit.install.standard.dirs new file mode 100644 index 00000000..22cf273d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/cinit.install.standard.dirs @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install standard sub-configuration directories +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.build-env + +for svc in $SERVICE_CATEGORIES; do + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${SERVICES}/${svc}" +done + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/cinit.mkheader b/software/cinit/browse_source/cinit-0.3pre12/scripts/cinit.mkheader new file mode 100644 index 00000000..80e3f7cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/cinit.mkheader @@ -0,0 +1,32 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric: no quotes needed + is_numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + is_string="$(echo $value | grep '^"')" + + # + # Check for quote type + # + if [ ! "$is_numeric" -a ! "$is_string" ]; then + one_char=$(echo -n $value | wc -c) + + if [ "$one_char" -eq 1 ]; then + value="'$value'" + else + # is a string + value="\"$value\"" + fi + fi + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/cinit.read-conf b/software/cinit/browse_source/cinit-0.3pre12/scripts/cinit.read-conf new file mode 100644 index 00000000..80a32463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/cinit.read-conf @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# ~ 2005 +# + +CONFS=$($(dirname $0)/cinit.get-confdir) + +set -e + +for conf in ${CONFS}/*; do + NAME="$(basename $conf | tr a-z A-Z)" + if eval test -z \$$NAME; then + eval $NAME=\"$(head -n 1 $conf)\" + eval export $NAME + fi +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/configuration/README b/software/cinit/browse_source/cinit-0.3pre12/scripts/configuration/README new file mode 100644 index 00000000..64c0d174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/configuration/README @@ -0,0 +1 @@ +Scripts used to generate or aid in creating a configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/configuration/freebsd/create_services.sh b/software/cinit/browse_source/cinit-0.3pre12/scripts/configuration/freebsd/create_services.sh new file mode 100644 index 00000000..52e123a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/configuration/freebsd/create_services.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Reads list of services to create from stdin +# Create services (add correct dependencies) +# +# Options: +# -d: alternate destination directory (instead of /etc/cinit/svc) diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/configuration/freebsd/enable_services.sh b/software/cinit/browse_source/cinit-0.3pre12/scripts/configuration/freebsd/enable_services.sh new file mode 100644 index 00000000..ce4563a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/configuration/freebsd/enable_services.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Reads list of services to enabled from stdin +# Services must already exist +# +# Options: +# -d: alternate destination directory (instead of /etc/cinit/svc) diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/configuration/freebsd/search_enabled_services.sh b/software/cinit/browse_source/cinit-0.3pre12/scripts/configuration/freebsd/search_enabled_services.sh new file mode 100644 index 00000000..69e519b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/configuration/freebsd/search_enabled_services.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Search for enabled services: +# - /etc/rc.conf +# - /usr/local/etc/rc.d/ +# Output list of services to stdout +# +# Options: +# -r diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/configuration/freebsd/search_services.sh b/software/cinit/browse_source/cinit-0.3pre12/scripts/configuration/freebsd/search_services.sh new file mode 100644 index 00000000..2043e857 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/configuration/freebsd/search_services.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Search all services: +# - /etc/rc.conf +# - /usr/local/etc/rc.d/ +# Output list of all services to stdout +# +# Options: +# -r diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/create_baseconfig.sh b/software/cinit/browse_source/cinit-0.3pre12/scripts/create_baseconfig.sh new file mode 100644 index 00000000..7c9b69e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/create_baseconfig.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# 2006-10-23 +# cLinux/cinit + +. $(dirname $0)/cinit.build-env + +set -e + +mkdir -p "${BASEDIR}" + +mkdir -p "${SERVICES}" +mkdir -p "${SERVICES}/${C_INIT}" + +mkdir -p "${CONFIG}" diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/README b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/README new file mode 100644 index 00000000..2162b6b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/README @@ -0,0 +1 @@ +Only to be used by Nico Schottelius. diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/cinit.release b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/cinit.release new file mode 100644 index 00000000..54f1fbe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/cinit.release @@ -0,0 +1,72 @@ +#!/bin/sh +# Nico Schottelius +# Build release tar +# Date: Sat Oct 15 21:38:29 CEST 2005 +# Last Changed: ls -l + +# only release if I tell it to release +[ "$1" = "now" ] || exit 23 + +#if [ $# -ne 2 ]; then +# echo "This is a maintainer-only script to release cinit" +# echo $(basename $0): source-dir version +# exit 1 +#fi + +# paths +DIR="$(cd $(dirname $0)/../../; pwd -P)" +DDIR="$(cd $(dirname $0)/../../../; pwd -P)" +RDIR=$(basename "$DIR") + +# version +VERSION="$(cd "$DIR"; pwd -P | sed 's;.*/cinit-;;')" +VERSION_CONF="$(head -n1 $(dirname $0)/../../conf/version | sed 's/^"\(.*\)"$/\1/')" +VERSION_CHANGES="$(head -n1 "$(dirname $0)/../../CHANGES" | sed 's/cinit-\(.*\):.*/\1/')" +OUT_NAME="cinit-${VERSION}.tar.bz2" + +# remote +D_HOST=home.schottelius.org +D_BASE=www/org/schottelius/unix/www/cinit +D_DIR=${D_BASE}/archives/ +D_SOURCE=${D_BASE}/browse_source/ +LINK=current + +echo "=> Version directory: $VERSION" +echo "=> Version conf/version: $VERSION_CONF" +echo "=> Version CHANGES: $VERSION_CHANGES" + +if [ "$VERSION" = "$VERSION_CONF" -a "$VERSION" = "$VERSION_CHANGES" ]; then + echo "=> Version confirmed." +else + echo "*** VERSION MISMATCH ***" + exit 42 +fi + +echo -n "=> Continue? " +read yes + +if [ ! -d "$DIR" ]; then + echo "$DIR is not a directory" + exit 1 +fi + +# do the work! +( cd "$DIR" && make dist ) || exit 1 + +echo "Creating bzip2 compressed tar" +cd $DDIR +tar cj -X $DIR/.exclude -f "$OUT_NAME" "$RDIR" +chmod 0644 "$OUT_NAME" + +echo "Transfering to $D_HOST" +scp "$OUT_NAME" "$D_HOST:$D_DIR" + +echo "Extracting to $D_SOURCE" +ssh "$D_HOST" "tar xfj $D_DIR/$OUT_NAME -C $D_SOURCE" + +echo "Correcting paranoid permissions" +ssh "$D_HOST" "find \"$D_SOURCE/$RDIR\" -type f -exec chmod 0644 {} \\;" +ssh "$D_HOST" "find \"$D_SOURCE/$RDIR\" -type d -exec chmod 0755 {} \\;" +ssh "$D_HOST" "cd \"$D_SOURCE\" && rm -f \"$LINK\" && ln -s \"$RDIR\" \"$LINK\"" + +echo "Please do not forget to update the website..." diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/compile+run.sh b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/compile+run.sh new file mode 100644 index 00000000..30ec68a6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/compile+run.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# yah - yet another hack + +if [ ! "$1" ]; then + echo "HOSTNAME" + exit 23 +fi + +host="$1" + +hier=$(dirname $0) + +$hier/compile_test.sh "$host" + +if [ $? -ne 0 ]; then + echo "aborting, did not compile on $1" + exit 1 +fi + +ssh "${host}" './cinit/src/cinit & (sleep 30; kill -9 $(pgrep cinit))' diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/compile_local.sh b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/compile_local.sh new file mode 100644 index 00000000..e2bfce5e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/compile_local.sh @@ -0,0 +1,24 @@ +# just a hack + +dir=$(dirname $0) + +sys=$(uname -s) +sys_small=$(echo $sys | tr '[A-Z]' '[a-z]') + +case $(uname -s) in + NetBSD|OpenBSD) + make=gmake + ;; + *) + make=make + ;; +esac + +cd "${dir}/../../" +echo $sys_small > conf/os +# automatically called by make.. +#./bin/cinit.configure.os + +cd "src" +$make clean +$make cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/compile_run_as_compiler.sh b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/compile_run_as_compiler.sh new file mode 100644 index 00000000..f1ba01d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/compile_run_as_compiler.sh @@ -0,0 +1,14 @@ +what=$(dirname $0)/../../ +what_real=$(cd "$what" && pwd -P) +dest=~compiler/cinit-test + +set -e +sudo rsync -av "${what_real}/" "$dest" +sudo chown -R compiler "$dest" +sudo -u compiler "${dest}/scripts/internal/compile_local.sh" +sudo -u compiler "${dest}/src/cinit" & +sleep 13 +sudo -u compiler "${dest}/scripts/internal/stop_cinit.sh" + +# exit 0 for make +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/compile_test.sh b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/compile_test.sh new file mode 100644 index 00000000..335f31ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/compile_test.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# yah - yet another hack + +host="$1" +what=$(dirname $0)/../../ + +rsync --exclude .git --exclude \*.o -av "${what}" "${host}:cinit" +ssh "${host}" "./cinit/scripts/internal/compile_local.sh" diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/create_test_config.sh b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/create_test_config.sh new file mode 100644 index 00000000..720ce969 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/create_test_config.sh @@ -0,0 +1,18 @@ +hier=$(dirname $0) + +set -e +${hier}/../cinit.install.standard.dirs +cat > /etc/cinit/svc/init/on << eof +#!/bin/sh +echo test1 +sleep 4 +echo test2 - \$@ +eof +chmod 0755 /etc/cinit/svc/init/on + +cat > /etc/cinit/svc/init/on.params << eof +es +scheint +zu +gehen +eof diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/find_right_version.sh b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/find_right_version.sh new file mode 100644 index 00000000..759f23c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/find_right_version.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +src="$(dirname $0)/../../" +src_abs=$(cd "$src" && pwd -P) + +for commit in $( git log --pretty=short | awk '/^commit/ { print $2 }'); do + set -e + cd "$src_abs" + temp=$(mktemp -d /tmp/cinit.XXXXXXXXXX) + git-archive --format=tar "$commit" | ( cd "$temp"; tar x ) + cd "${temp}/src" + set +e + make clean && make cinit && ./cinit + if [ "$?" -eq 0 ]; then + echo "Commit $commit is ok" + exit 0 + fi + echo "Broken $commit" + sleep 1 + set -e + rm -rf "$temp" +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/qemu-test.sh b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/qemu-test.sh new file mode 100644 index 00000000..fd41312e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/qemu-test.sh @@ -0,0 +1,22 @@ +#!/bin/sh +# Nico Schottelius +# 2007-09-03: For testing cinit in qemu +# + +emud="${HOME}/emu" +img="${emud}/debian-hd.img" +ddir="${emud}/mount" +loop=/dev/loop1 +fsck="/sbin/fsck.jfs" + +# my jfs is on the first partition, 512*63 bytes offset +offset="32256" + +set -e +set -x +sudo losetup -o "${offset}" "${loop}" "${img}" +sudo "${fsck}" "${loop}" +sudo mount "${loop}" "${ddir}" + +sudo umount "${loop}" +sudo losetup -d "${loop}" diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/stop_cinit.sh b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/stop_cinit.sh new file mode 100644 index 00000000..86e4d82b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/stop_cinit.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# Linux specific, but don't care, I am the only person that should use it + +killall -TERM cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/test_on_hosts.sh b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/test_on_hosts.sh new file mode 100644 index 00000000..afeb2627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/test_on_hosts.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# yah + +hosts="penrose.bsdprojects.net jiffies.forkbomb.ch ddna044.netstream.ch" + +set -e + +for host in $hosts; do + echo "$1 on $host" + "$1" "$host" | sed "s/^/${host}: /" + echo "==> Finished $host" +done diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/valgrind b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/valgrind new file mode 100644 index 00000000..f769f9da --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/internal/valgrind @@ -0,0 +1 @@ +valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes --leak-resolution=high ./cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/report.compile b/software/cinit/browse_source/cinit-0.3pre12/scripts/report.compile new file mode 100644 index 00000000..ac591412 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/report.compile @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# 2006-12-08 +# Report compile success +# + +echo "cinit compile success report" +echo "----------------------------" +"$(dirname $0)/cinit.mkheader" +echo "----------------------------" +uname -a +echo "----------------------------" +. "$(dirname $0)/cinit.read-conf" +echo '$CC' +"$CC" -v +echo "----------------------------" +echo -n "Size: " +ls -l "$(dirname $0)/../src/cinit" diff --git a/software/cinit/browse_source/cinit-0.3pre12/scripts/wrapper/linux-sysvinit/shutdown b/software/cinit/browse_source/cinit-0.3pre12/scripts/wrapper/linux-sysvinit/shutdown new file mode 100644 index 00000000..ce413d17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/scripts/wrapper/linux-sysvinit/shutdown @@ -0,0 +1,38 @@ +#!/bin/sh +# Nico Schottelius (nico-cinit /at/ schottelius.org) +# 2007-05-21 +# Behave as being shutdown from Linux' sysvinit + +# parse options, display usage + +# all the functions + +usage() +{ + +cat << cinit_usage + +*** cinit linux-sysvinit shutdown wrapper *** + +Usage shutdown [-akrhHPfnc] [-t secs] time [warning message] + -a: use /etc/shutdown.allow + -k: don't really shutdown, only warn. + -r: reboot after shutdown. + -h: halt after shutdown. + -P: halt action is to turn off power. + -H: halt action is to just halt. + -f: do a 'fast' reboot (skip fsck). + -F: Force fsck on reboot. + -n: do not go through "init" but go down real fast. + -c: cancel a running shutdown. + -t secs: delay between warning and kill signal. + ** the "time" argument is mandatory! (try "now") ** + +You can also call "cmd" directly instead of using this wrapper. + +cinit_usage + +} + +# the main part +usage diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-17-19:03:48 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-17-19:03:48 new file mode 100644 index 00000000..e379e004 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-17-19:03:48 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 17 19:03 cinit +-rwx------ 1 nico users 46760 Jun 17 19:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-20-12:16:40 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-20-12:16:40 new file mode 100644 index 00000000..1f0c3325 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-20-12:16:40 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 20 12:16 cinit +-rwx------ 1 nico users 50860 Jun 20 12:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-20-15:16:31 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-20-15:16:31 new file mode 100644 index 00000000..75dc3e7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-20-15:16:31 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 15:16 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-20-16:29:28 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-20-16:29:28 new file mode 100644 index 00000000..1294bde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-20-16:29:28 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-20-16:29:50 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-20-16:29:50 new file mode 100644 index 00000000..69fe7490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-20-16:29:50 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 16:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-21-11:53:35 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-21-11:53:35 new file mode 100644 index 00000000..4a1e7b6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-21-11:53:35 @@ -0,0 +1,3 @@ +total 192 +-rwx------ 1 nico users 102039 Jun 21 11:53 cinit +-rwx------ 1 nico users 87871 Jun 21 11:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-07:33:11 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-07:33:11 new file mode 100644 index 00000000..e6c8ff14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-07:33:11 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47544 Jun 22 07:33 cinit +-rwx------ 1 nico users 46760 Jun 22 07:33 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-07:57:13 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-07:57:13 new file mode 100644 index 00000000..17161d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-07:57:13 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47536 Jun 22 07:57 cinit +-rwx------ 1 nico users 46760 Jun 22 07:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-08:08:40 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-08:08:40 new file mode 100644 index 00000000..770083f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-08:08:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47424 Jun 22 08:08 cinit +-rwx------ 1 nico users 46760 Jun 22 08:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-08:30:42 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-08:30:42 new file mode 100644 index 00000000..aa95fb3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-08:30:42 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47360 Jun 22 08:30 cinit +-rwx------ 1 nico users 46760 Jun 22 08:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-09:19:42 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-09:19:42 new file mode 100644 index 00000000..70c261bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-09:19:42 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 09:19 cinit +-rwx------ 1 nico users 50860 Jun 22 09:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-10:43:24 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-10:43:24 new file mode 100644 index 00000000..b8bc4076 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-10:43:24 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 10:43 cinit +-rwx------ 1 nico users 50860 Jun 22 10:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-12:42:57 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-12:42:57 new file mode 100644 index 00000000..c8119859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-12:42:57 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 22 12:42 cinit +-rwx------ 1 nico users 46760 Jun 22 12:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-13:52:41 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-13:52:41 new file mode 100644 index 00000000..793b92fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-13:52:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:52 cinit +-rwx------ 1 nico users 46760 Jun 22 13:52 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-13:59:40 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-13:59:40 new file mode 100644 index 00000000..d114c557 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-13:59:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:59 cinit +-rwx------ 1 nico users 46760 Jun 22 13:59 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-14:19:41 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-14:19:41 new file mode 100644 index 00000000..8d56882f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-14:19:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47640 Jun 22 14:19 cinit +-rwx------ 1 nico users 46760 Jun 22 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-14:37:18 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-14:37:18 new file mode 100644 index 00000000..b7c3e4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-22-14:37:18 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 22 14:37 cinit +-rwx------ 1 nico users 46760 Jun 22 14:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-23-06:22:23 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-23-06:22:23 new file mode 100644 index 00000000..9e38a5e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-23-06:22:23 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 23 06:22 cinit +-rwx------ 1 nico users 46760 Jun 23 06:22 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-24-17:53:55 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-24-17:53:55 new file mode 100644 index 00000000..3b750eaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-24-17:53:55 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:53 cinit +-rwx------ 1 nico users 46760 Jun 24 17:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-24-17:55:29 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-24-17:55:29 new file mode 100644 index 00000000..c30dcaf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-24-17:55:29 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:55 cinit +-rwx------ 1 nico users 46760 Jun 24 17:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-26-13:19:49 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-26-13:19:49 new file mode 100644 index 00000000..a4de830b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-06-26-13:19:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 26 13:19 cinit +-rwx------ 1 nico users 50860 Jun 26 13:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:07:13 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:07:13 new file mode 100644 index 00000000..e2c59ddf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:07:13 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:07 cinit +-rwx------ 1 nico users 50860 Jul 6 08:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:12:20 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:12:20 new file mode 100644 index 00000000..e562350c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:12:20 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:12 cinit +-rwx------ 1 nico users 50860 Jul 6 08:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:13:39 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:13:39 new file mode 100644 index 00000000..32fd8268 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:13:39 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:13 cinit +-rwx------ 1 nico users 50860 Jul 6 08:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:14:19 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:14:19 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:14:19 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:14:59 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:14:59 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:14:59 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:15:56 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:15:56 new file mode 100644 index 00000000..cf26e6f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-08:15:56 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:15 cinit +-rwx------ 1 nico users 50860 Jul 6 08:15 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-10:12:22 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-10:12:22 new file mode 100644 index 00000000..d5f0f2c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-10:12:22 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:08 cinit +-rwx------ 1 nico users 50860 Jul 6 10:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-10:12:31 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-10:12:31 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-10:12:31 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-10:12:49 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-10:12:49 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-07-06-10:12:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-08-29-21:21:34 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-08-29-21:21:34 new file mode 100644 index 00000000..e651a8ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-08-29-21:21:34 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 root root 444508 2005-08-29 21:21 cinit +-rwx------ 1 root root 440412 2005-08-29 21:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-08-29-23:50:55 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-08-29-23:50:55 new file mode 100644 index 00000000..a279aee3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-08-29-23:50:55 @@ -0,0 +1,3 @@ +insgesamt 856 +-rwx------ 1 nico nico 437564 2005-08-29 23:50 cinit +-rwx------ 1 nico nico 436316 2005-08-29 23:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-03-03:36:59 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-03-03:36:59 new file mode 100644 index 00000000..01e555f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-03-03:36:59 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 nico nico 444508 2005-09-03 03:36 cinit +-rwx------ 1 nico nico 440412 2005-09-03 03:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-03-04:34:35 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-03-04:34:35 new file mode 100644 index 00000000..1832930a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-03-04:34:35 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 04:34 cinit +-rwx------ 1 nico nico 440412 Sep 3 04:34 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-03-05:51:17 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-03-05:51:17 new file mode 100644 index 00000000..4e465d06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-03-05:51:17 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 05:51 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-03-05:54:20 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-03-05:54:20 new file mode 100644 index 00000000..9c040d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-03-05:54:20 @@ -0,0 +1,4 @@ +total 1300 +-rwx------ 1 nico nico 440412 Sep 3 05:54 ccontrol +-rwx------ 1 nico nico 444508 Sep 3 05:54 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-03-09:01:59 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-03-09:01:59 new file mode 100644 index 00000000..880422a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-03-09:01:59 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 3 09:01 cinit +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-05-19:41:12 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-05-19:41:12 new file mode 100644 index 00000000..0f07d86e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-05-19:41:12 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 root root 440412 2005-09-05 19:41 ccontrol +-rwx------ 1 root root 444508 2005-09-05 19:41 cinit +-rwx------ 1 root root 440412 2005-09-05 19:41 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-05-19:50:35 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-05-19:50:35 new file mode 100644 index 00000000..32ff19fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-05-19:50:35 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 5 19:50 cinit +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-24-01:42:38 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-24-01:42:38 new file mode 100644 index 00000000..0da6126e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-24-01:42:38 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-09-24 01:42 ccontrol +-rwx------ 1 nico nico 437628 2005-09-24 01:42 cinit +-rwx------ 1 nico nico 436316 2005-09-24 01:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-30-22:50:50 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-30-22:50:50 new file mode 100644 index 00000000..0d510174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-30-22:50:50 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 22:50 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 22:50 cinit +-rwx------ 1 nico nico 436316 2005-09-30 22:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-30-23:06:39 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-30-23:06:39 new file mode 100644 index 00000000..23450914 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-09-30-23:06:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 23:06 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 23:06 cinit +-rwx------ 1 nico nico 436316 2005-09-30 23:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-01-22:09:13 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-01-22:09:13 new file mode 100644 index 00000000..a62b9eb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-01-22:09:13 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-10-01 22:09 ccontrol +-rwx------ 1 nico nico 437308 2005-10-01 22:09 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-01-22:17:39 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-01-22:17:39 new file mode 100644 index 00000000..b1d8b11b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-01-22:17:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-01 22:17 ccontrol +-rwx------ 1 nico nico 437532 2005-10-01 22:17 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-02-11:12:29 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-02-11:12:29 new file mode 100644 index 00000000..e5f7b13d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-02-11:12:29 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:12 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-02-11:13:35 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-02-11:13:35 new file mode 100644 index 00000000..d7c14471 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-02-11:13:35 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-02-11:13:43 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-02-11:13:43 new file mode 100644 index 00000000..1711d01a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-02-11:13:43 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 11:13 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 436316 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-02-16:00:24 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-02-16:00:24 new file mode 100644 index 00000000..ab23228c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-02-16:00:24 @@ -0,0 +1,4 @@ +total 1284 +-rwx------ 1 nico nico 436316 Oct 2 16:00 ccontrol +-rwx------ 1 nico nico 437884 Oct 2 16:00 cinit +-rwx------ 1 nico nico 436316 Oct 2 16:00 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-02-23:17:11 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-02-23:17:11 new file mode 100644 index 00000000..92041cd9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-02-23:17:11 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 23:17 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 23:17 cinit +-rwx------ 1 nico nico 436316 2005-10-02 23:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-03-00:54:39 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-03-00:54:39 new file mode 100644 index 00000000..df47a057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-03-00:54:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:54 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:54 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-03-00:56:29 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-03-00:56:29 new file mode 100644 index 00000000..08db7fec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-03-00:56:29 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:56 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:56 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:56 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-13-09:55:52 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-13-09:55:52 new file mode 100644 index 00000000..d54a7ff4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-13-09:55:52 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:55 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:55 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-13-09:57:11 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-13-09:57:11 new file mode 100644 index 00000000..3b1af9ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-13-09:57:11 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:57 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:57 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-13-10:07:28 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-13-10:07:28 new file mode 100644 index 00000000..58d25315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-13-10:07:28 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 10:07 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 10:07 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 10:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-15-15:26:52 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-15-15:26:52 new file mode 100644 index 00000000..a88291e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-15-15:26:52 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 root root 436316 2005-10-15 15:26 ccontrol +-rwx------ 1 root root 437916 2005-10-15 15:26 cinit +-rwx------ 1 root root 436316 2005-10-15 15:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-15-21:23:56 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-15-21:23:56 new file mode 100644 index 00000000..43a4504d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-10-15-21:23:56 @@ -0,0 +1,4 @@ +total 36 +-rwx------ 1 nico nico 9148 Oct 15 21:23 ccontrol +-rwx------ 1 nico nico 11872 Oct 15 21:23 cinit +-rwx------ 1 nico nico 9768 Oct 15 21:23 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2005-11-17-17:03:53 b/software/cinit/browse_source/cinit-0.3pre12/size/2005-11-17-17:03:53 new file mode 100644 index 00000000..78543f15 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2005-11-17-17:03:53 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2005-11-17 17:03 ccontrol +-rwx------ 1 nico nico 11872 2005-11-17 17:03 cinit +-rwx------ 1 nico nico 9768 2005-11-17 17:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-11-23:45:54 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-11-23:45:54 new file mode 100644 index 00000000..f4852c81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-11-23:45:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-11 23:45 cinit +-rwx------ 1 nico nico 9768 2006-02-11 23:45 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-12-00:06:11 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-12-00:06:11 new file mode 100644 index 00000000..2fe41351 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-12-00:06:11 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-12-00:06:42 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-12-00:06:42 new file mode 100644 index 00000000..bf2ddc36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-12-00:06:42 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:06 ccontrol +-rwx------ 1 nico nico 11560 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-12-00:08:24 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-12-00:08:24 new file mode 100644 index 00000000..e25a49ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-12-00:08:24 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:08 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:08 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-12-00:09:33 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-12-00:09:33 new file mode 100644 index 00000000..0b64fa00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-12-00:09:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:09 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:09 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-12-00:13:32 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-12-00:13:32 new file mode 100644 index 00000000..b6c5c38e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-12-00:13:32 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:13 ccontrol +-rwx------ 1 nico nico 11500 2006-02-12 00:13 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-16-23:57:29 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-16-23:57:29 new file mode 100644 index 00000000..86b9fda9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-16-23:57:29 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11620 2006-02-16 23:57 cinit +-rwx------ 1 nico nico 9768 2006-02-16 23:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-17-00:16:18 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-17-00:16:18 new file mode 100644 index 00000000..28c853a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-17-00:16:18 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 00:16 cinit +-rwx------ 1 nico nico 9768 2006-02-17 00:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-17-22:48:35 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-17-22:48:35 new file mode 100644 index 00000000..5935acfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-17-22:48:35 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-17 22:48 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 22:48 cinit +-rwx------ 1 nico nico 9768 2006-02-17 22:48 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:03:54 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:03:54 new file mode 100644 index 00000000..9222f0b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:03:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:03 cinit +-rwx------ 1 nico nico 9768 2006-02-20 19:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:04:33 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:04:33 new file mode 100644 index 00000000..c5797edc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:04:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:04:36 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:04:36 new file mode 100644 index 00000000..fbcf9fa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:04:36 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:07:47 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:07:47 new file mode 100644 index 00000000..7e1fe18f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:07:47 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:07 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:12:33 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:12:33 new file mode 100644 index 00000000..2b4fda40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:12:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:12 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:12 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:14:56 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:14:56 new file mode 100644 index 00000000..bccb5d65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-02-20-20:14:56 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:14 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:14 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-01-23:32:43 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-01-23:32:43 new file mode 100644 index 00000000..fcbaf372 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-01-23:32:43 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-01 23:32 ccontrol +-rwx------ 1 nico nico 11640 2006-06-01 23:32 cinit +-rwx------ 1 nico nico 9768 2006-06-01 23:32 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-01:08:28 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-01:08:28 new file mode 100644 index 00000000..7683546c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-01:08:28 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:08 ccontrol +-rwx------ 1 nico nico 11688 2006-06-02 01:08 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-01:29:13 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-01:29:13 new file mode 100644 index 00000000..adbc6846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-01:29:13 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:29 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 01:29 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-11:13:39 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-11:13:39 new file mode 100644 index 00000000..46eaef4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-11:13:39 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:13 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:13 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-11:36:37 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-11:36:37 new file mode 100644 index 00000000..306402f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-11:36:37 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:36 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:36 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-15:17:17 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-15:17:17 new file mode 100644 index 00000000..7bb59095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-15:17:17 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:17 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:17 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-15:19:52 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-15:19:52 new file mode 100644 index 00000000..ce65256f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-06-02-15:19:52 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:19 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:19 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-11-29-235834 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-11-29-235834 new file mode 100644 index 00000000..c2c83117 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-11-29-235834 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73645 2006-11-29 23:57 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-02-172536 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-02-172536 new file mode 100644 index 00000000..4079d5db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-02-172536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73617 2006-12-02 17:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-02-174429 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-02-174429 new file mode 100644 index 00000000..5506928d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-02-174429 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73497 2006-12-02 17:44 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-02-182536 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-02-182536 new file mode 100644 index 00000000..14526d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-02-182536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 72092 2006-12-02 18:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-03-173231 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-03-173231 new file mode 100644 index 00000000..aca9d380 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-03-173231 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71944 2006-12-03 17:32 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-03-174544 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-03-174544 new file mode 100644 index 00000000..3c1cfea2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-03-174544 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71952 2006-12-03 17:45 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-03-191215 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-03-191215 new file mode 100644 index 00000000..4f2a2fa1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-03-191215 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-03 19:12 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-06-084947 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-06-084947 new file mode 100644 index 00000000..487af844 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-06-084947 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-06 08:49 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-14-213559 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-14-213559 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-14-213559 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-14-213717 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-14-213717 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-14-213717 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-14-213739 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-14-213739 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-14-213739 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-14-215315 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-14-215315 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-14-215315 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-14-215334 b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-14-215334 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2006-12-14-215334 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2007-02-17-210059 b/software/cinit/browse_source/cinit-0.3pre12/size/2007-02-17-210059 new file mode 100644 index 00000000..69179604 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2007-02-17-210059 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 75783 2007-02-17 20:59 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2007-02-23-202443 b/software/cinit/browse_source/cinit-0.3pre12/size/2007-02-23-202443 new file mode 100644 index 00000000..19cb71b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2007-02-23-202443 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 69439 2007-02-23 20:15 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2007-02-23-202720 b/software/cinit/browse_source/cinit-0.3pre12/size/2007-02-23-202720 new file mode 100644 index 00000000..19cb71b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2007-02-23-202720 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 69439 2007-02-23 20:15 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2007-03-07-231936 b/software/cinit/browse_source/cinit-0.3pre12/size/2007-03-07-231936 new file mode 100644 index 00000000..c2ef3d0b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2007-03-07-231936 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71213 2007-03-07 23:18 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/size/2007-04-06-011811 b/software/cinit/browse_source/cinit-0.3pre12/size/2007-04-06-011811 new file mode 100644 index 00000000..73de8724 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/size/2007-04-06-011811 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71281 2007-04-06 01:17 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/Makefile b/software/cinit/browse_source/cinit-0.3pre12/src/Makefile new file mode 100644 index 00000000..50074ca9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/Makefile @@ -0,0 +1,160 @@ +# +# cinit +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +################################################################################ +# +# Build tools / locations +# + +CC=../tmpbin/cc +CFLAGS= +LD=../tmpbin/ld +LDFLAGS= +STRIP=../tmpbin/strip +SBIN=../sbin +DESTDIR= + +################################################################################ +# +# All objects / binaries +# depend on headers. More or less. FIXME: use gcc -M +# +BIN=halt.kill poweroff.kill reboot.kill cmd +CINIT=cinit +ALLBIN=${BIN} ${CINIT} + +# headers +CONFIG_H=include/config.h +CINIT_HEADERS=${shell cat include/listing} + +# objects +CINIT_OBJ=${shell cat object_lists/cinit} +HALTKILL_OBJ=${shell cat object_lists/halt.kill} +POWEROFFKILL_OBJ=${shell cat object_lists/poweroff.kill} +REBOOTKILL_OBJ=${shell cat object_lists/reboot.kill} +CMD_OBJ=${shell cat object_lists/cmd} + +# +# All objects +# +OBJ=${CINIT_OBJ} ${HALTKILL_OBJ} ${POWEROFFKILL_OBJ} ${REBOOTKILL_OBJ} + +################################################################################ +# +# End user target +# +#all: cinit cservice ccontrol sizecheck docs +all: ${ALLBIN} + + +################################################################################ +# +# Generic +# +${OBJ}: ${CINIT_HEADERS} + +%.o: %.c + ${CC} -c -o $@ $< + +################################################################################ +# +# First do configuration, so we include the right variables +# +Makefile: .configured + +.configured: ../conf/* + @../bin/cinit.configure.os + @../bin/cinit.configure.tools + @../bin/cinit.configure.ipc + @../bin/cinit.configure.mark + +${CINIT_OBJ}: ${CONFIG_H} + +${CONFIG_H}: ../conf/* + ../scripts/cinit.mkheader > ${CONFIG_H} + +################################################################################ +# +# Install targets +# + +#install: install-dir cinit cservice ccontrol +install: install-cinit install-utilities + +install-sbin: + install -d ${DESTDIR}/sbin + +install-utilities: install-sbin ${BIN} + @echo '*** Installing utilities ***' + install ${BIN} ${DESTDIR}/sbin + +install-cinit: install-sbin cinit + @echo '*** Installing cinit ***' + @echo "Need to delete cinit before reinstalling it {text file busy problem}" + rm -f ${DESTDIR}/sbin/cinit + install cinit ${DESTDIR}/sbin + +# FIXME: target broken +install-miniconf: + ./bin/cinit.install.miniconf + +# FIXME: target broken +install-dir: + ./bin/cinit.install.dir + + +################################################################################ +# +# Build targets +# + +cinit: ${CINIT_OBJ} + ${LD} $^ -o $@ + +halt.kill: ${HALTKILL_OBJ} + ${LD} $^ -o $@ + +poweroff.kill: ${POWEROFFKILL_OBJ} + ${LD} $^ -o $@ + +reboot.kill: ${REBOOTKILL_OBJ} + ${LD} $^ -o $@ + +cmd: ${CMD_OBJ} + ${LD} $^ -o $@ + +################################################################################ +# +# Internal test targets +# + +uml: cinit cmd + ../../vm/uml/uml-mount.sh + cp cinit cmd ../../vm/uml/root/sbin/ + ../../vm/uml/uml-umount.sh + +umlstart: uml + ../../vm/uml/uml-start.sh + +################################################################################ +# +# Clenaup targets +# + +.PHONY: dist +dist: distclean + +.PHONY: distclean +distclean: clean + rm -f os/current ipc/current .configured + +.PHONY: clean +clean: + rm -f ../tmpbin/*.configured + rm -f ${BIN} ${CINIT_OBJ} + rm -f client/*.o test/*.o diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/Makefile.tests b/software/cinit/browse_source/cinit-0.3pre12/src/Makefile.tests new file mode 100644 index 00000000..0f4b4626 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/Makefile.tests @@ -0,0 +1,27 @@ +# +# Makefile for cinit tests +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +TEST_BUILD_ARGV=test/test_build_argv.o core/build_argv.o + +PROGS=test_build_argv test_build_argv_link + +tests: $(PROGS) + +test_build_argv: test/test_build_argv.o core/build_argv.o +test_build_argv_link: test/test_build_argv+link.o core/build_argv.o + +test_gen_svc_tree: test/test_gen_svc_tree.o svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/gen_svc_tree.o \ + generic/mini_printf.o \ + svc/list_display_all.o + +test_openreadclose: test/test_openreadclose.o generic/openreadclose.o diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ancient/comm.h b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/comm.h new file mode 100644 index 00000000..4fbe8c50 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/comm.h @@ -0,0 +1,81 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit (at) schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#ifndef CINIT_COMM_HEADER +#define CINIT_COMM_HEADER + +#include /* PATH_MAX */ +#include /* pid_t */ + +/*********************************************************************** + * Commands the clients may issue to us + * maximum number of commands: 2^8 = 256 + */ +enum commands { + CMD_MIN='A', /* minimum command number */ + CMD_SVC_START, /* the client wants US to start a service */ + CMD_SVC_START_ONLY, /* start this service without dependencies */ + CMD_SVC_START_NEEDS, /* start this service, needs, but no wants */ + CMD_SVC_STOP, /* stop svc and all svcs that need it */ + CMD_SVC_STOP_ONLY, /* we should stop _only_ this service */ + CMD_SVC_STOP_WANTS, /* stop svc, all svcs that need or want it */ + CMD_CHG_STAT, /* the client reports a status change */ /* FIXME: NEEDED? */ + CMD_RESCUE, /* we should start the rescue mode */ /* UNIMPLEMENTED */ + CMD_HALT, /* halt the system */ + CMD_REBOOT, /* reboot the system */ + CMD_POWEROFF, /* poweroff the system */ + CMD_WBOOT, /* shutdown and restart everything */ /* UNIMPLEMENTED */ + CMD_INFO, /* send information about that service */ /* UNIMPLEMENTED */ + CMD_MAX , /* maximum command number */ +}; + +/* old + RT_ERR_COMM, * communication failed * + RT_ERR, * service starting failed * + RT_UNSPEC, * some kind of error, unspecified * + RT_SUCCESS, * successfully started: respawning or once * + RT_SVC_FAILED, * tried earlier, service failed, won't retry * + +*/ + +/*********************************************************************** + * client issues a command: start_command + */ +struct s_cmd { + char cmd; + pid_t pid; +}; + +/*********************************************************************** + * messages from the client + * Prefix: qst_ (question) + */ +struct msg_client { + pid_t pid; /* pid of the telling client */ + char cmd; /* which cmd is issued to us */ + char status; /* status of the service */ + char svc[PATH_MAX]; /* name of the service */ + char svc_orig[PATH_MAX]; /* the service, which wants to start us */ +}; + +/*********************************************************************** + * messages from the server + * Prefix: asw_ (answer) + */ + +/*********************************************************************** + * return short status + */ +struct asw_sstatus { + long mtype; + char status; + char msg[PATH_MAX]; +}; + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ancient/do_change_status.c b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/do_change_status.c new file mode 100644 index 00000000..94b9be76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/do_change_status.c @@ -0,0 +1,70 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ancient/do_result.c b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/do_result.c new file mode 100644 index 00000000..cb51161b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/do_result.c @@ -0,0 +1,33 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return RT_ERR_COMM; + } + + return *value; +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ancient/do_svc_name.c b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/do_svc_name.c new file mode 100644 index 00000000..d427365f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/do_svc_name.c @@ -0,0 +1,51 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ancient/exec_svc.c b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/exec_svc.c new file mode 100644 index 00000000..f217f9e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/exec_svc.c @@ -0,0 +1,264 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +inline pid_t exec_svc(char *abspath, int action) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + SERVICE_LOG(abspath,LOG_SVC_FAIL); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + P_EXEC_FAILED(nargv[0]); + perror(MSG_ERR_EXECVE); + /* FIXME: remove debug, remove double printing without loosing info */ + sleep(3); /* debug */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ancient/msg_change_status.c b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/msg_change_status.c new file mode 100644 index 00000000..836a0fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* FIXME: change return code validation */ + +int msg_change_status(char *svc, char status, pid_t pid) +{ + if(!begin_msg(CMD_CHG_STATUS)) { + return RT_ERR_COMM; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ancient/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/msg_svc_on_off.c new file mode 100644 index 00000000..02948f2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/msg_svc_on_off.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, char action) +{ + if(!begin_msg(action)) return RT_ERR_COMM; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return RT_ERR_COMM; + return (int) do_result(sock,NULL); +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ancient/respawn_svc.c b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/respawn_svc.c new file mode 100644 index 00000000..5c350045 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/respawn_svc.c @@ -0,0 +1,99 @@ +/* + * (c) 2005,2006 Nico Schottelius (nico-linux at schottelius.org) + * respawn_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + D_PRINTF(abspath); + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, CMD_START_SVC) ) { + if(cpid != 0) { + D_PRINTF("sloefen"); + sleep(SLEEP_SVC); + D_PRINTF("Zuende geschlafen"); + } + } + } while(cpid); /* cpid is reset by sig_terminate() */ + + /* FIXME: put most code of sig_terminate here, look for no_kill */ + + /* start off task */ + exec_svc(abspath,CMD_STOP_SVC); + + D_PRINTF("jetzt weg"); + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ancient/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/run_init_svc.c new file mode 100644 index 00000000..f41c1f4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/run_init_svc.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ancient/run_init_svc2.c b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/run_init_svc2.c new file mode 100644 index 00000000..b613ed6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/run_init_svc2.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include /* _exit, fork */ + +#include "cinit.h" +#include "messages.h" +#include "ipc.h" + +int run_svc(char *rpath) { rpath = "test"; return 0; } /* a hack to compile cinit for now */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + if(!cinit_ipc_logon()) _exit(1); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ancient/run_run_svcs.c b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/run_run_svcs.c new file mode 100644 index 00000000..6486c76f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/run_run_svcs.c @@ -0,0 +1,86 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ancient/run_svc.c b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/run_svc.c new file mode 100644 index 00000000..95cc324d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/run_svc.c @@ -0,0 +1,131 @@ +/* + * (c) 2005 Nico Schottelius (nico-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +#error "needs to be cleaned up" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + print_errno(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + print_errno(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ancient/sig_terminate.c b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/sig_terminate.c new file mode 100644 index 00000000..9b23e349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ancient/sig_terminate.c @@ -0,0 +1,60 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + /* FIXME: only send SIGTERM, if not_kill does not exist */ + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + status = kill(cpid,SIGKILL); + if( status == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + D_PRINTF("muesste weg sein"); + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/client/cmd.c b/software/cinit/browse_source/cinit-0.3pre12/src/client/cmd.c new file mode 100644 index 00000000..c43d107b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/client/cmd.c @@ -0,0 +1,128 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * cmd - the cinit client program - sends commands to cinit + */ + +#include /* getopt */ +#include /* signals */ +#include /* printf() */ +#include /* free() */ +#include /* strncmp */ + +#include /* integers */ + +#include "cmd.h" /* own header */ +#include "signals.h" /* which signal */ +#include "svc.h" /* service related */ +#include "intern.h" /* print_errno() */ + +#include "cinit.h" /* cinit external */ + +#define C_USAGE(error) usage(USAGE_TEXT,error) +#define LOG(a,b) mini_printf(a,1); minit_printf(b,1); + +/*********************************************************************** + * cmd: main + */ +int main(int argc, char **argv) +{ + int opt, tmp; + int32_t status; + char *svc, *p = NULL; + + tmp = 0; + + /* FIXME: change e/d: make it a must to specify + * -d w(ants) excluded) + * -e n(eeds excluded) + * -d i(nclude everything) + */ + + while((opt = getopt(argc,argv,CMD_OPTIONS)) != -1) { + switch(opt) { + /********************************************/ + case 'e': /* enable service */ + svc = optarg; + break; + + case 'd': /* disable service */ + svc = optarg; + break; + + /********************************************/ + case 's': /* get status */ + svc = optarg; + + /* relative path, add the cinit svc path in front of it */ + if(strncmp(svc,SLASH,strlen(SLASH))) { + p = malloc(strlen(CINIT_DIR) + + strlen(SLASH) + + strlen(SVCDIR) + + strlen(SLASH) + + strlen(svc) + + 1); + if(!p) { + /* bad error */ + return 2; + } + strcpy(p,CINIT_DIR); + strcat(p,SLASH); + strcat(p,SVCDIR); + strcat(p,SLASH); + strcat(p,svc); + svc = p; + } + + status = cinit_get_svc_status(svc); + if(status < 0) { + printf("Communication error\n"); + tmp = 1; + } else { + switch(status) { + case CINIT_MSG_SVC_UNKNOWN: + printf("Unknown service: %s\n",svc); + tmp = 1; + break; + case CINIT_MSG_OK: + printf("Status of %s is: %d\n",svc, status); + tmp = 0; + break; + /* should not happen */ + default: + printf("Unknown status returned for %s: %d\n",svc, status); + tmp = 3; + break; + } + } + if(p) free(p); + return tmp; + + break; + + case 'v': /* get version of cinit */ + svc = cinit_get_version(); + if(svc) { + printf("Version of cinit: %s\n",svc); + free(svc); + return 0; + } else { + printf("Cannot get version of cinit!\n"); + return 1; + } + break; + + /* FIXME: add -V: version of cmd */ + + default: + printf("Unimplemented option :-)\n"); + return 1; + break; + } + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/client/halt.kill.c b/software/cinit/browse_source/cinit-0.3pre12/src/client/halt.kill.c new file mode 100644 index 00000000..a84cdf2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/client/halt.kill.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Halt the system through a kill call + */ + +#include /* kill() */ + +#include "messages.h" /* MSG_* */ +#include "intern.h" /* print_errno() */ +#include "signals.h" /* signals mapping */ + +int main() +{ + if(kill(1,SIG_CINIT_HALT) == -1) { + print_errno(MSG_HALT_KILL); + return 1; + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/client/poweroff.kill.c b/software/cinit/browse_source/cinit-0.3pre12/src/client/poweroff.kill.c new file mode 100644 index 00000000..801e119c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/client/poweroff.kill.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Reboot the system through a kill call + */ + +#include /* kill() */ + +#include "messages.h" /* MSG_* */ +#include "intern.h" /* print_errno() */ +#include "signals.h" /* signals mapping */ + +int main() +{ + if(kill(1,SIG_CINIT_POWEROFF) == -1) { + print_errno(MSG_POWEROFF_KILL); + return 1; + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/client/reboot.kill.c b/software/cinit/browse_source/cinit-0.3pre12/src/client/reboot.kill.c new file mode 100644 index 00000000..cd90feda --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/client/reboot.kill.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Reboot the system through a kill call + */ + +#include /* kill() */ + +#include "messages.h" /* MSG_* */ +#include "intern.h" /* print_errno() */ +#include "signals.h" /* signals mapping */ + +int main() +{ + if(kill(1,SIG_CINIT_REBOOT) == -1) { + print_errno(MSG_REBOOT_KILL); + return 1; + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/comm/README b/software/cinit/browse_source/cinit-0.3pre12/src/comm/README new file mode 100644 index 00000000..74a0b376 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/comm/README @@ -0,0 +1,20 @@ +All abstracted communication functions. Do not depend on the underlying +inter process communication mechanism. + + - send_command(): client function: sends a command to cinit + - send_service(): client function: send the service name to operate on + + - read_command(): server function: reads beginning of a command + * Extracts the command + * reads client identification (=pid) + * calls other functions, depending on the command send => switch() + - read_service(): server function: reads service + + - write_answer(): server function: answer? + * sends answers to clients => senseful? + + + TODO: + - define information function, that returns various information about + a service + diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/comm/answer_svc_status.c b/software/cinit/browse_source/cinit-0.3pre12/src/comm/answer_svc_status.c new file mode 100644 index 00000000..1c91897a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/comm/answer_svc_status.c @@ -0,0 +1,28 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * return status of service + * + */ + +#include /* strncpy */ +#include "svc.h" /* VERSION */ +#include "cinit.h" /* structure: cinit_answer */ + +int answer_svc_status(char *svc, struct cinit_answer *asr) +{ + struct listitem *tmp; + + tmp = list_search(svc); + if(!tmp) { + asr->ret = CINIT_MSG_SVC_UNKNOWN; + } else { + asr->ret = CINIT_MSG_OK; + asr->options = tmp->status; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/comm/read_command.c b/software/cinit/browse_source/cinit-0.3pre12/src/comm/read_command.c new file mode 100644 index 00000000..10b4abd8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/comm/read_command.c @@ -0,0 +1,36 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * cinit reads a command sent by a client, called by ipc listener + * + */ + +#include /* strncpy */ +#include "config.h" /* VERSION */ +#include "cinit.h" /* structures */ +#include "intern.h" /* answer_svc_status() */ + +int read_command(struct cinit_question qsn, struct cinit_answer *asr) +{ + switch(qsn.cmd) { + case CINIT_MSG_GET_VERSION: + asr->ret = CINIT_MSG_OK; + strncpy(asr->data,VERSION,PATH_MAX); + break; + + case CINIT_MSG_GET_STATUS: + if(!answer_svc_status(qsn.data, asr)) return 0; + /* FIXME: handle return 0 in parten */ + break; + + /* Unknown command */ + default: + return 0; + break; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/core/build_argv.c b/software/cinit/browse_source/cinit-0.3pre12/src/core/build_argv.c new file mode 100644 index 00000000..95add5e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/core/build_argv.c @@ -0,0 +1,166 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Build **argv for execution in cinit way: + * 1. check whether cmd is a valid executable + * 2. try to read cmd.params and write parameters + * 3. try to read cmd.env and setup environment + * + * Returns: + * BA_OK: Everything went well, you can use the struct + * BA_NOTFOUND: Binary executable is not available + * BA_PARAMS: Reading the parameters failed (ignoring non-existence!) + * BA_ENV: Reading the environment failed (same as above) + * BA_OTHER: Other error + */ + +#include /* open() */ +#include /* *alloc() */ +#include /* readlink */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* NULL */ +#include /* strchr */ +#include /* stat() */ + +#include "intern.h" +#include "build_argv.h" + + /* + * char *basename: something we should execute + * (*basename) + ".params" will be added as parameters + * (*basename) + ".env" will be added as environment + */ + +int cinit_build_argv(char *basename, struct ba_argv *bav) +{ + int tmp; + int argc; + char pathtmp[PATH_MAX+1]; + char *sbuf = NULL; + char *p; + + /* sane values */ + bav->argv = NULL; + bav->envp = NULL; + + /*********************************************************************** + * Try to get realname (for links) + */ + if((tmp = readlink(basename,pathtmp,PATH_MAX)) == -1) { + /* nothing there? */ + if(errno == ENOENT) { + return BA_E_NOTFOUND; + } + if (errno != EINVAL) { + return BA_E_OTHER; + } + tmp=strlen(basename); + strncpy(pathtmp,basename,tmp); + } + pathtmp[tmp] = '\0'; + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /*********************************************************************** + * prepare argv0 + */ + bav->argv = malloc(sizeof(char *)); + if(bav->argv == NULL) return BA_E_MEM; + + *bav->argv = malloc(tmp); + if(*(bav->argv) == NULL) return BA_E_MEM; + + strncpy(*(bav->argv),pathtmp,tmp); + + /********************** read params *********************/ + /* FIXME check bounds! */ + strcpy(pathtmp,basename); + strcat(pathtmp,C_PARAMS); + /* ORC_ERR_NONEXISTENT: Ok, have sbuf set to NULL + * ORC_OK: Ok, have a filled buffer (perhaps NULL, too) + * other: Error, print errno + */ + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /*********************************************************************** + * Now split the string, converting \n to \0 + */ + argc = 1; /* argv0 */ + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = sbuf; /* here begins the current argument */ + + if(p != NULL) { /* found another \n */ + *p = '\0'; + sbuf = p+1; + } else { /* end of string */ + sbuf = NULL; + } + + ++argc; + } + + /************ close argv list **************/ + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,basename); + strcat(pathtmp,C_ENV); + + tmp = argc = 0; + sbuf = NULL; + + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /************** build environment string **************/ + argc = 0; + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) return BA_E_MEM; + + bav->envp[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + sbuf = p+1; + } else { + sbuf = NULL; + } + ++argc; + } + + /************ close env list **************/ + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) { + return BA_E_MEM; + } + bav->envp[argc] = NULL; + + return BA_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/core/cinit.c b/software/cinit/browse_source/cinit-0.3pre12/src/core/cinit.c new file mode 100644 index 00000000..ff73fedd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/core/cinit.c @@ -0,0 +1,104 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The main file + * + */ + +#include /* getpid,chdir */ +#include /* str(ncmp,len,cpy,cat) */ +#include /* perror */ +#include /* malloc */ + +#include "intern.h" /* general things */ +#include "messages.h" /* messages */ +#include "ipc.h" /* general ipc methods */ +#include "svc.h" /* gen_svc_tree */ + +struct listitem *svc_list = NULL; +struct dep *svc_init = NULL; + +int main(int argc, char **argv) +{ + char *initdir = CINIT_INIT; /* default init dir */ +// pid_t cpid; + + + /* FIXME: RE-ENABLE as SOON AS PRODUCTIVE cpid = getpid(); + * Is this really needed or should we lock() ourselves? + if(cpid != 1) { + mini_printf(CINIT_VERSION,2); + mini_printf(MSG_USAGE,2); + return 0; + }*/ + + /* Look whether we should start a profile */ + while(argc > 1) { + if(!strncmp(PROFILE, argv[argc-1], strlen(PROFILE) ) ) { + initdir = (char *) malloc( + strlen(CINIT_SVCDIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2); + if(initdir == NULL) { + panic(); + } + strcpy(initdir, CINIT_SVCDIR); + strcat(initdir, SLASH); + strcat(initdir, &argv[argc-1][strlen(PROFILE)]); + break; + } + --argc; + } + + /* Bootup "logo" */ + mini_printf(MSG_BOOTING,1); mini_printf(initdir,1); mini_printf("\n",1); + + if(chdir(initdir) == -1) { + print_errno(initdir); + panic(); + } + + /* initialize ipc method */ + if(!cinit_ipc_init()) { + panic(); + } + + /* listen to signals */ + set_signals(ACT_SERV); + + /* pre-calculate service tree */ + if(!gen_svc_tree(initdir)) { + panic(); + } + + /* free, if we malloc()ed before */ + if(strcmp(initdir,CINIT_INIT)) { + free(initdir); + } + + /* change to /, so applications have that as cwd, too + * Is that really seneful? Does that help any application? + * If not, just for looking nice, that's not a reason to + * enable it. + if(chdir(SLASH) == -1) { + print_errno(SLASH); + panic(); + } */ + + /* start tree from the bottom */ + if(!tree_exec(svc_init)) { + panic(); + } + + D_PRINTF("=> cinit started.\n"); + + mini_printf(MSG_BOOTING,1); mini_printf(initdir,1); mini_printf("\n",1); + /* listen for incomming messages: should never return */ + if(!cinit_ipc_listen()) { + panic(); + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/core/do_reboot.c b/software/cinit/browse_source/cinit-0.3pre12/src/core/do_reboot.c new file mode 100644 index 00000000..c6c715be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/core/do_reboot.c @@ -0,0 +1,97 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#include +#include +#include +#include +#include +#include + +#include "ipc.h" + +/* cleaned up own headers */ +#include "intern.h" /* set_signals */ +#include "svc.h" /* shutdown_services */ +#include "messages.h" /* messages */ +#include "reboot.h" /* cinit_poweroff&co */ + +/* cleaned headers */ +#include /* kill() */ + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void do_reboot(int signal) +{ + //struct listitem *tmp; + //char **cmd; + //int i; + + /* + * New code: + * 0. close user ipc + * - notify user! + * - do not allow user interupt anymore + * 1. shutdown services + * - notify user! + * 2. kill -TERM all processes + * - notify user! + * 3. kill -KILL all processes + * - notify user! + * 4. execute /etc/cinit/conf/{halt,reboot,poweroff} + * - notify user! + */ + + /* do not listen to client requests anymore */ + /* and tell the user what happens */ + LOG(MSG_SHUTDOWN_START); + cinit_ipc_destroy(); + set_signals(ACT_CLIENT); /* reset signal handlers */ + + /* shutdown all services: take care about the dependency tree */ + LOG(MSG_SHUTDOWN_SVC); + shutdown_services(svc_list); + + LOG(MSG_SHUTDOWN_KILL); + /* now: all services are down, let's kill all other processes */ + if(kill(-1,SIGTERM) == -1) { + print_errno(MSG_TERMKILL); + } + + sleep_before_kill(); + + if(kill(-1,SIGKILL) == -1) { + print_errno(MSG_KILLBILL); + } + + /* Execute the last command */ + LOG(MSG_SHUTDOWN_LAST); + execute_and_wait(CINIT_LAST); + + /* do what we really wanted to do */ + switch(signal) { + case SIGTERM: /* power off */ + LOG(MSG_POWER_OFF); + cinit_poweroff(); + break; + case SIGHUP: /* reboot */ + LOG(MSG_REBOOT); + cinit_reboot(); + break; + case SIGUSR1: /* halt */ + LOG(MSG_HALT); + cinit_halt(); + break; + } + /* FIXME: should we exit? */ + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/core/panic.c b/software/cinit/browse_source/cinit-0.3pre12/src/core/panic.c new file mode 100644 index 00000000..d3dd9459 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/core/panic.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something + */ + +#include /* execv */ + +#include "intern.h" +#include "messages.h" + +void panic(void) +{ + char *nargv[2]; + + if(execute_and_wait(CINIT_PANIC)) _exit(0); + + /*********************************************************************** + * THIS SHOULD NOT HAPPEN, fallback to hardcoded sulogin + * (conf/sulogin) + */ + nargv[0] = SULOGIN; + nargv[1] = NULL; + + if(execv(SULOGIN,nargv) == -1) { + print_errno(MSG_FATAL_PANIC); + } + + /* there's nothing todo, if everything fails */ + _exit(23); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/core/set_signals.c b/software/cinit/browse_source/cinit-0.3pre12/src/core/set_signals.c new file mode 100644 index 00000000..0ebb6899 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/core/set_signals.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Define signal handlers + */ + + +#include /* sigaction, sigemtpyset */ +#include /* NULL */ +#include "intern.h" /* defines */ +#include "reboot.h" /* reboot related */ +#include "signals.h" /* reboot related */ + +void set_signals(int action) +{ + struct sigaction sa; + + sigemptyset(&sa.sa_mask); /* no other signals should be blocked */ + sa.sa_flags = 0; + + if(action == ACT_SERV) { + sa.sa_handler = sig_child; + sa.sa_flags = SA_NOCLDSTOP; + } else { + sa.sa_handler = SIG_DFL; + } + + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + sa.sa_flags = 0; /* reset flags */ + if(action == ACT_SERV) { + sa.sa_handler = do_reboot; + } + sigaction(SIG_CINIT_HALT, &sa, NULL); /* halt */ + sigaction(SIG_CINIT_POWEROFF, &sa, NULL); /* poweroff */ + sigaction(SIG_CINIT_REBOOT, &sa, NULL); /* reboot */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/core/sig_child.c b/software/cinit/browse_source/cinit-0.3pre12/src/core/sig_child.c new file mode 100644 index 00000000..f8903263 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/core/sig_child.c @@ -0,0 +1,91 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The child handler + * + */ + +#include /* waitpid */ +#include /* NULL */ +#include /* gettimeofday() */ /* FIXME: CHECK POSIX */ +#include /* time(),gettime.. */ /* FIXME: CHECK POSIX */ + +#include "intern.h" /* mini_printf */ +#include "svc.h" /* list_search_pid */ +#include "messages.h" /* messages/D_PRINTF */ + +/*********************************************************************** + * sig_child: (c)collect the children + */ +void sig_child(int tmp) +{ + /* New code: + * - search for pid in service list + * * if (respawn) -> start new + * - insert delay? if exit code is non-zero? if uptime too less? + * * if (once) -> update service status + * * else ignore, but reap away + */ + pid_t pid; + int delay; + struct listitem *svc; +// struct timeval now; + + while((pid = waitpid(-1, &tmp, WNOHANG)) > 0) { + /* check if it's a watched child */ + svc = list_search_pid((pid_t) pid); + + if(svc != NULL) { + /* Check, that we are operating on it =. that it is no normal child */ + if(svc->status & ST_ONCE_RUN + || svc->status & ST_SH_RESPAWN + || svc->status & ST_RESPAWNING) { + mini_printf("WHILE: svc bekannt!\n",1); + if(WIFEXITED(tmp) && !WEXITSTATUS(tmp)) { + svc_success(svc); + } else { + svc_fail(svc); + } + } + + //mini_printf("WHILE: Vorm respawn!\n",1); + /* respawn: restart: FIXME Delay for regular dying services */ + if(svc->status == ST_RESPAWNING) { + D_PRINTF("WHILE: IM respawn!\n"); + svc_report_status(svc->abs_path,MSG_SVC_RESTART,NULL); + D_PRINTF("WHILE: IM respawn: nach report status!\n"); + + //delay = MAX_DELAY / (time(NULL) - svc->start); + /* if(gettimeofday(&now,NULL) == -1) { + print_errno(MSG_GETTIMEOFDAY);; + delay = 0; + } else { + delay = MAX_DELAY / (now.tv_sec - svc->start); + } */ + + delay = 5; + + /* int test = time(NULL); + test++; + D_PRINTF("WHILE: IM respawn / for printf!\n"); + printf("sig_child: %d, %d, %d, %d\n", + MAX_DELAY, + (int) time(NULL), + (int) svc->start, + (int) (test - svc->start) + ); */ + + // mini_printf("WHILE: Vorm SVC_START!\n",1); + svc_start(svc,delay); + } + //mini_printf("WHILE: NACH respawn!\n",1); + } else { + /* FIXME remove in production version */ + D_PRINTF("Cleanup: reparenting\n"); + } + //mini_printf("WHILE2: Ende sigchild\n",1); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/generic/execute_and_wait.c b/software/cinit/browse_source/cinit-0.3pre12/src/generic/execute_and_wait.c new file mode 100644 index 00000000..ab808ff1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/generic/execute_and_wait.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something, but fork() before + * + */ + +#include /* pid_t */ +#include /* waitpid */ +#include /* fork */ + +#include "messages.h" /* MSG_* */ +#include "intern.h" /* print_errno, execute_sth */ + +int execute_and_wait(char *svc) +{ + pid_t pid; + int status; + + /* fork */ + pid = fork(); + + if(pid == -1) { + print_errno(MSG_ERR_FORK); + return 0; + } + + /* exec / child */ + if(pid == 0) { + execute_sth(svc); /* exits itself */ + } + + /* wait / parent */ + waitpid(pid,&status,0); + + if(WIFEXITED(status)) { + if(WEXITSTATUS(status) == 0) { + return 1; + } + } + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/generic/execute_sth.c b/software/cinit/browse_source/cinit-0.3pre12/src/generic/execute_sth.c new file mode 100644 index 00000000..02593940 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/generic/execute_sth.c @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Executes something: replaces us + */ + +#include /* _exit */ + +#include "intern.h" +#include "build_argv.h" +#include "messages.h" /* D_PRINTF */ + +void execute_sth(char *basename) +{ + int tmp; + struct ba_argv bav; + + tmp = cinit_build_argv(basename,&bav); + if((tmp = cinit_build_argv(basename,&bav)) != BA_OK) { + if(tmp != BA_E_MEM) { /* do not print something on memory errors */ + print_errno(basename); + } + _exit(1); + } + + /* tell the user what we execute */ + mini_printf(MSG_INTRO_EXEC,1); + mini_printf((bav.argv)[0],1); + mini_printf("\n",1); + + execve((bav.argv)[0], bav.argv, bav.envp); + print_errno(basename); + _exit(1); /* simply exit non-zero. That's enough for cinit to recognize + it as faulty */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/generic/file_exists.c b/software/cinit/browse_source/cinit-0.3pre12/src/generic/file_exists.c new file mode 100644 index 00000000..8f383525 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/generic/file_exists.c @@ -0,0 +1,58 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * check whether file exists and is a file + */ + +#include /* errno */ +#include /* stat */ +#include /* NULL */ + +#include "intern.h" /* print_errno() */ +#include "svc.h" /* svc_report_status() */ +#include "messages.h" /* messages.. */ + +int file_exists(char *filename) +{ + struct stat buf; + + /* check: + * - is it a link? if so, is it broken? report! + * - is it non existent? -> return non-existent + * - is it existent, but not a regular file? report! + */ + if(lstat(filename,&buf) == -1) { /* lstat fails? */ + if(errno == ENOENT) { + mini_printf("NIX DA: ok.\n",1); + return FE_NOT; + } else { + mini_printf("anderer fehler.\n",1); + print_errno(filename); + return FE_ERR; + } + } else { + if(S_ISLNK(buf.st_mode)) { /* is a link */ + /* check link destination */ + if(stat(filename,&buf) == -1) { /* do real stat(): */ + if(errno == ENOENT) { + svc_report_status(filename,MSG_BROKENLINK,NULL); + return FE_NOLINK; + } else { + mini_printf("anderer fehler.\n",1); + print_errno(filename); + return FE_ERR; + } + } + } + } /* caught all stat() errors */ + + if(!S_ISREG(buf.st_mode)) { + svc_report_status(filename,MSG_NONREGULAR,NULL); + return FE_OTHER; + } + + return FE_FILE; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre12/src/generic/mini_printf.c new file mode 100644 index 00000000..d5b0d1f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/generic/mini_printf.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Print the world! + * + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) return; + + p = str; + while(*p) p++; + + write(fd,str,(size_t) (p - str)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/generic/openreadclose.c b/software/cinit/browse_source/cinit-0.3pre12/src/generic/openreadclose.c new file mode 100644 index 00000000..b271b410 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/generic/openreadclose.c @@ -0,0 +1,66 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * read a file + * + */ + +#include /* open, read, close */ +#include /* strncpy */ +#include /* realloc */ +#include /* errno */ +#include /* NULL */ +#include /* open */ +#include "intern.h" /* ORC_* */ + +int openreadclose(char *filename, char **where) +{ + + int tmp; + int cnt; + int fd; + char buf[512]; + + *where = NULL; + + /* what a wonderful loop */ + while((fd = open(filename,O_RDONLY)) == -1) { + if(errno == ENOENT) return ORC_ERR_NONEXISTENT; + if(errno != EINTR) return ORC_ERR_OPEN; + } + + cnt = 0; + while (1) { + tmp = read(fd,buf,512); + + if(tmp == -1) { + if(errno == EINTR) + continue; + else + return ORC_ERR_READ; + } else if(tmp == 0) { + break; + } + + cnt += tmp; + *where = realloc(*where,cnt + 1); + if(*where == NULL) return ORC_ERR_MEM; + + /* FIXME check correctness of copied buffer... + * and get some sleep..soon, very soon! */ + strncpy(&(*where)[cnt-tmp],buf,tmp); + } + + while((fd = close(fd)) == -1) { + if(errno == EINTR) continue; + return ORC_ERR_CLOSE; + } + + /* terminate string! */ + (*where)[cnt] = '\0'; + + return ORC_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/generic/path_absolute.c b/software/cinit/browse_source/cinit-0.3pre12/src/generic/path_absolute.c new file mode 100644 index 00000000..ef8b002e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/generic/path_absolute.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create an absulte path + */ + +#include /* chdir(),getcwd */ +#include /* PATH_MAX */ +#include "intern.h" /* print_errno */ +#include "messages.h" /* messages */ + +int path_absolute(char *relpath, char *newpath, size_t size) +{ + char oldpath[PATH_MAX+1]; + + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + if(chdir(relpath) == -1) { + print_errno(relpath); + return 0; + } + + if(!getcwd(newpath,size)) { + print_errno(relpath); + return 0; + } + + if(chdir(oldpath) == -1) { + print_errno(oldpath); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/generic/path_append.c b/software/cinit/browse_source/cinit-0.3pre12/src/generic/path_append.c new file mode 100644 index 00000000..87cc49ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/generic/path_append.c @@ -0,0 +1,28 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create path to needs + */ + +#include /* strlen */ +#include /* PATH_MAX */ + +#include "intern.h" /* mini_printf, PD_ERR */ + +int path_append(char *path, char *append) +{ + size_t end = strlen(path); + + if(strcmp(&path[end-1],SLASH)) { + if((end + strlen(SLASH) + strlen(append)) > PATH_MAX) return 0; + strcat(path,SLASH); + } else { + if((end + strlen(append)) > PATH_MAX) return 0; + } + strcat(path,append); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/generic/print_errno.c b/software/cinit/browse_source/cinit-0.3pre12/src/generic/print_errno.c new file mode 100644 index 00000000..0286f550 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/generic/print_errno.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * stolen from tcpserver_blocker + * + * Author: Nico Schottelius + * Date: 2006-08-24 + * + * Print the error found in errno + */ + +#include /* strerror */ +#include /* errno */ + +#include "intern.h" /* mini_printf, PD_ERR */ + +void print_errno(char *msg) +{ + if(msg) { + mini_printf(msg, FD_ERR); + mini_printf(": ", FD_ERR); + } + mini_printf(strerror(errno), FD_ERR); + mini_printf("\n", FD_ERR); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/generic/sleep_before_kill.c b/software/cinit/browse_source/cinit-0.3pre12/src/generic/sleep_before_kill.c new file mode 100644 index 00000000..e3c92615 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/generic/sleep_before_kill.c @@ -0,0 +1,43 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Sleep: + * read configuration, + * fallback to builtin value if not possible, + * sleep. + * + */ + +#include /* nanosleep */ +#include /* strtol() */ +#include /* errno */ + +#include "intern.h" /* print_errno */ +#include "messages.h" /* messages */ + +void sleep_before_kill() +{ + char *content; + int tmp; + struct timespec ts; + + if(openreadclose(CINIT_SLEEPFILE,&content) == ORC_OK) { + errno = 0; + tmp = strtol(content, NULL, 10); + if(errno != 0) tmp = SLEEP_KILL; + free(content); + } else { + mini_printf(MSG_BUILTIN_SLEEP,1); + tmp = SLEEP_KILL; + } + + ts.tv_sec = tmp; + ts.tv_nsec = 0; + + if(nanosleep(&ts,NULL) == -1) { + print_errno(MSG_ERR_SLEEP); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/generic/strip_final_newline.c b/software/cinit/browse_source/cinit-0.3pre12/src/generic/strip_final_newline.c new file mode 100644 index 00000000..4629bb9f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/generic/strip_final_newline.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * If the last character is \n, shrink the memory and remove it + * + */ + +#include /* NULL */ +#include /* strchr */ +#include /* alloc */ + +char *strip_final_newline(char *str) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) { + return NULL; + } + + p = strrchr(str,'\n'); + if(p) { + if(*(p+1) == '\0') { + *p = '\0'; /* DO NOT FORGET TO TERMINATE STRING */ + str = realloc(str,(p-str)); + } + } + + return str; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/generic/usage.c b/software/cinit/browse_source/cinit-0.3pre12/src/generic/usage.c new file mode 100644 index 00000000..260b4ea5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/generic/usage.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * usage: tell the world what we want - seriously no capitalism + * usage: tell the user what's wrong and a help text + * + */ + +#include /* _exit() */ +#include "intern.h" /* mini_printf */ + +void usage(char *banner, char *text) +{ + /* print banner + error message */ + mini_printf(banner,1); + mini_printf(text,1); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/include/build_argv.h b/software/cinit/browse_source/cinit-0.3pre12/src/include/build_argv.h new file mode 100644 index 00000000..b61b27a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/include/build_argv.h @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * build **argv + */ + +#ifndef CINIT_BA_HEADER +#define CINIT_BA_HEADER + +/***************************************************************************** + * Defines: return values + */ +enum { + BA_OK, + BA_E_NOTFOUND, + BA_E_PARAMS, + BA_E_ENV, + BA_E_MEM, + BA_E_OTHER +}; + +/***************************************************************************** + * Structures + */ +struct ba_argv { + char **argv; + char **envp; +}; + +/***************************************************************************** + * Functions + */ +int cinit_build_argv(char *basename, struct ba_argv *bav); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/include/cinit.h b/software/cinit/browse_source/cinit-0.3pre12/src/include/cinit.h new file mode 100644 index 00000000..ecf87648 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/include/cinit.h @@ -0,0 +1,55 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Header file for external programs (in theory) + */ + +#ifndef CINIT_EXTERNAL_HEADER +#define CINIT_EXTERNAL_HEADER + +/* includes */ +#include /* required for functions */ +#include /* PATH_MAX */ + +/* + * structures: independent of the ipc code! + */ + +/* messages from the client */ +struct cinit_question { + int32_t cmd; + char data[PATH_MAX]; + int32_t options; +}; + +/* messages from cinit */ +struct cinit_answer { + int32_t ret; + int32_t options; + char data[PATH_MAX]; +}; + +/* codes for messages */ +enum { + /* questions */ + CINIT_MSG_QUESTIONS=1000, /* begin questions at 1000 */ + CINIT_MSG_GET_STATUS, /* status of a service */ + CINIT_MSG_GET_VERSION, /* version of cinit */ + + /* answers */ + CINIT_MSG_ANSWERS=2000, /* begin answers at 2000 */ + CINIT_MSG_OK, /* general ok value */ + CINIT_MSG_ERR, /* general error value */ + CINIT_MSG_SVC_UNKNOWN /* Services is not known */ +}; + +/* functions */ +int32_t cinit_get_svc_status(char *); +char *cinit_get_version(void); +int cinit_send_to(struct cinit_question *, struct cinit_answer *); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/include/cmd.h b/software/cinit/browse_source/cinit-0.3pre12/src/include/cmd.h new file mode 100644 index 00000000..f68f85ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/include/cmd.h @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Header file for the cmd (cinit management) + */ + +#ifndef CINIT_CMD_HEADER +#define CINIT_CMD_HEADER + +#define CMD_USAGE "cmd - cinit management\n\n" \ + "Usage:\n\ncmd -[ed nw v]\n" \ + " -e: enable service\n" \ + " including dependencies\n" \ + " -d: disable service\n" \ + " including dependencies\n" \ + " -n: without needs\n" \ + " Skip wants when en/disabling\n" \ + " -w: without wants\n" \ + " Skip needs when en/disabling\n" \ + " -s: get status\n" \ + " of specified service\n" \ + " -v: get version\n" \ + " of cinit\n" \ + "" + +#define CMD_OPTIONS "e:d:p:s:vV" + +#define MSG_KILL "kill()" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/include/intern.h b/software/cinit/browse_source/cinit-0.3pre12/src/include/intern.h new file mode 100644 index 00000000..a691cb7e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/include/intern.h @@ -0,0 +1,117 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * internal header + */ + + +#ifndef _CINIT_INTERN_H +#define _CINIT_INTERN_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ +#include "cinit.h" /* structures: answer / question */ + +/*********************************************************************** + * Defines + */ +#define SLASH "/" +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC + +enum { /* FIXME: there are some default defines somewhere for that */ + FD_IN=0, + FD_OUT=1, + FD_ERR=2 +}; + +enum { /* returns of openreadclose */ + ORC_OK, /* everything went fine */ + ORC_ERR_NONEXISTENT, /* file does not exist */ + ORC_ERR_OPEN, /* error opening the file */ + ORC_ERR_READ, + ORC_ERR_CLOSE, + ORC_ERR_MEM +}; + +/* values for execute_sth: + * STRICT: print and error, if .../on does not exist + * NOSTRICT: no .../on is fine + */ +enum { + EXEC_STRICT, + EXEC_NOSTRICT +}; + +enum { + FE_FILE, /* file exists and is a file */ + FE_OTHER, /* file exists, but is no file */ + FE_NOT, /* file does not exist */ + FE_NOLINK, /* file is a broken symbolic link*/ + FE_ERR /* some error occured */ +}; + +/*********************************************************************** + * Paths + */ +#define CINIT_SVCDIR CINIT_DIR SLASH SVCDIR +#define CINIT_INIT CINIT_SVCDIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK +#define CINIT_BIN PREFIX SLASH "sbin" SLASH "cinit" + +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC +#define CINIT_LAST CINIT_CONFDIR SLASH C_LAST +#define CINIT_SLEEPFILE CINIT_CONFDIR SLASH SLEEP_BEFORE_KILL + +/* needed by set_signals */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* functions (used by server and client) */ +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +void usage(char *banner, char *stext); + +int do_svc_name(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* core functions */ +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +int msg_svc_on_off(char *svc, char action); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +pid_t respawn_svc(char *abspath); +char **read_file(char *file); +void sig_terminate(int signal); + +/* communication */ +int read_command(struct cinit_question, struct cinit_answer *); +int answer_svc_status(char *, struct cinit_answer *); + +/* generic */ +void execute_sth(char *basename); +int execute_and_wait(char *svc); +int path_append(char *path, char *append); +int path_absolute(char *relpath, char *buf, size_t size); +int openreadclose(char *filename, char **where); +char *strip_final_newline(char *str); +int file_exists(char *filename); +void sleep_before_kill(); + +/* util */ +void print_errno(char *text); + +#endif /* _CINIT_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/include/ipc.h b/software/cinit/browse_source/cinit-0.3pre12/src/include/ipc.h new file mode 100644 index 00000000..f10fa998 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/include/ipc.h @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Prototypes for ipc handler + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +/* FIXME: change to cinit/types.h later */ +#include "cinit.h" + +/***************************************************************************** + * Functions: in server + */ +int cinit_ipc_init(void); /* init in init */ +int cinit_ipc_listen(void); /* listen in init */ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + +/***************************************************************************** + * Functions: in clients + */ +int cinit_ipc_logon(void); /* logon to init */ + +int cinit_ipc_connect(void); /* connect to init */ + +int cinit_ipc_csend(struct cinit_question *); /* ask the server */ +int cinit_ipc_cread(struct cinit_answer *); /* read answer */ + +int cinit_ipc_logoff(void); /* logoff */ + +/***************************************************************************** + * Functions: shared + */ + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/include/listing b/software/cinit/browse_source/cinit-0.3pre12/src/include/listing new file mode 100644 index 00000000..bccdad37 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/include/listing @@ -0,0 +1,8 @@ +include/intern.h +include/config.h +include/ipc.h +include/messages.h +include/os.h +include/reboot.h +include/signals.h +include/svc.h diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/include/messages.h b/software/cinit/browse_source/cinit-0.3pre12/src/include/messages.h new file mode 100644 index 00000000..582d4dc4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/include/messages.h @@ -0,0 +1,161 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit (at) schottelius.org) + * + * part of cLinux/cinit + * + * All messages + */ + +#ifndef _CINIT_MSG_H +#define _CINIT_MSG_H + +/* version */ +#define CINIT_VERSION "cinit-" VERSION +#define MSG_BOOTING CINIT_VERSION ": Booting from " + +#define MSG_DP ": " + +/* OLD Messages to the outside */ +//#define MSG_BIND "bind" +//#define MSG_CONNECT "connect" +//#define MSG_FCNTL "fcntl" +//#define MSG_LISTEN "listen" +//#define MSG_SOCKET "socket" +#define MSG_USAGE_1 ": fast executing, small and simple init " +#define MSG_USAGE_2 "with support for profiles\n" +#define MSG_USAGE_3 "\nError: cinit must be started as PID 1.\n" +#define MSG_USAGE MSG_USAGE_1 MSG_USAGE_2 MSG_USAGE_3 +#define MSG_ERR_FORK "fork" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_OPEN "open" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_READ "read" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" + +#define MSG_ERR_DEPS "Too many dependencies" +#define MSG_ERR_ACCEPT "accept" +#define MSG_ERR_WAITPID "waitpid" +#define MSG_ERR_POLL "poll" +#define MSG_ERR_MODIFY "modify list failed" +#define MSG_ERR_COMM "Communication failed" + +#define MSG_ERR_LESS_ARGS "Too less arguments!" +#define MSG_ERR_BAD_ARGS "Wrong arguments / parameter" +#define MSG_ERR_ARGS_LEN "Wrong parameter length" + +#define LOG_SVC_STOPED "Service stoped" +#define LOG_SVC_ONCE "Started once" +#define LOG_SVC_RESPAWN "Respawns now" +#define LOG_NEED_FAIL "One or more need failed" +#define LOG_SVC_FAILED "Service already failed, not starting." +#define LOG_SVC_NOTEXIST "Service does not exist" + +#define MSG_EXEC_FAILED "Failed to execute " + +#define MSG_RESCUE "Switching to rescue mode ..." +#define MSG_UPDATE "Updating cinit ..." +#define MSG_HOT_REBOOT "Hot reboot in progress ..." + +#define MSG_SHOULD_NOT_HAPPEN "This should not happen, I do not know what todo!" + +/* DEBUG */ +#ifdef DEBUG +# include +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) {} +#endif + +/* macros */ +#define SERVICE_LOG(svc,message) { \ + mini_printf(svc,1); \ + mini_printf(MSG_DP,1); \ + mini_printf(message,1); \ + mini_printf("\n",1); \ +} +#define LOG(s) { \ + mini_printf(s,1); \ + mini_printf("\n",1); \ +} +#define P_START_SERVICE(name) { mini_printf(MSG_START_SVC,1); mini_printf(name,1); mini_printf("\n",1); } +#define P_EXEC_FAILED(name) { mini_printf(MSG_EXEC_FAILED,1); mini_printf(name,1); mini_printf("\n",1); } + +/* NEW (clean) Service status: Messages to the outside */ + +/* services: how they should be printed + * /etc/cinit/svc/long/name: started once + * /etc/cinit/svc/long/name: is respawning + * /etc/cinit/svc/long/name: FAILED (why it happened) + */ + +#define MSG_INTRO_CINIT "cinit:" +#define MSG_INTRO_SPACE MSG_INTRO_CINIT " " +#define MSG_INTRO_SVC MSG_INTRO_CINIT +//#define MSG_INTRO_SVC MSG_INTRO_CINIT "service:" +#define MSG_INTRO_STOP MSG_INTRO_CINIT "stop: " +#define MSG_INTRO_EXEC MSG_INTRO_CINIT "exec: " + +/* FIXME: remove/append, but no intro! */ +#define MSG_INTRO_FAIL "FAILED " +#define MSG_INTRO_RESPAWN MSG_INTRO_CINIT "respawn: " +#define MSG_INTRO_OK MSG_INTRO_CINIT "ok: " + +#define MSG_SVC_FORK "fork() failed" +#define MSG_SVC_NEED_FAIL MSG_INTRO_FAIL "Needs failed for service" +#define MSG_SVC_FAIL MSG_INTRO_FAIL "Service failed!" + + +#define MSG_BUILTIN_SLEEP MSG_INTRO_STOP "Using built-in sleep" + +#define MSG_TREE_EXEC MSG_INTRO_SPACE "Execution of reverse service tree\n" + +/* general errors */ +#define MSG_GETCWD "Getcwd failed! Your system is most likely broken!" +#define MSG_FATAL_PANIC MSG_INTRO_SPACE "I tried everything, but even panic() failed: " +#define MSG_ERR_SLEEP MSG_INTRO_SPACE "Sleep did not succeed" +#define MSG_GETTIMEOFDAY MSG_INTRO_SPACE "gettimeofday() failed!" + +/* execution */ +//#define MSG_EXECUTING MSG_INTRO_EXEC + +/* stat() errors */ +#define MSG_NONREGULAR "Is not a regular file." +#define MSG_BROKENLINK "Is a broken link." + +/* Service messages */ +#define MSG_SVC_START "Starting... " +#define MSG_SVC_STOP "Stoping... " +#define MSG_SVC_RESTART "Restarted." +#define MSG_SVC_SLEEP "Sleeping before restart" +#define MSG_SVC_OK_ONCE "Started once." +#define MSG_SVC_OK_RESPAWN "Is respawning." + +/* Status messages */ +#define MSG_SHUTDOWN_START MSG_INTRO_STOP "\nBeginning the shutdown process..." +#define MSG_SHUTDOWN_SVC MSG_INTRO_STOP "Shutting down services now..." +#define MSG_SHUTDOWN_KILL MSG_INTRO_STOP "Killing remaining processes..." +#define MSG_SHUTDOWN_LAST MSG_INTRO_STOP "Executing final service..." +#define MSG_POWER_OFF MSG_INTRO_STOP "Powering off..." +#define MSG_HALT MSG_INTRO_STOP "Halting system ..." +#define MSG_REBOOT MSG_INTRO_STOP "Rebooting ..." + +/* client messages */ +#define MSG_HALT_KILL "halt.kill" +#define MSG_REBOOT_KILL "reboot.kill" +#define MSG_POWEROFF_KILL "poweroff.kill" + + +/* reboot */ +#define MSG_TERMKILL MSG_INTRO_FAIL "SIGTERM" +#define MSG_KILLBILL MSG_INTRO_FAIL "SIGKILL" + +#endif /* _CINIT_MSG_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/include/os.h b/software/cinit/browse_source/cinit-0.3pre12/src/include/os.h new file mode 100644 index 00000000..b3320c0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/include/os.h @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * os specific functions + */ + +#ifndef CINIT_OS_HEADER +#define CINIT_OS_HEADER + +/***************************************************************************** + * Functions + */ +void cinit_halt(void); +void cinit_poweroff(void); +void cinit_reboot(void); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/include/reboot.h b/software/cinit/browse_source/cinit-0.3pre12/src/include/reboot.h new file mode 100644 index 00000000..cd8a345e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/include/reboot.h @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot specific functions + * + */ + +#ifndef CINIT_REBOOT_HEADER +#define CINIT_REBOOT_HEADER + +/***************************************************************************** + * the main reboot function + */ +void do_reboot(int signal); + + +/***************************************************************************** + * os specific functions + */ +void cinit_reboot(void); +void cinit_halt(void); +void cinit_poweroff(void); + + +/***************************************************************************** + * Functions: abstract do_reboot + */ +#define cinit_do_reboot() do_reboot(SIGHUP) +#define cinit_do_halt() do_reboot(SIGUSR1) +#define cinit_do_poweroff() do_reboot(SIGTERM) + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/include/signals.h b/software/cinit/browse_source/cinit-0.3pre12/src/include/signals.h new file mode 100644 index 00000000..a51e402d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/include/signals.h @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Define signals to use: needs signal.h to be included before. + */ + +#ifndef CINIT_SIGNALS_HEADER +#define CINIT_SIGNALS_HEADER + +#define SIG_CINIT_HALT SIGUSR1 +#define SIG_CINIT_POWEROFF SIGTERM +#define SIG_CINIT_REBOOT SIGHUP + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/include/svc.h b/software/cinit/browse_source/cinit-0.3pre12/src/include/svc.h new file mode 100644 index 00000000..1be02a16 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/include/svc.h @@ -0,0 +1,109 @@ +/*********************************************************************** + * + * 2006,2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + + +#ifndef _CINIT_SVC_H +#define _CINIT_SVC_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* service list */ +struct listitem { + struct listitem *prev; /* previous item */ + struct listitem *next; /* next item */ + + char *abs_path; /* name of service */ + long int status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + time_t start; /* time the process was started last time */ + + + struct dep *wanted; /* list of services that want this service */ + struct dep *needed; /* list of services that need this service */ + + struct dep *wants; /* list of services that this service wants */ + struct dep *needs; /* list of services that this service needs */ +}; + +/* list of dependencies */ +struct dep { + struct dep *prev; + struct dep *next; + struct listitem *svc; +}; + +/* variables */ +extern struct dep *svc_init; /* the services to start */ +extern struct listitem *svc_list; /* the list of services */ + +/* list functions */ +struct listitem *list_insert(char *path, int status); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); +struct listitem *list_search(char *path); +struct listitem *list_search_pid(pid_t pid); +//int list_display_all(); /* debug only */ + + +/* service */ +struct listitem *svc_create(char *svc); +struct listitem *gen_svc_tree(char *svc); +int check_add_deps(struct listitem *svc, int type); +void dep_entry_add(struct dep **list, struct dep *new); +struct dep *dep_entry_del(struct dep *del); +int tree_exec(struct dep *start); +int svc_set_status(struct listitem *li, int status); +int svc_should_respawn(struct listitem *li); +int svc_needs_status(struct listitem *li); +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type); +struct dep *dep_create(struct listitem *svc); +void svc_success(struct listitem *li); +void svc_fail(struct listitem *li); +void svc_report_status(char *svc, char *msg, char *err); +void svc_start(struct listitem *li, int delay); +void shutdown_services(struct listitem *start); + + +/*********************************************************************** + * to decide whether to operate on needs or wants + */ +enum dep_types { + DEP_WANTS, + DEP_NEEDS +}; + +/*********************************************************************** + * The real status types a service may have (ignore above) + * We have 32 Bits, we should use them ;-) + */ +enum svc_status { + /* first define basics */ + ST_SH_ONCE = 0x1, /* service SHould be started once */ + ST_SH_RESPAWN = 0x2, /* service SHould respawn */ + ST_ONCE_OK = 0x4, /* service was successfully started once */ + ST_ONCE_FAIL = 0x8, /* service failed to start */ + ST_RESPAWNING = 0x10, /* service is respawning */ + ST_NEED_FAILD = 0x20, /* this service is not started, need failed */ + ST_IN_LIST = 0x40, /* this service is being started (= in list) */ + ST_BAD_ERR = 0x80, /* some kind of error that SHOULD NOT happen */ + ST_ONCE_RUN = 0x100, /* the once process is currently running */ + ST_NOT_EXIST = 0x200 /* there's no such service in our database */ +}; + +/*********************************************************************** + * Possibilities the needs of a service may have + */ +enum svc_needs_status { + SNS_NEEDS_STARTED = 1, /* all needs are started. We may start, too */ + SNS_NEEDS_FAILED, /* one ore more needs failed */ + SNS_NEEDS_UNFINISHED /* one ore more needs are not yet started */ +}; +#endif /* _CINIT_SVC_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq-rt/README b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq-rt/README new file mode 100644 index 00000000..cc1a1b7e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq-rt/README @@ -0,0 +1,2 @@ +This implementation uses the new realtime inferface of +posix instead of the old one functions. diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq-rt/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq-rt/cinit_ipc_init.c new file mode 100644 index 00000000..ef22b6d1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq-rt/cinit_ipc_init.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include + +#include "cinit.h" +#include "config.h" +#include "msgq-rt.h" + +int cinit_ipc_init(void) +{ + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq-rt/mq_open.c b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq-rt/mq_open.c new file mode 100644 index 00000000..445e7dc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq-rt/mq_open.c @@ -0,0 +1,20 @@ +#include +#include + +int main() +{ + mqd_t readq = mq_open("/test",O_RDWR|O_CREAT|O_EXCL); + //mqd_t readq = mq_open("/bin/ls",O_RDWR|O_CREAT|O_EXCL); + + if(readq == -1) { + perror("oh nein"); + return 1; + } + mqd_t writeq = mq_open("/bin/cp",O_WRONLY|O_CREAT|O_EXCL); + if(readq == -1) { + perror("oh oh nein"); + return 1; + } +} + + diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq-rt/msgq-rt.h b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq-rt/msgq-rt.h new file mode 100644 index 00000000..d09a2808 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq-rt/msgq-rt.h @@ -0,0 +1,39 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +#define MSGQ_PATHNAME "/cinit" /* identifier */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + pid_t pid; + struct msg_client msg; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server_short { + long mtype; + struct asw_sstatus answer; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/README.text b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/README.text new file mode 100644 index 00000000..c9a1acf2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/README.text @@ -0,0 +1,20 @@ +cinit/src/ipc/msgq: About this msqg implementation +=================================================== +Nico Schottelius +0.1, Initial Version from 2006-08-04 +:Author Initials: NS + +Intro here + +Introduction +------------ + +cinit opens a + +Files +----- +- README.text: This file +- cinit_init_ipc.c: Init +msgq.h +objects + diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_cread.c b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_cread.c new file mode 100644 index 00000000..ca9da8fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_cread.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Client reads messages from cinit + * + */ + +#include /* msg* */ +#include /* memcpy() */ +#include /* getpid() */ +#include + +#include "intern.h" /* print_errno */ +#include "msgq.h" /* msq specific */ + +int cinit_ipc_cread(struct cinit_answer *buf) +{ + struct msgq_server asr; + + asr.mtype = getpid(); + + if(msgrcv(__cinit_mq_in, &asr, sizeof(asr.asr), asr.mtype, 0) == -1) { + /* FIXME: msg* */ + print_errno("msgrcv,cread"); + return 0; + } + memcpy(buf, &(asr.asr), sizeof(*buf)); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_csend.c b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_csend.c new file mode 100644 index 00000000..316a0a2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_csend.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Client sends messages to cinit + * + */ + +#include /* msgget */ +#include /* memcpy() */ + +#include "intern.h" /* print_errno */ +#include "msgq.h" /* structure */ + +int cinit_ipc_csend(struct cinit_question *qsn) +{ + struct msgq_client msg; + + msg.mtype = 1; /* cinit = 1 */ + + /* copy question structure into the msgq-structure */ + memcpy(&(msg.qsn), qsn, sizeof(msg.qsn)); + + if(msgsnd(__cinit_mq_out, &msg, sizeof(msg), 0) == -1) { + /* FIXME: msg */ + print_errno("msgsnd,csend"); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_destroy.c b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_destroy.c new file mode 100644 index 00000000..1169a731 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_destroy.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Destory ipc mechanism, cinit is gonna die soon. + * + */ + +#include /* msgget */ +#include /* NULL */ + +#include "msgq.h" /* mq_in, mq_out */ +#include "intern.h" /* print_errno */ + +void cinit_ipc_destroy(void) +{ + if(msgctl(__cinit_mq_in, IPC_RMID, NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } + if(msgctl(__cinit_mq_out, IPC_RMID, NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_init.c new file mode 100644 index 00000000..d425abb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_init.c @@ -0,0 +1,46 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "intern.h" /* print_errno */ +#include "msgq.h" /* message queue */ + +int cinit_ipc_init(void) +{ + key_t k_tmp; + + /* to_server */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + if(k_tmp == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + __cinit_mq_in = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(__cinit_mq_in == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + /* to_client */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + if(k_tmp == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + __cinit_mq_out = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(__cinit_mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_listen.c new file mode 100644 index 00000000..f0b8f993 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_listen.c @@ -0,0 +1,61 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* printf() */ + +#include /* msgget */ +#include /* errno */ + +#include "intern.h" /* print_errno */ +#include "msgq.h" /* structs */ + +int cinit_ipc_listen(void) +{ + int tmp; + struct msgq_client qsn; + struct msgq_server asr; + struct msqid_ds msq; + + while (1) { + qsn.mtype = 1; /* listen only to mtype = 1, == init */ + tmp = msgrcv(__cinit_mq_in, &qsn, sizeof (qsn.qsn), 0, 0); + + if(tmp == -1) { + if(errno != EINTR) { + print_errno(MSG_MSGQ_MSGRCV); + } + continue; + } + + if(msgctl(__cinit_mq_in, IPC_STAT, &msq) == -1) { + /* FIXME: do MSG_ */ + print_errno("msgctl"); + continue; + } + + printf("pid direkt: self: %d (peer: %d)\n",msq.msg_lrpid, msq.msg_lspid); + + if(!read_command(qsn.qsn, &(asr.asr))) { + /* FIXME: msg; mini_printf! */ + printf("read command failed\n"); + + asr.asr.ret = CINIT_MSG_ERR; + } + + + asr.mtype = msq.msg_lspid; + if(msgsnd(__cinit_mq_out, &asr, sizeof(asr.asr), 0) == -1) { + /* FIXME: do different things on differen errnos ... */ + print_errno("msgsend/answer"); + } + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_logoff.c b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_logoff.c new file mode 100644 index 00000000..ac8306d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_logoff.c @@ -0,0 +1,14 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Disconnect from cinit + * + */ + +int cinit_ipc_logoff(void) +{ + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_logon.c b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_logon.c new file mode 100644 index 00000000..40d73e5a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/cinit_ipc_logon.c @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ +#include /* getpid() */ + +#include "intern.h" /* print_errno */ +#include "msgq.h" /* msgq constants */ + +int cinit_ipc_logon(void) +{ + key_t k_in, k_out; /* FIXME: remove one variable */ + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + k_out = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* FIXME: do not create new queue => cinit should have created them! */ + __cinit_mq_in = msgget(k_in,0666 | IPC_CREAT); + __cinit_mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(__cinit_mq_in == -1 || __cinit_mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/msgq.h b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/msgq.h new file mode 100644 index 00000000..d8adde83 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/msgq.h @@ -0,0 +1,53 @@ +/* + * (c) 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * part of cinit + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER +/* FIXME: add _cinit_ to it, we may be in client namespace now! */ + +//#include /* structures */ +#include /* structures */ + +/*********************************************************************** + * configuration + */ + +#define MSGQ_PATHNAME "/bin/sh" /* should be on every *nix */ +#define MSGQ_TO_SERVER 'i' /* also for ftok */ +#define MSGQ_TO_CLIENT 'o' /* also for ftok */ +#define MSGQ_PERMS 0660 /* queue permissions */ + +/*********************************************************************** + * global variables: FIXME: rename, we're in client namespace! + */ +int __cinit_mq_in; /* input */ +int __cinit_mq_out; /* output */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + struct cinit_question qsn; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server { + long mtype; + struct cinit_answer asr; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_FTOK "ftok" +#define MSG_MSGQ_MSGGET "msgget" +#define MSG_MSGQ_MSGRCV "msgrcv" +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/objects b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/objects new file mode 100644 index 00000000..7c99d09f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/msgq/objects @@ -0,0 +1,5 @@ +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/socket+linux-tmpfs/begin_msg.c b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/socket+linux-tmpfs/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/socket+linux-tmpfs/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c new file mode 100644 index 00000000..88c310f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c @@ -0,0 +1,125 @@ +/* + * (c) 2005, 2006 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * create a socket, when we recieved a signal + */ +int main(int argc, char **argv) +{ + struct sockaddr_un addr; + struct pollfd plist; + char *initdir; + + list = NULL; /* list of services is empty currently */ + initdir = CINIT_INIT; /* default init dir */ + + cpid = getpid(); + if(cpid != 1) { + usage(MSG_USAGE,MSG_NOT_ONE); + } + + set_signals(ACT_SERV); /* set signal handlers */ + + /* read args, profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* tell the world we are there FIXME: do we really need three calls? */ + mini_printf(MSG_CINIT,1); mini_printf(initdir,1); mini_printf("\n",1); + + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c new file mode 100644 index 00000000..a174d78d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c @@ -0,0 +1,141 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int socket) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + while ( (nsock = accept(socket,(struct sockaddr *) NULL, + (socklen_t *) NULL)) != -1) { + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = ST_FAIL; + } else { + status = RT_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP (RESPAWNING) *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; + list_tmp = list_search(buf); + + /* FIXME: + - handle off + - handle switching off once services + - perhaps remove old cinit code, which has respawing childs + */ + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + /* kill cinit watcher, which kills the real process */ + kill(list_tmp->pid,SIGTERM); + + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + } + + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + status = ST_FAIL; + } else { /* return status */ + status = list_tmp->status; + } + } else { /* no service there */ + status = RT_NOTEXIST; + } + do_result(nsock,&status); + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + SERVICE_LOG(buf,MSG_ERR_MODIFY); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + case CMD_UPDATE: + sig_reboot(SIGCONT); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } + + /* hier kommt man haeufiger herein, interrupted system call */ + if( errno != EAGAIN && errno != EINTR) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/ipc/socket+linux-tmpfs/connect_sock.c b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/socket+linux-tmpfs/connect_sock.c new file mode 100644 index 00000000..2c2d45de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/ipc/socket+linux-tmpfs/connect_sock.c @@ -0,0 +1,38 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include /* memset, strcpy */ + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/README b/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/README new file mode 100644 index 00000000..096cc779 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/README @@ -0,0 +1,22 @@ +Build a small library that can be used by different applications, that provides: + + Constants / Macros: + for cinit_halt: + CINIT_HALT + CINIT_REBOOT + CINIT_POWEROFF + + for cinit_svc_start/stop: + CINIT_SVC_NORMAL + CINIT_SVC_NEEDS + CINIT_SVC_ONLY + CINIT_SVC_WANTS + + Functions: + void cinit_halt(int how); + int cinit_svc_start(char *svc, int how); + int cinit_svc_stop(char *svc, int how); + int cinit_svc_stop(char *svc, int how); + +This lib must then include: + - choosen ipc functions diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_enable_service.c b/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_enable_service.c new file mode 100644 index 00000000..f357d7bf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_enable_service.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * enables a service + */ + + +#include "" /* include global header */ + +int cinit_enable_service(char *name, int how) +{ + int tmp; + + /* every client has to connect to cinit first */ + tmp = cinit_ipc_logon(); + if(!tmp) return 0; + + switch(how) { + case 'p': /* power off */ + break; + + default: + break; + } + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_get_svc_status.c b/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_get_svc_status.c new file mode 100644 index 00000000..262ea7da --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_get_svc_status.c @@ -0,0 +1,30 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Retrieves status of a service + */ + + +#include /* str* */ +#include /* integers */ +#include "cinit.h" /* header for clients */ + +/* returns either the status (>0) + * or -1 on memory error + */ +int32_t cinit_get_svc_status(char *name) +{ + struct cinit_question qsn; + struct cinit_answer asr; + + qsn.cmd = CINIT_MSG_GET_STATUS; + strcpy((qsn.data), name); + qsn.options = 0; + + if(!cinit_send_to(&qsn, &asr)) return -1; + + return asr.ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_get_version.c b/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_get_version.c new file mode 100644 index 00000000..557982d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_get_version.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Retrieves version of cinit + */ + +#include /* malloc */ +#include /* str*, memset */ +#include /* NULL */ + +#include "cinit.h" /* header for clients */ + +char *cinit_get_version() +{ + struct cinit_question ask; + struct cinit_answer answer; + char *ret; + + memset(&ask,'\0',sizeof(ask)); + ask.cmd = CINIT_MSG_GET_VERSION; + + if(!cinit_send_to(&ask, &answer)) return NULL; + + ret = malloc(strlen(answer.data) +1); + if(!ret) return NULL; + strcpy(ret,answer.data); + + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_halt.c b/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_halt.c new file mode 100644 index 00000000..c388ba89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_halt.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * cinit_halt(): call for library + */ + + +#include "" /* include global header */ +int cinit_halt(int how) +{ + switch(how) { + case 'p': /* power off */ + break; + + default: + break; + } + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_read_from.c b/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_read_from.c new file mode 100644 index 00000000..54499be3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_read_from.c @@ -0,0 +1,23 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * read data from cinit to the client + */ + + +#include "ipc.h" /* IPC */ + +/* gets a bunch of bytes and returns the answer from cinit */ +int cinit_read_from(char **dest, int len) +{ + if(!cinit_ipc_logon()) return NULL; + if(!cinit_ipc_connect()) return NULL; + + /* FIXME: add length to ipc function? */ + if(!cinit_ipc_csend(data)) return NULL; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_send_to.c b/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_send_to.c new file mode 100644 index 00000000..49edc481 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/libcinit/cinit_send_to.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * sends data from the client to cinit + */ + + +#include "ipc.h" /* IPC */ +#include "cinit.h" /* struct cinit_message */ + +int cinit_send_to(struct cinit_question *data, struct cinit_answer *res) +{ + if(!cinit_ipc_logon()) return 0; + if(!cinit_ipc_csend(data)) return 0; + if(!cinit_ipc_cread(res)) return 0; + if(!cinit_ipc_logoff()) return 0; + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/object_lists/cinit b/software/cinit/browse_source/cinit-0.3pre12/src/object_lists/cinit new file mode 100644 index 00000000..5a582a82 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/object_lists/cinit @@ -0,0 +1,52 @@ +core/build_argv.o +core/cinit.o +core/panic.o +core/set_signals.o +core/do_reboot.o +core/sig_child.o +generic/execute_sth.o +generic/file_exists.o +generic/mini_printf.o +generic/path_absolute.o +generic/path_append.o +generic/print_errno.o +generic/openreadclose.o +generic/strip_final_newline.o +generic/sleep_before_kill.o +generic/execute_and_wait.o +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +svc/gen_svc_tree.o +svc/gen_halt_tree.o +svc/list_delete.o +svc/list_insert.o +svc/list_search.o +svc/list_search_pid.o +svc/svc_create.o +svc/check_add_deps.o +svc/dep_entry_add.o +svc/dep_entry_del.o +svc/shutdown_services.o +svc/tree_exec.o +svc/svc_set_status.o +svc/svc_should_respawn.o +svc/svc_needs_status.o +svc/dep_needs_wants_add.o +svc/dep_create.o +svc/svc_success.o +svc/svc_report_status.o +svc/svc_start.o +svc/svc_fail.o +comm/read_command.o +comm/answer_svc_status.o diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/object_lists/cmd b/software/cinit/browse_source/cinit-0.3pre12/src/object_lists/cmd new file mode 100644 index 00000000..48a8211b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/object_lists/cmd @@ -0,0 +1,10 @@ +client/cmd.o +generic/print_errno.o +generic/mini_printf.o +libcinit/cinit_get_svc_status.o +libcinit/cinit_get_version.o +libcinit/cinit_send_to.o +ipc/current/cinit_ipc_logon.o +ipc/current/cinit_ipc_csend.o +ipc/current/cinit_ipc_cread.o +ipc/current/cinit_ipc_logoff.o diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/object_lists/halt.kill b/software/cinit/browse_source/cinit-0.3pre12/src/object_lists/halt.kill new file mode 100644 index 00000000..e5b12a36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/object_lists/halt.kill @@ -0,0 +1,3 @@ +client/halt.kill.o +generic/print_errno.o +generic/mini_printf.o diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/object_lists/poweroff.kill b/software/cinit/browse_source/cinit-0.3pre12/src/object_lists/poweroff.kill new file mode 100644 index 00000000..306fc0bf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/object_lists/poweroff.kill @@ -0,0 +1,3 @@ +client/poweroff.kill.o +generic/print_errno.o +generic/mini_printf.o diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/object_lists/reboot.kill b/software/cinit/browse_source/cinit-0.3pre12/src/object_lists/reboot.kill new file mode 100644 index 00000000..f851badf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/object_lists/reboot.kill @@ -0,0 +1,3 @@ +client/reboot.kill.o +generic/print_errno.o +generic/mini_printf.o diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/os/freebsd/halt.c b/software/cinit/browse_source/cinit-0.3pre12/src/os/freebsd/halt.c new file mode 100644 index 00000000..37064cc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/os/freebsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/os/freebsd/objects b/software/cinit/browse_source/cinit-0.3pre12/src/os/freebsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/os/freebsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/os/freebsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre12/src/os/freebsd/poweroff.c new file mode 100644 index 00000000..c73dd079 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/os/freebsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWEROFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/os/freebsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre12/src/os/freebsd/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/os/freebsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/os/linux/halt.c b/software/cinit/browse_source/cinit-0.3pre12/src/os/linux/halt.c new file mode 100644 index 00000000..5ee3eb53 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/os/linux/halt.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * How to halt the system + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT_SYSTEM); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/os/linux/objects b/software/cinit/browse_source/cinit-0.3pre12/src/os/linux/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/os/linux/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/os/linux/poweroff.c b/software/cinit/browse_source/cinit-0.3pre12/src/os/linux/poweroff.c new file mode 100644 index 00000000..c7d2b1c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/os/linux/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff the system + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWER_OFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/os/linux/reboot.c b/software/cinit/browse_source/cinit-0.3pre12/src/os/linux/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/os/linux/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/os/netbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre12/src/os/netbsd/halt.c new file mode 100644 index 00000000..972aecf9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/os/netbsd/halt.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_halt(void) +{ + reboot(RB_HALT,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/os/netbsd/objects b/software/cinit/browse_source/cinit-0.3pre12/src/os/netbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/os/netbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/os/netbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre12/src/os/netbsd/poweroff.c new file mode 100644 index 00000000..17d7b259 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/os/netbsd/poweroff.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_poweroff(void) +{ + reboot(RB_HALT|RB_POWERDOWN,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/os/netbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre12/src/os/netbsd/reboot.c new file mode 100644 index 00000000..14313e17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/os/netbsd/reboot.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/os/openbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre12/src/os/openbsd/halt.c new file mode 100644 index 00000000..37064cc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/os/openbsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/os/openbsd/objects b/software/cinit/browse_source/cinit-0.3pre12/src/os/openbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/os/openbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/os/openbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre12/src/os/openbsd/poweroff.c new file mode 100644 index 00000000..bf4120e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/os/openbsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_HALT | RB_POWERDOWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/os/openbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre12/src/os/openbsd/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/os/openbsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/check_add_deps.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/check_add_deps.c new file mode 100644 index 00000000..36d8a2cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/check_add_deps.c @@ -0,0 +1,128 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +/* FIXME: clean headers, check: + * getcwd */ +#include + +#include +#include +#include +#include +#include +#include +#include + + +#include /* PATH_MAX */ +#include /* malloc */ +#include /* strcpy */ + +#include "intern.h" /* mini_printf */ +#include "messages.h" +#include "svc.h" + +int check_add_deps(struct listitem *svc, int type) +{ + char buf[PATH_MAX+1]; + char oldpath[PATH_MAX+1]; + struct dirent *tdirent; + struct dep *deps = NULL; + struct listitem *new_svc; + DIR *d_tmp; + + /* remember where we started */ + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + /* FIXME remove in production */ + D_PRINTF("CAD::"); + D_PRINTF(svc->abs_path); + D_PRINTF("\n"); + + /* Create path */ + strcpy(buf,svc->abs_path); + if(type == DEP_NEEDS) { + if(!path_append(buf,C_NEEDS)) return 0; + } else { + if(!path_append(buf,C_WANTS)) return 0; + } + + d_tmp = opendir(buf); + if(d_tmp == NULL) { + if(errno != ENOENT) { + print_errno(buf); + return 0; + } + return 1; /* it's fine when there's no dependencies */ + } + + if(chdir(buf) == -1) { /* change to needs or wants */ + print_errno(buf); + return 0; + } + + while((tdirent=readdir(d_tmp))!=NULL) { + if(*(tdirent->d_name) == '.') continue; /* ignore .* */ + + /* skip non-working directories / broken links + * path_absolute reports errors on failure */ + if(!path_absolute(tdirent->d_name,buf,PATH_MAX+1)) continue; + + /* 1. create the service we depend on + * 2. initialize its dependencies + */ + if(!(new_svc = gen_svc_tree(buf))) return 0; + + /* We need ALL dependencies, as we are called only once + * per service; no need to test that first! + * + * And the other service CANNOT know anything about us yet, + * so we always add us to its list. + */ + + /* Dependencies: + * - a.needs b; add b to the list of dependencies. + * - a.needs b; add a to the list of needed by b. + * + * 1. check whether the dependency already exists + * 2. otherwise add it + * 3. do it once for needs, once for needed_by + */ + + /* create a dependency entry containing us */ + deps = dep_create(svc); + if(!deps) return 0; + + if(type == DEP_NEEDS) { + dep_entry_add(&(new_svc->needed),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->needs),deps); + } else { + dep_entry_add(&(new_svc->wanted),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->wants),deps); + } + } + if(chdir(oldpath) == -1) { + print_errno(buf); + return 0; + } + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/dep_create.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/dep_create.c new file mode 100644 index 00000000..691d66b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/dep_create.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Create dependency + */ + +#include /* NULL */ +#include /* malloc() */ +#include "svc.h" /* structs */ + +/* search for an entry by path, reverse: from end to the beginning */ +struct dep *dep_create(struct listitem *svc) +{ + struct dep *entry; + + entry = malloc(sizeof(struct dep)); + if(!entry) return NULL; + entry->svc = svc; + + return entry; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/dep_entry_add.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/dep_entry_add.c new file mode 100644 index 00000000..2ac16443 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/dep_entry_add.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include "svc.h" /* types */ + +/* + * list: pointer to the list + * new: pointer to data to insert (already filled up) + * + * We add the new element BEFORE the existing element! + */ +void dep_entry_add(struct dep **deplist, struct dep *new) +{ + if(*deplist == NULL) { /* new list */ + *deplist = new; + (*deplist)->prev = *deplist; + (*deplist)->next = *deplist; + } else { /* already existing */ + new->next = *deplist; /* new-> first */ + new->prev = (*deplist)->prev; /* last <- new */ + (*deplist)->prev->next = new; /* last -> new */ + (*deplist)->prev = new; /* new <- first */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/dep_entry_del.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/dep_entry_del.c new file mode 100644 index 00000000..ab822a73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/dep_entry_del.c @@ -0,0 +1,37 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include /* free() */ + +#include "svc.h" /* struct *dep */ + +/* + * tmp: pointer to data to remove (must not be NULL) + * + * Returns either the next object or NULL if there's no next object + */ +struct dep *dep_entry_del(struct dep *del) +{ + struct dep *tmp; + + /* last service in the list */ + if(del->next == del && del->prev == del) { + tmp=NULL; + } else { + /* remove from list */ + del->prev->next = del->next; + del->next->prev = del->prev; + tmp = del->next; + } + + free(del); + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/dep_needs_wants_add.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/dep_needs_wants_add.c new file mode 100644 index 00000000..a4271e6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/dep_needs_wants_add.c @@ -0,0 +1,64 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Add all wants or needs from a specific service to dep list + * -> this builds the needs and needed_by and + * -> or this builds the wants and wanted_by and + * + * This function is used to fillup the starting list with dependencies + * after a service has sucessfully been executed. + */ + +#include /* NULL */ +#include "svc.h" /* struct *dep */ + +/* + * list: pointer to the list + * svc: pointer to data to the service + */ + +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type) +{ + struct dep *tmp, *new, *end; + + if(type == DEP_NEEDS) { + end = svc->needed; + } else { + end = svc->wanted; + } + + /* Place to the first dependency of this service */ + tmp = end; + if(tmp != NULL) { + do { + /* Add service to the starter list, which + * - should be started once + * - should be respawned (both VIRGIN services!) + * - and which are not already in the list! + */ + if(((tmp->svc->status & ST_SH_ONCE) || + (tmp->svc->status & ST_SH_RESPAWN)) && + !(tmp->svc->status & ST_IN_LIST)) { + new = dep_create(tmp->svc); + if(!new) return 0; + tmp->svc->status |= ST_IN_LIST; + dep_entry_add(list,new); + } + /* FIXME: Clearify if we should go forward or backwards? + * this decision will influence starting order + * and may thereby add a minimal mount of speed enhancement + * + * As far as I can see it is not predictable, which way is + * better, because it heavily depends on the other services. + * + * If you know better, provide me with a patch ;-) + */ + tmp = tmp->next; + } while(tmp != end); + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/gen_halt_tree.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/gen_halt_tree.c new file mode 100644 index 00000000..fc297de7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/gen_halt_tree.c @@ -0,0 +1,44 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * This function reads the full service tree and generates + * a list of services to begin shutdown (those that are not + * wanted or needed by any other service). + */ + +#include /* NULL */ + +#include "svc.h" /* structs */ +#include "intern.h" /* structs */ + +struct dep *gen_halt_list(struct listitem *svc_tree) +{ + struct dep *list = NULL, *new = NULL; + struct listitem *tmp; + + /* no tree? nothing to shutdown. */ + if(!svc_tree) { + return NULL; + } + + /* find all services that do not depend on other services: + * - empty wants? (currently ignore them) + * - empty needs! + */ + tmp = svc_tree; + do { + if(tmp->needs == NULL) { + /* create new dependency */ + new = dep_create(tmp); + if(!new) return NULL; + + dep_entry_add(&list,new); + } + tmp = tmp->next; + } while(tmp != svc_tree); + + return list; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/gen_svc_tree.c new file mode 100644 index 00000000..80ea6463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/gen_svc_tree.c @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +#include + +#include "intern.h" /* functions */ +#include "svc.h" + +struct listitem *gen_svc_tree(char *svc) +{ + struct listitem *li; + struct dep *deps; + + /* only do something if the service is not already known */ + if((li=list_search(svc))) return li; + + /* create a template, so other instances won't try to recreate us */ + if(!(li=svc_create(svc))) return NULL; + + if(!check_add_deps(li,DEP_NEEDS)) return NULL; + if(!check_add_deps(li,DEP_WANTS)) return NULL; + + /* no dependencies? then you are a start service */ + if(!li->wants && !li->needs) { + deps = dep_create(li); + if(!deps) return NULL; + dep_entry_add(&svc_init,deps); + + /* Mark it as being in the startup list, so it does not + * get added again in a dep_needs_wants_add call */ + li->status |= ST_IN_LIST; + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_delete.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_delete.c new file mode 100644 index 00000000..d036b979 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_delete.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* free */ +#include "intern.h" /* list_search */ +#include "svc.h" /* listitem */ + +/* ... */ +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if(tmp == NULL) { + return 0; + } + + tmp->next->prev = tmp->prev; + tmp->prev->next = tmp->next; + + free(tmp->abs_path); + free(tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_display_all.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_display_all.c new file mode 100644 index 00000000..4955acbb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_display_all.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Show all list elements - mainly for debugging + */ + +#include /* NULL */ + +#include "messages.h" /* D_PRINTF */ +#include "svc.h" + +int list_display_all() +{ + struct listitem *tmp; + + if(svc_list == NULL) { + return 0; + } else { + tmp = svc_list; + } + + do { + D_PRINTF("Service: "); + D_PRINTF(tmp->abs_path); + D_PRINTF("\n"); + + tmp = tmp->prev; + } while(tmp != svc_list); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_insert.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_insert.c new file mode 100644 index 00000000..a0ad6f2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_insert.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* malloc */ +#include /* bzero / memset */ +#include "svc.h" /* the list pointer */ + +struct listitem *list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc(sizeof(struct listitem)); + if(tmp == NULL) return NULL; + memset(tmp, '\0', sizeof(struct listitem)); + + if(svc_list == NULL) { /* list is empty, we have to init it */ + svc_list = tmp; + svc_list->next = svc_list; + svc_list->prev = svc_list; + } else { /* list has members,add this one */ + tmp->next = svc_list; /* begin after the new element */ + tmp->prev = svc_list->prev; /* change to the ex-last */ + svc_list->prev->next = tmp; /* change last element */ + svc_list->prev = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc(strlen(path) + 1); + if(tmp->abs_path == NULL) return NULL; + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_modify.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_modify.c new file mode 100644 index 00000000..267539d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_modify.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED. Not in use anymore. + * + * part of cLinux/cinit + * + * List handling + */ + +#error "NOT IN USE" + +#include +#include +#include "cinit.h" +#include "comm.h" /* for ST_OFF */ +#include "svc.h" /* for ST_OFF */ + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + + tmp = list_search(path); + if(tmp == NULL) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_search.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_search.c new file mode 100644 index 00000000..3b1733e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_search.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* NULL */ +#include /* strcmp */ +#include "svc.h" /* struct listitem */ + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if(svc_list == NULL) { /* think positive */ + return NULL; + } else { + tmp = svc_list; + } + + do { + if(!strcmp(path, tmp->abs_path)) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_search_pid.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_search_pid.c new file mode 100644 index 00000000..4f9634c9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/list_search_pid.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Search by pid + */ + +#include /* NULL */ +#include /* pid_t */ + +#include "svc.h" /* struct listitem */ + +struct listitem *list_search_pid(pid_t pid) +{ + struct listitem *tmp; + + if(svc_list == NULL) { + return NULL; + } else { + tmp = svc_list; + } + + do { + if(pid == tmp->pid) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/shutdown_services.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/shutdown_services.c new file mode 100644 index 00000000..3432c8ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/shutdown_services.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Shutdown all services: This is more or less the negative + * version of 'tree_exec()' + */ + +#include "svc.h" /* struct */ +void shutdown_services(struct listitem *svc) +{ + while(0) { + svc++; + } + /* stop services in the correct order: + * - begin at a random process, and walk the tree up to the wanted_by and needed_by + * - switch to next service, as soon as this tree is finished + */ + +// while(we_are_wanted_or_needed) { +// shutdown_services(next_wants_or_needs_us); +// } + +// shutdown_services(svc) + + /* begin at svc, iterate until a service without dependencies is found, + * continue stopping through wanted-by / needed-by / wants / needs */ + + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_add_needs.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_add_needs.c new file mode 100644 index 00000000..2c045328 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_add_needs.c @@ -0,0 +1,69 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED! + * + * part of cLinux/cinit + * + * List handling + */ + +#error "NOT IN USE" + +#include "cinit.h" +#include "messages.h" + +int svc_add_needs(char *needs, char *is_needed) +{ + struct listitem *svc_needs, *svc_is_needed; + + + /* retrieve service entries in global service list */ + svc_needs = svc_is_needed = NULL; + svc_needs = list_search(needs); + svc_is_needed = list_search(is_needed); + + /* and exit if one is missing */ + if( !svc_needs || !svc_is_needed ) { + return 0; + } + + /* first add needs */ + + /* now add needed_by */ + + malloc... /* for adding */ + + if(svc->needs == NULL) { + svc->needs = neu; + } else { + svc->next = neu; + } + + /* write generic function for dependencies or even all lists */ + dep_entry_add(list_pointer,new_entry); + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members,add this one */ + tmp->after = list; /* begin after the new element */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_create.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_create.c new file mode 100644 index 00000000..a9e489d5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_create.c @@ -0,0 +1,47 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* strcpy */ +#include /* stat */ +#include /* stat */ +#include /* PATH_MAX */ +#include /* errno */ + +#include "svc.h" /* listitem */ +#include "intern.h" /* path_append */ +#include "messages.h" /* D_PRINTF */ + +/* checking for existence is done before! */ +/* FIXME: check heedars for conformance with POSIX */ +struct listitem *svc_create(char *svc) +{ + char buf[PATH_MAX+1]; + struct stat statbuf; + struct listitem *li; + + li = list_insert(svc,-1); + if(!li) return NULL; + + /* FIXME: add two path length checks? svc and svc+strlen(C_RESPAWN)? */ + strcpy(buf,svc); + if(!path_append(buf,C_RESPAWN)) return NULL; + + if(stat(buf,&statbuf) == -1) { + if(errno == ENOENT) { + svc_set_status(li,ST_SH_ONCE); + } else { + return NULL; + } + } else { + svc_set_status(li,ST_SH_RESPAWN); + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_fail.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_fail.c new file mode 100644 index 00000000..7c150c85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_fail.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Mark the service as being failed + */ + +#include "svc.h" + +void svc_fail(struct listitem *li) +{ + if(li->status & ST_ONCE_RUN) + li->status = ST_ONCE_FAIL; + else { + /* FIXME: do something senseful, record time of dead? */ + li->status = ST_RESPAWNING; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_needs_status.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_needs_status.c new file mode 100644 index 00000000..5723563a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_needs_status.c @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return status of the needs of this service + */ + +#include /* NULL */ +#include "svc.h" /* service information */ + +int svc_needs_status(struct listitem *svc) +{ + int retval = SNS_NEEDS_STARTED; + struct dep *deps = svc->needs; + + if(deps == NULL) return SNS_NEEDS_STARTED; /* no needs, everything fine */ + + do { + /* worst case: need failed */ + if((deps->svc->status & ST_NEED_FAILD) || + (deps->svc->status & ST_ONCE_FAIL) || + (deps->svc->status & ST_BAD_ERR) ){ + retval = SNS_NEEDS_FAILED; + break; + } + /* services are being started */ + if((deps->svc->status & ST_SH_ONCE) || + (deps->svc->status & ST_SH_RESPAWN) || + (deps->svc->status & ST_ONCE_RUN) ){ + retval = SNS_NEEDS_UNFINISHED; + } + deps = deps->next; + } while(deps != svc->needs); + + return retval; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_report_status.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_report_status.c new file mode 100644 index 00000000..3802afe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_report_status.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Tell the world what happened to the service + */ + +#include "intern.h" /* mini_printf */ +#include "messages.h" /* MSG_INTRO_SVC */ + +void svc_report_status(char *svc, char *msg, char *err) +{ + mini_printf(MSG_INTRO_SVC,1); + mini_printf(svc,1); + mini_printf(": ",1); + mini_printf(msg,1); + if(err) { + mini_printf(" (",1); + mini_printf(err,1); + mini_printf(")",1); + } + mini_printf("\n",1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_respawn_check.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_respawn_check.c new file mode 100644 index 00000000..0fae4def --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_respawn_check.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED? not in use. + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#error "NOT IN USE" + +#include /* NULL */ +#include /* PATH_MAX */ +#include "svc.h" + +/* checking for existence is done before! */ +int svc_respawn_check(struct listitem *svc) +{ + char buf[PATH_MAX+1]; + + strcpy(buf,svc->abs_path); + if(!path_append(buf,C_RESPAWN)) return 0 +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_set_status.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_set_status.c new file mode 100644 index 00000000..73d5da91 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_set_status.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_set_status(struct listitem *li, int status) +{ + return (li->status = status); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_should_respawn.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_should_respawn.c new file mode 100644 index 00000000..04acfe1d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_should_respawn.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return whether should respawn or not + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_should_respawn(struct listitem *li) +{ + return (li->status & ST_SH_RESPAWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_start.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_start.c new file mode 100644 index 00000000..6e7b8651 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_start.c @@ -0,0 +1,91 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start a service + */ + +#include /* NULL */ +#include /* fork */ +#include /* strerror */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* nanosleep() */ +//#include /* gettimeofday() */ + +#include "svc.h" /* struct * */ +#include "messages.h" /* MSG_* */ +#include "intern.h" /* execute_sth */ + +//void svc_start(struct listitem *li, int strict) +void svc_start(struct listitem *li, int delay) +{ + char buf[PATH_MAX+1]; + struct timespec ts; + + /* FIXME: All cleanup must go here + * close(fds); + * reset signals + * reset env? + * + * FIXME: Add logging possibility to here + * open (0,1,2) to other processes, if specified */ + li->pid = fork(); + + /********************** Error ************************/ + if(li->pid < 0) { + svc_report_status(li->abs_path,MSG_SVC_FORK,strerror(errno)); + svc_set_status(li,ST_BAD_ERR); + return; + } + /********************** parent ************************/ + if(li->pid > 0) { + /* set start time */ + li->start = time(NULL); + + if(li->status & ST_SH_ONCE) + li->status = ST_ONCE_RUN; + else + li->status = ST_RESPAWNING; + return; + } + + /********************** Client / fork() ************************/ + /* sleep, if necesseray */ + printf("Delay: %d\n", delay); + if(delay) { + ts.tv_sec = delay; + ts.tv_nsec = 0; + + /* FIXME: also report value; int2char */ + svc_report_status(li->abs_path,MSG_SVC_SLEEP,NULL); + + /* do not need to check for errors, because we can continue anyway */ + nanosleep(&ts,NULL); + } + svc_report_status(li->abs_path,MSG_SVC_START,NULL); + + /* length check is done by path_append */ + strcpy(buf,li->abs_path); + if(!path_append(buf,C_ON)) return; + + /* Check for existence */ + li->status = file_exists(buf); + + if(li->status == FE_NOT) { + _exit(0); /* nothing there? fine! */ + } + + if(li->status == FE_FILE) { + /* FIXME: reset signals: Is this necessary? Or does fork clean it anyway? */ + set_signals(ACT_CLIENT); + + /* and now, fire it up */ + execute_sth(buf); + } else { + /* either no file or an error */ + _exit(1); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_success.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_success.c new file mode 100644 index 00000000..dc4057e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/svc_success.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include /* NULL */ + +#include "svc.h" /* listitem, svc_report_status */ +#include "messages.h" /* messages */ + +void svc_success(struct listitem *li) +{ + if(li->status & ST_ONCE_RUN) { + svc_report_status(li->abs_path,MSG_SVC_OK_ONCE,NULL); + li->status = ST_ONCE_OK; + } else { + svc_report_status(li->abs_path,MSG_SVC_OK_RESPAWN,NULL); + li->status = ST_RESPAWNING; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/svc/tree_exec.c b/software/cinit/browse_source/cinit-0.3pre12/src/svc/tree_exec.c new file mode 100644 index 00000000..a6b5525e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/svc/tree_exec.c @@ -0,0 +1,68 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + +#include /* NULL */ + +#include "intern.h" /* mini_printf */ +#include "svc.h" /* svc_init */ +#include "messages.h" /* messages */ + +/* some thoughts... + * + * - we already generated the tree, now we need to start it from + * the endings + * + * - after starting the first service we have to care about SIG_CHILD + * to record changes + * + * - we execute all services in parallel without problems, because of + * SIG_CHILD notification + * + * - After successfully starting the service we start the services that + * need or want that service + */ +int tree_exec(struct dep *start) +{ + struct dep *tmp = start; + + mini_printf(MSG_TREE_EXEC,1); + + /* the main starting loop: All services in this list should be + * started, but it is possible that dependent services are in the + * list. In this case simply skip the current service + */ + do { + switch(svc_needs_status(tmp->svc)) { + case SNS_NEEDS_STARTED: + svc_report_status(tmp->svc->abs_path,"Needs sind durch",NULL); + /* execute service, add dependencies, remowe from list */ + svc_start(tmp->svc,0); + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_NEEDS)) return 0; + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_WANTS)) return 0; + tmp = dep_entry_del(tmp); + break; + + case SNS_NEEDS_FAILED: + /* mark service as NEED_FAILD and delete from list */ + svc_report_status(tmp->svc->abs_path,MSG_SVC_NEED_FAIL,NULL); + svc_set_status(tmp->svc,ST_NEED_FAILD); + tmp = dep_entry_del(tmp); + break; + + /* We never enter this path! */ + case SNS_NEEDS_UNFINISHED: + svc_report_status(tmp->svc->abs_path,"NEEDS AM ABARBEITEN",NULL); + /* continue with the next item */ + tmp = tmp->next; + break; + } + } while(tmp != NULL); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/test/data1.c b/software/cinit/browse_source/cinit-0.3pre12/src/test/data1.c new file mode 100644 index 00000000..341c6615 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/test/data1.c @@ -0,0 +1,47 @@ +#include +#include +#include + +int main() +{ + int a, b, e; + char *c = "/etc/cinit/svc/...", *data; + + int a2, b2; + char *c2; + + a2 = b2 = 0; + + a = 1001; + b = strlen(c); + c2 = malloc(b+1); + if(!c2) return 40; + + e = sizeof(a) + sizeof(b) + b; + + printf("e=%d (b=%d)\n",e,b); + + data = malloc(e); + if(!data) return 20; + + /* in */ + strcpy(data,(char *) &a); + e = sizeof(a); + strcpy(&data[e],(char *) &b); + e += sizeof(b); + strcpy(&data[e],c); + + /* out */ + strncpy((char *) &a2,data,sizeof(a2)); + printf("a2=%d\n",a2); + e = sizeof(a2); + + strncpy((char *) &b2,&data[e],sizeof(b2)); + printf("b2=%d\n",b2); + e += sizeof(b2); + + strncpy(c2,&data[e],b2); + printf("c2=%s\n",c2); + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/test/memcpy.c b/software/cinit/browse_source/cinit-0.3pre12/src/test/memcpy.c new file mode 100644 index 00000000..b3abfcb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/test/memcpy.c @@ -0,0 +1,46 @@ +#include /* memcpy() */ +#include + +struct cinit_answer { + int options; + char data[2045]; +}; + +int f1(struct cinit_answer *buf); +int f2(struct cinit_answer *buf); + + +int f2(struct cinit_answer *buf) +{ + struct cinit_answer msg; + + printf("f2: %p\n",buf); + + msg.options = 12; + strcpy(msg.data,"stringit"); + + printf("addr= %p\n", memcpy(buf,&msg,sizeof(*buf))); + + printf("ok\n"); + + return 1; +} + +int f1(struct cinit_answer *buf) +{ + printf("f1: %p\n",buf); + printf("ret=%d\n",f2(buf)); + + return 1; +} + +int main() +{ + struct cinit_answer test; + + if(!f1(&test)) return 1; + + printf("s: %s d: %d\n",test.data, test.options); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/test/test-newline.c b/software/cinit/browse_source/cinit-0.3pre12/src/test/test-newline.c new file mode 100644 index 00000000..95e03a36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/test/test-newline.c @@ -0,0 +1,29 @@ +#include +#include +#include +#include + +char *strip_final_newline(char *test1); + +int main() +{ + //char *test1 = "zeile1\nzeile2\n"; + //char *test2 = "zeile1\nzeile2\nzeile3"; + char *test1; + char *test2; + + test1 = malloc(50); + test2 = malloc(50); + + strcpy(test1,"zeile1\nzeile2\n"); + strcpy(test2,"zeile1\nzeile2\nzeile3"); + + char *result; + result = strip_final_newline(test1); + printf("A%sA\n",result); + + result = strip_final_newline(test2); + printf("B%sB\n",result); + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/test/test_build_argv+link.c b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_build_argv+link.c new file mode 100644 index 00000000..f74b4f36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_build_argv+link.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec_link"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/test/test_build_argv.c b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_build_argv.c new file mode 100644 index 00000000..3938aa0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_build_argv.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec new file mode 100644 index 00000000..e5cf3f01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec @@ -0,0 +1,7 @@ +#!/bin/sh +# Nico Schottelius +# Test-skript for cinit + +echo '$0': "$0" +echo '$@': "$@" +echo 'cinit_is_great:' $cinit_is_great diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec.env b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec.env new file mode 100644 index 00000000..853e0663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec.env @@ -0,0 +1 @@ +cinit_is_great=yes diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec.params b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec.params new file mode 100644 index 00000000..afe0f2ef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec.params @@ -0,0 +1 @@ +Let's see if we read the arguments....YES! diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec_link b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec_link new file mode 120000 index 00000000..c2ec9306 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec_link @@ -0,0 +1 @@ +test_exec \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec_link.env b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec_link.env new file mode 120000 index 00000000..30ea4990 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec_link.env @@ -0,0 +1 @@ +test_exec.env \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec_link.params b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec_link.params new file mode 120000 index 00000000..0b77c256 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_exec_link.params @@ -0,0 +1 @@ +test_exec.params \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/test/test_gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_gen_svc_tree.c new file mode 100644 index 00000000..c13c46b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_gen_svc_tree.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test gen_svc_tree + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + gen_svc_tree("/etc/cinit/svc/init"); + list_display_all(); +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/test/test_openreadclose.c b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_openreadclose.c new file mode 100644 index 00000000..2f722da5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/test/test_openreadclose.c @@ -0,0 +1,16 @@ +#include + +int openreadclose(char *filename, char **where); + +int main() +{ + char *data; + char *file = "test_openreadclose.c"; + + openreadclose(file,&data); + + printf("%s\n",data); + + return 1; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/test/tired.c b/software/cinit/browse_source/cinit-0.3pre12/src/test/tired.c new file mode 100644 index 00000000..112424ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/test/tired.c @@ -0,0 +1,22 @@ +#include + +struct msgq_server_short { + long mtype; + int mu; +}; + +main() +{ + struct msgq_server_short t1, *t2; + + t2 = &t1; + + int a = sizeof(t1); + int b = sizeof(t2); + int c = sizeof(*t2); + + printf("a=%d,b=%d,c=%d\n",a,b,c); + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/src/test/transfer_structure.c b/software/cinit/browse_source/cinit-0.3pre12/src/test/transfer_structure.c new file mode 100644 index 00000000..5e95b997 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/src/test/transfer_structure.c @@ -0,0 +1,56 @@ +#include +#include +#include +#include + +struct test { + char buf[2048]; + int cmd; +}; + +struct badtest { + char *buf; + int cmd; +}; + +#define PATH "/etc/cinit/svc/local-tuning/udev" + +int main() +{ + struct test cmd; + struct badtest nocmd; + int pfd[2]; + int tmp; + + strcpy(cmd.buf,"/which/service/to/disable"); + cmd.cmd = 42; + + if(pipe(pfd) == -1) return 1; + nocmd.cmd = 42; + nocmd.buf = malloc(strlen(PATH)+1); + strcpy(nocmd.buf,PATH); + + + if(fork() > 1) { + tmp = write(pfd[1],&cmd,sizeof(cmd)); + printf("PA: tmp=%d\n",tmp); + + tmp = write(pfd[1],&nocmd,sizeof(nocmd)); + printf("PA: tmp2=%d\n",tmp); + } else { + strcpy(cmd.buf,""); + cmd.cmd = 0; + + tmp = read(pfd[0],&cmd,sizeof(cmd)); + printf("CH: tmp = %d, cmd = %d, buf = %s\n",tmp,cmd.cmd,cmd.buf); + + free(nocmd.buf); + nocmd.cmd = 0; + + tmp = read(pfd[0],&nocmd,sizeof(nocmd)); + printf("CH: tmp = %d, cmd = %d, buf = %s\n",tmp,nocmd.cmd,nocmd.buf); + } + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre12/util/README b/software/cinit/browse_source/cinit-0.3pre12/util/README new file mode 100644 index 00000000..f66e0ddb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/util/README @@ -0,0 +1,4 @@ +-- OBSOLETED -- + -> This code is not in use in cinit-0.3 anymore! +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.3pre12/util/ccontrol.c b/software/cinit/browse_source/cinit-0.3pre12/util/ccontrol.c new file mode 100644 index 00000000..95bc5212 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/util/ccontrol.c @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * ccontrol: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define USAGE_TEXT "ccontrol - control cinit\n\n" \ + "Usage:\n\nccontrol -[phurs]\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-u\t- (update) Reboot (warm) and update cinit\n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n\n" \ + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * ccontrol: control cinit + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 2) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + + switch(argv[1][1]) { + case 'p': /* power off */ + LOG(MSG_POWER_OFF); + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + LOG(MSG_HALT); + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + LOG(MSG_REBOOT); + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + LOG(MSG_RESCUE); + msg_reboot(CMD_RESCUE); + break; + + case 'u': /* update */ + LOG(MSG_UPDATE); + msg_reboot(CMD_UPDATE); + break; + + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* cinit-0.2 return codes implemented - nothing changed*/ diff --git a/software/cinit/browse_source/cinit-0.3pre12/util/cservice.c b/software/cinit/browse_source/cinit-0.3pre12/util/cservice.c new file mode 100644 index 00000000..66be6563 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/util/cservice.c @@ -0,0 +1,164 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * cservice: control cinit services + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit services + */ + +#define USAGE_TEXT "cservice - start and stop cinit services\n\n" \ + "cservice -[ear] \n" \ + "\t-e\t- (ein,on ) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n" \ + "\t-r\t- (restart) stop and start a service\n" + +/*********************************************************************** + * fuzzy_path: allow other kinds of path specification .. + */ +char *fuzzy_path(char *rpath) +{ + char pathtmp[PATH_MAX]; + char *re = NULL; + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return NULL; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(rpath); + return NULL; + } + + re = malloc( strlen(pathtmp) + 1); + + if(re != NULL) { + strcpy(re,pathtmp); + } + + return re; +} + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + char *real_name = NULL; + + /* argv */ + if(argc != 3) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + if(strlen(argv[1]) != 2) C_USAGE(MSG_ERR_ARGS_LEN); + + real_name = fuzzy_path(argv[2]); + + /* fuzzy path failed, exit! */ + if(real_name == NULL) { + return 1; + } + switch(argv[1][1]) { + case 'a': /* aus */ + case 'r': /* restart */ + switch( msg_svc_on_off(real_name,CMD_STOP_SVC) ) { + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_OFF: + SERVICE_LOG(real_name,LOG_SVC_STOPED); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + /* FIX THIS AFTER cinit-0.2 */ + case RT_TMPNOW: + case RT_ERR: + case RT_SVC_FAILED: + case RT_UNSPEC: + case RT_SUCCESS: + case ST_NEED_FAIL: + case ST_TMP: + case ST_ONCE: + case RT_NOTEXIST: + case ST_RESPAWN: +// SERVICE_LOG(real_name,"Ein bekanntest ding"); + break; +/* default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; */ + } + if( argv[1][1] == 'a') break; /* only continue if restarting */ + + case 'e': /* ein */ + switch (run_svc(real_name)) { /* run_svc fuzzys itself */ + case RT_NOTEXIST: + SERVICE_LOG(real_name,LOG_SVC_NOTEXIST); + break; + case RT_SVC_FAILED: + SERVICE_LOG(real_name,LOG_SVC_FAILED); + break; + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_ONCE: + SERVICE_LOG(real_name,LOG_SVC_ONCE); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + case ST_RESPAWN: + SERVICE_LOG(real_name,LOG_SVC_RESPAWN); + break; + case ST_NEED_FAIL: + SERVICE_LOG(real_name,LOG_NEED_FAIL); + break; + default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; + } + break; + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* uses cinit-0.2 return code style */ diff --git a/software/cinit/browse_source/cinit-0.3pre12/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.3pre12/util/msg_reboot.c new file mode 100644 index 00000000..efe78ec6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre12/util/msg_reboot.c @@ -0,0 +1,21 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + if(!begin_msg(cmd)) return 0; + close(sock); + return 1; +} +/* clean for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre13/ b/software/cinit/browse_source/cinit-0.3pre13/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.3pre13/.gitignore b/software/cinit/browse_source/cinit-0.3pre13/.gitignore new file mode 100644 index 00000000..c346b4fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/.gitignore @@ -0,0 +1,29 @@ +*.o +*.a +*0? +MT +ddoc +contrib+tools/cinit.graph.text +config.h +sbin +tmp +os/current +tmpbin +src/os/current +src/ipc/current +src/cinit +*.html +*.htm +*.man +*.texi +*.texi +*.docbook +src/halt.kill +src/poweroff.kill +src/reboot.kill +doc/man/*.[0-9] +doc/man/*.xml +src/cmd +.*.swp +.exclude +src/.configured diff --git a/software/cinit/browse_source/cinit-0.3pre13/CHANGES b/software/cinit/browse_source/cinit-0.3pre13/CHANGES new file mode 100644 index 00000000..7e2b83a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/CHANGES @@ -0,0 +1,99 @@ +cinit-0.3pre13: 2007-09-26 + - Added -V (get cmd version), -h (help), -p (get pid) to cmd + - Cleaned up namemsage in msgq.h + - Added global service lock + - Splitted of svc.h to svc.h, svc-intern.h and svc-messages.h + - Prepared logic splitoff from cinit_ipc_listen() + - Fixed bug: fork() has a general race condition + (see src/test/fork-latency.c) through use of global lock + +cinit-0.3pre12: 2007-09-06 + - Added DESTDIR support + - Added support to get service status via cmd: cmd -s + * also supports relative paths to CINIT_DIR ("/etc/cinit") + - Fixed git clone problem: hooks are needed for dumb git + - Fixed bug: We did not wait for services to finsh, which we depend on being + ran once. + +cinit-0.3pre11: 2007-09-01 + - Added basic communication: + * client binary "cmd" with argument -v returns cinit-version + - Updated {halt,reboot,poweroff}.kill + +cinit-0.3pre10: + - Fixed make install target + - Added halt.kill, poweroff.kill and reboot.kill (including manpages!) + - Fixed invalid comparision in core/cinit.c + - Be verbose: Print what we execute + - Updated documentation + +cinit-0.3pre9: 2007-05-15 + - Implemented sleeping before respawn (static delay) + - Report broken links on execution, but ignore empty services + - Cleaned up message queue error reporting + +cinit-0.3pre8: 2007-04-06 + - Updated and merged documentation: Codingstyle and Codingguide + - Cleaned sigaction-code (fixes segfault on glibc) + - Cleaned object listings + - Added notifications at shutdown + - Fixed status check + +cinit-0.3pre7: 2007-02-17 + - Many code cleanups + - Fixed glibc problem with sigaction (for details view src/core/set_signals.c) + - Added general shutdown support (will *NOT* yet stop services, + but still stop your system) + +cinit-0.3pre6: + - Many code cleanups + - Added user documentation and cleaned up documentation in general + +cinit-0.3pre5: + - Finished new SIGCHLD handler + - First cleanups for real release. + - This version is the first 0.3pre version that can handle respawn! + +cinit-0.3pre4: + - Re-implemented execution of services. + - This version is the first 0.3pre version that COULD bootup your system! + +cinit-0.3pre3: + - Finished execution all services via the reversed service tree. + +cinit-0.3pre2: + - Finished generation of the dependency tree. + +cinit-0.3pre1: + - cinit should now compile on mostly all unices + - introduced much new code + - THIS IS A DEVELOPER RELEASE, NOT USABLE IN PRODUCTION ENVIRONMENTS. + +cinit-0.2.1: (Bugfix release) + - Fixed problem in contrib+tools/Makefile when installing + - added many new scripts to convert sys-v-init, which are still early beta + (see bin/cinit.merge.sysvinit-debian-sid) + +cinit-0.2: + - Much more verbose error reporting + - You can now also disable 'once ran' services, + - You can restart services with csevice -r + - Online speech in German is available + - C_DELAY support - variable delay for sending SIGKILL after SIGTERM + - First /etc/csys configuration example (wasserstoff) is available + - a Mailing list was created + - Added tools to analyze cinit configuration + (cinit-vis.pl, cinit.graph.text.c) + - Added tools to import and export configuration to XML + (make.cconfig.from.xml.rb,cconfig.graph.xml.rb) + - Removed unecessary signalling + - Added many helper scripts to install services (cinit.install.service*) + - Fixed many small bugs in old helper scripts (cinit.add.getty, cinit.get-conf, ...) + - Added ccontrol, which allows to control cinit + - Added update (-u) via ccontrol + - Stripped cservice, which now "only" controls services + - Removed swapoff from cinit code, should be handled by off + - Much better error and processing descriptions + - A bit more verbose reporting + - Restructured run_svc, now with better error detection + - Removed Kernel panic, when halting system diff --git a/software/cinit/browse_source/cinit-0.3pre13/COPYING b/software/cinit/browse_source/cinit-0.3pre13/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.3pre13/CREDITS b/software/cinit/browse_source/cinit-0.3pre13/CREDITS new file mode 100644 index 00000000..febdcf4b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/CREDITS @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: ls -l) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete + * providing cinit-vs.pl to visualize the cinit-tree +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) +Sandro Koechli + * testing, testing and testing cinit and cinit documentation +Marcus Wagner + * building and maintaining the Debian package +Peter Portmann + * testing cinit and documentation, writing cinit.graph.text in C, other coding +Tonnerre Lombard + * NetBSD support (host + hints) diff --git a/software/cinit/browse_source/cinit-0.3pre13/Changelog b/software/cinit/browse_source/cinit-0.3pre13/Changelog new file mode 100644 index 00000000..0fbf76f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/Changelog @@ -0,0 +1,10 @@ +Mo Okt 3 00:19:40 CEST 2005 + *Changelog can now be found in git database (cg-log) +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.3pre13/Makefile b/software/cinit/browse_source/cinit-0.3pre13/Makefile new file mode 100644 index 00000000..cce0f217 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/Makefile @@ -0,0 +1,108 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# Directories and files +CDIRS=src doc + +# +# Targets +# + +# +# Warn per default, make sure the user knows what she does +# +warn: + @cat doc/.buildwarn + +all: sources documentation +dev-all: all sizecheck + +install clean dist distclean: + @for subdir in ${CDIRS}; do \ + echo "Making $@ in $$subdir"; \ + (cd $$subdir && ${MAKE} ${MAKEFLAGS} $@) || break; \ + done; + +.PHONY: sources +sources: + ${MAKE} -C src all + +.PHONY: documentation +documentation: + ${MAKE} -C doc documentation + +sizecheck: sources + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l src/cinit > $$FILE; cat $$FILE; \ + cg-add $$FILE + cg-commit $$FILE -m "Size added" + #cg-commit $$FILE -m "Size: $$(awk '{ print $5 }' $$FILE)" + +source-size: clean + @echo -n "Source size (in KiB): " + @du -s src/ | awk '{ sum+=$$1 } END { print sum }' + + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + +config: + @./bin/cinit.configure.os + @./bin/cinit.configure.tools + @./bin/cinit.configure.ipc + @touch src/.configured + + +################################################################################ +# Tests +# +tests: + # does not work, due getting killed, due to design :-) + #./scripts/internal/compile_run_as_compiler.sh + ./scripts/internal/test_on_hosts.sh ./scripts/internal/compile_test.sh + +################################################################################ +# old +#DDOC=ddoc +#SDIRS=bin client conf comm doc generic serv util +# DO NOT CHANGE THIS. +#SBIN=sbin +#CINIT_BIN=$(SBIN)/cinit +# +#%.o: %.c +# $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< +#$(DDOC): +# mkdir $(DDOC) +# +#$(SBIN): +# mkdir $(SBIN) +# +#docs: $(DDOC) bin/cdoc-man.sh +# ./bin/cdoc-man.sh doc/cinit-doc > $(DDOC)/cinit.8 +# ./bin/cdoc-man.sh doc/cservice-doc > $(DDOC)/cservice.8 +#$(CSVC_OBJ) $(OBJ): $(CONFIG_H) +#clean: +# $(MAKE) -C src clean +# rm -f tmpbin/* +################################################################################ +#cservice: $(SBIN)/cservice +# +#$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) +# $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ +# $(STRIP) $@ +# +#ccontrol: $(SBIN)/ccontrol +# +#$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) +# $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ +# $(STRIP) $@ +# +#install:: install-dir cinit cservice ccontrol +# @echo '*** Installing cinit ***' +# ./bin/cinit.install.binary diff --git a/software/cinit/browse_source/cinit-0.3pre13/README b/software/cinit/browse_source/cinit-0.3pre13/README new file mode 100644 index 00000000..00f2651b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/README @@ -0,0 +1,106 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Unix +- true dependencies (soft and hard!) +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +FIXME: Add mailing list here + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre13/ROADMAP b/software/cinit/browse_source/cinit-0.3pre13/ROADMAP new file mode 100644 index 00000000..0bf98337 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/ROADMAP @@ -0,0 +1,115 @@ +-------------------------------------------------------------------------------- +THIS DOCUMENT SHOULD VANISH AS SOON AS EVERYTHING IS FINE +-------------------------------------------------------------------------------- + +Timeline +--------- + * ~ End of October 2006: Reunderstand the code, manifest changes [DONE] + * ~ Mid of November 2006: Have a compile-able cinit [DONE] + * ~ End of November 2006: Have a testsystem booting cinit [DONE] + * ~ Mid of December 2006: Have production stable cinit + - Begin with migration scripts + - publish installable pre-releases + * ~ End of December 2006: Have some generic migration scripts + - Have (different) understanable documents + * ~ Mid of January 2007: Begin official release of cinit-0.3 + + + + +Versions +--------- + +0.3: +~~~ + code: Make cinit compile again :) [DONE] + code: double check to remove Linux specific source from general tree [DONE] + code: seperate ipc from the rest [DONE] + code: fix / check signal handlers [DONE] + code: cleanup makefile [DONE] + code: add porting code: add support for any unix in general [DONE] + code: stabilize code, remove experimenting parts + code: remove delay support, let off/off.params do that. [DONE] + code: add special directory (/etc/cinit/conf?) for non-services [DONE] + code: move production code to src/ [DONE] + end user doc: add warning for special binaries and hint for r/o only + amiga alike systems + + doc: begin to merge old documents into new structure and move them + to the doc/ancient directory [DONE] + +0.3.1: + devel doc: how to write merging scripts + devel doc: merging framework: + - minimal (do not look at the current configuration, build minimal) + - use current system (slowly, may use old scripts) + - rebuilt current system (recommened) + + tools: general framework for merging + end user doc: merging old init to cinit + + code: add porting code: add support for freebsd + code: better readable output: + -> starting + [ started once ] + [ respawning ] + [ failed ] (+ REASON!) + [ needs failed ] (which ones) + + -> stopping + [ stopping ] (for dependencies) + [ stopped ] ? + [ not running ] ? + + code: export profile information (CINIT_PROFILE) + end user doc: using different profiles in user space + end user doc: write examples for profiles: + o switch ssh known_hosts based on profile + o different proxy settings in browsers + - environment + - mozilla settings + o start samba (for lan) + o start samba (for company lan) + o use nis and nfs (company profile) + + doc: continue to merge old documents into new structure and move them + to the doc/ancient directory +0.3.2: + end user doc: what to read to use cinit + end user doc: installing cinit + end user doc: configuring cinit + tools: writing cinit-config (graphical (dialog based?) configuration tool) + code: add porting code: add support for openbsd + + code: add reverse dependency chain (or earlier?) [DONE] + code: better support for external tools + o neustarten + o mit herunterfahren + o mit herunterfahren und allen Diensten, die abhaengen + o ohne herunterfahren + o Statische Daten + o pid vom Daemon + o pid vom einmal ausgefuehrten Programm + + + doc: end to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.3: + devel doc: writing an init system + devel doc: the conf/-configuration system + + code: check conf/ and perhaps rewrite b0rken english sentences + + code / doc: add logging support for services -> use multilog? + code: add porting code: add support for netbsd + +0.4: + first stable, tested, well documented version. + + code: check for optimisation + + other: compare with other init systems + +0.4.x: + code: add porting code: add support for other unices diff --git a/software/cinit/browse_source/cinit-0.3pre13/TODO b/software/cinit/browse_source/cinit-0.3pre13/TODO new file mode 100644 index 00000000..cdb08485 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/TODO @@ -0,0 +1,307 @@ +-------------------------------------------------------------------------------- +- define service status in one document, so repeatition stops! +-------------------------------------------------------------------------------- +- add error handling to cinit.install.binary +-------------------------------------------------------------------------------- +- add code do implement stopping / restarting with dependency tree +-------------------------------------------------------------------------------- +# cinit.create.empty.service: can only be started from the bin directory + +- Fix Switching services off !! +- Error codes when shutting down a service? +- Delay dokumentieren +- no_kill dokumentieren + +- on.out, on.err, on.in? + -> reading/writing from/to files + +- implement "no_kill" until cinit-0.2 or 0.3? + + +-------------------------------------------------------------------------------- +- Source Logic issues + - remove FIXME entries (and what should be fixed, too) +-------------------------------------------------------------------------------- +Helper scripts, rausgenommen aus Der Doku, muessen fuer +cinit-0.3 ueberprueft werden: + +Configure help scripts +~~~~~~~~~~~~~~~~~~~~~~ +cinit-conf later +Using prepared scripts + +In the bin/ directory of this tarball you'll find at least: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +Optimisations +------------- + - Installing cinit + o compiling cinit from source + o debian / gentoo + - Configuring + * add scripts! see below + - define coding guidelines -> general, with url? + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml + +tree_exec +~~~~~~~~~ +- only check dependencies (=needs) after the basic run? + +Documentation +------------- + +developer +~~~~~~~~~ +- ST_IN_LIST == startup marker, used to (NOT) insert services into startup +- dep_needs_wants_add is used to add dependencies of a service to the general + starter list + + +user +---- +- do we really need swapoff? remove umount, swapoff! + * to services! + -> they have to do it! +- dependencies with leading '.' (dot) are ignored. +- about cinit-configuration structure + * cconfig + * svc/ + * special/ (or however we called it) + - panic + - halt + - poweroff + - reboot + +-------------------------------------------------------------------------------- +FAQ +~~~ +- DOKU: what happens when a service does not terminate.... + und er als once drin ist +--> Wenn kein ReSPAWN und der Prozess beendet sich nicht, + dann haengt init! + +- multuicall probleme -> busysbox --> GIBT ES NICHT!! + ---> DOKU DAZU! mit links, doppelt links, aus test + ---> erklaeren, dass es unproblematisch ist! + +-------------------------------------------------------------------------------- +csvc: +11:09 < folken23> telmich: oder service allready started. +-------------------------------------------------------------------------------- +cinit: +11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet + werden konnte. +11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0 + zurueckgeworfen. + ---> errno in execute_sth! + +Child handlin +~~~~~~~~~~~~~g +- free() everything before starting child + +Later +~~~~~ +- close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? + -> yep, clean environment! +- logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? +-------------------------------------------------------------------------------- +- Doc + * main.text -> cleanup / remove / split + * config-dirs + * FAQ + * ideas + * meta.dependencies + - config/hints/meta depps + * optimising + - integrate into other + * README.text + - update + * replacing.init + - update / integrate + * special-services.text + - into configuring/hints? + * TODO + - into paths, if necessary + * updating.cinit + - update as soon as update is possible? + * using.rescue + - update as soon as update is possible? + * 'os-integration.text' + * 'daemons.backgrounding' + * There are some hints on how to migrate to cinit in general and also + some os specific help in the file 'migrating-init-systems.text', +- CODECHECK: + * what happens with the wants of the last services? + - are they added? + - are they added at the correct position? +- scripts + * `cinit.check.config` (doc/user/configuring.cinit.text) + -> circular depedencies! +- Doc.next: + - installing: report! + -> write report script. +- Doc later + * current-init-problems.text + - current-init-problems.text explains why cinit does not use nor recommends the use of shell scripts. + * special-services.text + +- Begin documentation + * Check Makefile + * Integrate Makefile into main Makefile + * create manpage + * Write a small manual + - install + - configure + - boot (different OS) + * generate asciidoc! +- Doc way: + * installing + * configuring + - testconfig! + * booting + - different OS / bootloader + * debugging +- Shutdomn code: + * begin at init, then shutdown wants/needs, ... +- check that the new wants and need elements are nserted the other way round + * we go to next, elements must be put before us! +- replace cinit_ipc_logon with cinit_ipc_init... + * delay ipc code -> after start! + +- Cleanup / create object lists + object-lists/ + cinit + cservice + ccontrol + cinit.halt + cinit.reboot + cinit.shutdown (shell script?!?) + + +TODO.pre9: + + Done: + - pfad korrigieren (home/..../ -> cinit.release) + - cg-add nicht aufrufen beim make all! +ser/nico/oeffentlich/computer/projekte/cinit/cinit-0.3pre8/doc' +FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l src/cinit > $FILE; cat $FILE; \ + cg-add $FILE +-rwx------ 1 nico nico 72601 2007-04-06 17:52 src/cinit +There is no GIT repository here (.git not found) +make: *** [sizecheck] Fehler 1 + - setup VM for testing: qemu/kvm/virtualbox (no commercial bloaty) + -> uml! + - sleep when respawnig! + -> static delay of five seconds + do_reboot.c: + is ipc closed? -> check! => done! + - ignore msgrcv: Interrupted system call +Session terminated, killing shell...msgq-destroy: Invalid argument +msgq-destroy: Invalid argument + - do not print an error if /etc/cinit/conf/last is non-existent! + => print it. Do not not print it, as this can aid debugging. + include locking via shm, remove test on pid1 + => not necessary imho currently + + +TODO.pre10: + Done: + cleanup client/ comm/ contrib+tools/ util/ tmp/ + Debugging cinit-configuration: + ls -lR /etc/cinit + or: cinit.read.... + +TODO.pre11: + Remove some debugging, re-introduce DEBUG() macro.. + Fix doc: + + make dist should cleanup cc / ld to sane values? + or do I experiement in tmp/*? + + http://linux.schottelius.org/cinit/browse_source/current/doc/user/config-dirs + conf/c_halt + + IPC: + * check msqg-code + * documentate the ipc functions: update devel/ipc.text + * check cinit_read_command() (devel/ipc.h) + + do_reboot.c: + write cinit_svc_shutdown + - implement do_reboot() + * so not only booting with cinit works, but also the shutdown + - write libcinit for use in cmd() + - find out why gettimeofday() and time() do strange things when called in SIG_CHLD + => bug opened in glibc, got to code testprogram + - write cinit.conf.check + * report broken links in needs/wants + * report circular dependencies + - pretty print, reporting is ugly! + Add handler for ctrl+alt+delete + * document in paths + * check whether there's an os-unspecific way to do that + cleanup bin/ + - write sys-v-init-shutdown-wrapper + * shutdown + * halt + * reboot + * poweroff + - write manpages for + - *.kill + - cmd + + install: + make install => does not overwrite critical targets + * cinit + * *.kill (see client/*) + * cmd + make force-install => overwrites /sbin/{halt,poweroff,reboot}? + => with script that wraps cmd + make install-template: + * creates categories + make install-miniconf: + * creates categories + * creates one service starting a shell (depending on the OS!) + + cleanup src/ + finish ipc code so clients can access cinit + implement CMD_INFO (see comm.h) + + +TODO.pre12: + Check and clean doc/ + Remove *TODO*+ROADMAP and leave behin doc/TODO + +TODO.pre13: + code cmd=(cservice ccontrol halt reboot shutdown poweroff) + => halt/r/... also with kill ... + Test, release and prepare for final cinit-0.3 + +TODO.0.3.1 + add log support + cinit logs to + -> shm saver + services log to + +TODO unclear + - create migration scripts diff --git a/software/cinit/browse_source/cinit-0.3pre13/TODO.doc b/software/cinit/browse_source/cinit-0.3pre13/TODO.doc new file mode 100644 index 00000000..a170a50d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/TODO.doc @@ -0,0 +1,29 @@ +- doc/user/paths.text + * finish + * add examples +- add cross-compilation howto +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + +caveats +------- + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- cinit ignores the Keyboard request +- Currently there is no support to react on 'ctr+alt+del': +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + diff --git a/software/cinit/browse_source/cinit-0.3pre13/TODO.lucky b/software/cinit/browse_source/cinit-0.3pre13/TODO.lucky new file mode 100644 index 00000000..3ac57ee5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/TODO.lucky @@ -0,0 +1,16 @@ +18:18 hey, ich hatte gerade ein wenig lust mich mit cinit zu befassen, hier also mein + kleiner bug-report: in src/include fehlt cinit.h, (alles auf das aktuelle + tarball bezogen), ich hab's aus pre9 genommen, hatte ich noch da, da git nicht + wollte(Cannot get remote repository information.), ausserdem hast du _ statt - + in doc/man/cinit.text verwendet bei der email, das mag docbook nicht, die + beiden zeilen habe ich korrigiert, danch ging schon mal make all und auch make + ins +18:35 und warum installiert er die man pages nicht mit? +07:20 so, kleiner zwischenbericht, das argv problem bei lvm gibt es mit pre10 nicht + mehr, d.h. dass man auch kein shell-skript mehr braucht um lvm/luks-devices zu + mounten :) +07:20 soweit sieht eig. alles gut aus +07:21 wenn das so bleibt, dann werd' ich dauerhaft auf cinit umsteigen :) +07:21 und wenn sich die gelegenheit bietet, dann stell ich cinit auch mal in der + info-ag von unserer schule vor :) + diff --git a/software/cinit/browse_source/cinit-0.3pre13/TODO.optimisations b/software/cinit/browse_source/cinit-0.3pre13/TODO.optimisations new file mode 100644 index 00000000..8a686b4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/TODO.optimisations @@ -0,0 +1,19 @@ +This file describes enhancements or optimisations that +could be done / checked. + + +Code +---- + +fork() +~~~~~~ + +Security +^^^^^^^^^ +- Closed fds? +- Close other things? +- IPC? + +Cleanup +^^^^^^^ +- Do we have to reset signals or is that done anyway by fork()? diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cdoc-man.sh b/software/cinit/browse_source/cinit-0.3pre13/bin/cdoc-man.sh new file mode 100644 index 00000000..fc1adde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cdoc-man.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Nico Schottelius +# Date: 21-Aug-2005 +# Last Modified: - +# + +set -e + +[ $# -ne 1 ] && exit 23 + +SRC=$1 + +cd "$SRC" + +# +# Title heading +# +echo .TH $(cat "meta/name" "meta/man_section" "meta/date") + +# +# Name +# +echo .SH NAME +echo $(cat meta/name) - $(cat meta/short_description) + +# +# Synopsis +# +echo .SH SYNOPSIS +echo $(cat path) $(cat parameters) + +# +# description +# +echo .SH DESCRIPTION +echo $(cat long_description) + +# +# availability +# +for section in availability examples "see also" author; do + if [ -f "$section" ]; then + echo .SH $section | tr '[a-z]' '[A-Z]' + cat "$section" + fi +done + +# +# files +# +if [ -f files ]; then + echo .SH FILES + cat files | sed 's/\(.*\)/.IP "\1" /' +fi + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.add.dependency new file mode 100644 index 00000000..7bc9cc65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.add.dependency @@ -0,0 +1,51 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or wants Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +# adding 'wishes' for x-mas and requires for 'the mass' and 'tv' +case $DEP in + wishes|wants) DEP=$C_WANTS ;; + needs|requires) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could someone PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEP_DIR="${BASEDIR}/${SVC_A}/${DEP}" + +if [ ! -d "$DEP_DIR" ]; then + echo "$DEP_DIR does not exist, creating..." + mkdir "$DEP_DIR" + if [ $? -ne 0 ]; then + echo "Error occured due to creating directory. Exiting." + exit 1 + fi +fi + +DEST="${DEP_DIR}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.add.getty new file mode 100644 index 00000000..987a5bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.add.getty @@ -0,0 +1,75 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# Date: 2005-05-24 (Last changed: 2005-08-07) +# + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | sort -n | tail -n 1) + +[ ! "$LAST_NUMBER" ] && LAST_NUMBER=0 + +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +#echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + */mgetty) + mygetty=$getty + params="38400 tty${NUMBER}" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +# check input +if [ ! "$mygetty" ]; then + read -p "Getty to use [$mygetty]: " rgetty +fi +if [ ! "$params" ]; then + read -p "Parameters to pass [$params]: " rparams +fi +if [ ! "$params" -o ! "$mygetty" ]; then + echo "Sorry, either getty or parameters are not supplied." + exit 23 +fi + +echo -n "Creating $mygetty ($params) in $DDIR ... " +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DDIR" +ln -s "$mygetty" "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.configure.ipc b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.configure.ipc new file mode 100644 index 00000000..65190baa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.configure.ipc @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius, 2006-07-28 +# +# cinit: configure the ipc method to use +# + +HIER=$(dirname $0) +DDIR=$HIER/../src/ipc +DFILE=${DDIR}/current +IPC_METHOD=$(head -n 1 "$HIER/../conf/ipc_method") + +echo "Configure: IPC: Using \"$IPC_METHOD\" as IPC method" + +# always remove link before, as ln seems to be broken +# Doing ln -sf src/ipc/$method current twice, will create the file +# "current" _BELOW_ src/ipc/$method and not overwrite the link +# src/ipc/current + +rm -f "${DFILE}" +ln -sf "${IPC_METHOD}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.configure.mark b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.configure.mark new file mode 100644 index 00000000..62454c7f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.configure.mark @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: touch a file to mark everything configured +# 2006-08-27 +# + +echo "Configure: MK: Marking directory as configured" +touch .configured diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.configure.os b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.configure.os new file mode 100644 index 00000000..d5b8e6e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.configure.os @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups symlinks for the os +# + +DDIR=$(dirname $0)/../src/os +DFILE="$DDIR/current" +OSCONFIG=$(dirname $0)/../conf/os + +OS=$(head -n 1 "$OSCONFIG") + +echo "Configure: OS: Binaries are created for $OS ..." + +rm -f "${DFILE}" +ln -sf "${OS}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.configure.tools b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.configure.tools new file mode 100644 index 00000000..43242a01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.configure.tools @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups scripts for compiling and linking +# + +HIER=$(dirname $0) +DDIR=$HIER/../tmpbin/ +CC=$(head -n 1 "$HIER/../conf/cc") +CFLAGS=$(head -n 1 "$HIER/../conf/cflags") +LD=$(head -n 1 "$HIER/../conf/ld") +LDFLAGS=$(head -n 1 "$HIER/../conf/ldflags") +STRIP=$(head -n 1 "$HIER/../conf/strip") + +echo "Configure: CC: Creating cc, ld and strip ..." + +mkdir -p "$DDIR" +cd "$DDIR" + +echo "$CC $CFLAGS \"\$@\"" > cc +echo "$LD $LDFLAGS \"\$@\"" > ld +echo "$STRIP \"\$@\"" > strip + +# set correct permissions +chmod 0700 * diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.create.empty.service new file mode 100644 index 00000000..365c4bc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.create.empty.service @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.binary new file mode 100644 index 00000000..a368ac23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.binary @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: - +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice +"$INSTALL_PROG" sbin/ccontrol $DESTDIR/$PREFIX/sbin/ccontrol +"$INSTALL_PROG" bin/cinit.reboot $DESTDIR/$PREFIX/sbin/cinit.reboot +"$INSTALL_PROG" bin/cinit.shutdown $DESTDIR/$PREFIX/sbin/cinit.shutdown +"$INSTALL_PROG" bin/cinit.wait.for.daemon \ + $DESTDIR/$PREFIX/sbin/cinit.wait.for.daemon + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi + +# install as /sbin/shutdown, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/shutdown ]; then + ln -s $PREFIX/sbin/cinit.shutdown $DESTDIR/$PREFIX/sbin/shutdown +fi + +# install as /sbin/reboot, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/reboot ]; then + ln -s $PREFIX/sbin/cinit.reboot $DESTDIR/$PREFIX/sbin/reboot +fi diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.config-dir b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.config-dir new file mode 100644 index 00000000..c9adb70f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.config-dir @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.dir new file mode 100644 index 00000000..5e16f690 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.dir @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/sbin" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.fsck b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.fsck new file mode 100644 index 00000000..4508860a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.fsck @@ -0,0 +1,36 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 3 ]; then + echo "$(basename $0): name device filesystem-type" + exit 1 +fi + +NAME=$1 +DEVICE=$2 +FS_TYPE=$3 + +FSCK=/sbin/fsck.$FS_TYPE + +if [ ! -f "$FSCK" ]; then + echo "Missing $FSCK, abort." + exit 1 +fi + +if [ ! -e "$DEVICE" ]; then + echo "Missing $DEVICE abort." + exit 1 +fi + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME" +ln -sf "$FSCK" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON" +echo "$DEVICE" > "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.miniconf b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.miniconf new file mode 100644 index 00000000..45dcc632 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.miniconf @@ -0,0 +1,103 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: 2005-08-07 +# + + +. $(dirname $0)/cinit.read-conf + +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" +echo "" +echo "This will install a minimal cinit configuration." +echo "This configuration _SHOULD_ be able to run on _MOST_ systems." +echo "Still, it's highly EXPERIEMENTAL, use with CAUTION." +echo "" +echo "Please make sure, that" +echo " - you are using a journaling filesystem (fsck is not used)" +echo " - you have agetty, fgetty or mingetty installed" +echo " - you are runnig Linux 2.6 (sysfs is used)" +echo " - you have udev or static device nodes (you need /dev/tty*)" +echo " - getties will run on tty2-tty7, tty1 is used or logging" +echo "" +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" + +notosoftwarepatents="Please keep an eye on software patents, they are evil." +read -p "Do you really want to continue? [y/N] " notosoftwarepatents + +if [ "$notosoftwarepatents" = "y" -o "$notosoftwarepatents" = "Y" ]; then + echo "Let us try it ..." +else + echo 'Bye bye!' + exit 0 +fi + +set -e + +# Create basic layout +$(dirname $0)/cinit.install.standard-dirs + +# Install services: +# - mount root r/w +# - mount /proc +# - mount /sys +# - install getties on tty2-tty7 +# - add cleanup for /etc/mtab +# - add loopback device +# - init service + echo + +################################### mount ##################################### +# mount root read/write +$(dirname $0)/cinit.install.service.mount-root + +# - mount /proc +$(dirname $0)/cinit.install.service.mount-proc + +# - mount /sys +$(dirname $0)/cinit.install.service.mount-sys + +# mount needs everything below it +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/root" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/proc" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/sys" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" + +################################### getty ##################################### +# mount root read/write +# install getties +begin_getty=2 +end_getty=7 +i=$begin_getty + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" +while [ "$i" -le "$end_getty" ]; do + $(dirname $0)/cinit.add.getty + ln -sf "${DESTDIR}/${CINIT_DIR}/getty/$i" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" + i=$(($i+1)) +done + +################################### mtab ##################################### +# - add cleanup for /etc/mtab +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" +$(dirname $0)/cinit.install.service.cleanup-mtab +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" + +################################### lo ##################################### +# - add loopback device +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" +$(dirname $0)/cinit.install.service.network-lo +ln -sf "${DESTDIR}/${CINIT_DIR}/network/lo" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" + +# - init service + echo +# init depends on mount, getty -> everything from base-layout +$(dirname $0)/cinit.install.service.init +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" + +ln -sf "${DESTDIR}/${CINIT_DIR}/local-services/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/getty/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/network/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.cleanup-mtab b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.cleanup-mtab new file mode 100644 index 00000000..30a8dd48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.cleanup-mtab @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: cleanup mtab +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" +echo '#!/bin/sh' > "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'rm -f /etc/mtab' >>"${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'ln -s /proc/mounts /etc/mtab' \ + >> "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +chmod 0700 "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.hostname.generic b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.hostname.generic new file mode 100644 index 00000000..2d72f50e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.hostname.generic @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service, which sets the hostname +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): hostname" + exit 1 +fi + +HOSTNAME=$1 +HOSTNAME_BIN=${HOSTNAME_BIN:-/bin/hostname} + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/network/hostname" +ln -sf "$HOSTNAME_BIN" "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON" +echo "$HOSTNAME" > "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.init b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.init new file mode 100644 index 00000000..c3a10931 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.init @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +ln -sf /bin/echo "${DESTDIR}/${CINIT_DIR}/${C_INIT}/$C_ON" +echo '*** cinit initial service successfully started ***' \ + > "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.keymap.c_keymap b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.keymap.c_keymap new file mode 100644 index 00000000..235a329e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.keymap.c_keymap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install keymap from environment setting +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +if [ -z "$C_KEYMAP" ]; then + echo "Set C_KEPMAP to the wanted keymap." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" ]; then + echo "Service keymap already exists." + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find loadkeys) + +if [ $? -ne 0 ]; then + echo "Did not find binary loadkeys." + exit 1 +fi + +echo -n "Installing keymap to ${DESTDIR}/${CINIT_DIR}/local-tuning/keymap ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON" + +echo "$C_KEYMAP" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.mount-proc b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.mount-proc new file mode 100644 index 00000000..024847a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.mount-proc @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /proc +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/proc" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/proc/$C_ON" +echo proc > "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo /proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.mount-root b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.mount-root new file mode 100644 index 00000000..a1bd56ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.mount-root @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount root r/w +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# mount root read/write +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/root" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/root/$C_ON" +echo -n > "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo -o >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo remount,rw >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo / >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.mount-sys b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.mount-sys new file mode 100644 index 00000000..8c8191aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.mount-sys @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /sys +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /sys +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/sys" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/sys/$C_ON" +echo sys > "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo sysfs >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo /sys >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.network-lo b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.network-lo new file mode 100644 index 00000000..45bff6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.network-lo @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: loopback device +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/lo" +ln -sf /sbin/ifconfig "${DESTDIR}/${CINIT_DIR}/network/lo/$C_ON" +echo lo > "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo 127.0.0.1/8 >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo up >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.ntpdate.debian b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.ntpdate.debian new file mode 100644 index 00000000..2af2ee4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.ntpdate.debian @@ -0,0 +1,47 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install ntpdate +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +. /etc/default/ntpdate + +if [ -z "$NTPSERVERS" ]; then + echo "No ntp servers found, aborting" + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find ntpdate) + +if [ $? -ne 0 ]; then + echo "Did not find binary ntpdate." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" ]; then + echo "Service ntpdate already exists." + exit 1 +fi + +echo -n "Installing ntpdate to ${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON" + +for server in $NTPSERVERS; do + echo "$server" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON$C_PARAMS" +done + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.udev b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.udev new file mode 100644 index 00000000..d91f01cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.service.udev @@ -0,0 +1,64 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install udev +# Date: 2005-10-15 +# Comment: DO NOT RSYNC TO THE WRONG SIDE! +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BIN_UDEVSEND=$($(dirname $0)/cinit.path-find udevsend) +BIN_UDEVSTART=$($(dirname $0)/cinit.path-find udevstart) +BIN_SYSCTL=$($(dirname $0)/cinit.path-find sysctl) +BIN_MOUNT=$($(dirname $0)/cinit.path-find mount) +SERVICE="local-tuning/udev" + +if [ -z "$BIN_UDEVSEND" -o -z "$BIN_UDEVSTART" -o -z "$BIN_SYSCTL" -o -z "$BIN_MOUNT" ]; then + echo "Did not find a binary." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo "Installing ${SERVICE} to ${DESTDIR}/${CINIT_DIR}/ ..." + +# 0. general udev +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}" +# 1. udevmount +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/mount/udev" +ln -sf "$BIN_MOUNT" "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON" +echo "udev" > "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "-t" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "tmpfs" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "/dev" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" + +# 2. udevstart +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart" +ln -sf "$BIN_UDEVSTART" "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart/$C_ON" + +# dependencies +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/sys +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/udev + +# 3. udev to hotplug +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug" +ln -sf "$BIN_SYSCTL" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug/$C_ON" +echo "$BIN_UDEVSEND" > "${DESTDIR}${CINIT_DIR}/${SERVICE}/hotplug/$C_ON$C_PARAMS" + +$(dirname $0)/cinit.add.dependency ${SERVICE}/hotplug needs mount/proc + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.standard.init.deps b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.standard.init.deps new file mode 100644 index 00000000..dcc5cd07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.standard.init.deps @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add standard sub-configuration directories to init wants +# Date: 2005-10-11 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.standard.mounts b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.standard.mounts new file mode 100644 index 00000000..bb1fc0c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.standard.mounts @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create normal mounts +# Date: 2005-10-16 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.swap b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.swap new file mode 100644 index 00000000..84e6c928 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.swap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install swap +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +SERVICE=mount/swap + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BINARY=swapon +BINARY_PATH=$($(dirname $0)/cinit.path-find $BINARY) +if [ $? -ne 0 ]; then + echo "Did not find binary $BINARY." + exit 1 +fi + +HAS_SWAP=$(awk '$3 ~ /swap/ { print $3 }' /etc/fstab) +if [ -z "$HAS_SWAP" ]; then + echo "Seems you have no swap, service not installing" + exit 1 +fi +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo -n "Installing ${SERVICE} to ${DESTDIR}${CINIT_DIR}/${SERVICE} ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON" + +echo "-a" >> "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.merge.sysvinit-debian-sid b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.merge.sysvinit-debian-sid new file mode 100644 index 00000000..3ef0ce03 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.merge.sysvinit-debian-sid @@ -0,0 +1,137 @@ +#!/bin/sh +# Nico Schottelius +# Date: Sun Oct 16 16:57:03 CEST 2005 +# cLinux/cinit +# Automagically convert Debian-Sysv-Iinit +# THIS IS NOT CLEAN. +# THIS IS NOT EVEN INTENTED TO BE CLEAN. +# This is just a small hack, because my girlfriend wants her notebook back. + +echo "***> $(basename $0): converting Debian-Sys-V-Init" + +# read standard values, may be overwritten from outside +. $(dirname $0)/cinit.read-conf + +echo "***> Finding standard config ..." +# variables, which can be set from the outside +ROOT_DEV=${ROOT_DEV:-$(awk '$2 ~ /^\/$/ { print $1 }' /etc/fstab)} +ROOT_FSCK=${ROOT_FSCK:-$(awk '$2 ~ /^\/$/ { print $6 }' /etc/fstab)} +ROOT_FS=${ROOT_FS:-$(awk '$2 ~ /^\/$/ { print $3 }' /etc/fstab)} +RUNLEVEL=${RUNLEVEL:-$(runlevel | awk '{ print $2 }')} + +echo "***> Detecting keymap (this may take some time)" + +if [ -z "$C_KEYMAP" ]; then + echo "Please set the variable C_KEYMAP to your keymap." + echo "It is impossible to detect reliable your keymap in Debian." + exit 1 +fi + + +echo "***> Configuration" +echo "Hostname (\$HOSTNAME): $HOSTNAME" +echo "Keymap (\$C_KEYMAP): $C_KEYMAP" +echo "Root device (\$ROOT_DEV): $ROOT_DEV" +echo "Root fsck (\$ROOT_FSCK): $ROOT_FSCK" +echo "Root FS (\$ROOT_FS): $ROOT_FS" +echo "Runlevel (\$RUNLEVEL): $RUNLEVEL" +echo "Destdir: (\$DESTDIR): $DESTDIR" +echo "Config-Dir: (\$CINIT_DIR): $CINIT_DIR" +read -p "Is this correct (Y/n) " correct + +if [ "$correct" != "y" -a "$correct" != "Y" ]; then + echo "***> Abort." + exit 1 +fi + +if [ -d "${DESTDIR}${CINIT_DIR}" ]; then + echo "ERROR: Configuration already exists at ${DESTDIR}${CINIT_DIR}." + exit 1 +fi + +echo "***> Installing standard structure and dependencies" +set -e +$(dirname $0)/cinit.install.config-dir +$(dirname $0)/cinit.install.standard.dirs +$(dirname $0)/cinit.install.standard.init.deps + +echo "***> Adding mount / r/w" +$(dirname $0)/cinit.install.service.mount-root + +if [ "$ROOT_FSCK" = "1" ]; then + echo "***> Adding fsck for $ROOT_DEV ..." + $(dirname $0)/cinit.install.fsck root "$ROOT_DEV" "$ROOT_FS" + echo "***> Adding dependency" + $(dirname $0)/cinit.add.dependency mount/root needs fsck/root +else + echo "***> Skipping fsck for $ROOT_DEV ..." +fi + +echo "***> Setting up standard mounts ..." +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up hostname: $HOSTNAME" +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up keymap" +$(dirname $0)/cinit.install.service.keymap.c_keymap + +echo "***> Creating getties (tty1-8)" +for i in `seq 1 8`; do + $(dirname $0)/cinit.add.getty + + # each getty needs: + # - root r/w + $(dirname $0)/cinit.add.dependency getty/$i needs mount/root + # - hostname + $(dirname $0)/cinit.add.dependency getty/$i needs network/hostname +done + +echo "***> Enabling getties (tty2-8)" +for i in `seq 2 8`; do + # add getties to getty/ + $(dirname $0)/cinit.add.dependency getty wants getty/$i +done + +# +# Convert services: check /etc/rcS.d and /etc/rcX.d +# +echo "***> Converting services ..." +for script in $(cd /etc/rcS.d/; ls S*; cd /etc/rc${RUNLEVEL}.d/; ls S*); do + echo -n "$script: " + case $script in + # SCRIPTS READY + *ntpdate) + $(dirname $0)/cinit.install.service.ntpdate.debian + $(dirname $0)/cinit.add.dependency local-tuning/ntpdate needs network + ;; + *udev*) + $(dirname $0)/cinit.install.service.udev + + # SCRIPTS NEVER READY + *glibc.sh|*module-init-tools|*modutils|*procps.sh|*hotplug-net|*bootmisc.sh|*nviboot|*screen-cleanup|*x11-common|*sudo|*makedev|*rmnologin) + echo "Ignoring (useless)." + ;; + + # SCRIPTS NOT YET READY + *mountvirtfs|*checkroot.sh|*ifupdown-clean|*checkfs.sh|*mountall.sh|*ifupdown|*hostname*|*mountnfs.sh|*alsa|*rsync|*ssh|*fam|*cron|*gdm) + echo "converting planned later." + ;; + + # SCRIPTS LATER TO DO + *bootlogd|*keymap.sh|*hwclock*|*discover|*pppd-dns|*dns-clean|*networking|*portmap|*console-screen.sh|*urandom|*klogd|*apmd|*dbus-1|*exim4|*pcmcia|*nfs-common|*stop-bootlogd) + echo "unsupported currently (FIXME PLEASE)." + ;; + *sysklogd|*ppp|*inetd|*lpd|*aumix|*atd) + echo "unsupported (choose a better alternative)." + ;; + *initrd-tools.sh|*libdevmapper*|*hotplug) + echo "Ignoring (general or bloated script)." + ;; + *) + echo "Ignoring (unknown)" + ;; + esac +done + +echo "***> Finished." diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.path-find b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.path-find new file mode 100644 index 00000000..0d0f362b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.path-find @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: find binary in path +# Date: 2005-10-15 +# + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): searched binary" + exit 1 +fi + +binary=$1 + +# this is NOT really clean, paths can also contain spaces +for pfad in $(echo $PATH | sed 's/:/ /g'); do + fullname=$pfad/$binary + if [ -f "$fullname" ]; then + echo "$fullname" + exit 0 + fi +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.remove.getty new file mode 100644 index 00000000..4950eeed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.remove.getty @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + +if [ ! "$NUMBER" ]; then + echo "There is no getty to remove." + exit 1 +fi + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r "$DDIR" +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.shutdown new file mode 100644 index 00000000..702c8a17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.shutdown @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# TODO: use ccontrol! +# 2005-05-24 (Last changed: 2005-06-18) + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -p|--power-off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " -s|--rescue: Rescue mode" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -p|--power-off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + -s|--rescue) kill -USR2 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.uml.test new file mode 100644 index 00000000..f6ea7fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.1 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG umid=cinit$$ init=/sbin/cinit" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..7f027455 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 (Last Changed: 2005-06-17) + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +PIDFILE=$1; shift +DAEMON=$1; shift + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/.README b/software/cinit/browse_source/cinit-0.3pre13/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/c_confdir b/software/cinit/browse_source/cinit-0.3pre13/conf/c_confdir new file mode 100644 index 00000000..091e6192 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/c_confdir @@ -0,0 +1,3 @@ +conf + +The directory below cinit_dir for cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/c_delay b/software/cinit/browse_source/cinit-0.3pre13/conf/c_delay new file mode 100644 index 00000000..dc30f147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGTERM for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/c_env b/software/cinit/browse_source/cinit-0.3pre13/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/c_init b/software/cinit/browse_source/cinit-0.3pre13/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/c_last b/software/cinit/browse_source/cinit-0.3pre13/conf/c_last new file mode 100644 index 00000000..8debf155 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/c_last @@ -0,0 +1,7 @@ +last + +Name of the file below cinit_dir/c_confdir/ to execute right before +reboot/halt/poweroff. + +This maybe a shellscript with the OS-specific umount procedure (like umount -a), +see doc/user/configuring.cinit for more details. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/c_needs b/software/cinit/browse_source/cinit-0.3pre13/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/c_off b/software/cinit/browse_source/cinit-0.3pre13/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/c_on b/software/cinit/browse_source/cinit-0.3pre13/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/c_panic b/software/cinit/browse_source/cinit-0.3pre13/conf/c_panic new file mode 100644 index 00000000..7fdb77b3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/c_panic @@ -0,0 +1,5 @@ +panic + +Name of the file below cinit_dir/c_confdir/ to execute on panic. +This name .params (normally panic.params) will be passed as parameters/ +argumunts to panic. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/c_params b/software/cinit/browse_source/cinit-0.3pre13/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/c_respawn b/software/cinit/browse_source/cinit-0.3pre13/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/c_sock b/software/cinit/browse_source/cinit-0.3pre13/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/c_tmp b/software/cinit/browse_source/cinit-0.3pre13/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.3pre13/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.3pre13/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/c_wants b/software/cinit/browse_source/cinit-0.3pre13/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/cc b/software/cinit/browse_source/cinit-0.3pre13/conf/cc new file mode 100644 index 00000000..b168ae6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/cc @@ -0,0 +1,3 @@ +gcc + +The c-compiler to use. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/cflags b/software/cinit/browse_source/cinit-0.3pre13/conf/cflags new file mode 100644 index 00000000..f205afb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/cflags @@ -0,0 +1,6 @@ +-pipe -W -Wall -Werror -Iinclude -g -D_XOPEN_SOURCE=600 -D_USE_POSIX + +Standard flags to pass to (g)cc. + +-D_XOPEN_SOURCE=600 must be used on glibc to select the right standard. +-D_USE_POSIX is needed for sigemptyset on glibc diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/cinit_dir b/software/cinit/browse_source/cinit-0.3pre13/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/confdir b/software/cinit/browse_source/cinit-0.3pre13/conf/confdir new file mode 100644 index 00000000..55fb65e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/confdir @@ -0,0 +1,3 @@ +conf + +The subdirectory below /etc/cinit to be used for general configurations. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/destdir b/software/cinit/browse_source/cinit-0.3pre13/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/getty_dir b/software/cinit/browse_source/cinit-0.3pre13/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/install_directory b/software/cinit/browse_source/cinit-0.3pre13/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/install_prog b/software/cinit/browse_source/cinit-0.3pre13/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/ipc_method b/software/cinit/browse_source/cinit-0.3pre13/conf/ipc_method new file mode 100644 index 00000000..fc75e273 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/ipc_method @@ -0,0 +1,5 @@ +msgq + +The type of IPC (inter process communication) to use. +Valid values can be optained by issuing `ls src/ipc/`. + diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/ld b/software/cinit/browse_source/cinit-0.3pre13/conf/ld new file mode 100644 index 00000000..b60e4836 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/ld @@ -0,0 +1,3 @@ +gcc + +Comment missing. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/ldflags b/software/cinit/browse_source/cinit-0.3pre13/conf/ldflags new file mode 100644 index 00000000..fc214daf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/ldflags @@ -0,0 +1,3 @@ + + +No flags specified normally. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/max_delay b/software/cinit/browse_source/cinit-0.3pre13/conf/max_delay new file mode 100644 index 00000000..30725bf8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/max_delay @@ -0,0 +1,4 @@ +30 + +Maximum number of seconds to sleep between retrying to start it +(respawn only). diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/max_deps b/software/cinit/browse_source/cinit-0.3pre13/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/msgq_pathname b/software/cinit/browse_source/cinit-0.3pre13/conf/msgq_pathname new file mode 100644 index 00000000..1bef0b6b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/msgq_pathname @@ -0,0 +1,4 @@ +/bin/sh + +Used to generate an unique identifier for the message queue. +See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/msgq_to_clients b/software/cinit/browse_source/cinit-0.3pre13/conf/msgq_to_clients new file mode 100644 index 00000000..dd15808a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/msgq_to_clients @@ -0,0 +1,4 @@ +o + +This is use in ftok to generate a key_t for the message queue use to write +to the clients. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/msgq_to_server b/software/cinit/browse_source/cinit-0.3pre13/conf/msgq_to_server new file mode 100644 index 00000000..f87ae3f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/msgq_to_server @@ -0,0 +1,4 @@ +i + +This is use in ftok to generate a key_t for the message queue use to write +to the server. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/os b/software/cinit/browse_source/cinit-0.3pre13/conf/os new file mode 100644 index 00000000..ddbf8f9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/os @@ -0,0 +1,14 @@ +linux + +Select the operating system compiling for. + +Current possibilities: + + - linux + + +Currently Planned possibilities: + + - freebsd + - openbsd + - netbsd diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/p_asciidoc b/software/cinit/browse_source/cinit-0.3pre13/conf/p_asciidoc new file mode 100644 index 00000000..52485c86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/p_asciidoc @@ -0,0 +1,6 @@ +asciidoc + +The binary on your system (with or without path) which does what I expect +asciidoc todo. + +Default: asciidoc diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/p_docbooktoman b/software/cinit/browse_source/cinit-0.3pre13/conf/p_docbooktoman new file mode 100644 index 00000000..d62c9015 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/p_docbooktoman @@ -0,0 +1,6 @@ +docbook2x-man + +The binary on your system (with or without path) which converts +docbook to manpages. + +Default: docbook2x-man diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/p_docbooktotexi b/software/cinit/browse_source/cinit-0.3pre13/conf/p_docbooktotexi new file mode 100644 index 00000000..278f6805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/p_docbooktotexi @@ -0,0 +1,6 @@ +docbook2x-texi + +The binary on your system (with or without path) which converts +docbook to texinfo. + +Default: docbook2x-texi diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/prefix b/software/cinit/browse_source/cinit-0.3pre13/conf/prefix new file mode 100644 index 00000000..6b90469f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/prefix @@ -0,0 +1,5 @@ + + +Where to install cinit. Normally this will be /, but you can put it anywhere. +The subdirectory 'sbin' under this prefix must be readable by the kernel. +This is normally either empty or "/". diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/profile b/software/cinit/browse_source/cinit-0.3pre13/conf/profile new file mode 100644 index 00000000..b9104bf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/profile @@ -0,0 +1,9 @@ +cprofile: + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile:" is the standard, as +the Linux kernel eats everything in the form 'var=parm'. +The old (pre cinit-0.1) option "cprofile=" should therefore +NOT be used. + +Under Linux you tell it the bootloader like grub or LILO. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/service_categories b/software/cinit/browse_source/cinit-0.3pre13/conf/service_categories new file mode 100644 index 00000000..2216ea97 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/service_categories @@ -0,0 +1,7 @@ +getty init local-tuning local-services mount network remote-services + +List of directories normally created below /etc/cinit/svc/ as +'pseudo-services'. + +Btw, 'init' is the first service and has always to be there, but it does not really +fit into here, because it's a real one, compraed to the pseudo services. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/sleep_before_kill b/software/cinit/browse_source/cinit-0.3pre13/conf/sleep_before_kill new file mode 100644 index 00000000..2671f22d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/sleep_before_kill @@ -0,0 +1,7 @@ +sleep_before_kill + +The file that specifies how long to sleep after sending SIGTERM, before sending +SIGKILL to every process. If this file is non-existing the builtin value from +'sleep_kill'. + +The file should be located below conf/ diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/sleep_kill b/software/cinit/browse_source/cinit-0.3pre13/conf/sleep_kill new file mode 100644 index 00000000..b419241a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/sleep_kill @@ -0,0 +1,8 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. + +Note: This does NOT affect terminating services, they are shutdown by +their own 'off' functions. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.3pre13/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.3pre13/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/sleep_svc b/software/cinit/browse_source/cinit-0.3pre13/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/sock_queue b/software/cinit/browse_source/cinit-0.3pre13/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/strip b/software/cinit/browse_source/cinit-0.3pre13/conf/strip new file mode 100644 index 00000000..08736418 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/strip @@ -0,0 +1,3 @@ +strip -R .comment -R .note + +Strip out unecessary parts of the binaries. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/sulogin b/software/cinit/browse_source/cinit-0.3pre13/conf/sulogin new file mode 100644 index 00000000..24859afc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/sulogin @@ -0,0 +1,6 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it, if the standard panic +action fails (as specified in cinit_dir/c_confdir/panic). + +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/svcdir b/software/cinit/browse_source/cinit-0.3pre13/conf/svcdir new file mode 100644 index 00000000..087a3848 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/svcdir @@ -0,0 +1,3 @@ +svc + +Directory below /etc/cinit that contains the services. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf/version b/software/cinit/browse_source/cinit-0.3pre13/conf/version new file mode 100644 index 00000000..a84bd425 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf/version @@ -0,0 +1,3 @@ +"0.3pre13" + +The version. diff --git a/software/cinit/browse_source/cinit-0.3pre13/conf2/README b/software/cinit/browse_source/cinit-0.3pre13/conf2/README new file mode 100644 index 00000000..c753107d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/conf2/README @@ -0,0 +1,33 @@ +Migrate conf/ to general conf/-buildsystem (write documentation for it). + +gpm2 may be an example for this! + +conf/targets: + targets to make available in Makefile and their dependencies + + abstract the build-process somehow, so one can create build-targets? + + c-programs/ (includes cc / ld) + cinit (link to conf/object_listings cinit?) +conf/object_listings + lists of dependencies: + conf/object_listings/cinit contains all objects needed for cinit + +conf/programs/ + like cc, ld, install, ... + +conf/built-options/ + like --... in ./configure + +conf/install/ + + options/ + destdir (prefixed before everything) + prefix (standard prefix) + bin (relative to prefix, if not beginning with a /) + sbin (relative to prefix, if not beginning with a /) + lib (relative to prefix, if not beginning with a /) + targets/ + cinit/ + built-target (link to conf/targets/cinit) + destination (relative to diff --git a/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/Makefile b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/Makefile new file mode 100644 index 00000000..23cc41f0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/Makefile @@ -0,0 +1,70 @@ +# +# (c) 2005 Peter Portmann (pp at bluewin.ch) +# cinit/contrib+tools +# +# This script is written for the clinux-System and published +# under the terms of GPL 2.0 +# +# Version: 0.2 +# clean with a single command instead of two commands. +# +# ChangeLog: +# 0.1 initial version +# +# Todo: +# +# Features: + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +DEBUG=-g -DDEBUG +#OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! +LDFLAGS= + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. -I../ +LD=gcc +STRIP=strip -R .comment -R .note + +INSTALL = install + +prefix = /usr +bindir = $(prefix)/bin + +# objects + +CLIENT=cinit.graph.text.o + +COMMUNICATION=error.o usage.o mini_printf.o + +OBJ=$(CLIENT) $(COMMUNICATION) + +# +PROGRAMS=cinit.graph.text +SCRIPTS=cconfig.graph.xml.rb \ + make.cconfig.from.xml.rb \ + cinit-vis.pl + +# targets +all: $(PROGRAMS) + +cinit.graph.text: $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +clean: + rm -f *.o $(PROGRAMS) + +install: all + @echo '*** Installing contrib+tools ***' + $(INSTALL) -d -m755 $(DESTDIR)$(bindir) + for bin in $(SCRIPTS) $(PROGRAMS); do \ + $(INSTALL) $$bin $(DESTDIR)/$(bindir); \ + done diff --git a/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/README b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/README new file mode 100644 index 00000000..85fa2f5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/README @@ -0,0 +1,11 @@ +contrib+tools/ + programs written by others and external tools not necessary + needed but (very) nice to have + + + cinit-vis.pl - draw an ascii graph of cinit configuration [perl] + cinit.graph.text - draw an ascii graph of cinit configuration [c] + + cconfig.graph.xml.rb - creates a xml file from a cconfig [ruby] + make.cconfig.from.xml.rb - creates a cconfig from a xml file [ruby] + diff --git a/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/README.ruby b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/README.ruby new file mode 100644 index 00000000..ed210cee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/README.ruby @@ -0,0 +1,7 @@ +The ruby tools for general cconfig [0] are written by René Nussbaumer [1]. +You can find the documentation for them at [2]. + + +[0]: http://nico.schotteli.us/papers/linux/cconfig/ +[1]: http://killerfox.forkbomb.ch/ +[2]: http://killerfox.forkbomb.ch/articles/cconfig/tools diff --git a/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/cconfig.graph.xml.rb b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/cconfig.graph.xml.rb new file mode 100644 index 00000000..d18ba422 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/cconfig.graph.xml.rb @@ -0,0 +1,117 @@ +#!/usr/bin/env ruby + +=begin + + Writes an XML-Tree for a cconfig directory + Idea by Nico Schottelius aka telmich + Implemented and (C) by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added support for binary files + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Changed checking order: symlink, directory, file. Because of + a logical bug -> directory follows symlink so, when a symlink + points to a directory no «link» element is created. + + Version 0.1 (René Nussbaumer): + * Holy hack for directory scanning (needs to be optimized) + * Hack for rexml to print out «lost» tags. This rexml sux. + + Todo: + * Optimize scanning. + * Use another xml library instead of rexml crap. + Problem: Produce dependencies -> no std-lib + + Features: + * Create a flat (no deepnes without directory) and 1:1 image + of an cconfig directory + +=end + +require 'rexml/document' +require 'base64' +require 'digest/sha1' + +require 'filemagic' + +@version = '0.3' + +def determineTarget(entry) + return 'external' if(!File.expand_path(entry).index(@initpath)) + return 'link' if(FileTest.symlink?(entry)) + return 'object' if(FileTest.directory?(entry)) + return 'attribute' if(FileTest.file?(entry)) + return 'unknown' # Should never be reached +end + +def createTree(dir, parent) + dir.each { |entry| + next if(entry =~ /^(\.|\.\.)$/) + + if(FileTest.symlink?(entry)) + e = parent.add_element('link') + + # Much fun with links + e.add_attributes( { 'name' => entry, 'target' => determineTarget(File.readlink(entry)) } ) + e.add_text(File.readlink(entry)) + elsif(FileTest.directory?(entry)) + e = parent.add_element('object') + e.add_attribute('name', entry) + + # Bad, that we need to change the directory every time. + oldPwd = Dir.pwd + Dir.chdir(entry) + createTree(Dir.new('.'), e) + Dir.chdir(oldPwd) + elsif(FileTest.file?(entry)) + e = parent.add_element('attribute') + e.add_attribute('name', entry) + if(File.stat(entry).size?) + # Yeah, we got one WITH content! W00h00, let's party. + + fm = FileMagic.new(FileMagic::MAGIC_MIME) + if(fm.file(entry) =~ /executable/) + e.add_attribute('type', 'binary') + text = File.new(entry).read + e.add_attribute('sha1', Digest::SHA1.hexdigest(text)) + e.add_text(Base64.encode64(text)) + else + e.add_text(File.new(entry).read) + end + fm.close() + end + end + } +end + + +if(!ARGV[0] || !FileTest.directory?(ARGV[0])) + puts 'You need to specify a directory' + Kernel.exit(-1) +end + +doc = REXML::Document.new + +e = doc.add_element('cconfig') +e.add_attribute('name', File.basename(ARGV[0])) +e.add_attribute('version', @version) + +@initpath = File.expand_path(ARGV[0]) +Dir.chdir(ARGV[0]) +createTree(Dir.new('.'), doc.root) + +out = '' +doc.write(out, 0, false, true) + +REXML::XMLDecl.new('1.0', 'utf-8').write($stdout) # This should automatically printed by rexml. Damn bugs. +puts '' +puts out # Workaround for a buggy rexml + diff --git a/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/cinit-vis.pl b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/cinit-vis.pl new file mode 100644 index 00000000..4a439fc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/cinit-vis.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# (c) by Marcus Przyklink (downhill-clinux@burningchaos.org) +# written for cinit and published under GPL +# beautified a bit by Nico Schottelius +# optimized by René Nussbaumer +# Version: 0.1 + +use strict; +use warnings; + +# +# Variables for location and output +# +# cinit-directory +my $path = "/etc/cinit/svc/"; +# started profile +my $starting_point = "init"; +# the spaces for each level (integer: amount of spaces) +my $space = 3; +# marker for need +my $need = "-->"; +# marker for want +my $want = "==>"; + +# +# main function, recursively list the components of the cinit system +# +if (@ARGV) { + if( $ARGV[0] =~ /-(h|-help)/ ) { + print "Usage: " . __FILE__ . " without parameters for standard-use (check variables in file)\n"; + print " Parameters:\n"; + print " -h for this help\n"; + print " profile-name for a profile\n"; + exit(0); + } + else { + $starting_point = $ARGV[0]; + } +} + +# +# start first instance +# +sub get_deeper { + my ($point, $tmp_counter, $need_want) = splice @_; + + print " " x ($space * $tmp_counter) . ($need_want ? $need : $want) . " " . $point . "\n"; + + opendir(DIR, "${path}${point}/needs") and + my @next_need = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + opendir(DIR, "${path}${point}/wants") and + my @next_want = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + + for(@next_need) { + get_deeper($_, $tmp_counter + 1, 1); + } + for(@next_want) { + get_deeper($_, $tmp_counter + 1, 0); + } +} + +# +# start first instance +# +get_deeper($starting_point, 0, 0); + +# +# work done, go home +# +exit(0); diff --git a/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/cinit.graph.text.c b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/cinit.graph.text.c new file mode 100644 index 00000000..5e5316ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/cinit.graph.text.c @@ -0,0 +1,200 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + cinit.graph.text.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.2 + + ChangeLog: + Version 0.2 (Peter Portmann): + * Not assigned link destinies are marked by (!). + * Not readable directories are marked by "directory not readable". + + Version 0.1 (Peter Portmann): + * Print of the directory structure of the contained files and links + without following the links. + + Todo: + + Features: +*/ + +//#include +#include +#include +#include +#include +#include +#include +#include +//#include "cinit.h" +#include "error.h" + +#define FTW_F 1 /* file isn't a directory */ +#define FTW_D 2 /* file is a directory */ +#define FTW_DNR 3 /* not readable directory */ +#define FTW_NS 4 /* unsuccesfully stat on this file */ +#define MAX_CHAR 4096 + +/*********************************************************************** + * cinit.graph.text - textual representation of the cinit directory + */ + +#define CSERVICE_BANNER "cinit.graph.text - textual representatio of the cinit directory\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncinit.graph.text \n" \ + "\tpath\t- cinit installationpath\n" + +typedef int EACH_ENTRY(const char *, const struct stat *, int); +typedef enum { FALSE=0, TRUE=1 } bool; + +static char dirpath[PATH_MAX]; +static int depth = 0; +static long int filecount = 0; + +static EACH_ENTRY each_entry; +static int pp_ftw(char *, EACH_ENTRY *); +static int each_getinfo(EACH_ENTRY *); + +/*********************************************************************** + * pp_ftw: file tree walk + */ +static int pp_ftw(char *filepath, EACH_ENTRY *function) +{ + int n; + + if(chdir(filepath) < 0) /* In angegebenen Pfad wechseln */ + err_msg(FATAL_SYS, "can't change to %s", filepath); + + if(getcwd(dirpath, PATH_MAX) == 0) /* Absoluten Pfadnamen ermitteln */ + err_msg(FATAL_SYS, "error using getcwd for %s", filepath); + + n = each_getinfo(function); + + return(n); +} + +/*********************************************************************** + * each_getinfo: get more info for each file. + */ +static int each_getinfo(EACH_ENTRY *function) +{ + struct stat statpuff; + struct dirent *direntz; + DIR *dirz; + int n; + char *zgr; + + if(lstat(dirpath, &statpuff) < 0) + return(function(dirpath, &statpuff, FTW_NS)); /* Error on stat */ + + if(S_ISDIR(statpuff.st_mode) == 0) + return(function(dirpath, &statpuff, FTW_F)); /* no directory */ + + /* It's a directory. + * Call function() for it. After that handel each file in the directory. */ + + if((dirz = opendir(dirpath)) == NULL) { /* Directory not readable */ + closedir(dirz); + return(function(dirpath, &statpuff, FTW_DNR)); + } + + if((n = function(dirpath, &statpuff, FTW_D)) != 0) /* return the directorydirpath */ + return(n); + + zgr = dirpath + strlen(dirpath); /* append slash to the dirpathname */ + *zgr++ = '/'; + *zgr = '\0'; + + while((direntz = readdir(dirz)) != NULL) { + /* ignor . and .. */ + if(strcmp(direntz->d_name, ".") && strcmp(direntz->d_name, "..")) { + strcpy(zgr, direntz->d_name); /* append filename after slash */ + depth++; + if(each_getinfo(function) != 0) { /* Recursion */ + depth--; + break; + } + depth--; + } + } + *(zgr-1) = '\0'; /* deleting evrything after the slash */ + + if(closedir(dirz) < 0) + err_msg(WARNING, "closedir for %s failed", dirpath); + + return(n); +} + +/*********************************************************************** + * each_entry: handling each file and build the graph step by step. + */ +static int each_entry(const char *filepath, const struct stat *statzgr, int filetype) +{ + struct stat statpuff; + static bool erstemal=TRUE; + int i; + + char link[MAX_CHAR]; + + filecount++; + if(!erstemal) { + for(i=1 ; i<=depth ; i++) + printf("%4c|", ' '); + printf("----%s", strrchr(filepath, '/')+1); + } else { + printf("%s", filepath); + erstemal = FALSE; + } + + switch(filetype) { + case FTW_F: + switch(statzgr->st_mode & S_IFMT) { + case S_IFREG: break; + case S_IFCHR: printf(" c"); break; + case S_IFBLK: printf(" b"); break; + case S_IFIFO: printf(" f"); break; + case S_IFLNK: + printf(" -> "); + if(( i=readlink(filepath, link, MAX_CHAR)) != -1) + printf("%.*s", i, link); + if(stat(filepath, &statpuff) < 0) + printf(" (!)"); + break; + case S_IFSOCK: printf(" s"); break; + default: printf(" ?"); break; + } + printf("\n"); + break; + + case FTW_D: + printf("/\n"); + break; + + case FTW_DNR: + printf("/ directory not readable\n"); + break; + + case FTW_NS: + err_msg(WARNING_SYS, "Error using 'stat' on file %s", filepath); + break; + + default: + err_msg(FATAL_SYS, "Unknown Filetype (%d) by file %s", filetype, filepath); + break; + } + + return(0); +} + +/*********************************************************************** + * main: + */ +int main(int argc, char *argv[]) +{ + if(argc != 2) + usage(CSERVICE_BANNER, USAGE_TEXT); + + exit(pp_ftw(argv[1], each_entry)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/cinit.h b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/cinit.h new file mode 100644 index 00000000..cbde3195 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/cinit.h @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Dummy header file to intgrate mini_printf and usage + */ + +#ifndef CINIT_DUMMY_HEADER +#define CINIT_DUMMY_HEADER + +void usage(char *banner, char *text); +void mini_printf(char *str,int fd); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/error.c b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/error.c new file mode 100644 index 00000000..8174c702 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/error.c @@ -0,0 +1,124 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#include "error.h" +#include +#include +#include +#include +#include +#include + +#define MAX_CHAR 4096 + +int debug; /* Aufrufer von log_msg oder log_open muss debug setzen: + 0, wenn interaktiv; 1, wenn Daemon-Prozess */ + +/*---- Lokale Routinen zur Abarbeitung der Argumentliste --------------------*/ +static void msg_err(int sys_msg, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + return; +} + +static void msg_log(int sys_msg, int prio, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + if (debug) { + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + } else { + strcat(puffer, "\n"); + syslog(prio, puffer); + } + return; +} + +/*---- Global aufrufbare Fehlerroutinen -------------------------------------*/ +void err_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_err(0, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + case DUMP: + msg_err(1, fmt, az); + break; + default: + msg_err(1, "Falscher Aufruf von err_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + else if (kennung==DUMP) + abort(); /* core dump */ + exit(1); +} + +void log_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_log(0, LOG_ERR, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + msg_log(1, LOG_ERR, fmt, az); + break; + default: + msg_log(1, LOG_ERR, "Falscher Aufruf von log_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + exit(2); +} + +/*---- log_open --------------------------------------------------------------- + initialisiert syslog() bei einem Daemon-Prozess */ +void log_open(const char *kennung, int option, int facility) +{ + if (debug==0) + openlog(kennung, option, facility); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/error.h b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/error.h new file mode 100644 index 00000000..a55690fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/error.h @@ -0,0 +1,29 @@ +#ifndef ERROR_H +#define ERROR_H +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.h + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#define WARNING 0 +#define WARNING_SYS 1 +#define FATAL 2 +#define FATAL_SYS 3 +#define DUMP 4 + +void log_msg(int kennung, const char *fmt, ...); +void err_msg(int kennung, const char *fmt, ...); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/make.cconfig.from.xml.rb b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/make.cconfig.from.xml.rb new file mode 100644 index 00000000..05f35cc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/make.cconfig.from.xml.rb @@ -0,0 +1,227 @@ +#!/usr/bin/env ruby + +=begin + + Create a cconfig directory based on a xml input. + (C) 2005 by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added binary file support + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Added some commandline options + * Added «level» so control the restrictivity of the program + * Added more «intelligence» to the program, to detect internal broken dependcies. + * Support «debug»-Levels. + * Print statistic at the end of the programs about warnings and errors. + + Version 0.1 (René Nussbaumer): + * Initial + + Todo: + * Use an rexml alternative + * Some cleanup + * Optimize + * Testing? + + Features: + * Create a cconfig directory based on a xml + +=end + +require 'rexml/document' +require 'getoptlong' +require 'base64' +require 'digest/sha1' + +@verbose = 0 +@level = 1 +@version = '0.3' + +@warnings = 0 +@errors = 0 +@checklist = Array.new + +def printMsg(prefix, msg) + puts '%-12s %s' % [prefix + ':', msg] +end + +def error(msg, fatal = 0) + @errors += 1 + fatal = 0 if(@level < 1) + fatal = 255 if(@level > 1 && !fatal) + printMsg(fatal != 0 ? 'PANIC' : 'ERROR', msg) + Kernel.exit(-fatal) if(fatal != 0) +end + +def warn(msg) + error(msg, 1) if(@level > 1) + @warnings += 1 + printMsg('WARNING', msg) +end + +def info(msg) + printMsg('INFO', msg) +end + +def debug(msg, verbosity = 1) + if(@verbose >= verbosity) + printMsg("DEBUG(#{verbosity})", msg) + end +end + +def createObject(name) + error("#{name} already exists.", 1) if(FileTest.exists?(name)) + begin + Dir.mkdir(name) + rescue + error("Could not create directory #{name}: #{$!}. Abort.", 7) + end + debug("Object #{File.expand_path(name)} has been created.", 4) +end + +def createAttribute(name, content = nil) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + begin + file = File.new(name, 'w') + file.print content if(content && !content.empty?) + file.close + debug("Attribute #{File.expand_path(name)} has been created", 4) + rescue + error("Could not create file #{name}: #{$!}. Skipped.") + end +end + +def createLink(name, target, type) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + error("Broken dependencies! Please take a look if #{target} exists on your system", 2) if(type == 'external' && !FileTest.exists?(target)) + if(!FileTest.exists?(target) && type != 'external') + #info("Possible break. But maybe the target #{target} does not yet exists. Checking later.") + exptarget = File.expand_path(target) + @checklist << exptarget + debug("Adding #{target} to the list of internal dependcies to check.", 2) + end + begin + error('You\'ve a system which does not support symbolic links. Abort.', 3) if(File.symlink(target, name) != 0) + rescue + error("Could not create symlink #{name} => #{target}: #{$!}.", 3) + end + debug("Link #{File.expand_path(name)} has been created", 4) +end + +def doWork(elm) + name = elm.name + attrname = elm.attributes['name'] + error("XML Tag with missing name attribute!", 5) if(!attrname) + if(name =~ /(object|cconfig)/) + if(name == 'cconfig') + if(elm.attributes['version']) + info("Found a version string: #{elm.attributes['version']}") + warn("This XML is maybe incompatible with this programm. I'm a version #{@version} script. The XML is generated with a version #{elm.attributes['version']} script. Please update.") if(elm.attributes['version'] > @version) + end + end + createObject(attrname) + if(elm.has_elements?) + pwd = Dir.pwd + Dir.chdir(attrname) + elm.each_element { |e| + doWork(e) + } + Dir.chdir(pwd) + end + elsif(name == 'attribute') + text = nil + e = nil + text = e.value if((e = elm.get_text)) + if(text && elm.attributes['type'] && elm.attributes['type'] == 'binary') + text = Base64.decode64(text) + if(Digest::SHA1.hexdigest(text) != elm.attributes['sha1']) + warn("SHA1 differs from file: #{Dir.pwd}#{attrname}") + end + end + createAttribute(attrname, text) + elsif(name == 'link') + error("link-Tag without content.", 6) if(!elm.has_text?) + error("link with missing target. Skipped.") if(!elm.attributes['target']) + createLink(attrname, elm.get_text.value, elm.attributes['target']) + end +end + +puts "This is #{File.basename(__FILE__)} v#{@version} by René Nussbaumer" +puts + +opts = GetoptLong.new( + ['--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT], + ['--level', '-l', GetoptLong::REQUIRED_ARGUMENT], + ['--version', '-V', GetoptLong::NO_ARGUMENT] +) + +opts.each { |arg,value| + case arg + when '--verbose' + @verbose += 1 + value.each_byte { |x| + if(x.chr == 'v') + @verbose += 1 + end + } + debug("Verbosity set to: #{@verbose}") + when '--level' + debug("Setting level to: #{value}", 3) + case value + when 'low' + @level = 0 + when 'normal' + @level = 1 + when 'paranoid' + @level = 2 + else + warn('Unknown level: ' + value) + end + when '--version' + Kernel.exit(0) + else + warn("Unknown option #{arg}#{value && !value.empty? ? ('with value ' + value) : ''}") + end +} + +if(!ARGV[0]) + puts 'Need at least one argument' + puts "Usage: #{__FILE__} " + Kernel.exit(1) +end + + +filedesc = $stdin + +if(ARGV[0] != '-') + filedesc = File.new(ARGV[0]) +end + +doc = REXML::Document.new filedesc + +doWork(doc.root) + +if(!@checklist.empty?) + info('Now checking all broken internal dependcies again') + broken = 0 + @checklist.each { |path| + debug("Checking #{path}.", 2) + if(!FileTest.exists?(path)) + broken += 1 + warn("Broken dependcies. #{path} does not exist. Please fix.") + end + } + info('Looks good.') if(broken == 0) + info('Bad, bad.') if(broken > 0) +end + +info("Successed. #{@warnings} warnings, #{@errors} errors") + diff --git a/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/mini_printf.c new file mode 120000 index 00000000..3e9a596c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/mini_printf.c @@ -0,0 +1 @@ +../src/generic/mini_printf.c \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/usage.c b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/usage.c new file mode 120000 index 00000000..c26691ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/contrib+tools/usage.c @@ -0,0 +1 @@ +../src/generic/usage.c \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/.buildwarn b/software/cinit/browse_source/cinit-0.3pre13/doc/.buildwarn new file mode 100644 index 00000000..41183a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/.buildwarn @@ -0,0 +1,24 @@ + +Welcome to the cinit +******************** + +Hints: +------ + - Settings can be found in conf/* (also used for compiling) + - Cinit configuration is normally found in /etc/cinit + +Documentation +------------- +The documentation can be found in doc/: + + - doc/user/ contains documentation for users + - doc/devel/ contains documentation for developers + + Please read doc/user/installing-cinit.text BEFORE installing. + +Building cinit +-------------- + + "make all" - to build cinit + "make install" - to install cinit, documentation and core tools + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/Makefile b/software/cinit/browse_source/cinit-0.3pre13/doc/Makefile new file mode 100644 index 00000000..0daac842 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/Makefile @@ -0,0 +1,107 @@ +# +# Makefile stolen from ccollect +# Nico Schottelius, Fri Jan 13 12:13:08 CET 2006 +# + +A2X=a2x +ASCIIDOC=asciidoc +DOCBOOKTOTEXI=docbook2x-texi +DOCBOOKTOMAN=docbook2x-man +XSLTPROC=xsltproc +XSL=/usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl + +# +# Asciidoc will be used to generate other formats later +# +MANDOCS = man/cinit.text man/halt.kill.text man/poweroff.kill.text \ + man/reboot.kill.text man/cmd.text +USERDOCS = user/compiles.on.text user/configuring.cinit.text \ + user/conf-system.text \ + user/cross-compiling.text user/current-init-problems.text \ + user/daemons.backgrounding.text user/dependencies.text \ + user/example-directory-structure.text \ + user/installing-cinit.text user/paths.text \ + user/profiles.text user/README.text +DEVELDOCS = devel/codingguideline.text +DOCS = $(MANDOCS) $(USERDOCS) $(DEVELDOCS) + +# +# Doku +# +HTMLDOCS = $(DOCS:.text=.html) +DBHTMLDOCS = $(DOCS:.text=.htm) + +#TEXIDOCS = $(DOCS:.text=.texi) + +MANPDOCS = $(MANDOCS:.text=.man) + +DOCBDOCS = $(DOCS:.text=.docbook) + +DOC_ALL = $(HTMLDOCS) $(DBHTMLDOCS) $(TEXIDOCS) $(MANPDOCS) + +# +# End user targets +# +help: + @echo "----------- documentation make targets --------------" + @echo "documentation: generate HTML, Texinfo and manpage" + @echo "html: only generate HTML (via asciidoc/docbook/xsltproc)" + @echo "htm: only generate HTML (via asciidoc)" + @echo "info: only generate Texinfo" + @echo "man: only generate manpages" + @echo "pdf: only generate pdfs (requires: fop)" + +install: $(DOC_ALL) + @echo "===> Copy " man/*.[0-9] "to the correct manpaths" + +# +# Internal targets +# +html: $(HTMLDOCS) +htm: $(DBHTMLDOCS) +info: $(TEXIDOCS) +man: $(MANPDOCS) +documentation: $(DOC_ALL) + + +# +# Generic targets +# + +# docbook gets .htm, asciidoc directly .html (or the other way round) +%.html: %.docbook + ${XSLTPROC} -o $@ ${XSL} $< + +%.htm: %.text + ${ASCIIDOC} -n -o $@ $< + +%.docbook: %.text + ${ASCIIDOC} -n -b docbook -o $@ $< + +%.texi: %.docbook + ${DOCBOOKTOTEXI} --to-stdout $< > $@ + +%.mandocbook: %.text + ${ASCIIDOC} -b docbook -d manpage -o $@ $< + +#%.man: %.mandocbook +# ${DOCBOOKTOMAN} --to-stdout $< > $@ + +%.man: %.text + ${A2X} -f manpage $< + +%.pdf: %.text + ${A2X} -f pdf $< + +# +# Distribution +# +clean distclean: + rm -f $(DOC_ALL) + rm -f man/*.texi man/*.xml man/*.[0-9] + +# +# Be nice with the users and generate documentation for them +# +dist: distclean documentation + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/README.text b/software/cinit/browse_source/cinit-0.3pre13/doc/README.text new file mode 100644 index 00000000..46fe59fe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/README.text @@ -0,0 +1,57 @@ +cinit/doc +========= +Nico Schottelius +0.1, Initial Version from 2006-11-30 +:Author Initials: NS + +This directory contains the cinit documentation. + +Files and directories in this directory +---------------------------------------- + +ancient +~~~~~~~ +Old documents, only thought to irritate you. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +braindumps +~~~~~~~~~~ +Files I used to make the situation clear to myself. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +devel +~~~~~ +Developer related documents. Contains information for adding code, +for developing external tools to cinit or code guidelines for writing +patches to cinit. + + +logs +~~~~ +Logfiles or raw data dumps. + + +Makefile +~~~~~~~~ +The makefile used to generate the documentation. + + +man +~~~ +Manpages. + + +README.text +~~~~~~~~~~~ +This file + + +user +~~~~ +The most important part: Documentation for users (aka sysadmins, +hackers, endusers?): Explains howto install, configure, use and +debug cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/README b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/README new file mode 100644 index 00000000..45e193f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/README @@ -0,0 +1,16 @@ +Ancient +======= +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 + + +These files may be incorrect, outdated, totally wrong or even trying +to take over world dominance. + + +Why are they still there? +------------------------- + +Just because to document the early days of cinit. If you are +a software archaeologist in the year 2423, you'll be happy that +I saved those files. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/caveats b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/caveats new file mode 100644 index 00000000..5ab123e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/caveats @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/author b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/availability b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/availability new file mode 100644 index 00000000..cfb3f8a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/availability @@ -0,0 +1 @@ +cinit is currently Linux-specific. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/examples b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/examples new file mode 100644 index 00000000..1a7d2dcb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/examples @@ -0,0 +1 @@ +See http://linux.schottelius.org/cinit/#config diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/files b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/files new file mode 100644 index 00000000..4d6c0921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/files @@ -0,0 +1,5 @@ +/sbin/cinit - the init system +/sbin/cservice - control cinit +/sbin/cinit.reboot (/sbin/reboot if non-existent before) +/sbin/cinit.shutdown (/sbin/shutdown if non-existent before) +/etc/cinit - configuration directory diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/long_description b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/long_description new file mode 100644 index 00000000..18c3c082 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/long_description @@ -0,0 +1,5 @@ +cinit is a fast executing, small and simple init with support for profiles. It +minds dependencies (hard and soft, 'needs' and 'wants') and executes processes +in parallel. And it has a simple configuration, which makes many shell-scripts +unecessary (but you still could use them if you really want), which leads to +better performance and less memory using. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/meta/name new file mode 100644 index 00000000..b853da25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/meta/name @@ -0,0 +1 @@ +cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/parameters b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/parameters new file mode 100644 index 00000000..54df4727 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/parameters @@ -0,0 +1 @@ +cprofile: diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/path b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/path new file mode 100644 index 00000000..37edf339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/path @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/see also b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit.commands b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit.commands new file mode 100644 index 00000000..d34d13bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cinit.commands @@ -0,0 +1,73 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (using SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. +CMD_UPDATE: Update cinit, hot-reboot the system. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/author b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/long_description b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/long_description new file mode 100644 index 00000000..82818a93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/long_description @@ -0,0 +1 @@ +cservice controls cinit. Please use cservice -h for help. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/meta/name new file mode 100644 index 00000000..49c847bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/meta/name @@ -0,0 +1 @@ +cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/parameters b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/parameters new file mode 100644 index 00000000..605b08b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/parameters @@ -0,0 +1 @@ +[-eaphru] [thilo] diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/path b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/path new file mode 100644 index 00000000..85b0cb56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/path @@ -0,0 +1 @@ +/sbin/cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/see also b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/cservice-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/extern/README b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/extern/README new file mode 100644 index 00000000..e734d6d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/extern/README @@ -0,0 +1,2 @@ +doc/extern/ + Some things related to cinit from the outside world. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/extern/ipc.thoughts b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/extern/ipc.thoughts new file mode 100644 index 00000000..e2619d34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/extern/ipc.thoughts @@ -0,0 +1,83 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2 ), +1024 is the maximum opened file deskriptors, +minus 3 (stdin/stdout/stderr) already opened, divided +by two, because two fds needed per client. + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt, + - poweroff, + - update itself (hot-reboot) + - and to start a rescue mode (see using.rescue). + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + CONT: update + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/extern/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/extern/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/extern/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/extern/linux.kernel.eats.arguments b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/extern/linux.kernel.eats.arguments new file mode 100644 index 00000000..dbaf57d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/extern/linux.kernel.eats.arguments @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +Linux, the kernel, eats arguments +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +If you specify + + variable=value + +to the Linux kernel, the argument will NOT be passed to cinit. + +Here's the relevant code block from init/main.c of the Linux kernel: + +------------------------------------------------------------------------------- + +From init(void * unused) the function run_init_process(char *init_filename) +is called, which passes argv_init (char * argv_init[MAX_INIT_ARGS+2]) to init. + +First init_setup(char *str) resets all elements of the argv_init to NULL. + +The function unknown_bootoption(char *param, char *val) fills the +argv_init array, but only with parameters, which have no value +(val). + +The function parse_args calls unknown_bootoption with the unknown options. + +------------------------------------------------------------------------------- + +This way the profile support in all cinit versions below cinit-0.1 will +only work if you change conf/profile, because "cprofile=value" will +not be given to cinit, because it's not treated as a command line option. + +The original value "cprofile=" is replaced by "cprofile:" as of cinit-0.1. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/extern/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/extern/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/extern/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/fun-testing b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/fun-testing new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/fun-testing @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/how_it_works_internally b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/init-idea-first b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/init-idea-first new file mode 100644 index 00000000..2d677d8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/init-idea-first @@ -0,0 +1,38 @@ +- restarting/respawning + touch respawn +- dependencies + a needs started b +- clean multiply dependencies +- start & stop dependencies + start_depends + stop_depends +- parallel executation +- start and stop commands + start -> link + start_param -> parameters, like minit + stop -> link + stop_param -> parameters, like minit + + if no stop command is available, try to kill the pid we started at stop + +/startup/ + start_depends=gettys +/shutdown/ + stop_depends=power_off + + +gettys/ + start_depends=getty/1 + start_depends=getty/2 + start_depends=getty/3 + start_depends=getty/4 ... + +getty/1/ + start=/sbin/fgetty + respawn + +power_off/ + stop_depend=umount + +umount/ + stop_depend= diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/porting.to.other.os b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/porting.to.other.os new file mode 100644 index 00000000..65fdc07b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will perhaps become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/removing.zombies b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/removing.zombies new file mode 100644 index 00000000..9527e652 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + cinit in general will keep the behaviour of reaping the vestiges, + which broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/security b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/security new file mode 100644 index 00000000..f1dac591 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/security @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation, which will not accept connect() +by others than root. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console then! + +For extra parnoid settings you can do the following: + + ei # chmod 700 /etc/cinit/tmp/coala + ei # chown root:root /etc/cinit/tmp/coala diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/socket.poll_vs_o_async b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/socket.poll_vs_o_async new file mode 100644 index 00000000..477f2bff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/socket.poll_vs_o_async @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------------- +Socket: poll(2) vs. O_ASYNC, +Nico Schottelius 2005-06-22 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +0. General problem +1. O_ASYNC +2. poll(2) + + +0. General problem + +cinit has to react, as soon as there's data on the socket. + +1. O_ASYNC + +When you open a socket with O_ASYNC (or specify it with fcntl(2)) under +Linux, your process recieves the SIGIO signal from the kernel, as soon +as data is available. + +The problem is the handling of signals seems not to be serialised: + +The function, which is called on the SIGIO signal (called sigio() here) +calls other functions. Those functions way recieve SIGIO while working, +so the first data stream is not yet finished, though the next +stream is beeing read. + +This gives very nice race-conditions, which are very nice to debug. + +2. poll(2) + +poll(2) is a standard Unix-call (XPG4-UNIX), which waits a specific +timeout (or infinite time if you specify a value less that zero) for +the socket (or the fd in general) to be in a state where +data is available to read (in fact poll can do much more, but we are +not interested only in POLLIN and POLLPRI). + +While poll(2) seems to be a very bit slower than sigio it works reliable. + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/thoughts.closed b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/thoughts.closed new file mode 100644 index 00000000..91a8e080 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/ancient/thoughts.closed @@ -0,0 +1,52 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c + +7. Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. As this is not needed + currently, it's not implemented. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/README.text b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/README.text new file mode 100644 index 00000000..c4947a13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/README.text @@ -0,0 +1,2 @@ +DO NOT READ CONTENT IN THIS DIRECTORY. +(or at least do not blame me, if you get really confused after reading it) diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/big-picture.text b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/big-picture.text new file mode 100644 index 00000000..4426c236 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/big-picture.text @@ -0,0 +1,122 @@ +Just a small hint-file for me to see how cinit works: + + - cinit starts + * cinit executes either init or a profile + - the dependency-tree begins + + - now cinit begins to try to execute the dependencies + * first the needs (if those fail, wants are never called) + - fork() for every dependency? + +-------------------------------------------------------------------------------- +another idea: + + - cinit starts + - cinit reads the full depedency tree + * it builds n-depth trees + * it begins at the set init service (profile or init!) + * init is the first entry. always. + * read full service information (like on/off/params/respawn) + * design of each tree element: see below + - add a tree for the needs + - add a tree for the wants + - the elements have links, one service is created only once + - after the tree is created, execution begins + * begin from the bottom + * save a pointer to the last level somehow before? + +Pre calculation: + - need to act on changes (some kind of file watcher) + * need to keep status (?) + * what with now missing needs / wants? + - missing needs: shutdown now missing needs? + - simply ignore them? + - shut them down if not needed (no one has a link in needs?) + * +-------------------------------------------------------------------------------- +Sample dependency tree: + + init + / \ + needs wants + / | \ / | \ + a b c d e f + / | \ / | \ + needs needs needs END needs END + / | \ \ | | | | + b c d c f a e a +-------------------------------------------------------------------------------- +How this would be sorted:: + init: + needs: a b c + wants: d e f + a: + needs: b c d + b: + needs: c f + c: + needs: a e + d: + - + e: + needs: a + f: + - +-------------------------------------------------------------------------------- +So in this case, cinit may start services the following way: + d f + -> Wouldn't be possible in pre-calculation, because of circular dependencies. +-------------------------------------------------------------------------------- + Try a 'real' dependency tree: + a needs b c d + b needs c d + c and d do not need other stuff +-------------------------------------------------------------------------------- +Now cinit would it do the following way: + start c, start d + b will be started, as soon as c and d successfully finish + as soon as b is finished, a will be started +-------------------------------------------------------------------------------- +Now let's think about how this could look like in code... +- when we built up the tree, we have some ends (n to say) +- we can / must start starting (;-) at the end +- we would have more than one line back (z may be needed by c, i, and a) + * like in "c is needed by s, c, o" + * maxdepth counter? + * asynchronous rollback? + +--> to think more about it! +-------------------------------------------------------------------------------- + +tree elements: + * name (= path) + * on, off, +params + * respawn_delay + - -1 if not respawning + - >= 0 time to wait between restart + * status + - NOT STARTED (status on initialisation) + - RESPAWNING (running, respawning) + - RESPAWN_DELAY (waiting to respawn it) + - ONCE (started once) + * errormsg + - pointer to an error message in case of failure + * needs + - List of services we need + * wants + - List of services we want + * used_by + - List of services which use this service +-------------------------------------------------------------------------------- + +Conclusions +------------ + +cinit as the main executor +~~~~~~~~~~~~~~~~~~~~~~~~~~ +If cinit should start all services directly and manage dependencies +only internally, it will need to have build a reverse dependency tree, +so it begins starting at the end. + +cinit could execute all possible parallel running services in parallel +and open pipes to the (dumb) service executors. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/circular-dependencies.text b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/circular-dependencies.text new file mode 100644 index 00000000..dcc91ea7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/circular-dependencies.text @@ -0,0 +1,35 @@ +What todo with circular dependencies? + a needs b + b needs a + + - try to start them? + status a: is_starting + status b: not_set + a wants b, so a service starter for b starts + status a: is_starting, waiting for b + status b: is_starting + service starter for b sees that a is needed + service starter for b sees that a is already being started + service starter for b begins to execute b + status a: is_starting, waiting for b + status b: is_starting, executing "on" + service starter b finishes + status a: is_starting, waiting for b + status b: FAILED | RESPAWN | ONCE + service a continues + b successful: execute on + b failed: register / print that we do not start, because + b failed + + -> this would only catch possible deadlocks, if the dependency + tree / status check is done dynamically + -> in case of pre-building the dep-tree this situation must + be concerned: + - start both a and b? + - or stop due to circular dependency? + + - Abort on detection of a circular dependency + * possible without pre-calculating? + - perhaps only with direct communication possible? + * pre calculate + - do not start that services? diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/converting-debian b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/converting-debian new file mode 100644 index 00000000..ee40fdff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/converting-debian @@ -0,0 +1,30 @@ +# If you would like to automatically convert a debian system, you could +# use this script as a start point +# +# how it could look like +# + +# create cinit base configuration + +# analyse enabled services +level=$(awk -F: '/^id/ { print $2 }' /etc/inittab) +rcdir="/etc/rc${level}.d/" +initdir=/etc/init.d + +cd "$rcdir" +for svc in *; do + if [ -d "${debian_map_dir}/${svc}" ]; then + echo "Adding $svc" + else + + fi +done + +# Also add existing services in /etc/init.d +for ... + if [ ! -e $rcdir/$svc ] + if [ -d "${debian_map_dir}/${svc}" ]; then + echo "Adding, but not enabling" + fi + fi +done diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/converting-general b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/converting-general new file mode 100644 index 00000000..8a0a2e40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/converting-general @@ -0,0 +1,10 @@ +kern=$(uname -s) + +case "${kern}" in + $known_kern) + $scriptdir/$kern + ;; + *) + echo "Unknown system" + ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/creating-new-configurations b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/creating-new-configurations new file mode 100644 index 00000000..a251de5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/creating-new-configurations @@ -0,0 +1,6 @@ +scripts/create_baseconfig.sh # create base +scripts/cinit.install.standard.dirs # create common categories + +- create fsck +- set hostname +- create getty(s) diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/messages.text b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/messages.text new file mode 100644 index 00000000..f4ef769e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/messages.text @@ -0,0 +1,6 @@ +This document describes the messages used between cinit and its +"clients" (i.e. ccontrol, cservice, cinit.halt, ...): + +Signal messages +--------------- +As signals diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/possible_service_pre_calculation.text b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/possible_service_pre_calculation.text new file mode 100644 index 00000000..96ec3a73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/possible_service_pre_calculation.text @@ -0,0 +1,19 @@ +- start at + * create a new service entry (if not exists) <--- + * reads needs | + - follow dependencies ------------------------ + * only if service does not yet exist! | + * read wants | + - follow dependencies ------------------------ + * only if service does not yet exist! + * create + - needed by entry in dependencies + - needs entry in service + - wanted by entry in dependencies + - wants entry in service + + * record + - (on,off)(,.env,.params)? + - alternatively put that code into service starter + * add services without further needs into a special + "begin" structure to be reused at fireing of the services? diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/possible_service_status.text b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/possible_service_status.text new file mode 100644 index 00000000..eb0f21e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/possible_service_status.text @@ -0,0 +1,14 @@ + + - NOT_SET: this service has not yet been initialized + - RESPAWNING: happily respawning + - RESPAWN_DELAY: waiting delay before restarting + * HINT: using alarm()? + - senseful for single process service watcher + * HINT: using nanosleep()? + - senseful for per service process watcher + - NEED_FAILED + * add a (somehow terminated) list of services that failed? + * use global status to checkout which services failed? + - WANT_FAILED? + * NOT NECESSARY, it is a simple want, we do not need it. + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/registering_needs_wants.text b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/registering_needs_wants.text new file mode 100644 index 00000000..ededbd41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/registering_needs_wants.text @@ -0,0 +1,55 @@ +Each service has a list of services it + - needs + - is needed by + - wants + - is wanted by + + +Each entry is a service pointer. +The simplest list could look like this: + + service a: + needs: + b f g NULL + +So the needs pointer is NULL terminated: + needs = realloc(count_links) + -> how to get the count? + 0x02 + 0x + + Better: A double linked list (like the main service list)? + +Could look like: + service a: + needs: + *service + *next + *prev + +This design could also be used for wants. + +On the other hand, we've to register us at the needed/wanted service: + + service b: + needed_by: + *service + *next + *prev + + +So each service needs four pointers: + needs + needed_by + wants + wanted_by + +And on each request both lists have to be modified! + +Example: + + Service "a" adds "b" as needed: + + - add "a" needs "b" + - add "b" needed_by "a" + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/root-vm-testing b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/root-vm-testing new file mode 100644 index 00000000..a8773dea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/root-vm-testing @@ -0,0 +1,9 @@ +[19:33] denkbrett:root% cat uml-mount.sh +SDIR=$(dirname $0) +DDIR=$(dirname $0)/root +sudo mount "$SDIR/Debian-3.0r0.ext2" "$DDIR" -o loop,acl + +denkbrett# tar cfj ~nico/projekte/cinit/conf-vm-2007-03-05.tar.bz2 cinit +denkbrett# chown -R nico cinit +denkbrett# chown nico ../sbin + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/shutdown.text b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/shutdown.text new file mode 100644 index 00000000..ac76425d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/shutdown.text @@ -0,0 +1,84 @@ +cinit - braindumps - shutdown +============================= +Nico Schottelius +v0.1, for cinit-0.3, 2007-01-11 +:Author Initials: NS + +Just some braindumps. Do not read. + +Introduction +------------ +Shutting down the system. + +When? +----- +- reboot +- halt +- power off +- further needed? + +How / What? +------------ +- Stop services in the correct order + * reuse the service tree / needs / needed_by! + * call off, if existent + * if respawning, send SIGTERM? + - not if off is existent? + * give some variables to off? + - $RESPAWN_PID: if respawning +- send SIGTERM to other apps? + * or put that into special? special/post_svc_shutdown +- call special/{halt,poweroff,reboot} + * no, implemented that directly into cinit! +- implement timely controlled shutdown: + * cinit.shutdown forks (?) itself and waits, then sends a signal + to cinit to initiate the shutdown process + * create mappers for target OS + - Linux + - {free,net,open}bsd + - others may contribute theirself +- also implement poweroff + * kill -TERM 1 +- also implement reboot + * kill -HUP 1 +- also implement halt + * kill -USR1 1 + + +The implementation +----------------- +x shutdown is initiated +x disable communication (nobody can influence us anymore) +x install special signal handler? + - no. we do not care about zombies anymore, we are gone soon anyway + - simply reset to the default +- begin to shutdown services + * where to start? + * begin shutdown at the end of the tree, viewing/sorting it by the 'needed_by' + -> where to begin sort? + -> worst implementation: scan all services (easy for now) + -> result: list of services, that noone needs :-) + * stop those services and step above + - stop a service, as soon as noone needs it anymore + * check all needed_by links + * more or less the inverted gen_svc_tree +- how to shutdown a service + * if existing, call off + - if off does not exist: + * if respawn: send sigterm to the process + * also implement sigkill at this stage? + - think we can delay it to the end + - otherwise users can use off! + - implement environment for off ($cinit_respawn_pid, $cinit_service_name) + - do *NOT* care about the return value, we can't do anything for it + anymore anyway +- after all services are shutdown, kill all remaining services + * SIGTERM + * wait(defined_time_in_seconds) + * SIGKILL +- call the last command + * to cleanup the system + - umount -a (if needed) + - swapoff (if needed) + - sync (if needed) +- switch off diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/sizes b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/sizes new file mode 100644 index 00000000..ddd30f75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/braindumps/sizes @@ -0,0 +1,6 @@ +sysvinit: +root 1 0.0 0.0 1944 648 ? Ss 02:12 0:00 init [2] + +cinit-0.3pre8-glibc-linux: +compiler 25323 0.0 0.0 1564 392 pts/2 S+ 20:22 0:00 ./cinit + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/devel/README.text b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/README.text new file mode 100644 index 00000000..20524651 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/README.text @@ -0,0 +1,18 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit development documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +(cinit-)developers. + +Content +------- diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/devel/cinit-0.4.text b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/cinit-0.4.text new file mode 100644 index 00000000..61b718f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/cinit-0.4.text @@ -0,0 +1,115 @@ +cinit 0.4 - Redesign of cinit +============================================ +Nico Schottelius +0.4.0, for cinit 0.4, Initial Version from 2006-03-11 +:Author Initials: NS + + +cinit 0.2 ran fine and the general project of developing a +parallel executing init system is finished. +With cinit 0.4 there are new aims to reach. + + +Introduction +------------ + +. AIMS + - portability: no Linux-dependency anymore + - cleaner signal handling + - better documentation so more people can use it + + +Current problems +---------------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The mount(2) system call is os-specific. +The temporary fs is os-specific. + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Race conditions when multiple signals arrive + + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +serv/sig_reboot.c contains umount, remount hard coded. + + +Solutions +--------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Remove +- the mount call +- do not create an initial socket + +Wait until we recieve a signal, then we create a socket +under the configured socket directory (see `conf/sockdir`). + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +Misc +~~~~ + +- Configuration + /etc/cinit/config/ + init -> link to initial service + pre_boot + pre_boot_args + post_boot + post_boot_args + /etc/cinit/services/ + /etc/cinit/profiles/ + links to the starting services + + + +cinit - Internals +================= +Nico Schottelius +0.1 for cinit-0.3, Initial version: So Feb 19 10:25:46 CET 2006 +:Author Initials: NS + + +Introduction +------------ +This document describes the internals of cinit. It is thought +to be read by developers. + + +Child handler code in cinit-0.3 +------------------------------- + +In cinit versions <= cinit-0.2.1 the respawning services where +handled by an extra child handler, which was a fork of cinit. This +had some problems: + + - We allocated more memory than necessary, unecessary parts of + cinit were copied + - The SIG_CHILD-handler was not written very clean, in some versions + it was completly missing. + + +. So in `cinit-0.3` we changed it the following way: + - no extra child handlers + - handle everything in the SIG_CHILD handling function + - when sig_child is recieved do: + - check against respawn list + - if it is a respawning service, [do the following in a seperate fork?] + check whether it successfully stoped + - if yes: restart immediatly + - if no: sleep $sleep_time and then restart diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/devel/codingguideline.text b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/codingguideline.text new file mode 100644 index 00000000..d4686d8f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/codingguideline.text @@ -0,0 +1,149 @@ +Coding style +============ +Nico Schottelius +0.1, for cinit, Initial version from 2006-11-13 +:Author Initials: NS + +This document describes the coding style used in cinit. + + +Indent +------ +Indent the code by 3 spaces for each level. +Indent variable names, so the names begin all at the same position. +Use three spaces to place them. + + +Whitespaces +----------- +Where to put or avoid whitespaces (space or linefeed (lf)). + + +Spaces +~~~~~~ +- After closing brace "if(test) return 0;" +- Spaces before and after '=', '>', '<', '==', '!='', '>=', '<=', '>>', '<<', '&', '&&', '|', '||' +- After start of comment and before end of comment: '/* text */' + + + After ')', ',' + +No spaces +~~~~~~~~~ +- Within braces and code "(!test)", +- Before braces "if(code)" +- No space before ), so if '))', do not put a space after the first ')' + + +Linebreaks +~~~~~~~~~~ +This somehow includes the setting of braces (indirectly through (not) setting +spaces. + +If +^^ + +Put the if, the braces and the opening curly brace on one line, +put the closing one together with `else` and the new opening +curly brace on one line: + +------------------------------------------------------------------------------ +if(...) { + /* code */ +} else { + /* else: code */ +} +------------------------------------------------------------------------------ + +While +^^^^^ +------------------------------------------------------------------------------ +while(condition) { + /* repeat */ +} +------------------------------------------------------------------------------ + +Do-While +^^^^^^^^ +------------------------------------------------------------------------------ +do { + /* something */ +} while(running); +------------------------------------------------------------------------------ + +Switch +^^^^^^ + +------------------------------------------------------------------------------ +switch(value) { + case DO_SOMETHING: + /* code */ + break; + default: + break; +} +------------------------------------------------------------------------------ + + + +Where to put curly braces +------------------------- + +Functions +~~~~~~~~~ +Opening and closing curly braces are placed on a seperate row: + +------------------------------------------------------------------------------ +int func(int params) +{ + body +} +------------------------------------------------------------------------------ + + +If, else, while, do-while +~~~~~~~~~~~~~~~~~~~~~~~~~ +See above. + + +Comments +--------- +where necessery, do not state the obvious in comments: + + /* this code increments tmp */ + ++tmp; + +If there is more than one line containing a comment, try to adjust them +so they look the same in width and position: + +------------------------------------------------------------------------------ + int illuminati = 23; /* do not want to comment that */ + int the_answer_to_everything = 42; /* 42. */ + + [...] + + while(illuminati < the_answer_to_everything) { /* only try before them */ + overtake_world(&self); /* overtake is complex */ + } +------------------------------------------------------------------------------ + + +Header +------- +Put a header into each file, containing: + + - Date of file being put into existence (year is enough) + - Name and e-mail (obfuscated if you want) of the author(s) + - Description of the function + - Copyright statement (if not included GPLv2 or later is assumed) + + +Includes +~~~~~~~~ +Include system headers first, then place own headers. Comment the includes, +wherefore you added them. Example: + +------------------------------------------------------------------------------ +#include /* write */ +#include "cinit.h> /* cinit_ipc_* */ +------------------------------------------------------------------------------ diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/devel/communication.text b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/communication.text new file mode 100644 index 00000000..ea5351a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/communication.text @@ -0,0 +1,247 @@ +cinit - communication +===================== +Nico Schottelius +0.1 for cinit-0.3, Initial version: 2006-08-11 +:Author Initials: NS + +This document describes the internal communication of cinit. +It is thought to be read by developers. + + +Introduction +------------ +This document describes the messages used between cinit, cinit forks +and other programs that want to talk to cinit. It does NOT +describe the communication method, but only the messages sent +(for the communication method read "ipc.text"). + +Document status +~~~~~~~~~~~~~~~ +This document is still being written, it is not finished. + + +About Messages +-------------- + +Order +~~~~~ +The client always initiates the communication. +cinit will begin listening to messages directly after its start. + + +Numbers +~~~~~~~ +Can be found in include/cinit.h. + + +Data +~~~~~ +A message always conists of a predefined structure (see src/headers/comm.h). +Can't use a structure, were missing the point that we cannot transfer dynamic +length strings. Thus the protocol consists of: + + client(int) => cinit + cinit(ini) => client + => after that follows command specific data + +The byte order is host specific (may be little or big endian). + +STRUCTURE WITH STATIC SIZE. MSGRCV! +IPC LAYER CREATES TRANSPORT! + +Type +~~~~ +Messages are binary data. + +The messages +------------ +The client always uses the same structure (struct msg_client) to contact +cinit. This way cinit does not need to handle dynamic data structures. + +cinit in contrast delivers different data structures to its clients, +depending on the question. + +The questions are issued by any type of client, the internal command used is +noted in square brackets ([]). + +The answers are given by cinit. + + +Question: Start a service (and its dependencies) [CMD_START_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to start the service and its dependencies. + +The client must provide cinit with the following information: +. Name of the service to be started +. Reason why to start it +. eventually additional information (see below) + +The reason +^^^^^^^^^^ +Can be one of: +- RS_NONE (it's a manual start request) +- RS_WANTS (a currently starting service wants to start this service) +- RS_NEEDS (a currently starting service needs to start this service) + +If the reason is RS_WANTS or RS_NEEDS the client must supply the name +of the service, which wants it to be started. + + +Question: Start a service (nothing else) [CMD_START_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to start the service and which will +report the status back. + + +Question: Stop a service (and its dependencies) [CMD_STOP_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to stop the service and each service +that 'needs' it. + +This function works recursively, thus also killing those services, that +need the service that need the current service. + + +Question: Stop a service (nothing else) [CMD_STOP_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to stop this service and which will +report the status back. + + +Question: Stop a service (plus 'needs' and 'wants') [CMD_STOP_SVC_WANTS] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Same as 'Stop a service (and its dependencies)', but also stop the +services that want to have this service. + +This function works recursively, thus also killing those services, that +'need' or 'want' the service that 'need' or 'want' the current service. + + +Question: What's the status of service XYZ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Code, length of service name, the service name (without \0). +int, int, char[]; + + + +Question: Could you change the status? [CMD_CHG_STAT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A cinit fork reports the new status of a service. + + +Question: Could you start the rescue mode? [CMD_RESCUE] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +spawn the rescue program. + + +Question: Could you halt the system? [CMD_HALT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +halt the system. + + +Question: Could you reboot the system? [CMD_REBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +reboot the system. + + +Question: Could you poweroff the system? [CMD_POWEROFF] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +poweroff the system. If poweroff is not possible, the system will +be halted. + + +Question: Could you warmboot the system? [CMD_WBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +restart itself and the bootup process. + + +Question: Could you send information about a service? [CMD_INFO] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will respond with detailled information about the service +to the client. + + +Answer: Return short status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Start a service (and its dependencies) + - Question: Start a service (nothing else) + - Question: Stop a service (and its dependencies) + - Question: Stop a service (nothing else) + - Question: Stop a service (plus 'needs' and 'wants') + - Question: Could you change the status? + +cinit only responds the status of the asked service. +The structure send is "asw_sstatus", which only include a status byte. + + +Answer: Return long status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Could you send information about a service? + + +old Messages (to be transferred into this document) +--------------------------------------------------- + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Service status: + +-------------------------------------------------------------------------------- +service status (cinit), +Nico Schottelius 2005-09-29 (Last Modified: -) +-------------------------------------------------------------------------------- + +There are service status and service returns. Service status is a status +a service can have. A service return is a value from a function that +describes what happened with the service. + +Status has ST_ prefix, return has RT_ prefix. +See cinit.h for most up to date versions. + + +ST_NEED_FAIL - this service will not be started, until the needs are started +ST_FAIL - this service failed to start +ST_UNSPEC - some unknown error. This should never happen. +ST_ERR - ??? /* tried earlier, service failed, won't retry */ + +ST_SUCCESS - service was successfully started - senseful? +ST_TMP - some instance is currently working on it +ST_ONCE - executed once sucessfully +ST_RESPAWN - service is running and respawning + +ST_TMPNOW 55 /* now you are on it - only for clients */ +#define ST_OFF 56 /* Switching service off */ + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/devel/configuring.text b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/configuring.text new file mode 100644 index 00000000..405a4d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/configuring.text @@ -0,0 +1,18 @@ +cinit/doc/devel/using-conf.text +================================ +Nico Schottelius +0.1, Initial Version from 2006-07-28 +:Author Initials: NS + +About conf/* and how to use the configurations. + +Introduction +------------ + +Who should read those documents? +-------------------------------- + +Content +------- + + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/devel/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/cross-compiling.text new file mode 100644 index 00000000..fdf70564 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/cross-compiling.text @@ -0,0 +1,36 @@ +TODO: + - merge into "Cross compiling" + +cinit - Problems that may arise +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Max open files + OS dependent + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/devel/ipc.text b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/ipc.text new file mode 100644 index 00000000..cdab4fcc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/ipc.text @@ -0,0 +1,141 @@ +IPC - in cinit and in general +============================= +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +IPC - Inter process communication + +Introduction +------------ +This document describes the IPC methods used and/or tested for +cinit. + +It does not describe in detail, how the different methods work +(this is already done many times, there's great documentation +available online), but more the advantages and disadvantages +(especially for an init system). + +What is IPC? +~~~~~~~~~~~~ +IPC describes methods to communicate between different processes +(programs). + +IPC as described by SUSV3 (The Single UNIX Specification Version 3) +aka IEEE Std 1003.1, 2004 Edition aka POSIX only defines +MSQ, SHM and Semaphores as IPC. This document also covers +Sockets and FIFOs. + + +What is not (yet) covered by this document? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Speed of different IPC methods, different behaviour on different +unices. + + +Why do you need IPC for an init system? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +cinit IPC history + analysis +---------------------------- + + +FIFOs +~~~~~ +First in - first out +File on the filesystem +Always need two files for two way communication + +Hints +^^^^^ +The first idea for IPC in cinit was to use two FIFOs, like minit does. +Wrong assumption: +runit also uses fifos, but two fifos for each services. That way +more parallel transmissions is possible. +You have to pay attention: Maximum number of opened files! +(On Linux 2.6 this is 1024, which makes a maximum of 512 services. +This limit is most likely never reached, but you have to keep it +in mind). + +Sockets +~~~~~~~ +Clean and beautiful. They allow easy two way communication. + +If you created a socket, fs is r/o, you cannot use it, although +there is SO_REUSE. + +First method: Using memory mapped part (tmpfs). +Second method: use interal communication (pipes!) and external after +/etc/cinit/ becomes writable. + + +Current IPC configuration +-------------------------- + +- switchable (conf/ipc_method) +- each ipc implementation needs: + + ipc.h -> for global variables and ipc specific things + prefix variables with ipc_ + int cinit_ipc_init(void); -> general initialization + return 1 on success, 0 on failure + int cinit_ipc_listen(void); -> begin to listen for messages + int cinit_ipc_send(void *data) -> send data to a client + +Abstraction layer: cinit_ipc_* +------------------------------ +You can choose or even reimplement ipc code for cinit. You only have to create +a directory below src/ipc/ and create the following necessary functions: + +int cinit_ipc_init(void); +~~~~~~~~~~~~~~~~~~~~~~~~~ +Initialise the IPC functions in cinit. + + +int cinit_ipc_listen(void); +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Never ending looping function that listens for commands and passes the +retrieved command to read_command(). + +other +~~~~~~ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + + +cinit_get_data(int ident, int size, void *data) => read size bytes from client +with ident + +/***************************************************************************** + * Functions: in clients + */ + int cinit_ipc_logon(void); /* logon to init (client init) */ + int cinit_ipc_connect(void); /* connect to init */ + int cinit_ipc_csend(struct cinit_message *data); /* send to the server from a client */ + + +-------------------------------------------------------------------------------- +TO SORT: + +1. message queues + o clients schreiben rein + o datenpaket gross genug fuer antwort? + +2. shared memory + o client kann direkt rauslesen, was gestartet werden muss + o client kann direkt abhaengigkeiten starten, muss diese aber + eintragen + +Ausprobieren: + - Mutexe + - Message Queues + - + +Ideen: + Message queue + 1. Client geht auf die normale + als id = pid (cast!) + dann rueck via anderer queue + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/devel/lists.text b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/lists.text new file mode 100644 index 00000000..6360acb3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/lists.text @@ -0,0 +1,22 @@ +Lists in cinit-0.3 are generalized, all have the same general layout: + + - double linked + - have 'prev' and 'next' as pointers + + Add an element to a list + + /--------------------------\ + |<->first<->middle<->last<->| + + + After insert: + + /-------------------------------\ + |<->first<->middle<->last<->new<->| + + We alway have 'first'. + Need to adjust: + - new->prev = last (= first->next) + - new->next = first + - first->prev = new + - first->prev->next (= last->next) = new diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/devel/merging.other.initsystems.text b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/merging.other.initsystems.text new file mode 100644 index 00000000..0baa4789 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/merging.other.initsystems.text @@ -0,0 +1,68 @@ +TODO: + - rewrite to asciidoc + - implement a sample merge + +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not mean that he does not accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated! + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/devel/optimising.cinit b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/optimising.cinit new file mode 100644 index 00000000..4f4b5c02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/optimising.cinit @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options +2. striping + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + +The current standard for cinit is: (see CFLAGS in the Makefile). + + +2. striping + +With strip(1) you can remove specific sections of object files. +You have to find out, which ones you can remove safely +(for instance with objdump(1)). + +The current standard for cinit is: (see STRIP in the Makefile) diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/devel/testing.text b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/testing.text new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/devel/testing.text @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/logs/2006-10-25.config.wasserstoff b/software/cinit/browse_source/cinit-0.3pre13/doc/logs/2006-10-25.config.wasserstoff new file mode 100644 index 00000000..f28bd71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/logs/2006-10-25.config.wasserstoff @@ -0,0 +1,16 @@ +[17:12] wasserstoff:svc# pwd +/etc/cinit/svc +[17:12] wasserstoff:svc# ls +init +17:12] wasserstoff:svc# mkdir getty +[17:12] wasserstoff:svc# mkdir getty/2/ +[17:12] wasserstoff:svc# cd getty/2 +[17:12] wasserstoff:2# ln -s /sbin/getty on +17:12] wasserstoff:2# echo 38400 > on.params +[17:13] wasserstoff:2# echo tty2 >> on.params +[17:13] wasserstoff:2# cd ../../init +[17:14] wasserstoff:init# mkdir needs +[17:14] wasserstoff:init# cd needs +[17:14] wasserstoff:needs# ln -s ../../getty/2 getty-2 +[17:14] wasserstoff:needs# + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/logs/2006-11-22.startup-with-debug b/software/cinit/browse_source/cinit-0.3pre13/doc/logs/2006-11-22.startup-with-debug new file mode 100644 index 00000000..44121cf4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/logs/2006-11-22.startup-with-debug @@ -0,0 +1,55 @@ +[0:08] wasserstoff:cinit-0.3pre3% ./src/cinit +cinit-0.3pre3: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty:: +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2:: +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout:: +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3:: +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning:: +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount:: +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root:: +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network:: +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0:: +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback:: +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::/etc/cinit/svc/init +========> tree_exec() +/etc/cinit/svc/local-tuning/keyboard-layout:::abhaengigkeiten gestartet, exec; add wants, needsdep_needs_wants_add::/etc/cinit/svc/local-tuning/keyboard-layout add: (/etc/cinit/svc/getty/2) + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/logs/2006-11-30.startup-0.3pre5 b/software/cinit/browse_source/cinit-0.3pre13/doc/logs/2006-11-30.startup-0.3pre5 new file mode 100644 index 00000000..2ded7712 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/logs/2006-11-30.startup-0.3pre5 @@ -0,0 +1,1821 @@ +cinit-0.3pre4: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2 +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3 +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0 +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/test +gen_tree::/etc/cinit/svc/test +CAD::/etc/cinit/svc/test +CAD::NEW::/etc/cinit/svc/test::/etc/cinit/svc/test/env +gen_tree::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +START::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test +CAD::/etc/cinit/svc/init +========> tree_exec() +TEX::/etc/cinit/svc/local-tuning/keyboard-layout +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout::/etc/cinit/svc/getty/2::(A)::::/etc/cinit/svc/getty/3::(A)::::/etc/cinit/svc/local-tuning::(A):: +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout +TEX::/etc/cinit/svc/mount/root +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +DNWA::/etc/cinit/svc/mount/root::/etc/cinit/svc/mount::(A):: +DNWA::/etc/cinit/svc/mount/root +TEX::/etc/cinit/svc/network/eth0 +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +DNWA::/etc/cinit/svc/network/eth0::/etc/cinit/svc/network::(A):: +DNWA::/etc/cinit/svc/network/eth0 +TEX::/etc/cinit/svc/network/loopback +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +DNWA::/etc/cinit/svc/network/loopback::/etc/cinit/svc/network +DNWA::/etc/cinit/svc/network/loopback +TEX::/etc/cinit/svc/test/env +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +DNWA::/etc/cinit/svc/test/env::/etc/cinit/svc/test::(A):: +DNWA::/etc/cinit/svc/test/env +TEX::/etc/cinit/svc/getty/2 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/2/on +CBA::/etc/cinit/svc/getty/2/on +DNWA::/etc/cinit/svc/getty/2::/etc/cinit/svc/getty::(A):: +DNWA::/etc/cinit/svc/getty/2 +TEX::/etc/cinit/svc/getty/3 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/3/on +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +DNWA::/etc/cinit/svc/getty/3::/etc/cinit/svc/getty +DNWA::/etc/cinit/svc/getty/3 +TEX::/etc/cinit/svc/local-tuning +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +/etc/cinit/svc/local-tuning/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/local-tuning::/etc/cinit/svc/init::(A):: +DNWA::/etc/cinit/svc/local-tuning +TEX::/etc/cinit/svc/mount +::/etc/cinit/svc/mount/root +/etc/cinit/svc/mount/root: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +/etc/cinit/svc/mount/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/mount::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/mount +TEX::/etc/cinit/svc/network +::/etc/cinit/svc/network/eth0 +/etc/cinit/svc/network/eth0: <<16>> +::/etc/cinit/svc/network/loopback +/etc/cinit/svc/network/loopback: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +/etc/cinit/svc/network/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/network::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/network +TEX::/etc/cinit/svc/test +::/etc/cinit/svc/test/env +/etc/cinit/svc/test/env: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +/etc/cinit/svc/test/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/test::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/test +TEX::/etc/cinit/svc/getty +::/etc/cinit/svc/getty/2 +/etc/cinit/svc/getty/2: <<4>> +::/etc/cinit/svc/getty/3 +/etc/cinit/svc/getty/3: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +/etc/cinit/svc/getty/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/getty::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/getty +TEX::/etc/cinit/svc/init +::/etc/cinit/svc/getty +/etc/cinit/svc/getty: <<4>> +::/etc/cinit/svc/local-tuning +/etc/cinit/svc/local-tuning: <<4>> +::/etc/cinit/svc/mount +/etc/cinit/svc/mount: <<4>> +::/etc/cinit/svc/network +/etc/cinit/svc/network: <<4>> +::/etc/cinit/svc/test +/etc/cinit/svc/test: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +DNWA::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/init +=> cinit started. +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +ORC:/etc/cinit/svc/init/on.params +ORC:/etc/cinit/svc/getty/2/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test +SC::/etc/cinit/svc/test/env::FAILED::::RESPAWN::ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test + +msgrcv: Interrupted system call +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/2/on +ORC:/etc/cinit/svc/getty/2/on.params +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted +SC::/etc/cinit/svc/network/eth0::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted + +msgrcv: Interrupted system call +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. +SC::/etc/cinit/svc/init::FAILED::::RESPAWN::ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. + +msgrcv: Interrupted system call +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. +SC::/etc/cinit/svc/network/loopback::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. + +msgrcv: Interrupted system call +mount: only root can do that +SC::/etc/cinit/svc/mount/root::FAILED::::RESPAWN::ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +mount: only root can do that + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +LSP:: 32705: /etc/cinit/svc/init:1 (0) +LSP:: 32705: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32705: /etc/cinit/svc/test:65 (0) +LSP:: 32705: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32705: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32705: /etc/cinit/svc/network:65 (0) +LSP:: 32705: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32705: /etc/cinit/svc/mount:65 (0) +LSP:: 32705: /etc/cinit/svc/local-tuning:65 (0) +LSP:: 32705: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32705: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32705: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32705: /etc/cinit/svc/getty:65 (0) +LSP:: 32706: /etc/cinit/svc/init:65 (0) +LSP:: 32706: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32706: /etc/cinit/svc/test:65 (0) +LSP:: 32706: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32706: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32706: /etc/cinit/svc/network:65 (0) +LSP:: 32706: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32706: /etc/cinit/svc/mount:65 (0) +LSP:: 32706: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32706: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32706: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32706: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32706: /etc/cinit/svc/getty:65 (0) +LSP:: 32707: /etc/cinit/svc/init:65 (0) +LSP:: 32707: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32707: /etc/cinit/svc/test:65 (0) +LSP:: 32707: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32707: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32707: /etc/cinit/svc/network:65 (0) +LSP:: 32707: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32707: /etc/cinit/svc/mount:4 (32706) +LSP:: 32707: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32707: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32707: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32707: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32707: /etc/cinit/svc/getty:65 (0) +LSP:: 32708: /etc/cinit/svc/init:65 (0) +LSP:: 32708: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32708: /etc/cinit/svc/test:65 (0) +LSP:: 32708: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32708: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32708: /etc/cinit/svc/network:4 (32707) +LSP:: 32708: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32708: /etc/cinit/svc/mount:4 (32706) +LSP:: 32708: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32708: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32708: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32708: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32708: /etc/cinit/svc/getty:65 (0) +LSP:: 32709: /etc/cinit/svc/init:65 (0) +LSP:: 32709: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32709: /etc/cinit/svc/test:4 (32708) +LSP:: 32709: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32709: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32709: /etc/cinit/svc/network:4 (32707) +LSP:: 32709: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32709: /etc/cinit/svc/mount:4 (32706) +LSP:: 32709: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32709: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32709: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32709: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32709: /etc/cinit/svc/getty:65 (0) +LSP:: 32702: /etc/cinit/svc/init:4 (32710) +LSP:: 32702: /etc/cinit/svc/test/env:4 (32702) +pid: 0, m_client +LSP:: 32700: /etc/cinit/svc/init:4 (32710) +LSP:: 32700: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32700: /etc/cinit/svc/test:4 (32708) +LSP:: 32700: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32700: /etc/cinit/svc/network/eth0:16 (32700) +pid: 0, m_client +LSP:: 32710: /etc/cinit/svc/init:4 (32710) +pid: 0, m_client +LSP:: 32701: /etc/cinit/svc/init:16 (32719) +LSP:: 32701: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32701: /etc/cinit/svc/test:4 (32708) +LSP:: 32701: /etc/cinit/svc/network/loopback:4 (32701) +pid: 0, m_client +LSP:: 32699: /etc/cinit/svc/init:16 (32719) +LSP:: 32699: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32699: /etc/cinit/svc/test:4 (32708) +LSP:: 32699: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32699: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32699: /etc/cinit/svc/network:4 (32707) +LSP:: 32699: /etc/cinit/svc/mount/root:4 (32699) +pid: 0, m_client +LSP::SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz + 32698: /etc/cinit/svc/init:16 (32719) +LSP:: 32698: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32698: /etc/cinit/svc/test:4 (32708) +LSP:: 32698: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32698: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32698: /etc/cinit/svc/network:4 (32707) +LSP:: 32698: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32698: /etc/cinit/svc/mount:4 (32706) +LSP:: 32698: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32698: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32698: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +pid: 0, m_client +LSP:: 32728: /etc/cinit/svc/init:16 (32719) +LSP:: 32728: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32728: /etc/cinit/svc/test:4 (32708) +LSP:: 32728: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32728: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32728: /etc/cinit/svc/network:4 (32707) +LSP:: 32728: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32728: /etc/cinit/svc/mount:4 (32706) +LSP:: 32728: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32728: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32728: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32728) +pid: 0, m_client +LSP:: 32735: /etc/cinit/svc/init:16 (32719) +LSP:: 32735: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32735: /etc/cinit/svc/test:4 (32708) +LSP:: 32735: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32735: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32735: /etc/cinit/svc/network:4 (32707) +LSP:: 32735: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32735: /etc/cinit/svc/mount:4 (32706) +LSP:: 32735: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32735: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32735: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32735) +pid: 0, m_client +LSP:: 32742: /etc/cinit/svc/init:16 (32719) +LSP:: 32742: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32742: /etc/cinit/svc/test:4 (32708) +LSP:: 32742: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32742: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32742: /etc/cinit/svc/network:4 (32707) +LSP:: 32742: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32742: /etc/cinit/svc/mount:4 (32706) +LSP:: 32742: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32742: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32742: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32742) +pid: 0, m_client +LSP:: 32749: /etc/cinit/svc/init:16 (32719) +LSP:: 32749: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32749: /etc/cinit/svc/test:4 (32708) +LSP:: 32749: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32749: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32749: /etc/cinit/svc/network:4 (32707) +LSP:: 32749: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32749: /etc/cinit/svc/mount:4 (32706) +LSP:: 32749: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32749: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32749: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32749) +pid: 0, m_client +LSP:: 32756: /etc/cinit/svc/init:16 (32719) +LSP:: 32756: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32756: /etc/cinit/svc/test:4 (32708) +LSP:: 32756: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32756: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32756: /etc/cinit/svc/network:4 (32707) +LSP:: 32756: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32756: /etc/cinit/svc/mount:4 (32706) +LSP:: 32756: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32756: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32756: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32756) +pid: 0, m_client +LSP:: 32763: /etc/cinit/svc/init:16 (32719) +LSP:: 32763: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32763: /etc/cinit/svc/test:4 (32708) +LSP:: 32763: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32763: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32763: /etc/cinit/svc/network:4 (32707) +LSP:: 32763: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32763: /etc/cinit/svc/mount:4 (32706) +LSP:: 32763: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32763: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32763: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32763) +pid: 0, m_client +LSP:: 302: /etc/cinit/svc/init:16 (32719) +LSP:: 302: /etc/cinit/svc/test/env:16 (32717) +LSP:: 302: /etc/cinit/svc/test:4 (32708) +LSP:: 302: /etc/ciSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN:: +msgrcv: Interrupted system call +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +nit/svc/network/loopback:16 (32720) +LSP:: 302: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 302: /etc/cinit/svc/network:4 (32707) +LSP:: 302: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 302: /etc/cinit/svc/mount:4 (32706) +LSP:: 302: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 302: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 302: /etc/cinit/svc/local-tuning/keyboard-layout:16 (302) +pid: 0, m_client +LSP:: 312: /etc/cinit/svc/init:16 (32719) +LSP:: 312: /etc/cinit/svc/test/env:16 (32717) +LSP:: 312: /etc/cinit/svc/test:4 (32708) +LSP:: 312: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 312: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 312: /etc/cinit/svc/network:4 (32707) +LSP:: 312: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 312: /etc/cinit/svc/mount:4 (32706) +LSP:: 312: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 312: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 312: /etc/cinit/svc/local-tuning/keyboard-layout:16 (312) +pid: 0, m_client +LSP:: 326: /etc/cinit/svc/init:16 (32719) +LSP:: 326: /etc/cinit/svc/test/env:16 (32717) +LSP:: 326: /etc/cinit/svc/test:4 (32708) +LSP:: 326: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 326: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 326: /etc/cinit/svc/network:4 (32707) +LSP:: 326: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 326: /etc/cinit/svc/mount:4 (32706) +LSP:: 326: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 326: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 326: /etc/cinit/svc/local-tuning/keyboard-layout:16 (326) +pid: 0, m_client +LSP:: 333: /etc/cinit/svc/init:16 (32719) +LSP:: 333: /etc/cinit/svc/test/env:16 (32717) +LSP:: 333: /etc/cinit/svc/test:4 (32708) +LSP:: 333: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 333: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 333: /etc/cinit/svc/network:4 (32707) +LSP:: 333: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 333: /etc/cinit/svc/mount:4 (32706) +LSP:: 333: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 333: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 333: /etc/cinit/svc/local-tuning/keyboard-layout:16 (333) +pid: 0, m_client +LSP:: 340: /etc/cinit/svc/init:16 (32719) +LSP:: 340: /etc/cinit/svc/test/env:16 (32717) +LSP:: 340: /etc/cinit/svc/test:4 (32708) +LSP:: 340: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 340: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 340: /etc/cinit/svc/network:4 (32707) +LSP:: 340: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 340: /etc/cinit/svc/mount:4 (32706) +LSP:: 340: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 340: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 340: /etc/cinit/svc/local-tuning/keyboard-layout:16 (340) +pid: 0, m_client +LSP:: 347: /etc/cinit/svc/init:16 (32719) +LSP:: 347: /etc/cinit/svc/test/env:16 (32717) +LSP:: 347: /etc/cinit/svc/test:4 (32708) +LSP:: 347: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 347: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 347: /etc/cinit/svc/network:4 (32707) +LSP:: 347: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 347: /etc/cinit/svc/mount:4 (32706) +LSP:: 347: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 347: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 347: /etc/cinit/svc/local-tuning/keyboard-layout:16 (347) +pid: 0, m_client +LSP:: 354: /etc/cinit/svc/init:16 (32719) +LSP:: 354: /etc/cinit/svc/test/env:16 (32717) +LSP:: 354: /etc/cinit/svc/test:4 (32708) +LSP:: 354: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 354: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 354: /etc/cinit/svc/network:4 (32707) +LSP:: 354: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 354: /etc/cinit/svc/mount:4 (32706) +LSP:: 354: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 354: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 354: /etc/cinit/svc/local-tuning/keyboard-layout:16 (354) +pid: 0, m_client +LSP:: 372: /etc/cinit/svc/init:16 (32719) +LSP:: 372: /etc/cinit/svc/test/env:16 (32717) +LSP:: 372: /etc/cinit/svc/test:4 (32708) +LSP:: 372: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 372: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 372: /etc/cinit/svc/network:4 (32707) +LSP:: 372: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 372: /etc/cinit/svc/mount:4 (32706) +LSP:: 372: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 372: /etc/cinit/svc/getty/3:4 (327SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +04) +LSP:: 372: /etc/cinit/svc/local-tuning/keyboard-layout:16 (372) +pid: 0, m_client +LSP:: 379: /etc/cinit/svc/init:16 (32719) +LSP:: 379: /etc/cinit/svc/test/env:16 (32717) +LSP:: 379: /etc/cinit/svc/test:4 (32708) +LSP:: 379: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 379: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 379: /etc/cinit/svc/network:4 (32707) +LSP:: 379: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 379: /etc/cinit/svc/mount:4 (32706) +LSP:: 379: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 379: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 379: /etc/cinit/svc/local-tuning/keyboard-layout:16 (379) +pid: 0, m_client +LSP:: 386: /etc/cinit/svc/init:16 (32719) +LSP:: 386: /etc/cinit/svc/test/env:16 (32717) +LSP:: 386: /etc/cinit/svc/test:4 (32708) +LSP:: 386: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 386: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 386: /etc/cinit/svc/network:4 (32707) +LSP:: 386: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 386: /etc/cinit/svc/mount:4 (32706) +LSP:: 386: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 386: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 386: /etc/cinit/svc/local-tuning/keyboard-layout:16 (386) +pid: 0, m_client +LSP:: 393: /etc/cinit/svc/init:16 (32719) +LSP:: 393: /etc/cinit/svc/test/env:16 (32717) +LSP:: 393: /etc/cinit/svc/test:4 (32708) +LSP:: 393: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 393: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 393: /etc/cinit/svc/network:4 (32707) +LSP:: 393: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 393: /etc/cinit/svc/mount:4 (32706) +LSP:: 393: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 393: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 393: /etc/cinit/svc/local-tuning/keyboard-layout:16 (393) +pid: 0, m_client +LSP:: 400: /etc/cinit/svc/init:16 (32719) +LSP:: 400: /etc/cinit/svc/test/env:16 (32717) +LSP:: 400: /etc/cinit/svc/test:4 (32708) +LSP:: 400: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 400: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 400: /etc/cinit/svc/network:4 (32707) +LSP:: 400: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 400: /etc/cinit/svc/mount:4 (32706) +LSP:: 400: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 400: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 400: /etc/cinit/svc/local-tuning/keyboard-layout:16 (400) +pid: 0, m_client +LSP:: 407: /etc/cinit/svc/init:16 (32719) +LSP:: 407: /etc/cinit/svc/test/env:16 (32717) +LSP:: 407: /etc/cinit/svc/test:4 (32708) +LSP:: 407: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 407: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 407: /etc/cinit/svc/network:4 (32707) +LSP:: 407: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 407: /etc/cinit/svc/mount:4 (32706) +LSP:: 407: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 407: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 407: /etc/cinit/svc/local-tuning/keyboard-layout:16 (407) +pid: 0, m_client +LSP:: 414: /etc/cinit/svc/init:16 (32719) +LSP:: 414: /etc/cinit/svc/test/env:16 (32717) +LSP:: 414: /etc/cinit/svc/test:4 (32708) +LSP:: 414: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 414: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 414: /etc/cinit/svc/network:4 (32707) +LSP:: 414: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 414: /etc/cinit/svc/mount:4 (32706) +LSP:: 414: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 414: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 414: /etc/cinit/svc/local-tuning/keyboard-layout:16 (414) +pid: 0, m_client +LSP:: 421: /etc/cinit/svc/init:16 (32719) +LSP:: 421: /etc/cinit/svc/test/env:16 (32717) +LSP:: 421: /etc/cinit/svc/test:4 (32708) +LSP:: 421: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 421: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 421: /etc/cinit/svc/network:4 (32707) +LSP:: 421: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 421: /etc/cinit/svc/mount:4 (32706) +LSP:: 421: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 421: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 421: /etc/cinit/svc/local-tuning/keyboard-layout:16 (421) +pid: 0, m_client +LSP:: 428: /etc/cinit/svc/init:16 (32719) +LSP:: 428: /etc/cinit/svc/test/env:16 (32717) +LSP:: 428: /etc/cinit/svc/test:4 (32708) +LSP:: 428: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 428: /etc/cinit/svc/network/eth0:16SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call + (32718) +LSP:: 428: /etc/cinit/svc/network:4 (32707) +LSP:: 428: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 428: /etc/cinit/svc/mount:4 (32706) +LSP:: 428: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 428: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 428: /etc/cinit/svc/local-tuning/keyboard-layout:16 (428) +pid: 0, m_client +LSP:: 435: /etc/cinit/svc/init:16 (32719) +LSP:: 435: /etc/cinit/svc/test/env:16 (32717) +LSP:: 435: /etc/cinit/svc/test:4 (32708) +LSP:: 435: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 435: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 435: /etc/cinit/svc/network:4 (32707) +LSP:: 435: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 435: /etc/cinit/svc/mount:4 (32706) +LSP:: 435: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 435: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 435: /etc/cinit/svc/local-tuning/keyboard-layout:16 (435) +pid: 0, m_client +LSP:: 452: /etc/cinit/svc/init:16 (32719) +LSP:: 452: /etc/cinit/svc/test/env:16 (32717) +LSP:: 452: /etc/cinit/svc/test:4 (32708) +LSP:: 452: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 452: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 452: /etc/cinit/svc/network:4 (32707) +LSP:: 452: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 452: /etc/cinit/svc/mount:4 (32706) +LSP:: 452: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 452: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 452: /etc/cinit/svc/local-tuning/keyboard-layout:16 (452) +pid: 0, m_client +LSP:: 459: /etc/cinit/svc/init:16 (32719) +LSP:: 459: /etc/cinit/svc/test/env:16 (32717) +LSP:: 459: /etc/cinit/svc/test:4 (32708) +LSP:: 459: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 459: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 459: /etc/cinit/svc/network:4 (32707) +LSP:: 459: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 459: /etc/cinit/svc/mount:4 (32706) +LSP:: 459: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 459: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 459: /etc/cinit/svc/local-tuning/keyboard-layout:16 (459) +pid: 0, m_client +LSP:: 466: /etc/cinit/svc/init:16 (32719) +LSP:: 466: /etc/cinit/svc/test/env:16 (32717) +LSP:: 466: /etc/cinit/svc/test:4 (32708) +LSP:: 466: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 466: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 466: /etc/cinit/svc/network:4 (32707) +LSP:: 466: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 466: /etc/cinit/svc/mount:4 (32706) +LSP:: 466: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 466: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 466: /etc/cinit/svc/local-tuning/keyboard-layout:16 (466) +pid: 0, m_client +LSP:: 473: /etc/cinit/svc/init:16 (32719) +LSP:: 473: /etc/cinit/svc/test/env:16 (32717) +LSP:: 473: /etc/cinit/svc/test:4 (32708) +LSP:: 473: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 473: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 473: /etc/cinit/svc/network:4 (32707) +LSP:: 473: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 473: /etc/cinit/svc/mount:4 (32706) +LSP:: 473: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 473: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 473: /etc/cinit/svc/local-tuning/keyboard-layout:16 (473) +pid: 0, m_client +LSP:: 480: /etc/cinit/svc/init:16 (32719) +LSP:: 480: /etc/cinit/svc/test/env:16 (32717) +LSP:: 480: /etc/cinit/svc/test:4 (32708) +LSP:: 480: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 480: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 480: /etc/cinit/svc/network:4 (32707) +LSP:: 480: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 480: /etc/cinit/svc/mount:4 (32706) +LSP:: 480: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 480: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 480: /etc/cinit/svc/local-tuning/keyboard-layout:16 (480) +pid: 0, m_client +LSP:: 487: /etc/cinit/svc/init:16 (32719) +LSP:: 487: /etc/cinit/svc/test/env:16 (32717) +LSP:: 487: /etc/cinit/svc/test:4 (32708) +LSP:: 487: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 487: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 487: /etc/cinit/svc/network:4 (32707) +LSP:: 487: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 487: /etc/cinit/svc/mount:4 (32706) +LSP:: 487: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 487: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 487: /etc/cinit/svc/local-tuning/keyboard-layout:16 (487) +pid: 0, mLoading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +_client +LSP:: 494: /etc/cinit/svc/init:16 (32719) +LSP:: 494: /etc/cinit/svc/test/env:16 (32717) +LSP:: 494: /etc/cinit/svc/test:4 (32708) +LSP:: 494: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 494: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 494: /etc/cinit/svc/network:4 (32707) +LSP:: 494: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 494: /etc/cinit/svc/mount:4 (32706) +LSP:: 494: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 494: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 494: /etc/cinit/svc/local-tuning/keyboard-layout:16 (494) +pid: 0, m_client +LSP:: 501: /etc/cinit/svc/init:16 (32719) +LSP:: 501: /etc/cinit/svc/test/env:16 (32717) +LSP:: 501: /etc/cinit/svc/test:4 (32708) +LSP:: 501: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 501: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 501: /etc/cinit/svc/network:4 (32707) +LSP:: 501: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 501: /etc/cinit/svc/mount:4 (32706) +LSP:: 501: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 501: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 501: /etc/cinit/svc/local-tuning/keyboard-layout:16 (501) +pid: 0, m_client +LSP:: 510: /etc/cinit/svc/init:16 (32719) +LSP:: 510: /etc/cinit/svc/test/env:16 (32717) +LSP:: 510: /etc/cinit/svc/test:4 (32708) +LSP:: 510: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 510: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 510: /etc/cinit/svc/network:4 (32707) +LSP:: 510: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 510: /etc/cinit/svc/mount:4 (32706) +LSP:: 510: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 510: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 510: /etc/cinit/svc/local-tuning/keyboard-layout:16 (510) +pid: 0, m_client +LSP:: 520: /etc/cinit/svc/init:16 (32719) +LSP:: 520: /etc/cinit/svc/test/env:16 (32717) +LSP:: 520: /etc/cinit/svc/test:4 (32708) +LSP:: 520: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 520: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 520: /etc/cinit/svc/network:4 (32707) +LSP:: 520: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 520: /etc/cinit/svc/mount:4 (32706) +LSP:: 520: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 520: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 520: /etc/cinit/svc/local-tuning/keyboard-layout:16 (520) +pid: 0, m_client +LSP:: 533: /etc/cinit/svc/init:16 (32719) +LSP:: 533: /etc/cinit/svc/test/env:16 (32717) +LSP:: 533: /etc/cinit/svc/test:4 (32708) +LSP:: 533: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 533: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 533: /etc/cinit/svc/network:4 (32707) +LSP:: 533: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 533: /etc/cinit/svc/mount:4 (32706) +LSP:: 533: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 533: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 533: /etc/cinit/svc/local-tuning/keyboard-layout:16 (533) +pid: 0, m_client +LSP:: 541: /etc/cinit/svc/init:16 (32719) +LSP:: 541: /etc/cinit/svc/test/env:16 (32717) +LSP:: 541: /etc/cinit/svc/test:4 (32708) +LSP:: 541: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 541: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 541: /etc/cinit/svc/network:4 (32707) +LSP:: 541: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 541: /etc/cinit/svc/mount:4 (32706) +LSP:: 541: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 541: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 541: /etc/cinit/svc/local-tuning/keyboard-layout:16 (541) +pid: 0, m_client +LSP:: 548: /etc/cinit/svc/init:16 (32719) +LSP:: 548: /etc/cinit/svc/test/env:16 (32717) +LSP:: 548: /etc/cinit/svc/test:4 (32708) +LSP:: 548: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 548: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 548: /etc/cinit/svc/network:4 (32707) +LSP:: 548: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 548: /etc/cinit/svc/mount:4 (32706) +LSP:: 548: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 548: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 548: /etc/cinit/svc/local-tuning/keyboard-layout:16 (548) +pid: 0, m_client +LSP:: 555: /etc/cinit/svc/init:16 (32719) +LSP:: 555: /etc/cinit/svc/test/env:16 (32717) +LSP:: 555: /etc/cinit/svc/test:4 (32708) +LSP:: 555: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 555: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 555: /etc/cinit/svc/network:4 (32707) +LSP:: 555: /etc/cinit/svSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/man/cinit.text b/software/cinit/browse_source/cinit-0.3pre13/doc/man/cinit.text new file mode 100644 index 00000000..19d0015a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/man/cinit.text @@ -0,0 +1,64 @@ +cinit(8) +======== +Nico Schottelius + + +NAME +---- +cinit - fast executing, small and simple init with support for profiles + + +SYNOPSIS +-------- +'cinit' [cprofile:name_of_profile] + + +DESCRIPTION +----------- +Cinit is an init system. It normally gets started by the operating +system (Linux, *BSD, ...) directly after the kernel has been loaded. + +Cinit uses parallel execution of services as far as possible. To +ensure the correct boot order you need to specify which service +'needs' or 'wants' another service. The resulting dependency tree +is used at startup to determine which service to start when. + +This may result in different boot orders depending on whether +one service is one time faster or slower. Due to the dependencies +this is not a problem, but allowed and wished per design. + +For more information refer to the texinfo or html documentation. + + +OPTIONS +------- + +cprofile:name_of_profile:: + If specified, cinit will start the named profile instead of the + standard 'init' service + + +BUGS +---- +cinit is not tested nor documented very well currently. + +The porting to other OS is not finished yet (mainly missing +system level binaries: shutdown, reboot, halt). + +Both is work in progress. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + + +COPYING +------- +Copyright \(C) 2006 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/man/cmd.text b/software/cinit/browse_source/cinit-0.3pre13/doc/man/cmd.text new file mode 100644 index 00000000..ccd372d3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/man/cmd.text @@ -0,0 +1,81 @@ +cmd(8) +====== +Nico Schottelius + + +NAME +---- +cmd - cinit management and information tool + + +SYNOPSIS +-------- +'cmd' [-ed (i|w|n)] [-(p|s) ] [-v] + + +DESCRIPTION +----------- +cmd adds the management possibility to cinit(8). You can retrieve +several information from cinit and change services. + +OPTIONS +------- +-d:: + Disable service (see below for required parameters) + (NOT YET IMPLEMENTED) + +-e:: + Enable service + - i: Included all needs and wants + - n: Exclude needs + - w: Exclude wants + (NOT YET IMPLEMENTED) + +-p:: + Retrieve last process id (pid) for the specific service. For respawn + services this is the pid of the running service. For services that are + started only once it is the pid it had when running. + (NOT YET IMPLEMENTED) + +-s:: + Retrieve status of a service. Warning: Do not add trailing slash. + Path can be specified absolute (/etc/cinit/svc/mount/root) or + relative (mount/root). + +-v:: + Get version of cinit. + + + +EXAMPLES +-------- +Get version:: + [8:44] denkbrett:src# cmd -v + + Version of cinit: 0.3pre12 + +Get status:: + [8:37] denkbrett:src# ./cmd -s mount/root + + Status of /etc/cinit/svc/mount/root is: 2001 + + +BUGS +---- +Not everything is implemented. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License Version 3 (GPLv3). diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/man/cservice b/software/cinit/browse_source/cinit-0.3pre13/doc/man/cservice new file mode 100644 index 00000000..26a472b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/man/cservice @@ -0,0 +1,37 @@ +WARNING: + cservice is not yet ready for cinit-0.3! + +-------------------------------------------------------------------------------- +cservice, +Nico Schottelius, 2005-06-10 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +cservice - control cinit + +cservice -[phearsu] + -e - (ein) start a service (including all needed dependencies) + -a - (aus) stop a respawing service, don't care about other services + + -r - reboot + -h - halt + -p - poweroff (on some systems the same as halt) + -s - reScue mode - only a shell + + -u - update: hot reboot - shutdown system and execute /sbin/cinit + +A service may be specified either as relative or as absolute path. + +-h, -p, -r, -s and -u need the "Magic Word" to do their work: "thilo" + +-------------------------------------------------------------------------------- + +Some examples: + + cservice -e /etc/cinit/getty/8 # fire up getty/8 + cd /etc/cinit/getty; cservice -a ./8 # shut down getty/8 + cservice -h thilo # halt + cservice -r thilo # reboot + cservice -s thilo # rescue + cservice -u thilo # update + +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/man/halt.kill.text b/software/cinit/browse_source/cinit-0.3pre13/doc/man/halt.kill.text new file mode 100644 index 00000000..4a31e257 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/man/halt.kill.text @@ -0,0 +1,46 @@ +halt.kill(8) +============ +Nico Schottelius + + +NAME +---- +halt.kill - Halts systems running cinit through a kill call + +SYNOPSIS +-------- +'halt.kill' + + +DESCRIPTION +----------- +You normally halt your system through 'cmd'. If cmd is unavailable or +the IPC system has problem there is still the possibilty to halt +it through a signal. See 'src/include/signals.h' for more details which +signals are used. + +OPTIONS +------- + +none:: + No options are used, If you execute halt.kill, your system will be halted. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + +SEE ALSO +--------- +cmd(8) + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/man/poweroff.kill.text b/software/cinit/browse_source/cinit-0.3pre13/doc/man/poweroff.kill.text new file mode 100644 index 00000000..62807ba1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/man/poweroff.kill.text @@ -0,0 +1,47 @@ +poweroff.kill(8) +================ +Nico Schottelius + + +NAME +---- +poweroff.kill - Halts and powers off systems running cinit through a kill call + +SYNOPSIS +-------- +'poweroff.kill' + + +DESCRIPTION +----------- +You normally poweroff your system through 'cmd'. If cmd is unavailable or +the IPC system has problem there is still the possibilty to poweroff +it through a signal. See 'src/include/signals.h' for more details which +signals are used. + +OPTIONS +------- + +none:: + No options are used, If you execute poweroff.kill, your system will be + powered off. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + +SEE ALSO +--------- +cmd(8), halt.kill(8), reboot.kill(8) + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/man/reboot.kill.text b/software/cinit/browse_source/cinit-0.3pre13/doc/man/reboot.kill.text new file mode 100644 index 00000000..a748553e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/man/reboot.kill.text @@ -0,0 +1,47 @@ +reboot.kill(8) +============== +Nico Schottelius + + +NAME +---- +reboot.kill - Reboots systems running cinit through a kill call + +SYNOPSIS +-------- +'reboot.kill' + + +DESCRIPTION +----------- +You normally reboot your system through 'cmd'. If cmd is unavailable or +the IPC system has problem there is still the possibilty to reboot +it through a signal. See 'src/include/signals.h' for more details which +signals are used. + +OPTIONS +------- + +none:: + No options are used, If you execute reboot.kill, your system will be + rebooted. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + +SEE ALSO +--------- +cmd(8), halt.kill(8), poweroff.kill(8) + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre11 b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre11 new file mode 100644 index 00000000..ec532269 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre11 @@ -0,0 +1,10 @@ +Done: +- cleanup ipc: + merge cinit_ipc_logon() and cinit_ipc_connect()? + => already done! +- finish cmd in general, perhaps only including one command. +[18:51] denkbrett:src# LANG=C cp cinit /sbin/cinit +cp: cannot create regular file `/sbin/cinit': Text file busy + => mv & cp! + => documentation! + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre12 b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre12 new file mode 100644 index 00000000..edbe41d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre12 @@ -0,0 +1,41 @@ +Wished release date: 6/7. September + +-------------------------------------------------------------------------------- +Done: +- begin to write documentation about client functions + => noone needs that anyway. skip and concentrate on functions now. + +cleanup ipc! + where to call !cinit_ipc_logon and !cinit_ipc_connect? + +-------------------------------------------------------------------------------- +Add +Hallo, + +Liebster Nico, wuerdest du die dazu durchringen "make install" und +vllt. sogar "make install-test" in die cinit 0.3er branch aufnehmen? + +vlg Lucky + ==> added make install in previous releases, make test maybe come back + later again. +- cleanup communication: + put parts of comm.h into cinit.h => global exposure + or define new structure in cinit.h? + => removed comm.h +- check svc path in cmd: if it's relative, add /etc/cinit/svc to it + => added. +- add update for git => so cloning does not fail! + => added hook. +Use http://www.opengroup.org/onlinepubs/009695399/basedefs/stdint.h.html + => partly implemented + +- remove manual pid support, use the one supplied by msgctl() + => ok. +- there seems to be a race condition in the execution of the + dependency tree: it happens that services that depend on + mounted /proc, have needs on mount/proc are still exited + before /proc is mounted. + problem of cinit or of mount, exiting too early? + guess the first one, so fix it :-) + + => missing check in svc_needs_status.c diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre13 b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre13 new file mode 100644 index 00000000..ff8d4296 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre13 @@ -0,0 +1,19 @@ +Wished released date: 10./11. September + +-------------------------------------------------------------------------------- +Done: +- add get_svc_pid() +- cleanup msgq.h: namespace! +- cleanup cmd: add real usage, add -h for help +- cleanup cinit_ipc_logon()! [already done before] +- cleanup headers: ==> not yet needed. + seems to make more sense, to have more than one exposed header. + cinit.h gets to fast too big. so splitoff to: + /* main */ + /* ... */ +- create libcinit.a/so and link against it => not need right now. +- pre12 seems to have an IPC problem: Fix it. ==> problem with not finishing cinit startup +- global symbol to track the connection to cinit in the client + => cinit_ipc_cinit() - initalise ipc in the client (only once) + => not really our problem, client should be able to remember + whether she called us once or twice. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre13.race-condition b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre13.race-condition new file mode 100644 index 00000000..19bea29a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre13.race-condition @@ -0,0 +1,12 @@ +09:49 < telmich> is it possible, that if I fork() and call _exit(0) in the child, that the + _exit(0) is executed earlier than the fork() call returns in the parent? +09:49 < telmich> I'm having some race condition in cinit, where the pid is not yet updated in + the service structure, and the child exited before and thus cinit does not + update the service +09:49 < telmich> as being run +09:51 < telmich> rexy_: currently I'm thinking about implementing a lock before starting the + fork() +09:51 < telmich> rexy_: thus cinit will react differently, if the starting function is still + running +09:51 < telmich> rexy_: but I'm somehow confused, that fork() allows such race condition + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre14 b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre14 new file mode 100644 index 00000000..588106d0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre14 @@ -0,0 +1,37 @@ +Wished release date: 13. September +- add support for shutting down services on halt +- cleanup msgq/cinit_ipc_listen.c +- add minimal test-suite: + cmd -s /etc/cinit/svc/init + cmd -p /etc/cinit/svc/init + cmd -v + cmd -V +- move logic out of the child handler: + => use the new while()-loop in core/cinit.c! + + time() and co. are problematic in a child handler! + + introduce global list of services to execute + => perhaps reuse already existing dependency-list? + + tree_exec(): check whether adding something to the dep list hurts + => don't think so. + expand / change ipc handler: + make it return the message + move while() loop to core/cinit.c + + in the while loop, the global dependency list should + be empty. + + if it is not, we should start something. + + => chance cinit_ipc_listen() to use without while() loop + => export logic to core/cinit.c +- map status numbers to messages +- Cleanup doc/user/NEW_using_cinit_freebsd + => make a real document! +- change to GPLv3? + => ask Markus (cinit), Killerfox (cconfig) and Peter (cconfig) +- write / update manpage for cmd! +-------------------------------------------------------------------------------- +Done: diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre15 b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre15 new file mode 100644 index 00000000..62deb436 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre15 @@ -0,0 +1,17 @@ +Wished release date: 20. September +- Add support for starting/stoping services via cmd +- create some boot profiles +- cinit.install.standard.dirs.argv +- code check: + * check needs: + really started, after started or after finished starting? + * wants: + are they checked? + +- fix devel/codingguideline.text! + +- perhaps merge svc_need_status to svc_status + +cinit-communication: + cinit_get_failed_needs(char *name, int *cnt); + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre16 b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre16 new file mode 100644 index 00000000..16e6efb5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre16 @@ -0,0 +1,9 @@ +Wished release date: 27. September +- check porting code: + * advise users to set conf/os + * add uname -r | tr ... as make osconfig +- check that all parts of cinit compile at least under: + * linux, linux on 64bit + * FreeBSD + * NetBSD +- cleanup output diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre17 b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre17 new file mode 100644 index 00000000..82976e37 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.3pre17 @@ -0,0 +1,11 @@ +Wished release date: 3. October + +"Code quality assurance release" + +- Fix bugs all outstanding bugs. +- Give cinit some time, write some documentation and make pre17 the last pre of the 0.3 + serie. +- Give the code out to other developers, request explicit strong critics + => So even + "This could be in theory, if Mars is behind Pluto on Sunday evening" bugs + are out. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.4 b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.4 new file mode 100644 index 00000000..3b772d4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.4 @@ -0,0 +1,44 @@ +-------------------------------------------------------------------------------- +Clean service status messages: + Ausgaben nach Beendigung vom Starten des Services. + + [ on ] %s + Ergebnis + [ off ] %s +-------------------------------------------------------------------------------- +16:13 < KillerFox> telmich: hast du eigentlich schon hooks in cinit? +20:07 < KillerFox> Vapier führt mal wieder Selbstgespräche. +23:39 < telmich> KillerFox: wozu? +23:42 < KillerFox> telmich: es wäre durchaus interessant, um z.B. sterbende Prozesse wieder zu + starten und so. +23:42 < KillerFox> oder einen Hinweis per Mail zu verschicken. +23:43 < telmich> ahh, du meinst so benachrichtigungen von cinit an $prozess? +23:43 < KillerFox> jein +23:43 < KillerFox> du machst z.B. /etc/cinit/hooks/ +23:43 < KillerFox> darin gibts dann Scripte die bei bestimmten Ereignise aufgerufen werden. +23:43 < KillerFox> z.B. wenn ein Prozess stirbt +23:44 < KillerFox> du kannst dir natürlich auch überlegen, es auf Prozessebene herunter zu + hacken +23:44 < telmich> ja, eher letzeres +23:44 < KillerFox> so könnte man auch ein paar nette Sachen machen. z.B. Aufräumarbeiten + nachdem ein Prozess beendet wurde oder so +23:45 < KillerFox> telmich: ich finde beides Sinnvoller +23:45 < KillerFox> telmich: globale und lokale Hooks +23:45 < KillerFox> lokale überschreiben globale oder so +23:45 < telmich> oder laufen beide +23:45 < KillerFox> oder man kaskadiert sie. +23:45 < KillerFox> genau +23:46 < KillerFox> sinnvolle hooks: pre-start, start, post-start, pre-stop, stop, post-stop, + crash +23:46 < KillerFox> oder sowas +23:47 < KillerFox> vielleicht fallen dir noch mehr ein. +23:48 < KillerFox> die Kommunikation könnte man dann wahlweise über Parameter oder + Umgebungsvariablen lösen +23:48 < KillerFox> um z.B. mitzuteilen welcher Prozess gestoppt wurde +23:49 < KillerFox> z.B. wenn man in pre-stop je nach Bedingung den Stop-Vorgang abbrechen will. +23:49 < telmich> via ${ipc} => kommt darauf an, was implementiert ist; zZ ist es ja msgq +23:50 < telmich> ahh, so +23:50 < telmich> das waere noch recht trivial ueber pipes +23:50 < KillerFox> fifos/sockets, was auch immer. +23:50 < KillerFox> das müsste man dann mit einer Bibliothek lösen oder so +23:50 < telmich> ja, die ist auch im aufbau in libcinit/ + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.4.1 b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.4.1 new file mode 100644 index 00000000..b0d7685d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/todo/0.4.1 @@ -0,0 +1,2 @@ +- Generate automatic asciidoc from conf/* + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/FAQ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/FAQ new file mode 100644 index 00000000..53494f73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile:home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/NEW_using_cinit_freebsd b/software/cinit/browse_source/cinit-0.3pre13/doc/user/NEW_using_cinit_freebsd new file mode 100644 index 00000000..05499166 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/NEW_using_cinit_freebsd @@ -0,0 +1,21 @@ +11:33 < mux> from sys/kern/init_main.c: +11:33 < telmich> mux: that's true; I just tried with linux and I tell the + bootloader, who tells the kernel then +11:33 < mux> static char init_path[MAXPATHLEN] = +11:33 < mux> #ifdef INIT_PATH __XSTRING(INIT_PATH); +11:33 < mux> #else +"/sbin/init:/sbin/oinit:/sbin/init.bak:/rescue/init:/stand/sysinstall"; +11:33 < mux> #endif +11:33 < mux> but you give a loader tunable +11:34 < mux> if ((var = getenv("init_path")) != NULL) { +11:34 < mux> strlcpy(init_path, var, sizeof(init_path)); +11:34 < mux> freeenv(var); +11:34 < mux> } +11:34 < mux> here you are +11:34 < telmich> ahh, that's good +11:34 * telmich has to try cinit on freebsd the next days :-) +12:34 < mux> (s/you give/you can give/) +11:35 < mux> so, simply init_path)="/sbin/cinit" in /boot/loader.conf should do + it +11:35 < mux> minus the typo + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/README.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/README.text new file mode 100644 index 00000000..3467ba63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/README.text @@ -0,0 +1,21 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit user documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +People using cinit. + +Content +------- + +hints.text: Some general hints +tuning.text: Some tuning hints diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/TODO b/software/cinit/browse_source/cinit-0.3pre13/doc/user/TODO new file mode 100644 index 00000000..6044e97a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/TODO @@ -0,0 +1,4 @@ +All the content in this file is unsorted. Reading may harm you. + +Confdir: /etc/cinit/conf/ +panic: /etc/cinit/conf/panic, /etc/cinit/conf/panic.params diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/compiles.on.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/compiles.on.text new file mode 100644 index 00000000..ad467d38 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/compiles.on.text @@ -0,0 +1,19 @@ +cinit - known configurations cinit compiles on +============================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-12-08 +:Author Initials: NS + + +This document lists all the configuration known to me on that +cinit compiles. If you compiled cinit with another configuration, +drop a mail to nico-cinit-report [at] schottelius.org. + +The list +-------- +cinit is known to compile on: + +- x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +- x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/conf-system.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/conf-system.text new file mode 100644 index 00000000..600112c3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/conf-system.text @@ -0,0 +1,34 @@ +The conf/ system +================= +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-08 +:Author Initials: NS + +This documentes describes the configuration system used by cinit. + + +What is the conf/ system? +------------------------- +The conf/ system is the configuration system for the cinit build. +The first line of each file below conf/ is a configuration value +with the name of the file: + +---------------------------------------------------------------------- +[9:00] hydrogenium:cinit-0.3pre6% head -n 1 conf/cc +gcc +---------------------------------------------------------------------- + +This means that the variable "cc" has the value "gcc". + + +What is the reason for conf/? +----------------------------- +I needed a small and simple configuration system, which may be included +in the full build process. + + +Is conf/ also usable for other projects? +---------------------------------------- +In its current state conf/ is just a prototype, with which I experiement +a lot. But it is possible that the future aim is to provide a simele +configuration and autoconfiguraton mechanism. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/configuring.cinit.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/configuring.cinit.text new file mode 100644 index 00000000..c04da745 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/configuring.cinit.text @@ -0,0 +1,327 @@ +cinit - Configuring +=================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2005-05-28 +:Author Initials: NS + + +This documentes describes how to configure cinit. +You should already have cinit installed, otherwise read +"cinit - Installing" first. + + +General configuration layout +---------------------------- +Cinit uses the <<>> configuration syntax, which means that +the configuration is kept as simple as possible. The following +sections will show you what that means. + +The cinit configuration consists of +- a special configuration directory +- and the service definitions. + +Paths +----- +Normally the configuration is kept below '/etc/cinit' +(though you can change this before compiling in conf/cinit_dir). + +The full description of the path layout of cinit and how to change it +can be found in 'paths.text'. + +Conf +---- +The special configuration directory is normally called `conf/` +(defined at compile-time in `conf/c_confdir`). + +For all executables into this directory apply the same rules as mentioned +below in "Execution: on and off": Appened .params specifies parameters, +appended .env specifies environment. + + +conf/last +~~~~~~~~~ +This is the last part that will be executed. After it has finished, cinit +will halt, power-off or reboot your machine. + +You can use it for whatever task to accomplish (as most things of cinit), but +the idea behind it is to use it for cleaning up things that are not covered +by the off parts of the services. This maybe swapoff (although this is an unecessary +call before poweroff, imho and even if needed this could be handled within the +off part of the same services that enabled it) or `umount -a` for everything +manually mounted and not unmounted yet. + + +conf/sleep_before_kill +~~~~~~~~~~~~~~~~~~~~~~ +This file contains just one line: The number of seconds to sleep after SIGTERM was sent +to every remaining process before sending SIGKILL to all processes. If this file +is unreadable or not existent, cinit will fall back to the value compiled in +(which was specified at build time in conf/sleep_kill). + + +Services +-------- +cinit is service based. Other init systems use shell +scripts (for instance /etc/rc, /etc/init.d/rc as starters +and /etc/rc*.d/* as "service definitions"). + +'current-init-problems.text' explains why cinit does *not* +use nor recommends the use of shell scripts. + +A service is simply a directory. This directory contains information about + +- what should be started when starting the service +- what should be started when stoping the service +- what dependencies the service has +- whether to restart it, when it exits + + +Full service definition +~~~~~~~~~~~~~~~~~~~~~~~ +. A service consists of + - a base directory (like /etc/cinit/svc/mount/root/) + - dependency configuration (`needs` and `wants`) + - start/stop programs (`on` and `off`) + - respawn flag (`respawn`) + + +Base directory +^^^^^^^^^^^^^^ +You can create the base directory everywhere below /etc/cinit/svc. +You may and it is recommened to create a directory structure +(see 'example-directory-structure.text'). + + +Dependencies +^^^^^^^^^^^^ +The subdirectories + +- `wants` +- and `needs` + +contain the dependencies for the service. + +Read 'dependencies.text' for more information. + + +Respawning +^^^^^^^^^^^ +If you create the empty file 'respawn' (adjustable via conf/c_respawn) +the service will be restarted after it exits. + +-------------------------------------------------------------------------------- +# Tell cinit to respawn the eth0.udhcpc service +touch /etc/cinit/svc/network/eth0.udhcpc +-------------------------------------------------------------------------------- + + +Execution: on and off +^^^^^^^^^^^^^^^^^^^^^ +When a service starts, the file `on` in the service +directory is executed. It is ok, if this file is not existing. +When a service stops, the file `off` in the service +directory is executed. + +The file with the extension `.params` is used to specify the arguments +to pass. Each line contains exactly one parameter. + +The file with the extension `.env` is used to specify the environment +to pass. Each line contains exactly one variable definition in the form +'variable=value'. + +. The following six files are possibly used on starting/stoping: + - ./on (the program called on startup) + - ./on.params (the parameters to pass to the program, see conf/c_params) + - ./on.env (the environment to pass to the program, see conf/c_env) + - ./off (the program called when shutting down the service) + - ./off.params (the parameters to pass to the program) + - ./on.env (the environment to pass to the program) + +Some examples: +---------------------------------------------------------------------- + /etc/cinit/svc/init: + ./wants -> services it wants + ./needs -> services it needs +---------------------------------------------------------------------- + +A more or less normal service without dependencies: +---------------------------------------------------------------------- + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it +---------------------------------------------------------------------- + +A service with all options used: +---------------------------------------------------------------------- + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn service + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting +---------------------------------------------------------------------- + + +Profiles +-------- +Profiles allow you to define different startup scenarios and select +those before bootup. Read 'profiles.text' for more information about +profiles. + +The profile support was added in cinit-0.0.6. + + +Service execution order +------------------------ +The first service executed is '/etc/cinit/svc/init'. +If a profile is selected '/etc/cinit/svc/`profilename`' is used +instead. + +Cinit builds a full service dependency tree through the `wants` +and `needs` of the first service and its dependencies +(recursively). + +After the tree is generated, cinit begins to start the services +at the end of the tree. These services have no `needs`. + +If you manage to create circular dependencies your system will not startup. +You can verify the correctness your configuration with the script +`cinit.check.config`. + + +Hints +----- + +Service executing / parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The on and off files can and should be links to the programs you want +to execute instead of a shell script. This way you save yourself the overhead +of loading a shell. The speed enhancement is very big if you have shells +like bash installed as /bin/sh (which is *not* senseful anyway, I would +recommend dash or ksh for /bin/sh). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. +The service could look like this: +---------------------------------------------------------------------- + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). +---------------------------------------------------------------------- + + +Daemons +~~~~~~~~ +Daemons are programs that go away to the background (using fork()) after +start). + +The fork-away strategy seems to be some illness introduced by traditional +init systems, that are dependent on the fact, that a process exits on +startup. + +cinit in contrast remembers the process ID (pid) of the services it +restarts (those with `respawn` enabled). + +So when the daemon fork()s away and the parent process exits it looks to +cinit like the watched service died and cinit will restart it. + +Happily, most processes can be taught not to go to background. +Some processes even do that by default and very less are broken that +one cannot tell them not to background. + +A list of known processes that are normally used in respawn +processes can be found in 'daemons.backgrounding.text'. + +If your process is not listed in `daemons.backgrounding.text', +check the documentation of your daemon program, if may have a +switch to disable forking. + +But, with a small hack it is even possible to respawn those broken processes: + +We start a program, that + - starts the daemon, + - monitors the pidfile of the daemon, + - waits until that pid does not exist anymore + - and then exits. + +Such a program is included into the cinit source tarball, +though I do not recommend using it. The better way is to implement +non forking mode into your process. + +The name of the program (actually a shell script) is 'cinit.wait.for.daemon'. + +You can use it as the `on` part of a service and add + + - the pidfile, + - the process binary + - and the process parameters + +to `on.params`. + +Thus the service could look like: +---------------------------------------------------------------------- + svc-broken-daemon/ + on -> /sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL +---------------------------------------------------------------------- +(This is not a so good example, because Apache supports non-forking mode). + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + + +Logging +~~~~~~~ +Currently there's no special logging support. +When a process writes to stdout, it will be displayed on +the same stdout cinit is connected to. + +In newer versions cinit (perhaps cinit-0.4) will also support logging +stdout and stderr of a service. + + +How to migrate your old init-system configuration to cinit +---------------------------------------------------------- +This is highly dependent on your actual system, your system +configuration and your own ideas. + +Cinit is able to replace all other init systems I know about. + +So the only question is "How to do it?". + +There are some hints on how to migrate to cinit in general and also +some os specific help in the file 'migrating-init-systems.text', + + +Debugging the configuration +---------------------------- +Use `ls -lR /etc/cinit` or one of the tools found in contrib+tools/. + + +Examples +-------- +Currently there are some example configurations available +at http://unix.schottelius.org/cinit/samples/cinit-0.3/, sorted +by host on which they are created. + +In near future, there will also be a file name configuration.example.text, +which will lead you to a sample configuration. + + +References +---------- ++ [[[cconfig]]] http://nico.schotteli.us/papers/linux/cconfig/ diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/cross-compiling.text new file mode 100644 index 00000000..67208534 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/cross-compiling.text @@ -0,0 +1,6 @@ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/current-init-problems.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/current-init-problems.text new file mode 100644 index 00000000..529c2f84 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/current-init-problems.text @@ -0,0 +1,170 @@ +Currently available init systems and their problems +=================================================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-11 +:Author Initials: NS + + +This document describes some other init systems, especially +the "traditional" ones and describes their problems. + + +Introduction +------------- +some history, sysv, bsd, + +minit, runit, initng, cinit, upstart + + +Implementations +--------------- +List of current implementations as of 2006-12-12. + + +Linux Sys-V-Init +~~~~~~~~~~~~~~~~ +Debian Sid + +/etc/inittab + +"First script" /etc/init.d/rcS (specified +/etc/init.d/rcS: Bourne shell script text executable + +Runlevels: 0-6, different states + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% /sbin/runlevel +N 2 +-------------------------------------------------------------------------------- + + +Depending on runlevel, the init calls /etc/init.d/rc $runlevel. + +This is manually configured in /etc/inittab + +/etc/init.d/rc: Bourne shell script text executable + +/etc/init.d/rc + +Calls symlinks in /etc/rc?.d. Each runlevel a directory: + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% ls -ld /etc/rc*.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc0.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc1.d +drwxr-xr-x 3 root root 4096 2006-12-01 16:56 /etc/rc2.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc3.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc4.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc5.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc6.d +drwxr-xr-x 2 root root 4096 2006-11-28 23:17 /etc/rcS.d +-------------------------------------------------------------------------------- + + + +rlmanager: sys-v-init hack +~~~~~~~~~~~~~~~~~~~~~~~~~~ +rlmanager: one script to be executed, sources +simply configuration + +Gentoo Linux +~~~~~~~~~~~~ +no content yet + +BSD init +~~~~~~~~ +Analyzed on FreeBSD. +/etc/rc +/etc/rc.d/ system services +/usr/local/etc/rc.d/ user installed services +Scripts may use values from /etc/rc.conf to check whether +they should be started or not. + +runit +~~~~~ +Three stages: Script1, dependencies, Script3 + + +Initng +~~~~~~ +no content yet + +minit +~~~~~ +Focus on being small. Needs libowfat. +Log support through pipe. + + + + + +Problems overview +----------------- + +Scripts +~~~~~~~ +Scripts are slow. Startup time. Execution time. Unecessary overhead. + + +Sequential startup +~~~~~~~~~~~~~~~~~~ +In the 'old' init systems there is no support of parallel execution. +So if one services hangs at startup, the whole system has to wait +(for instance a dhcp request). In the worst case this may result in +a non-booting system. Systems with dependencies can start the gettys +for login before, in parallel to or even after blocking services are +started. The fact, that they *are* started means you can interact with +the system, you can end looping or blocking services. + +So sequential startup may not only be the reason for a pretty +slow system, but also for an unmaintainable one. + +Unecessary services +~~~~~~~~~~~~~~~~~~~ +Many implementations try to do whatever-is-possible on boot, trying to +cover every possible and impossible situation. + +Portmap without any program that needs it. + +Starting all installed services per default (Debian) vs. let the +user choose what to start (Gentoo). + +Nicht entfernte Altlasten ab und zu. + + +No dependencies +~~~~~~~~~~~~~~~ +Systems without dependencies may result in a chaos state after booting up. + + +Only soft dependencies +~~~~~~~~~~~~~~~~~~~~~~~ +The dependencies are used, but because of soft dependencies, services +may be started although their dependency is missing. + + +Parallel init system debugging +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In contrast to the old init systems, parallel executing init systems +are much harder to debug. If the starting init systems does not have +proper logging / reporting to the user (like cinit-0.2 has), the user +may never find out, what happened and why. + + +Parallel / dependency checking init system with variable boot order +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The boot order may be different each time you boot and is dependent +on the success or failure of services. This way you can never tell +exactly how and in which order they are executed. On multiprocessor +machines, where processes may be truely executed in parallel, there +is no order anymore, but there are n orders on n processors. + +To solve this issue, init systems which support parallel execution +should ship with some testing tools, that simulate a startup. + +cinit will ship with such a tool in cinit-0.4. + + +References +---------- +no content yet diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/daemons.backgrounding.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/daemons.backgrounding.text new file mode 100644 index 00000000..5b61b91d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/daemons.backgrounding.text @@ -0,0 +1,84 @@ +cinit - Daemons backgrounding +============================= +Nico Schottelius +0.1, for cinit 0.3, Initial versinon from 2005-06-12 + + +This document describes the backgrounding process and how to disable it. + + + +Definition +----------- +A daemon is a program which runs in the background. +Running in the background means you cannot access the process +directly (like you can press a key in a shell). + + +Daemons and cinit +------------------ +cinit normally watches system services and restarts them +(`respawn` flag in the configuration). If the process goes to background, +cinit cannot control it directly anymore. + +List of daemons and non-forking parameters +------------------------------------------- + +The following daemons / servers are known to avoid backgrounding easily: + +- acpid [x86 power management]: -f (undocumentated but works) +- apache [webserver]: -DFOREGROUND +- asterisk [pbx]: -f +- bind [dns server/caching]: -f +- cardmgr [pcmcia/cardbus]: -f +- cron (vixie) [schedular]: -f +- cupsd [printer server]: -f or -F +- dhclient [dhcp client]: -d +- dhcp3 (isc) [dhcp server]: -f +- distccd [compile server]: normal behaviour +- dnsmasq [dhcp/tfpt/dns]: -k +- dovecot [imap/pop3 server]: -F +- fam [file alteration monitor]:-f +- fcron [schedular]: -f +- frox [ftp proxy]: "NoDetach" in config +- freeradius [radiusd]: -f +- gdm [display manager]: -nodaemon +- hybrid [irc server]: -foreground +- icecast2 [sound streamer]: normal behaviour +- mini-lpd [printer server]: normal behaviour +- metalog [log server]: normal behaviour +- monotone [vcs]: normal behaviour +- mpd [music server]: --no-daemon +- nessusd ["security server"]: normal behaviour +- ntpd [time server]: -n +- nylon [socks proxy]: -f (prints output to terminal) +- oidentd [identd server]: -i +- oops [http proxy]: normal behaviour +- openpbx [pbx]: -f +- openssh [ssh server]: -D +- openvpn [vpn server]: normal behaviour +- pbbuttonsd [power management]:normal behaviour +- portmap [portmapper]: -f +- proftpd [ftp server]: -n +- qmail [mta]: normal behaviour +- rsync ["file server"]: --no-detach +- silcd ["secure chat server"]: -F, --foreground +- slapd [ldap]: -d +- snmpd [snmp daemon]: -f +- stunnel [ssl wrapper]: "foreground = yes" in config +- svnserve [vcs]: --foreground +- syslogd [log server]: -n +- syslog-ng [log server]: -F +- tcpserver [super server]: normal behaviour +- udhcpc [dhcp client]: normal behaviour +- vsftpd [ftp server]: normal behaviour (or: config: background=no) +- xinetd [super server]: -dontfork + + +Problematic daemons +------------------- +Those are the daemons that do not offer the possibility (as of release 0.2): + +- atd (no switch, no configuraton option) +- inetd (some variants) +- nscd (no switch, no configuraton option) diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/debugging.configuration b/software/cinit/browse_source/cinit-0.3pre13/doc/user/debugging.configuration new file mode 100644 index 00000000..1289865e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/debugging.configuration @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +Debugging your init configuration, +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +As writing an init configuration is not the easiest thing, +here are some problems (P) and debugging hints (H): + +P: There's no output! +H: If you don't start a service which outputs something there won't be any, + cinit starts up silently. + +P: Service XYZ seems not to work? +H: Try the following in your shell: + cd /etc/cinit/the-service; ./on "$(on.params)" + If that succeeds it has perhaps something missing which should have been + started before. +H: Create a test-service, which contains the following: + on: link to /bin/echo + on.params: "A test string" (with or without the quotes) + Now add the test-service to the needs directory of service XYZ. + If you see output the next time, the service is started. + Otherwise you forgot to make another service dependent on service + XYZ. + +P: How can I test if a non-outputting service successfully started? +H: Create another service, which depends on your service and make + it echo something. + +P: Does that profile support really work? +H: Try that: cprofile:NONEXISTENT and you'll see. + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/dependencies.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/dependencies.text new file mode 100644 index 00000000..e1154a54 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/dependencies.text @@ -0,0 +1,68 @@ +cinit - Dependencies +==================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-13 +:Author Initials: NS + +This document describes the different dependency types of cinit. + + +Dependencies in general +----------------------- +Each service may have two types (non-exclusive) types of dependencies: +The so called `needs` or `wants`. These are directories below the service +directory and contain symbolic links to the dependencies. +The name of the link can be freely chosen. + +An example: + +The service '/etc/cinit/svc/getty/2' needs the service +'/etc/cinit/svc/local-tuning/keyboard-layout': +-------------------------------------------------------------------------------- +[21:35] hydrogenium:needs# cd /etc/cinit/svc/getty/2/needs +[21:35] hydrogenium:needs# ls -l +insgesamt 0 +lrwxrwxrwx 1 root root 37 2006-10-26 17:51 keyboard-layout -> ../../../local-tuning/keyboard-layout +[21:35] hydrogenium:needs# cd keyboard-layout/ +[21:35] hydrogenium:keyboard-layout# pwd -P +/etc/cinit/svc/local-tuning/keyboard-layout +-------------------------------------------------------------------------------- +(Warning: This is an incomplete example, it misses at least `mount/root` +as dependency) + +This service could additionally want something else, too. It is also +possible that a service only `wants` another service or that a service +has no dependencies. + + +Absolute versus relative links +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +cinit does not care whether a link is relative or absolute. And +as far as I can see it does not make any difference to usability. + +In general, it seems to be a little bit 'easier' to use relative links +when manually configuring cinit ('ln -s ../../../service' versus +'ln -s /etc/cinit/svc/category/service'), but easier readable when +analysing them (with `ls -l'). + + +The two types +------------- + +needs +~~~~~ +`Needs` are the 'hard dependencies': If a services fails to start that +is linked in the `needs` directory, the service will not be started. + + +wants +~~~~~ +`Wants` are the 'soft dependencies': cinit will try to start the dependencies +found in `wants` before the service, but the service will also be started, +indenpendend of success of the dependencies. + + +Circular dependency problem +---------------------------- +If you manage to create circular dependencies cinit will fall into an +endless loop. Use `cinit.check.config` to verify your configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/example-directory-structure.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/example-directory-structure.text new file mode 100644 index 00000000..d19ac1fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/example-directory-structure.text @@ -0,0 +1,140 @@ +cinit - Example directory structure +=================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-12 +:Author Initials: NS + + +This document describes a tested directory hierarchy that +you could adapt for your setup. But this is no need, you +are free to design your own layout and/or improve this one. + + +Main idea +--------- +The main reason for this layout is that all services directly located +in /etc/cinit/svc/ would create a not-so-easy maintainable chaos. + + +Categories +---------- +When thinking about grouping some parts together, there came some categories +to my mind: + +- init: This must be there. It is no real choice (well, working with profiles + is an alternative) +- we need to mount things +- things that are used to 'configure' my local system +- network connectivity +- services only locally reachable +- services remote reachable +- something that let me login + +With these requirements the following categories (=directories) were created: + + +getty +~~~~~ +Gettys are those little and nice programs that allow you to login. +As we normally want to have more than one it seems to be senseful +to create a category for it. + +For the creation of the getty services itself, an extremly simply +scheme is used: Simply create services with the number of the getty +that is running. This results in the following setup: + +-------------------------------------------------------------------------------- + /etc/cinit/svc/getty/ + 2/ + 3/ + 4/ + ... +-------------------------------------------------------------------------------- + +The number '1' is skipped, because cinit normally logs to stdout that is +connected to the first console. + +`/etc/cinit/svc/getty/needs/` contains all enabled gettys. This way +`/etc/cinit/svc/init/needs/` can refer to `/etc/cinit/svc/getty/` only +but will catch all gettys. + +If you want to allow users to login via a graphical login screen +(also known as X11 with xdm/gdm/kdm) you could add this service as +`getty/gdm` for instance, because gdm is just another getty (just with +more colours). + + +init +~~~~ +`init` is the service everything begins with. You simply put all other +categories into the `needs` (or if soft-dependencies to `wants`) of this +service. + + +local-services +~~~~~~~~~~~~~~ +This directory contains all the services that are only locally reachable. +This may contain local webserver, a MTA that only accepts mails +via /usr/sbin/sendmail (like qmail is capable of) or some other local +only available services. + + +local-tuning +~~~~~~~~~~~~ +This directory is used for local configuration. It contains services, +that setup the keyboard layout (perhaps called `local-tuning/keyboard-layout` +needed by `getty`!), adjust system to hardware time, cleans /tmp +(`local-tuning/tmpclean`), ... + + +mount +~~~~~ +This directory contains the service to remount the root filesystem +read-write (`mount/root`) which is dependend on the filesystem +check (`mount/root/fsck`, also have a look at 'special-services.text'). +It also contains the services that mount the pseudo filesystems +(`mount/proc` (FreeBSD, Linux) and `mount/sys` (Linux)) and all +other partitions (`mount/home`, `mount/usr`,...) which again contain +a dependency to the filesystem check, if necessary. + + +network +~~~~~~~ +The `network` directory should cover all of the network basics. +This includes setting the hostname (`network/hostname`) configuring +network devices (`network/eth0.static`, `network.ath0.master`) limiting +network accesses (`network/firewall`), enable packet forwarding +(`network/ip-forward`), adjusting the available bandwith +(`network/traffic-shaping`), ... + + +If there are too many network devices, you could create a subfolder named +`network/devices/`. + +I used to suffix the network devices with the mode they run, so I can +use different modes in different profiles (setup the wireless card in +master mode at home, in ad-hoc mode at a friend and in managed mode at +work). + + +remote-services +~~~~~~~~~~~~~~~~ +Remote-services are all services that are reachable from remote hosts. +This includes ssh (`remote-services/opensshd`), webserver +(`remote-services/lighttpd` or `remote-services/apache22`). + +Most servers `need` a working network interface, before they can be +started, but mostly it is enough to have the loopback interface up. + +This results in the possible `needs` dependency for `network/loopback` +and soft dependencies, what we call `wants` on `network`. + +Other examples for remote services are +- dns (`remote-services/dnscache`, `remote-services/tinydns`, + `remote-services/bind`) +- fileserver (`remote-services/smbd`, `remote-services/mmbd`) +- network infrastructure (`remote-services/bgpd`) +- many others + +Many daemons used for `remote-services` are described in +'daemons.backgrounding.text'. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/ideas b/software/cinit/browse_source/cinit-0.3pre13/doc/user/ideas new file mode 100644 index 00000000..d3f13d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/ideas @@ -0,0 +1,3 @@ +- cinit-multi-machine-daemon: + coordinating bootup with several machines + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/installing-cinit.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/installing-cinit.text new file mode 100644 index 00000000..34902057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/installing-cinit.text @@ -0,0 +1,63 @@ +cinit - Installing +================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-06-02 +:Author Initials: NS + +This documentes describes how to install cinit. + + +Installing +---------- +Installing cinit is not a big deal, so is this document. +Where possible I added a list of commands to execute at the +end of each section. + + +From source +~~~~~~~~~~~ +Retrieve the latest source from http://unix.schottelius.org/cinit/. +Then extract it, change to the source directory, adjust your OS in the +file "conf/os" and type "make all". + +To report success run scripts/report.compile and send the output +to nico-cinit-report |at| schottelius.org. I will use this information +to know how and where cinit is compiled. Personal values like hostnames +or your e-mail address will *not* be published. + +Code to install cinit: +---------------------------------------------------------------------- +# the program we use to retrieve the source (fetch on FreeBSD) +get=wget +# change to current version +version=0.3pre6 +url=http://unix.schottelius.org/cinit/cinit-${version}.tar.bz2 +# get it +$get "$url" +# exctract it +tar xvjf "cinit-${version}.tar.bz2" +# build it and report success +who=nico-cinit-report +where=schottelius.org +cd cinit-${version} && make all && \ +./scripts/report.compile | mail -s "cinit: compile report" "${who}@${where}" +---------------------------------------------------------------------- + +Warning: Currently the install target is missing. Simply copy +"src/cinit" to /sbin/cinit. + + +Changing compile time parameters +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +All compile time configurations are kept below the "conf" +directory. Please read 'conf-system.text' for more information. + + +Cross-compiling +--------------- +For cross compiling see 'cross-compiling.text'. + + +Continue reading +---------------- +After having installed cinit, continue reading the document "Configuring cinit". diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/main.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/main.text new file mode 100644 index 00000000..ddf88304 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/main.text @@ -0,0 +1,113 @@ +cinit - a modern init system +============================= +Nico Schottelius +v0.1, for cinit-0.2.2, 2005-01-18 +:Author Initials: NS + + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/meta.dependencies b/software/cinit/browse_source/cinit-0.3pre13/doc/user/meta.dependencies new file mode 100644 index 00000000..fe743c48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/meta.dependencies @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, one would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation (see profile.support). + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +why it does not even need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ + +This way you have the indirection (meta-dependencies) in the filesystem +and cinit does not need any additional code. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/paths.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/paths.text new file mode 100644 index 00000000..d44bca61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/paths.text @@ -0,0 +1,121 @@ +cinit - Configuration +====================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Configuring cinit - the paths used + + +Main structure +--------------- +The base directory under which all configurations are found +is '/etc/cinit' (changable via conf/cinit_dir). + +The basic hierarchy is shown below: +---------------------------------------------------------------------- +/etc/cinit + svc -> services (adjustable: conf/svcdir) + conf -> general configuration (adjustable: conf/confdir) +---------------------------------------------------------------------- + + +The subdirectory 'conf' +~~~~~~~~~~~~~~~~~~~~~~~ +In this directory are general configurations located. +See below for the list of files that are located in this +directory. + + +The subdirectory 'svc' +~~~~~~~~~~~~~~~~~~~~~~ +This directory contains the services. A service is a directory. + + +Filenams for executable files +------------------------------ +When you create something that cinit should execute (like on +starting a service, on stopping a service, on panic, ...), cinit +will recognize the following extensions: + +. cinit executions extensions + - 'name' - the file that should be executed + - `'name'.params` - the parameter to pass to 'name' when executing + - `'name'.env` - the environment to pass to 'name' when executing + + +Name.params +~~~~~~~~~~~ +The 'params' file is a simple file containing one argument on each +line. + +Example: +---------------------------------------------------------------------- +[17:34] hydrogenium:cinit-0.3pre6% ls -l /etc/cinit/svc/init/on +lrwxrwxrwx 1 root root 9 2006-11-16 09:12 /etc/cinit/svc/init/on -> /bin/echo +[17:34] hydrogenium:cinit-0.3pre6% cat /etc/cinit/svc/init/on.params +The initial service has been started. (first parameter) +Some other useful information. (second parameter) +---------------------------------------------------------------------- + +Name.env +~~~~~~~~ +The 'env' file contains the environment definition. +Specify one assignment on each line, containing only "variable=value". + +Example: +---------------------------------------------------------------------- +[18:00] hydrogenium:% cat /etc/cinit/svc/remote-services/tinydns/on.env +IP=192.168.42.23 +---------------------------------------------------------------------- + +eof + +List of executable files +------------------------ +This list shows you what files are executable for cinit. + +on / off +~~~~~~~~~ +The files `on` and `off` are executed if found within a service +definition. `on` is called when starting the service, `off` +is called when stoping it. + + +conf/panic +~~~~~~~~~~ +This file will be executed by cinit if it has to panic. +Panic situation may occur, when there are heavy problems +like failing memory allocation in core areas. You can +change the name of the file in the pre-compilation settings +in `conf/c_panic`. + +If `conf/panic` is missing and cinit has to panic, a builtin +panic action will be called (see `conf/sulogin`). + + +conf/halt +~~~~~~~~~ +`conf/halt` will be called when cinit has shutdown all services +and wants to halt the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_halt`. + + +conf/poweroff +~~~~~~~~~~~~~ +`conf/poweroff` will be called when cinit has shutdown all services +and wants to poweroff the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_poweroff`. + + +conf/reboot +~~~~~~~~~~~ +`conf/reboot` will be called when cinit has shutdown all services +and wants to reboot the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_reboot`. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/problems-and-solutions.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/problems-and-solutions.text new file mode 100644 index 00000000..92cdd241 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/problems-and-solutions.text @@ -0,0 +1,33 @@ +cinit - Problems occured and solutions used +=========================================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2007-05-28 +:Author Initials: NS + +This documentes describes real problems people had with +cinit and their appropriate solutions. Feel free to add +your problems and solutions here. + + +Introduction +------------ + + +Adding problems and solutions +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Simply add your problem and solution and sign your paragraph +with your name. Then send the diff -u to the cinit mailinglist +or setup a git-repository so I can pull the changes. + + +Hibernate +--------- +uses /sbin/runlevel, which should *not* respond with 0 or 6 +as the second number. As cinit does not have /sbin/runlevel, +because cinit does not have any runlevels, you could hardcode +it to values hibernate accepts: + +---------------------------------------------------------------------- +#!/bin/sh +echo N 2 +---------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/problems.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/problems.text new file mode 100644 index 00000000..4fe8a315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/problems.text @@ -0,0 +1,114 @@ +Problems using cinit +==================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2007-04-24 +:Author Initials: NS + + +Using a high-speed, true dependency aware, profile supporting +logical acting and reliable init system like cinit is not +completly problem free. This document describes some common +problems you may have and their solutions. + + +Possible problems +----------------- + +Confused users +~~~~~~~~~~~~~~ +Compared to traditional init systems like sys-v-init or bsd-init +cinit introduces a complet new boot concept. This does not just +mean that you have services instead of shell-scripts (which is +one reason cinit is starting up faster), but also that the boot +order may be changed dynamically at bootup:, if a service fails. +And even if no service fails, the boot order may be different +on each boot, because processes are started in parallel and +may return earlier or later on each boot. To coordinate the +parallel running processes, cinit uses depencies, which are pretty +easy to understad when configurung, but may need some more +detailled watching at boot to understand it. + +The 'confused users'-problem is perhaps also the biggest +problem for introducing cinit as a replacement to current +init systems. + + +Configuration issues +~~~~~~~~~~~~~~~~~~~~ + +Not marking services as respawn +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +When cinit starts, it will wait for every service to exit. +So if you have a dependency on a service +that never exits, the whole init process may hang (dependending +on the dependencies). If you have services that are intendet +*not* to exit after start, you *have* to mark those with +`respawn`: Those services are started and watched by cinit +and will be restarted. This was a design choice to ensure +that all 'always running' processes *are* restarted. + +I did not find any service that should not exit and not +have a respawn flag. If you really really really have such +a service and you can prove to me that the respawn flag +would do harm to your system, I will think about implementing +a flag that tells cinit not to wait for it, but mark it +as successfully run after it has been started. + +User interaction +~~~~~~~~~~~~~~~~ + +User input +~~~~~~~~~~ +There may be the situation that you have to press a key +or enter some data when a service starts up (like entering +the password for your crypto harddisks). With cinit, this +will look like a mess, because other services may write to +the same console the service wrote a user prompt. + +The best solution for this problem is in my humble +opinion to create an user-input daemon that serialises +the requests and displays one after another. + +This could look like this: Your daemon wants to ask for +a passphrase for the SSL-certificate. You add aa needs +to this daemon to the 'input-daemon'. When you +start this service, it will contact the input-daemon +running on another virtual console and displaying a text +and an input field that is passed back to this service. +After that the input daemon changes back to the initial +console or asks for the next input, if there is another +request available. + +This input daemon may also be run on a graphical (X11) display. +. +Output to the user +~~~~~~~~~~~~~~~~~~ +When cinit starts up there may be many messages printed +out that also may look like printed random order. +To prevent your endusers from being confused you can create +some kind of graphical interface (like a framebuffer +or X11 display) that reads the output of cinit and converts +it to flashing images. It could look like this: + +---------------------------------------------------------------------- + + Your (graphical?) display: + -------------------------------------------------------------- + | /-----------------\ | + | | Red border, | | + | | failed to start | | + | \-----------------/ | + | | + | /------ | + | | Green border, | + | image van | + | | + | | + | | + | | + | | + | | + -------------------------------------------------------------- + + +---------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/profiles.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/profiles.text new file mode 100644 index 00000000..ab4d3c4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/profiles.text @@ -0,0 +1,79 @@ +cinit - Profiles +================ +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-06-04 +:Author Initials: NS + + +cinit profiles described. + + +What are profiles? +------------------ +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +How to use profiles? +--------------------- +Simply pass 'cprofile:PROFILENAME' (like cprofile:home) to cinit. + + +How to pass argumenents to cinit? +--------------------------------- +How to pass arguments to your init system depends on your operating +system and on your bootloader. + +Linux +~~~~~ +Under Linux the init-system gets the kernel arguments +(see linux.kernel.eats.arguments) as arguments. +So you can use + + kernel /usr/src/linux/vmlinuz cprofile:work (grub1,grub2) + append="cprofile:work" (LILO,yaboot) + +Other Unices should work like Linux, please consult your local +documentation. + + +How to configure profiles? +-------------------------- +It's very simple: Normally cinit would call /etc/cinit/svc/init as +the first service (with all its dependencies). If you pass 'cprofile=wireless' +to it, cinit will start from /etc/cinit/svc/wireless +instead. + +So the only thing you have to do is to create a service directory +below /etc/cinit/svc with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit/svc; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/svc/init; tar c . | (mkdir ../myprof; cd ../myprof; tar x ) + +That's it! + + +Some examples +------------- + +Here are some examples we found in #cLinux: + +-------------------------------------------------------------------------------- + profile name what it does + + musibox only start mp3blaster + terminal start only minicom, which opens the serial line + net-terminal start a respawning shell script, which starts + ssh to the selected host + video start X+mplayer, which plays the dvd/cdrom + wireless What to start when beeing in an unknown wlan + home/work selected services (nfs, ip, ...) for home or work +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/replacing.init b/software/cinit/browse_source/cinit-0.3pre13/doc/user/replacing.init new file mode 100644 index 00000000..2858c56c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/replacing.init @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and link, move or copy cinit to init (ln -s /sbin/cinit /sbin/init), reboot. + +That's everything in general, the biggest part will be to configuring cinit. + +See also doc/merging.other.initsystems. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/respawning-sleep.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/respawning-sleep.text new file mode 100644 index 00000000..24ed17e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/respawning-sleep.text @@ -0,0 +1,52 @@ +cinit - Respawning and sleeping +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2007-04-13 +:Author Initials: NS + + +How cinit sleeps, before a service is respawned. + +Introduction +------------ +When a service, that is configured to be respawning, exits cinit restarts it. +Because services may be broken and thus cinit would try to restart it many +times in a second, it is necessary to sleep between restarts. + +The big question: How to sleep? +------------------------------------ +The first possibility is to sleep a fixed amount of time between restarts: +For instance one second. This is not a good solution, because this waits +one unecessary second if the process just crashed. It may be too less, if +the service is really broken. + +The second possibility is to sleep a dynamic amount of time. + + +The next big question: How long to sleep? +----------------------------------------- +I think that as long as a service is broken we should not investigate to much +time into restarting it. So we can define a maximum amount of time to sleep +(for instance 30 seconds). The minimum amount of time to sleep is zero seconds. + +When the service is first started, the sleep time defaults to the minimum +amount of time. Each time the service is restarted, the sleep time is adjusted: + +sleep time (st) = Maximum sleep time (mst) / Time the process was running (tr) + +- If tr is < 1 it is adjusted to 1 and thus st is set to mst. +- If tr is > mst, st is set to 0. + + +How to force restart of a service? +---------------------------------- +Use cvsc (to be implemented). + + +Hom is it implemented? +---------------------- +Everytime cinit has to respawn a service it has to fork() itself. +The sleep call is implemented in the fork, so cinit itself does not have +to care about it. After the sleep time is over or the fork() recieves +SIGALARM it executes the real service. cinit itself records as start time +the current time plus sleep time. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/special-services.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/special-services.text new file mode 100644 index 00000000..4367bed1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/special-services.text @@ -0,0 +1,12 @@ +at: + no non-forking mode +fsck: + returns non-zero if it repaired something. + You have to wrap it into a shell-script :-( + + #!/bin/sh + fsck $@ + [ $? -le 1 ] && exit 0 + exit 1 + +Non-zero exit in general diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/supported-os.text b/software/cinit/browse_source/cinit-0.3pre13/doc/user/supported-os.text new file mode 100644 index 00000000..97b29506 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/supported-os.text @@ -0,0 +1,32 @@ +Supported operating systems +=============== +Nico Schottelius +0.1, Initial Version from 2007-02-15 +:Author Initials: NS + +This document lists the supported operating systems. + + +Supported OS +------------ +This means currently that cinit compiles on that system + +Tested by the author +~~~~~~~~~~~~~~~~~~~~ +- GNU/Linux +- FreeBSD +- NetBSD + +Reported by others +~~~~~~~~~~~~~~~~~~ +[none] + +Unsupported OS +-------------- + +OpenBSD +~~~~~~~ +Seems to not comply to Posix / XSI. Have a look at +http://home.schottelius.org/~nico/unix/openbsd/ftok-sys-ipc.h-problem. +This is a demo of the problem on OpenBSD 4.0 with cinit-0.3pre7-git. + diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/updating.cinit b/software/cinit/browse_source/cinit-0.3pre13/doc/user/updating.cinit new file mode 100644 index 00000000..fc0d3fef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/updating.cinit @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. call cservice -u thilo (if you have cinit-0.1 or later) + + For older versions: + + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything running and restart as if you would just + have booted. diff --git a/software/cinit/browse_source/cinit-0.3pre13/doc/user/using.rescue b/software/cinit/browse_source/cinit-0.3pre13/doc/user/using.rescue new file mode 100644 index 00000000..f58ff512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/doc/user/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user"). + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/cconfig.mk.makefile b/software/cinit/browse_source/cinit-0.3pre13/scripts/cconfig.mk.makefile new file mode 100644 index 00000000..822addce --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/cconfig.mk.makefile @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-20, 0110 CEST +# cconfig: create makefile from conf/ directory +# currently: all files +# later: only built-defines +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "#" +echo "# Warning: Autogenerated by $0, do not edit. " +echo "#" +for conf in ${CONFS}; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + echo "${NAME}=${value}" +done diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/cinit.build-env b/software/cinit/browse_source/cinit-0.3pre13/scripts/cinit.build-env new file mode 100644 index 00000000..94e093e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/cinit.build-env @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: build environment to be used in scripts +# * Should be sourced by using scripts +# 2006-10-26 +# + +. $(dirname $0)/cinit.read-conf + +export BASEDIR=${DESTDIR}${CINIT_DIR} +export SERVICES=${BASEDIR}/${SVCDIR} +export CONFIG=${BASEDIR}/${CONFDIR} diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/cinit.get-confdir b/software/cinit/browse_source/cinit-0.3pre13/scripts/cinit.get-confdir new file mode 100644 index 00000000..38d8572d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/cinit.get-confdir @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# Date: 2005-05-24 (Last Changed: 2005-08-08) + +# try environment first +if [ "$CINIT_CONF_DIR" ]; then + CONFDIR=$CINIT_CONF_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +else + echo 'Did not find cinit configuration!' >&2 + echo "Please set the variable CINIT_CONF_DIR" >&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/cinit.install.standard.dirs b/software/cinit/browse_source/cinit-0.3pre13/scripts/cinit.install.standard.dirs new file mode 100644 index 00000000..22cf273d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/cinit.install.standard.dirs @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install standard sub-configuration directories +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.build-env + +for svc in $SERVICE_CATEGORIES; do + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${SERVICES}/${svc}" +done + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/cinit.mkheader b/software/cinit/browse_source/cinit-0.3pre13/scripts/cinit.mkheader new file mode 100644 index 00000000..80e3f7cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/cinit.mkheader @@ -0,0 +1,32 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric: no quotes needed + is_numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + is_string="$(echo $value | grep '^"')" + + # + # Check for quote type + # + if [ ! "$is_numeric" -a ! "$is_string" ]; then + one_char=$(echo -n $value | wc -c) + + if [ "$one_char" -eq 1 ]; then + value="'$value'" + else + # is a string + value="\"$value\"" + fi + fi + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/cinit.read-conf b/software/cinit/browse_source/cinit-0.3pre13/scripts/cinit.read-conf new file mode 100644 index 00000000..80a32463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/cinit.read-conf @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# ~ 2005 +# + +CONFS=$($(dirname $0)/cinit.get-confdir) + +set -e + +for conf in ${CONFS}/*; do + NAME="$(basename $conf | tr a-z A-Z)" + if eval test -z \$$NAME; then + eval $NAME=\"$(head -n 1 $conf)\" + eval export $NAME + fi +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/configuration/README b/software/cinit/browse_source/cinit-0.3pre13/scripts/configuration/README new file mode 100644 index 00000000..64c0d174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/configuration/README @@ -0,0 +1 @@ +Scripts used to generate or aid in creating a configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/configuration/freebsd/create_services.sh b/software/cinit/browse_source/cinit-0.3pre13/scripts/configuration/freebsd/create_services.sh new file mode 100644 index 00000000..52e123a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/configuration/freebsd/create_services.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Reads list of services to create from stdin +# Create services (add correct dependencies) +# +# Options: +# -d: alternate destination directory (instead of /etc/cinit/svc) diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/configuration/freebsd/enable_services.sh b/software/cinit/browse_source/cinit-0.3pre13/scripts/configuration/freebsd/enable_services.sh new file mode 100644 index 00000000..ce4563a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/configuration/freebsd/enable_services.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Reads list of services to enabled from stdin +# Services must already exist +# +# Options: +# -d: alternate destination directory (instead of /etc/cinit/svc) diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/configuration/freebsd/search_enabled_services.sh b/software/cinit/browse_source/cinit-0.3pre13/scripts/configuration/freebsd/search_enabled_services.sh new file mode 100644 index 00000000..69e519b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/configuration/freebsd/search_enabled_services.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Search for enabled services: +# - /etc/rc.conf +# - /usr/local/etc/rc.d/ +# Output list of services to stdout +# +# Options: +# -r diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/configuration/freebsd/search_services.sh b/software/cinit/browse_source/cinit-0.3pre13/scripts/configuration/freebsd/search_services.sh new file mode 100644 index 00000000..2043e857 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/configuration/freebsd/search_services.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Search all services: +# - /etc/rc.conf +# - /usr/local/etc/rc.d/ +# Output list of all services to stdout +# +# Options: +# -r diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/create_baseconfig.sh b/software/cinit/browse_source/cinit-0.3pre13/scripts/create_baseconfig.sh new file mode 100644 index 00000000..7c9b69e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/create_baseconfig.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# 2006-10-23 +# cLinux/cinit + +. $(dirname $0)/cinit.build-env + +set -e + +mkdir -p "${BASEDIR}" + +mkdir -p "${SERVICES}" +mkdir -p "${SERVICES}/${C_INIT}" + +mkdir -p "${CONFIG}" diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/README b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/README new file mode 100644 index 00000000..2162b6b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/README @@ -0,0 +1 @@ +Only to be used by Nico Schottelius. diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/cinit.release b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/cinit.release new file mode 100644 index 00000000..54f1fbe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/cinit.release @@ -0,0 +1,72 @@ +#!/bin/sh +# Nico Schottelius +# Build release tar +# Date: Sat Oct 15 21:38:29 CEST 2005 +# Last Changed: ls -l + +# only release if I tell it to release +[ "$1" = "now" ] || exit 23 + +#if [ $# -ne 2 ]; then +# echo "This is a maintainer-only script to release cinit" +# echo $(basename $0): source-dir version +# exit 1 +#fi + +# paths +DIR="$(cd $(dirname $0)/../../; pwd -P)" +DDIR="$(cd $(dirname $0)/../../../; pwd -P)" +RDIR=$(basename "$DIR") + +# version +VERSION="$(cd "$DIR"; pwd -P | sed 's;.*/cinit-;;')" +VERSION_CONF="$(head -n1 $(dirname $0)/../../conf/version | sed 's/^"\(.*\)"$/\1/')" +VERSION_CHANGES="$(head -n1 "$(dirname $0)/../../CHANGES" | sed 's/cinit-\(.*\):.*/\1/')" +OUT_NAME="cinit-${VERSION}.tar.bz2" + +# remote +D_HOST=home.schottelius.org +D_BASE=www/org/schottelius/unix/www/cinit +D_DIR=${D_BASE}/archives/ +D_SOURCE=${D_BASE}/browse_source/ +LINK=current + +echo "=> Version directory: $VERSION" +echo "=> Version conf/version: $VERSION_CONF" +echo "=> Version CHANGES: $VERSION_CHANGES" + +if [ "$VERSION" = "$VERSION_CONF" -a "$VERSION" = "$VERSION_CHANGES" ]; then + echo "=> Version confirmed." +else + echo "*** VERSION MISMATCH ***" + exit 42 +fi + +echo -n "=> Continue? " +read yes + +if [ ! -d "$DIR" ]; then + echo "$DIR is not a directory" + exit 1 +fi + +# do the work! +( cd "$DIR" && make dist ) || exit 1 + +echo "Creating bzip2 compressed tar" +cd $DDIR +tar cj -X $DIR/.exclude -f "$OUT_NAME" "$RDIR" +chmod 0644 "$OUT_NAME" + +echo "Transfering to $D_HOST" +scp "$OUT_NAME" "$D_HOST:$D_DIR" + +echo "Extracting to $D_SOURCE" +ssh "$D_HOST" "tar xfj $D_DIR/$OUT_NAME -C $D_SOURCE" + +echo "Correcting paranoid permissions" +ssh "$D_HOST" "find \"$D_SOURCE/$RDIR\" -type f -exec chmod 0644 {} \\;" +ssh "$D_HOST" "find \"$D_SOURCE/$RDIR\" -type d -exec chmod 0755 {} \\;" +ssh "$D_HOST" "cd \"$D_SOURCE\" && rm -f \"$LINK\" && ln -s \"$RDIR\" \"$LINK\"" + +echo "Please do not forget to update the website..." diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/compile+run.sh b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/compile+run.sh new file mode 100644 index 00000000..30ec68a6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/compile+run.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# yah - yet another hack + +if [ ! "$1" ]; then + echo "HOSTNAME" + exit 23 +fi + +host="$1" + +hier=$(dirname $0) + +$hier/compile_test.sh "$host" + +if [ $? -ne 0 ]; then + echo "aborting, did not compile on $1" + exit 1 +fi + +ssh "${host}" './cinit/src/cinit & (sleep 30; kill -9 $(pgrep cinit))' diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/compile_local.sh b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/compile_local.sh new file mode 100644 index 00000000..e2bfce5e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/compile_local.sh @@ -0,0 +1,24 @@ +# just a hack + +dir=$(dirname $0) + +sys=$(uname -s) +sys_small=$(echo $sys | tr '[A-Z]' '[a-z]') + +case $(uname -s) in + NetBSD|OpenBSD) + make=gmake + ;; + *) + make=make + ;; +esac + +cd "${dir}/../../" +echo $sys_small > conf/os +# automatically called by make.. +#./bin/cinit.configure.os + +cd "src" +$make clean +$make cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/compile_run_as_compiler.sh b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/compile_run_as_compiler.sh new file mode 100644 index 00000000..f1ba01d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/compile_run_as_compiler.sh @@ -0,0 +1,14 @@ +what=$(dirname $0)/../../ +what_real=$(cd "$what" && pwd -P) +dest=~compiler/cinit-test + +set -e +sudo rsync -av "${what_real}/" "$dest" +sudo chown -R compiler "$dest" +sudo -u compiler "${dest}/scripts/internal/compile_local.sh" +sudo -u compiler "${dest}/src/cinit" & +sleep 13 +sudo -u compiler "${dest}/scripts/internal/stop_cinit.sh" + +# exit 0 for make +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/compile_test.sh b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/compile_test.sh new file mode 100644 index 00000000..335f31ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/compile_test.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# yah - yet another hack + +host="$1" +what=$(dirname $0)/../../ + +rsync --exclude .git --exclude \*.o -av "${what}" "${host}:cinit" +ssh "${host}" "./cinit/scripts/internal/compile_local.sh" diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/create_test_config.sh b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/create_test_config.sh new file mode 100644 index 00000000..720ce969 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/create_test_config.sh @@ -0,0 +1,18 @@ +hier=$(dirname $0) + +set -e +${hier}/../cinit.install.standard.dirs +cat > /etc/cinit/svc/init/on << eof +#!/bin/sh +echo test1 +sleep 4 +echo test2 - \$@ +eof +chmod 0755 /etc/cinit/svc/init/on + +cat > /etc/cinit/svc/init/on.params << eof +es +scheint +zu +gehen +eof diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/find_right_version.sh b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/find_right_version.sh new file mode 100644 index 00000000..759f23c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/find_right_version.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +src="$(dirname $0)/../../" +src_abs=$(cd "$src" && pwd -P) + +for commit in $( git log --pretty=short | awk '/^commit/ { print $2 }'); do + set -e + cd "$src_abs" + temp=$(mktemp -d /tmp/cinit.XXXXXXXXXX) + git-archive --format=tar "$commit" | ( cd "$temp"; tar x ) + cd "${temp}/src" + set +e + make clean && make cinit && ./cinit + if [ "$?" -eq 0 ]; then + echo "Commit $commit is ok" + exit 0 + fi + echo "Broken $commit" + sleep 1 + set -e + rm -rf "$temp" +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/qemu-test.sh b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/qemu-test.sh new file mode 100644 index 00000000..fd41312e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/qemu-test.sh @@ -0,0 +1,22 @@ +#!/bin/sh +# Nico Schottelius +# 2007-09-03: For testing cinit in qemu +# + +emud="${HOME}/emu" +img="${emud}/debian-hd.img" +ddir="${emud}/mount" +loop=/dev/loop1 +fsck="/sbin/fsck.jfs" + +# my jfs is on the first partition, 512*63 bytes offset +offset="32256" + +set -e +set -x +sudo losetup -o "${offset}" "${loop}" "${img}" +sudo "${fsck}" "${loop}" +sudo mount "${loop}" "${ddir}" + +sudo umount "${loop}" +sudo losetup -d "${loop}" diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/stop_cinit.sh b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/stop_cinit.sh new file mode 100644 index 00000000..86e4d82b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/stop_cinit.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# Linux specific, but don't care, I am the only person that should use it + +killall -TERM cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/test_on_hosts.sh b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/test_on_hosts.sh new file mode 100644 index 00000000..afeb2627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/test_on_hosts.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# yah + +hosts="penrose.bsdprojects.net jiffies.forkbomb.ch ddna044.netstream.ch" + +set -e + +for host in $hosts; do + echo "$1 on $host" + "$1" "$host" | sed "s/^/${host}: /" + echo "==> Finished $host" +done diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/valgrind b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/valgrind new file mode 100644 index 00000000..f769f9da --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/internal/valgrind @@ -0,0 +1 @@ +valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes --leak-resolution=high ./cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/report.compile b/software/cinit/browse_source/cinit-0.3pre13/scripts/report.compile new file mode 100644 index 00000000..ac591412 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/report.compile @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# 2006-12-08 +# Report compile success +# + +echo "cinit compile success report" +echo "----------------------------" +"$(dirname $0)/cinit.mkheader" +echo "----------------------------" +uname -a +echo "----------------------------" +. "$(dirname $0)/cinit.read-conf" +echo '$CC' +"$CC" -v +echo "----------------------------" +echo -n "Size: " +ls -l "$(dirname $0)/../src/cinit" diff --git a/software/cinit/browse_source/cinit-0.3pre13/scripts/wrapper/linux-sysvinit/shutdown b/software/cinit/browse_source/cinit-0.3pre13/scripts/wrapper/linux-sysvinit/shutdown new file mode 100644 index 00000000..ce413d17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/scripts/wrapper/linux-sysvinit/shutdown @@ -0,0 +1,38 @@ +#!/bin/sh +# Nico Schottelius (nico-cinit /at/ schottelius.org) +# 2007-05-21 +# Behave as being shutdown from Linux' sysvinit + +# parse options, display usage + +# all the functions + +usage() +{ + +cat << cinit_usage + +*** cinit linux-sysvinit shutdown wrapper *** + +Usage shutdown [-akrhHPfnc] [-t secs] time [warning message] + -a: use /etc/shutdown.allow + -k: don't really shutdown, only warn. + -r: reboot after shutdown. + -h: halt after shutdown. + -P: halt action is to turn off power. + -H: halt action is to just halt. + -f: do a 'fast' reboot (skip fsck). + -F: Force fsck on reboot. + -n: do not go through "init" but go down real fast. + -c: cancel a running shutdown. + -t secs: delay between warning and kill signal. + ** the "time" argument is mandatory! (try "now") ** + +You can also call "cmd" directly instead of using this wrapper. + +cinit_usage + +} + +# the main part +usage diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-17-19:03:48 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-17-19:03:48 new file mode 100644 index 00000000..e379e004 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-17-19:03:48 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 17 19:03 cinit +-rwx------ 1 nico users 46760 Jun 17 19:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-20-12:16:40 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-20-12:16:40 new file mode 100644 index 00000000..1f0c3325 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-20-12:16:40 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 20 12:16 cinit +-rwx------ 1 nico users 50860 Jun 20 12:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-20-15:16:31 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-20-15:16:31 new file mode 100644 index 00000000..75dc3e7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-20-15:16:31 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 15:16 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-20-16:29:28 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-20-16:29:28 new file mode 100644 index 00000000..1294bde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-20-16:29:28 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-20-16:29:50 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-20-16:29:50 new file mode 100644 index 00000000..69fe7490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-20-16:29:50 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 16:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-21-11:53:35 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-21-11:53:35 new file mode 100644 index 00000000..4a1e7b6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-21-11:53:35 @@ -0,0 +1,3 @@ +total 192 +-rwx------ 1 nico users 102039 Jun 21 11:53 cinit +-rwx------ 1 nico users 87871 Jun 21 11:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-07:33:11 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-07:33:11 new file mode 100644 index 00000000..e6c8ff14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-07:33:11 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47544 Jun 22 07:33 cinit +-rwx------ 1 nico users 46760 Jun 22 07:33 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-07:57:13 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-07:57:13 new file mode 100644 index 00000000..17161d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-07:57:13 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47536 Jun 22 07:57 cinit +-rwx------ 1 nico users 46760 Jun 22 07:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-08:08:40 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-08:08:40 new file mode 100644 index 00000000..770083f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-08:08:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47424 Jun 22 08:08 cinit +-rwx------ 1 nico users 46760 Jun 22 08:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-08:30:42 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-08:30:42 new file mode 100644 index 00000000..aa95fb3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-08:30:42 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47360 Jun 22 08:30 cinit +-rwx------ 1 nico users 46760 Jun 22 08:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-09:19:42 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-09:19:42 new file mode 100644 index 00000000..70c261bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-09:19:42 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 09:19 cinit +-rwx------ 1 nico users 50860 Jun 22 09:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-10:43:24 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-10:43:24 new file mode 100644 index 00000000..b8bc4076 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-10:43:24 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 10:43 cinit +-rwx------ 1 nico users 50860 Jun 22 10:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-12:42:57 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-12:42:57 new file mode 100644 index 00000000..c8119859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-12:42:57 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 22 12:42 cinit +-rwx------ 1 nico users 46760 Jun 22 12:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-13:52:41 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-13:52:41 new file mode 100644 index 00000000..793b92fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-13:52:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:52 cinit +-rwx------ 1 nico users 46760 Jun 22 13:52 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-13:59:40 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-13:59:40 new file mode 100644 index 00000000..d114c557 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-13:59:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:59 cinit +-rwx------ 1 nico users 46760 Jun 22 13:59 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-14:19:41 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-14:19:41 new file mode 100644 index 00000000..8d56882f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-14:19:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47640 Jun 22 14:19 cinit +-rwx------ 1 nico users 46760 Jun 22 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-14:37:18 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-14:37:18 new file mode 100644 index 00000000..b7c3e4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-22-14:37:18 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 22 14:37 cinit +-rwx------ 1 nico users 46760 Jun 22 14:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-23-06:22:23 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-23-06:22:23 new file mode 100644 index 00000000..9e38a5e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-23-06:22:23 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 23 06:22 cinit +-rwx------ 1 nico users 46760 Jun 23 06:22 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-24-17:53:55 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-24-17:53:55 new file mode 100644 index 00000000..3b750eaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-24-17:53:55 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:53 cinit +-rwx------ 1 nico users 46760 Jun 24 17:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-24-17:55:29 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-24-17:55:29 new file mode 100644 index 00000000..c30dcaf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-24-17:55:29 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:55 cinit +-rwx------ 1 nico users 46760 Jun 24 17:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-26-13:19:49 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-26-13:19:49 new file mode 100644 index 00000000..a4de830b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-06-26-13:19:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 26 13:19 cinit +-rwx------ 1 nico users 50860 Jun 26 13:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:07:13 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:07:13 new file mode 100644 index 00000000..e2c59ddf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:07:13 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:07 cinit +-rwx------ 1 nico users 50860 Jul 6 08:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:12:20 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:12:20 new file mode 100644 index 00000000..e562350c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:12:20 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:12 cinit +-rwx------ 1 nico users 50860 Jul 6 08:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:13:39 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:13:39 new file mode 100644 index 00000000..32fd8268 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:13:39 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:13 cinit +-rwx------ 1 nico users 50860 Jul 6 08:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:14:19 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:14:19 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:14:19 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:14:59 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:14:59 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:14:59 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:15:56 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:15:56 new file mode 100644 index 00000000..cf26e6f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-08:15:56 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:15 cinit +-rwx------ 1 nico users 50860 Jul 6 08:15 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-10:12:22 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-10:12:22 new file mode 100644 index 00000000..d5f0f2c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-10:12:22 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:08 cinit +-rwx------ 1 nico users 50860 Jul 6 10:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-10:12:31 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-10:12:31 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-10:12:31 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-10:12:49 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-10:12:49 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-07-06-10:12:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-08-29-21:21:34 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-08-29-21:21:34 new file mode 100644 index 00000000..e651a8ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-08-29-21:21:34 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 root root 444508 2005-08-29 21:21 cinit +-rwx------ 1 root root 440412 2005-08-29 21:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-08-29-23:50:55 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-08-29-23:50:55 new file mode 100644 index 00000000..a279aee3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-08-29-23:50:55 @@ -0,0 +1,3 @@ +insgesamt 856 +-rwx------ 1 nico nico 437564 2005-08-29 23:50 cinit +-rwx------ 1 nico nico 436316 2005-08-29 23:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-03-03:36:59 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-03-03:36:59 new file mode 100644 index 00000000..01e555f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-03-03:36:59 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 nico nico 444508 2005-09-03 03:36 cinit +-rwx------ 1 nico nico 440412 2005-09-03 03:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-03-04:34:35 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-03-04:34:35 new file mode 100644 index 00000000..1832930a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-03-04:34:35 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 04:34 cinit +-rwx------ 1 nico nico 440412 Sep 3 04:34 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-03-05:51:17 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-03-05:51:17 new file mode 100644 index 00000000..4e465d06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-03-05:51:17 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 05:51 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-03-05:54:20 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-03-05:54:20 new file mode 100644 index 00000000..9c040d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-03-05:54:20 @@ -0,0 +1,4 @@ +total 1300 +-rwx------ 1 nico nico 440412 Sep 3 05:54 ccontrol +-rwx------ 1 nico nico 444508 Sep 3 05:54 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-03-09:01:59 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-03-09:01:59 new file mode 100644 index 00000000..880422a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-03-09:01:59 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 3 09:01 cinit +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-05-19:41:12 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-05-19:41:12 new file mode 100644 index 00000000..0f07d86e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-05-19:41:12 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 root root 440412 2005-09-05 19:41 ccontrol +-rwx------ 1 root root 444508 2005-09-05 19:41 cinit +-rwx------ 1 root root 440412 2005-09-05 19:41 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-05-19:50:35 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-05-19:50:35 new file mode 100644 index 00000000..32ff19fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-05-19:50:35 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 5 19:50 cinit +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-24-01:42:38 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-24-01:42:38 new file mode 100644 index 00000000..0da6126e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-24-01:42:38 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-09-24 01:42 ccontrol +-rwx------ 1 nico nico 437628 2005-09-24 01:42 cinit +-rwx------ 1 nico nico 436316 2005-09-24 01:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-30-22:50:50 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-30-22:50:50 new file mode 100644 index 00000000..0d510174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-30-22:50:50 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 22:50 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 22:50 cinit +-rwx------ 1 nico nico 436316 2005-09-30 22:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-30-23:06:39 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-30-23:06:39 new file mode 100644 index 00000000..23450914 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-09-30-23:06:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 23:06 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 23:06 cinit +-rwx------ 1 nico nico 436316 2005-09-30 23:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-01-22:09:13 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-01-22:09:13 new file mode 100644 index 00000000..a62b9eb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-01-22:09:13 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-10-01 22:09 ccontrol +-rwx------ 1 nico nico 437308 2005-10-01 22:09 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-01-22:17:39 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-01-22:17:39 new file mode 100644 index 00000000..b1d8b11b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-01-22:17:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-01 22:17 ccontrol +-rwx------ 1 nico nico 437532 2005-10-01 22:17 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-02-11:12:29 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-02-11:12:29 new file mode 100644 index 00000000..e5f7b13d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-02-11:12:29 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:12 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-02-11:13:35 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-02-11:13:35 new file mode 100644 index 00000000..d7c14471 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-02-11:13:35 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-02-11:13:43 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-02-11:13:43 new file mode 100644 index 00000000..1711d01a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-02-11:13:43 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 11:13 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 436316 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-02-16:00:24 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-02-16:00:24 new file mode 100644 index 00000000..ab23228c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-02-16:00:24 @@ -0,0 +1,4 @@ +total 1284 +-rwx------ 1 nico nico 436316 Oct 2 16:00 ccontrol +-rwx------ 1 nico nico 437884 Oct 2 16:00 cinit +-rwx------ 1 nico nico 436316 Oct 2 16:00 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-02-23:17:11 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-02-23:17:11 new file mode 100644 index 00000000..92041cd9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-02-23:17:11 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 23:17 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 23:17 cinit +-rwx------ 1 nico nico 436316 2005-10-02 23:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-03-00:54:39 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-03-00:54:39 new file mode 100644 index 00000000..df47a057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-03-00:54:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:54 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:54 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-03-00:56:29 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-03-00:56:29 new file mode 100644 index 00000000..08db7fec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-03-00:56:29 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:56 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:56 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:56 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-13-09:55:52 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-13-09:55:52 new file mode 100644 index 00000000..d54a7ff4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-13-09:55:52 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:55 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:55 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-13-09:57:11 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-13-09:57:11 new file mode 100644 index 00000000..3b1af9ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-13-09:57:11 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:57 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:57 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-13-10:07:28 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-13-10:07:28 new file mode 100644 index 00000000..58d25315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-13-10:07:28 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 10:07 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 10:07 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 10:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-15-15:26:52 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-15-15:26:52 new file mode 100644 index 00000000..a88291e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-15-15:26:52 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 root root 436316 2005-10-15 15:26 ccontrol +-rwx------ 1 root root 437916 2005-10-15 15:26 cinit +-rwx------ 1 root root 436316 2005-10-15 15:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-15-21:23:56 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-15-21:23:56 new file mode 100644 index 00000000..43a4504d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-10-15-21:23:56 @@ -0,0 +1,4 @@ +total 36 +-rwx------ 1 nico nico 9148 Oct 15 21:23 ccontrol +-rwx------ 1 nico nico 11872 Oct 15 21:23 cinit +-rwx------ 1 nico nico 9768 Oct 15 21:23 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2005-11-17-17:03:53 b/software/cinit/browse_source/cinit-0.3pre13/size/2005-11-17-17:03:53 new file mode 100644 index 00000000..78543f15 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2005-11-17-17:03:53 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2005-11-17 17:03 ccontrol +-rwx------ 1 nico nico 11872 2005-11-17 17:03 cinit +-rwx------ 1 nico nico 9768 2005-11-17 17:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-11-23:45:54 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-11-23:45:54 new file mode 100644 index 00000000..f4852c81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-11-23:45:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-11 23:45 cinit +-rwx------ 1 nico nico 9768 2006-02-11 23:45 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-12-00:06:11 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-12-00:06:11 new file mode 100644 index 00000000..2fe41351 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-12-00:06:11 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-12-00:06:42 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-12-00:06:42 new file mode 100644 index 00000000..bf2ddc36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-12-00:06:42 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:06 ccontrol +-rwx------ 1 nico nico 11560 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-12-00:08:24 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-12-00:08:24 new file mode 100644 index 00000000..e25a49ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-12-00:08:24 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:08 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:08 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-12-00:09:33 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-12-00:09:33 new file mode 100644 index 00000000..0b64fa00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-12-00:09:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:09 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:09 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-12-00:13:32 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-12-00:13:32 new file mode 100644 index 00000000..b6c5c38e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-12-00:13:32 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:13 ccontrol +-rwx------ 1 nico nico 11500 2006-02-12 00:13 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-16-23:57:29 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-16-23:57:29 new file mode 100644 index 00000000..86b9fda9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-16-23:57:29 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11620 2006-02-16 23:57 cinit +-rwx------ 1 nico nico 9768 2006-02-16 23:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-17-00:16:18 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-17-00:16:18 new file mode 100644 index 00000000..28c853a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-17-00:16:18 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 00:16 cinit +-rwx------ 1 nico nico 9768 2006-02-17 00:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-17-22:48:35 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-17-22:48:35 new file mode 100644 index 00000000..5935acfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-17-22:48:35 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-17 22:48 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 22:48 cinit +-rwx------ 1 nico nico 9768 2006-02-17 22:48 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:03:54 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:03:54 new file mode 100644 index 00000000..9222f0b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:03:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:03 cinit +-rwx------ 1 nico nico 9768 2006-02-20 19:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:04:33 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:04:33 new file mode 100644 index 00000000..c5797edc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:04:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:04:36 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:04:36 new file mode 100644 index 00000000..fbcf9fa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:04:36 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:07:47 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:07:47 new file mode 100644 index 00000000..7e1fe18f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:07:47 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:07 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:12:33 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:12:33 new file mode 100644 index 00000000..2b4fda40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:12:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:12 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:12 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:14:56 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:14:56 new file mode 100644 index 00000000..bccb5d65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-02-20-20:14:56 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:14 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:14 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-01-23:32:43 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-01-23:32:43 new file mode 100644 index 00000000..fcbaf372 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-01-23:32:43 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-01 23:32 ccontrol +-rwx------ 1 nico nico 11640 2006-06-01 23:32 cinit +-rwx------ 1 nico nico 9768 2006-06-01 23:32 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-01:08:28 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-01:08:28 new file mode 100644 index 00000000..7683546c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-01:08:28 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:08 ccontrol +-rwx------ 1 nico nico 11688 2006-06-02 01:08 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-01:29:13 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-01:29:13 new file mode 100644 index 00000000..adbc6846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-01:29:13 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:29 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 01:29 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-11:13:39 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-11:13:39 new file mode 100644 index 00000000..46eaef4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-11:13:39 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:13 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:13 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-11:36:37 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-11:36:37 new file mode 100644 index 00000000..306402f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-11:36:37 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:36 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:36 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-15:17:17 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-15:17:17 new file mode 100644 index 00000000..7bb59095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-15:17:17 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:17 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:17 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-15:19:52 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-15:19:52 new file mode 100644 index 00000000..ce65256f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-06-02-15:19:52 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:19 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:19 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-11-29-235834 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-11-29-235834 new file mode 100644 index 00000000..c2c83117 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-11-29-235834 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73645 2006-11-29 23:57 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-02-172536 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-02-172536 new file mode 100644 index 00000000..4079d5db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-02-172536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73617 2006-12-02 17:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-02-174429 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-02-174429 new file mode 100644 index 00000000..5506928d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-02-174429 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73497 2006-12-02 17:44 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-02-182536 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-02-182536 new file mode 100644 index 00000000..14526d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-02-182536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 72092 2006-12-02 18:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-03-173231 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-03-173231 new file mode 100644 index 00000000..aca9d380 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-03-173231 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71944 2006-12-03 17:32 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-03-174544 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-03-174544 new file mode 100644 index 00000000..3c1cfea2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-03-174544 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71952 2006-12-03 17:45 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-03-191215 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-03-191215 new file mode 100644 index 00000000..4f2a2fa1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-03-191215 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-03 19:12 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-06-084947 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-06-084947 new file mode 100644 index 00000000..487af844 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-06-084947 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-06 08:49 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-14-213559 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-14-213559 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-14-213559 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-14-213717 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-14-213717 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-14-213717 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-14-213739 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-14-213739 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-14-213739 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-14-215315 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-14-215315 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-14-215315 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-14-215334 b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-14-215334 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2006-12-14-215334 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2007-02-17-210059 b/software/cinit/browse_source/cinit-0.3pre13/size/2007-02-17-210059 new file mode 100644 index 00000000..69179604 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2007-02-17-210059 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 75783 2007-02-17 20:59 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2007-02-23-202443 b/software/cinit/browse_source/cinit-0.3pre13/size/2007-02-23-202443 new file mode 100644 index 00000000..19cb71b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2007-02-23-202443 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 69439 2007-02-23 20:15 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2007-02-23-202720 b/software/cinit/browse_source/cinit-0.3pre13/size/2007-02-23-202720 new file mode 100644 index 00000000..19cb71b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2007-02-23-202720 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 69439 2007-02-23 20:15 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2007-03-07-231936 b/software/cinit/browse_source/cinit-0.3pre13/size/2007-03-07-231936 new file mode 100644 index 00000000..c2ef3d0b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2007-03-07-231936 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71213 2007-03-07 23:18 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/size/2007-04-06-011811 b/software/cinit/browse_source/cinit-0.3pre13/size/2007-04-06-011811 new file mode 100644 index 00000000..73de8724 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/size/2007-04-06-011811 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71281 2007-04-06 01:17 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/Makefile b/software/cinit/browse_source/cinit-0.3pre13/src/Makefile new file mode 100644 index 00000000..27a9f4bf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/Makefile @@ -0,0 +1,161 @@ +# +# cinit +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +################################################################################ +# +# Build tools / locations +# + +CC=../tmpbin/cc +CFLAGS= +LD=../tmpbin/ld +LDFLAGS= +STRIP=../tmpbin/strip +SBIN=../sbin +DESTDIR= +#DESTDIR=/home/user/nico/emu/dst + +################################################################################ +# +# All objects / binaries +# depend on headers. More or less. FIXME: use gcc -M +# +BIN=halt.kill poweroff.kill reboot.kill cmd +CINIT=cinit +ALLBIN=${BIN} ${CINIT} + +# headers +CONFIG_H=include/config.h +CINIT_HEADERS=${shell cat include/listing} + +# objects +CINIT_OBJ=${shell cat object_lists/cinit} +HALTKILL_OBJ=${shell cat object_lists/halt.kill} +POWEROFFKILL_OBJ=${shell cat object_lists/poweroff.kill} +REBOOTKILL_OBJ=${shell cat object_lists/reboot.kill} +CMD_OBJ=${shell cat object_lists/cmd} + +# +# All objects +# +OBJ=${CINIT_OBJ} ${HALTKILL_OBJ} ${POWEROFFKILL_OBJ} ${REBOOTKILL_OBJ} + +################################################################################ +# +# End user target +# +#all: cinit cservice ccontrol sizecheck docs +all: ${ALLBIN} + + +################################################################################ +# +# Generic +# +${OBJ}: ${CINIT_HEADERS} + +%.o: %.c + ${CC} -c -o $@ $< + +################################################################################ +# +# First do configuration, so we include the right variables +# +Makefile: .configured + +.configured: ../conf/* + @../bin/cinit.configure.os + @../bin/cinit.configure.tools + @../bin/cinit.configure.ipc + @../bin/cinit.configure.mark + +${CINIT_OBJ}: ${CONFIG_H} + +${CONFIG_H}: ../conf/* + ../scripts/cinit.mkheader > ${CONFIG_H} + +################################################################################ +# +# Install targets +# + +#install: install-dir cinit cservice ccontrol +install: install-cinit install-utilities + +install-sbin: + install -d ${DESTDIR}/sbin + +install-utilities: install-sbin ${BIN} + @echo '*** Installing utilities ***' + install ${BIN} ${DESTDIR}/sbin + +install-cinit: install-sbin cinit + @echo '*** Installing cinit ***' + @echo "Need to delete cinit before reinstalling it {text file busy problem}" + rm -f ${DESTDIR}/sbin/cinit + install cinit ${DESTDIR}/sbin + +# FIXME: target broken +install-miniconf: + ./bin/cinit.install.miniconf + +# FIXME: target broken +install-dir: + ./bin/cinit.install.dir + + +################################################################################ +# +# Build targets +# + +cinit: ${CINIT_OBJ} + ${LD} $^ -o $@ + +halt.kill: ${HALTKILL_OBJ} + ${LD} $^ -o $@ + +poweroff.kill: ${POWEROFFKILL_OBJ} + ${LD} $^ -o $@ + +reboot.kill: ${REBOOTKILL_OBJ} + ${LD} $^ -o $@ + +cmd: ${CMD_OBJ} + ${LD} $^ -o $@ + +################################################################################ +# +# Internal test targets +# + +uml: cinit cmd + ../../vm/uml/uml-mount.sh + cp cinit cmd ../../vm/uml/root/sbin/ + ../../vm/uml/uml-umount.sh + +umlstart: uml + ../../vm/uml/uml-start.sh + +################################################################################ +# +# Clenaup targets +# + +.PHONY: dist +dist: distclean + +.PHONY: distclean +distclean: clean + rm -f os/current ipc/current .configured + +.PHONY: clean +clean: + rm -f ../tmpbin/*.configured + rm -f ${BIN} ${CINIT_OBJ} ${CINIT} + rm -f client/*.o test/*.o diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/Makefile.tests b/software/cinit/browse_source/cinit-0.3pre13/src/Makefile.tests new file mode 100644 index 00000000..0f4b4626 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/Makefile.tests @@ -0,0 +1,27 @@ +# +# Makefile for cinit tests +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +TEST_BUILD_ARGV=test/test_build_argv.o core/build_argv.o + +PROGS=test_build_argv test_build_argv_link + +tests: $(PROGS) + +test_build_argv: test/test_build_argv.o core/build_argv.o +test_build_argv_link: test/test_build_argv+link.o core/build_argv.o + +test_gen_svc_tree: test/test_gen_svc_tree.o svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/gen_svc_tree.o \ + generic/mini_printf.o \ + svc/list_display_all.o + +test_openreadclose: test/test_openreadclose.o generic/openreadclose.o diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ancient/comm.h b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/comm.h new file mode 100644 index 00000000..4fbe8c50 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/comm.h @@ -0,0 +1,81 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit (at) schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#ifndef CINIT_COMM_HEADER +#define CINIT_COMM_HEADER + +#include /* PATH_MAX */ +#include /* pid_t */ + +/*********************************************************************** + * Commands the clients may issue to us + * maximum number of commands: 2^8 = 256 + */ +enum commands { + CMD_MIN='A', /* minimum command number */ + CMD_SVC_START, /* the client wants US to start a service */ + CMD_SVC_START_ONLY, /* start this service without dependencies */ + CMD_SVC_START_NEEDS, /* start this service, needs, but no wants */ + CMD_SVC_STOP, /* stop svc and all svcs that need it */ + CMD_SVC_STOP_ONLY, /* we should stop _only_ this service */ + CMD_SVC_STOP_WANTS, /* stop svc, all svcs that need or want it */ + CMD_CHG_STAT, /* the client reports a status change */ /* FIXME: NEEDED? */ + CMD_RESCUE, /* we should start the rescue mode */ /* UNIMPLEMENTED */ + CMD_HALT, /* halt the system */ + CMD_REBOOT, /* reboot the system */ + CMD_POWEROFF, /* poweroff the system */ + CMD_WBOOT, /* shutdown and restart everything */ /* UNIMPLEMENTED */ + CMD_INFO, /* send information about that service */ /* UNIMPLEMENTED */ + CMD_MAX , /* maximum command number */ +}; + +/* old + RT_ERR_COMM, * communication failed * + RT_ERR, * service starting failed * + RT_UNSPEC, * some kind of error, unspecified * + RT_SUCCESS, * successfully started: respawning or once * + RT_SVC_FAILED, * tried earlier, service failed, won't retry * + +*/ + +/*********************************************************************** + * client issues a command: start_command + */ +struct s_cmd { + char cmd; + pid_t pid; +}; + +/*********************************************************************** + * messages from the client + * Prefix: qst_ (question) + */ +struct msg_client { + pid_t pid; /* pid of the telling client */ + char cmd; /* which cmd is issued to us */ + char status; /* status of the service */ + char svc[PATH_MAX]; /* name of the service */ + char svc_orig[PATH_MAX]; /* the service, which wants to start us */ +}; + +/*********************************************************************** + * messages from the server + * Prefix: asw_ (answer) + */ + +/*********************************************************************** + * return short status + */ +struct asw_sstatus { + long mtype; + char status; + char msg[PATH_MAX]; +}; + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ancient/do_change_status.c b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/do_change_status.c new file mode 100644 index 00000000..94b9be76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/do_change_status.c @@ -0,0 +1,70 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ancient/do_result.c b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/do_result.c new file mode 100644 index 00000000..cb51161b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/do_result.c @@ -0,0 +1,33 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return RT_ERR_COMM; + } + + return *value; +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ancient/do_svc_name.c b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/do_svc_name.c new file mode 100644 index 00000000..d427365f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/do_svc_name.c @@ -0,0 +1,51 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ancient/exec_svc.c b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/exec_svc.c new file mode 100644 index 00000000..f217f9e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/exec_svc.c @@ -0,0 +1,264 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +inline pid_t exec_svc(char *abspath, int action) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + SERVICE_LOG(abspath,LOG_SVC_FAIL); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + P_EXEC_FAILED(nargv[0]); + perror(MSG_ERR_EXECVE); + /* FIXME: remove debug, remove double printing without loosing info */ + sleep(3); /* debug */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ancient/msg_change_status.c b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/msg_change_status.c new file mode 100644 index 00000000..836a0fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* FIXME: change return code validation */ + +int msg_change_status(char *svc, char status, pid_t pid) +{ + if(!begin_msg(CMD_CHG_STATUS)) { + return RT_ERR_COMM; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ancient/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/msg_svc_on_off.c new file mode 100644 index 00000000..02948f2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/msg_svc_on_off.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, char action) +{ + if(!begin_msg(action)) return RT_ERR_COMM; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return RT_ERR_COMM; + return (int) do_result(sock,NULL); +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ancient/respawn_svc.c b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/respawn_svc.c new file mode 100644 index 00000000..5c350045 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/respawn_svc.c @@ -0,0 +1,99 @@ +/* + * (c) 2005,2006 Nico Schottelius (nico-linux at schottelius.org) + * respawn_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + D_PRINTF(abspath); + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, CMD_START_SVC) ) { + if(cpid != 0) { + D_PRINTF("sloefen"); + sleep(SLEEP_SVC); + D_PRINTF("Zuende geschlafen"); + } + } + } while(cpid); /* cpid is reset by sig_terminate() */ + + /* FIXME: put most code of sig_terminate here, look for no_kill */ + + /* start off task */ + exec_svc(abspath,CMD_STOP_SVC); + + D_PRINTF("jetzt weg"); + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ancient/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/run_init_svc.c new file mode 100644 index 00000000..f41c1f4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/run_init_svc.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ancient/run_init_svc2.c b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/run_init_svc2.c new file mode 100644 index 00000000..b613ed6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/run_init_svc2.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include /* _exit, fork */ + +#include "cinit.h" +#include "messages.h" +#include "ipc.h" + +int run_svc(char *rpath) { rpath = "test"; return 0; } /* a hack to compile cinit for now */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + if(!cinit_ipc_logon()) _exit(1); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ancient/run_run_svcs.c b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/run_run_svcs.c new file mode 100644 index 00000000..6486c76f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/run_run_svcs.c @@ -0,0 +1,86 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ancient/run_svc.c b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/run_svc.c new file mode 100644 index 00000000..95cc324d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/run_svc.c @@ -0,0 +1,131 @@ +/* + * (c) 2005 Nico Schottelius (nico-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +#error "needs to be cleaned up" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + print_errno(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + print_errno(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ancient/sig_terminate.c b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/sig_terminate.c new file mode 100644 index 00000000..9b23e349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/sig_terminate.c @@ -0,0 +1,60 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + /* FIXME: only send SIGTERM, if not_kill does not exist */ + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + status = kill(cpid,SIGKILL); + if( status == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + D_PRINTF("muesste weg sein"); + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ancient/unused-coded/cinit_read_from.c b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/unused-coded/cinit_read_from.c new file mode 100644 index 00000000..54499be3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ancient/unused-coded/cinit_read_from.c @@ -0,0 +1,23 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * read data from cinit to the client + */ + + +#include "ipc.h" /* IPC */ + +/* gets a bunch of bytes and returns the answer from cinit */ +int cinit_read_from(char **dest, int len) +{ + if(!cinit_ipc_logon()) return NULL; + if(!cinit_ipc_connect()) return NULL; + + /* FIXME: add length to ipc function? */ + if(!cinit_ipc_csend(data)) return NULL; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/client/cmd.c b/software/cinit/browse_source/cinit-0.3pre13/src/client/cmd.c new file mode 100644 index 00000000..80756fd5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/client/cmd.c @@ -0,0 +1,159 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * cmd - the cinit client program - sends commands to cinit + */ + +#include /* getopt */ +#include /* signals */ +#include /* printf() */ +#include /* free() */ +#include /* strncmp */ + +#include /* integers */ +#include /* PATH_MAX */ + +#include "cmd.h" /* own header */ +#include "signals.h" /* which signal */ +#include "svc.h" /* service related */ +#include "intern.h" /* print_errno() */ + +#include "cinit.h" /* cinit external */ + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * cmd: main + */ +int main(int argc, char **argv) +{ + int opt, tmp, cnt; + int32_t status; + pid_t pid; + char *svc, *p = NULL; + char buf[PATH_MAX]; + + cnt = tmp = 0; + + /* + * -d w(ants) excluded) + * -e n(eeds excluded) + * -d i(nclude everything) + */ + + while((opt = getopt(argc,argv,CMD_OPTIONS)) != -1) { + ++cnt; + switch(opt) { + /********************************************/ + case 'h': /* help */ + printf(CMD_USAGE); + return 0; + break; + + case 'V': /* version */ + printf("%s\n",CMD_VERSION); + return 0; + break; + /********************************************/ + case 'e': /* enable service */ + svc = optarg; + break; + + case 'd': /* disable service */ + svc = optarg; + break; + + /********************************************/ + case 'p': /* get pid */ + case 's': /* get status */ + svc = optarg; + + /* relative path, add the cinit svc path in front of it */ + /* FIXME: use buf! */ + if(strncmp(svc,SLASH,strlen(SLASH))) { + p = malloc(strlen(CINIT_DIR) + + strlen(SLASH) + + strlen(SVCDIR) + + strlen(SLASH) + + strlen(svc) + + 1); + if(!p) { + /* bad error */ + return 2; + } + strcpy(p,CINIT_DIR); + strcat(p,SLASH); + strcat(p,SVCDIR); + strcat(p,SLASH); + strcat(p,svc); + svc = p; + } + + if(opt == 's') { + status = cinit_get_svc_status(svc); + if(status < 0) { + printf("Communication error\n"); + tmp = 1; + } else { + switch(status) { + case CINIT_MSG_SVC_UNKNOWN: + printf("Unknown service: %s\n",svc); + tmp = 1; + break; + case CINIT_MSG_OK: + printf("Status of %s is: %d\n",svc, status); + tmp = 0; + break; + /* should not happen */ + default: + printf("Unknown status returned for %s: %d\n",svc, status); + tmp = 3; + break; + } + } + } else { /* -p */ + pid = cinit_svc_get_pid(svc); + if(pid == 0) { + printf("Unknown service: %s\n",svc); + tmp = 1; + } else { + printf("PID of %s: %d\n",svc, pid); + tmp = 0; + } + } + + if(p) free(p); + return tmp; + + break; + + case 'v': /* get version of cinit */ + tmp = cinit_get_version(buf); + if(tmp) { + printf("Version of cinit: %s\n", buf); + return 0; + } else { + printf("Cannot get version of cinit!\n"); + return 1; + } + break; + + /* FIXME: add -V: version of cmd */ + + default: + printf("Unimplemented option :-)\n"); + return 1; + break; + } + } + + if(!cnt) { + printf(CMD_USAGE); + return 1; + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/client/halt.kill.c b/software/cinit/browse_source/cinit-0.3pre13/src/client/halt.kill.c new file mode 100644 index 00000000..a84cdf2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/client/halt.kill.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Halt the system through a kill call + */ + +#include /* kill() */ + +#include "messages.h" /* MSG_* */ +#include "intern.h" /* print_errno() */ +#include "signals.h" /* signals mapping */ + +int main() +{ + if(kill(1,SIG_CINIT_HALT) == -1) { + print_errno(MSG_HALT_KILL); + return 1; + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/client/poweroff.kill.c b/software/cinit/browse_source/cinit-0.3pre13/src/client/poweroff.kill.c new file mode 100644 index 00000000..801e119c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/client/poweroff.kill.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Reboot the system through a kill call + */ + +#include /* kill() */ + +#include "messages.h" /* MSG_* */ +#include "intern.h" /* print_errno() */ +#include "signals.h" /* signals mapping */ + +int main() +{ + if(kill(1,SIG_CINIT_POWEROFF) == -1) { + print_errno(MSG_POWEROFF_KILL); + return 1; + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/client/reboot.kill.c b/software/cinit/browse_source/cinit-0.3pre13/src/client/reboot.kill.c new file mode 100644 index 00000000..cd90feda --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/client/reboot.kill.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Reboot the system through a kill call + */ + +#include /* kill() */ + +#include "messages.h" /* MSG_* */ +#include "intern.h" /* print_errno() */ +#include "signals.h" /* signals mapping */ + +int main() +{ + if(kill(1,SIG_CINIT_REBOOT) == -1) { + print_errno(MSG_REBOOT_KILL); + return 1; + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/comm/README b/software/cinit/browse_source/cinit-0.3pre13/src/comm/README new file mode 100644 index 00000000..74a0b376 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/comm/README @@ -0,0 +1,20 @@ +All abstracted communication functions. Do not depend on the underlying +inter process communication mechanism. + + - send_command(): client function: sends a command to cinit + - send_service(): client function: send the service name to operate on + + - read_command(): server function: reads beginning of a command + * Extracts the command + * reads client identification (=pid) + * calls other functions, depending on the command send => switch() + - read_service(): server function: reads service + + - write_answer(): server function: answer? + * sends answers to clients => senseful? + + + TODO: + - define information function, that returns various information about + a service + diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/comm/answer_svc_pid.c b/software/cinit/browse_source/cinit-0.3pre13/src/comm/answer_svc_pid.c new file mode 100644 index 00000000..20c97269 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/comm/answer_svc_pid.c @@ -0,0 +1,28 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * return pid of service + * + */ + +#include /* strncpy */ +#include "svc-intern.h" /* VERSION */ +#include "cinit.h" /* structure: cinit_answer */ + +int answer_svc_pid(char *svc, struct cinit_answer *asr) +{ + struct listitem *tmp; + + tmp = list_search(svc); + if(!tmp) { + asr->ret = CINIT_MSG_SVC_UNKNOWN; + } else { + asr->ret = CINIT_MSG_OK; + asr->options = tmp->pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/comm/answer_svc_status.c b/software/cinit/browse_source/cinit-0.3pre13/src/comm/answer_svc_status.c new file mode 100644 index 00000000..6382435f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/comm/answer_svc_status.c @@ -0,0 +1,28 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * return status of service + * + */ + +#include /* strncpy */ +#include "svc-intern.h" /* VERSION */ +#include "cinit.h" /* structure: cinit_answer */ + +int answer_svc_status(char *svc, struct cinit_answer *asr) +{ + struct listitem *tmp; + + tmp = list_search(svc); + if(!tmp) { + asr->ret = CINIT_MSG_SVC_UNKNOWN; + } else { + asr->ret = CINIT_MSG_OK; + asr->options = tmp->status; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/comm/answer_version.c b/software/cinit/browse_source/cinit-0.3pre13/src/comm/answer_version.c new file mode 100644 index 00000000..bdad913d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/comm/answer_version.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * return version of cinit + * + */ + +#include /* strncpy */ +#include "config.h" /* VERSION */ +#include "cinit.h" /* structure: cinit_answer */ + +int answer_version(struct cinit_answer *asr) +{ + asr->ret = CINIT_MSG_OK; + strncpy(asr->data, VERSION, PATH_MAX); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/comm/read_command.c b/software/cinit/browse_source/cinit-0.3pre13/src/comm/read_command.c new file mode 100644 index 00000000..5226309d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/comm/read_command.c @@ -0,0 +1,36 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * cinit reads a command sent by a client, called by ipc listener + * + */ + +#include "cinit.h" /* structures */ +#include "intern.h" /* answer_svc_status() */ + +int read_command(struct cinit_question qsn, struct cinit_answer *asr) +{ + switch(qsn.cmd) { + case CINIT_MSG_GET_VERSION: + if(!answer_version(asr)) return 0; + break; + + case CINIT_MSG_GET_STATUS: + if(!answer_svc_status(qsn.data, asr)) return 0; + break; + + case CINIT_MSG_GET_PID: + if(!answer_svc_pid(qsn.data, asr)) return 0; + break; + + /* Unknown command: should not happen :-) */ + default: + return 0; + break; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/core/build_argv.c b/software/cinit/browse_source/cinit-0.3pre13/src/core/build_argv.c new file mode 100644 index 00000000..95add5e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/core/build_argv.c @@ -0,0 +1,166 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Build **argv for execution in cinit way: + * 1. check whether cmd is a valid executable + * 2. try to read cmd.params and write parameters + * 3. try to read cmd.env and setup environment + * + * Returns: + * BA_OK: Everything went well, you can use the struct + * BA_NOTFOUND: Binary executable is not available + * BA_PARAMS: Reading the parameters failed (ignoring non-existence!) + * BA_ENV: Reading the environment failed (same as above) + * BA_OTHER: Other error + */ + +#include /* open() */ +#include /* *alloc() */ +#include /* readlink */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* NULL */ +#include /* strchr */ +#include /* stat() */ + +#include "intern.h" +#include "build_argv.h" + + /* + * char *basename: something we should execute + * (*basename) + ".params" will be added as parameters + * (*basename) + ".env" will be added as environment + */ + +int cinit_build_argv(char *basename, struct ba_argv *bav) +{ + int tmp; + int argc; + char pathtmp[PATH_MAX+1]; + char *sbuf = NULL; + char *p; + + /* sane values */ + bav->argv = NULL; + bav->envp = NULL; + + /*********************************************************************** + * Try to get realname (for links) + */ + if((tmp = readlink(basename,pathtmp,PATH_MAX)) == -1) { + /* nothing there? */ + if(errno == ENOENT) { + return BA_E_NOTFOUND; + } + if (errno != EINVAL) { + return BA_E_OTHER; + } + tmp=strlen(basename); + strncpy(pathtmp,basename,tmp); + } + pathtmp[tmp] = '\0'; + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /*********************************************************************** + * prepare argv0 + */ + bav->argv = malloc(sizeof(char *)); + if(bav->argv == NULL) return BA_E_MEM; + + *bav->argv = malloc(tmp); + if(*(bav->argv) == NULL) return BA_E_MEM; + + strncpy(*(bav->argv),pathtmp,tmp); + + /********************** read params *********************/ + /* FIXME check bounds! */ + strcpy(pathtmp,basename); + strcat(pathtmp,C_PARAMS); + /* ORC_ERR_NONEXISTENT: Ok, have sbuf set to NULL + * ORC_OK: Ok, have a filled buffer (perhaps NULL, too) + * other: Error, print errno + */ + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /*********************************************************************** + * Now split the string, converting \n to \0 + */ + argc = 1; /* argv0 */ + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = sbuf; /* here begins the current argument */ + + if(p != NULL) { /* found another \n */ + *p = '\0'; + sbuf = p+1; + } else { /* end of string */ + sbuf = NULL; + } + + ++argc; + } + + /************ close argv list **************/ + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,basename); + strcat(pathtmp,C_ENV); + + tmp = argc = 0; + sbuf = NULL; + + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /************** build environment string **************/ + argc = 0; + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) return BA_E_MEM; + + bav->envp[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + sbuf = p+1; + } else { + sbuf = NULL; + } + ++argc; + } + + /************ close env list **************/ + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) { + return BA_E_MEM; + } + bav->envp[argc] = NULL; + + return BA_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/core/cinit.c b/software/cinit/browse_source/cinit-0.3pre13/src/core/cinit.c new file mode 100644 index 00000000..9a0491f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/core/cinit.c @@ -0,0 +1,112 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The main file + * + */ + +#include /* getpid,chdir */ +#include /* str(ncmp,len,cpy,cat) */ +#include /* perror */ +#include /* malloc */ + +#include "intern.h" /* general things */ +#include "messages.h" /* messages */ +#include "ipc.h" /* general ipc methods */ +#include "svc-intern.h" /* gen_svc_tree */ + +struct listitem *svc_list = NULL; +struct dep *svc_init = NULL; +int svc_lock = 0; /* global svc-lock */ + +int main(int argc, char **argv) +{ + char *initdir = CINIT_INIT; /* default init dir */ + + + /* Is this really needed? + pid_t cpid; + + if(cpid != 1) { + mini_printf(CINIT_VERSION,2); + mini_printf(MSG_USAGE,2); + return 0; + }*/ + + /* Look whether we should start a profile */ + while(argc > 1) { + if(!strncmp(PROFILE, argv[argc-1], strlen(PROFILE) ) ) { + initdir = malloc(strlen(CINIT_SVCDIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2); + if(initdir == NULL) { + panic(); + } + strcpy(initdir, CINIT_SVCDIR); + strcat(initdir, SLASH); + strcat(initdir, &argv[argc-1][strlen(PROFILE)]); + break; + } + --argc; + } + + /* Bootup "logo" */ + mini_printf(MSG_BOOTING,1); mini_printf(initdir,1); mini_printf("\n",1); + + if(chdir(initdir) == -1) { + print_errno(initdir); + panic(); + } + + /* initialize ipc method */ + if(!cinit_ipc_init()) { + panic(); + } + + /* listen to signals */ + set_signals(ACT_SERV); + + /* pre-calculate service tree */ + if(!gen_svc_tree(initdir)) { + panic(); + } + + /* free, if we malloc()ed before */ + if(strcmp(initdir,CINIT_INIT)) { + free(initdir); + } + + /* change to /, so applications have that as cwd, too + * Is that really seneful? Does that help any application? + * If not, just for looking nice, that's not a reason to + * enable it. + if(chdir(SLASH) == -1) { + print_errno(SLASH); + panic(); + } */ + + if(!tree_exec(svc_init)) { + panic(); + } + + while(1) { + cinit_ipc_listen(); + + /* check dependency list: perhaps we need to restart something */ + /* implement in cinit-0.3pre14/5 */ + + // tree_exec(svc_init); + // reuse tree_exec()? + // if(dep) { svc_start() .. ? + } + + /* OLD: + if(!cinit_ipc_listen()) { + panic(); + } */ + + /* never reached */ + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/core/do_reboot.c b/software/cinit/browse_source/cinit-0.3pre13/src/core/do_reboot.c new file mode 100644 index 00000000..f108bd0b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/core/do_reboot.c @@ -0,0 +1,97 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#include +#include +#include +#include +#include +#include + +#include "ipc.h" + +/* cleaned up own headers */ +#include "intern.h" /* set_signals */ +#include "svc-intern.h" /* shutdown_services */ +#include "messages.h" /* messages */ +#include "reboot.h" /* cinit_poweroff&co */ + +/* cleaned headers */ +#include /* kill() */ + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void do_reboot(int signal) +{ + //struct listitem *tmp; + //char **cmd; + //int i; + + /* + * New code: + * 0. close user ipc + * - notify user! + * - do not allow user interupt anymore + * 1. shutdown services + * - notify user! + * 2. kill -TERM all processes + * - notify user! + * 3. kill -KILL all processes + * - notify user! + * 4. execute /etc/cinit/conf/{halt,reboot,poweroff} + * - notify user! + */ + + /* do not listen to client requests anymore */ + /* and tell the user what happens */ + LOG(MSG_SHUTDOWN_START); + cinit_ipc_destroy(); + set_signals(ACT_CLIENT); /* reset signal handlers */ + + /* shutdown all services: take care about the dependency tree */ + LOG(MSG_SHUTDOWN_SVC); + shutdown_services(svc_list); + + LOG(MSG_SHUTDOWN_KILL); + /* now: all services are down, let's kill all other processes */ + if(kill(-1,SIGTERM) == -1) { + print_errno(MSG_TERMKILL); + } + + sleep_before_kill(); + + if(kill(-1,SIGKILL) == -1) { + print_errno(MSG_KILLBILL); + } + + /* Execute the last command */ + LOG(MSG_SHUTDOWN_LAST); + execute_and_wait(CINIT_LAST); + + /* do what we really wanted to do */ + switch(signal) { + case SIGTERM: /* power off */ + LOG(MSG_POWER_OFF); + cinit_poweroff(); + break; + case SIGHUP: /* reboot */ + LOG(MSG_REBOOT); + cinit_reboot(); + break; + case SIGUSR1: /* halt */ + LOG(MSG_HALT); + cinit_halt(); + break; + } + /* FIXME: should we exit? */ + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/core/panic.c b/software/cinit/browse_source/cinit-0.3pre13/src/core/panic.c new file mode 100644 index 00000000..d3dd9459 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/core/panic.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something + */ + +#include /* execv */ + +#include "intern.h" +#include "messages.h" + +void panic(void) +{ + char *nargv[2]; + + if(execute_and_wait(CINIT_PANIC)) _exit(0); + + /*********************************************************************** + * THIS SHOULD NOT HAPPEN, fallback to hardcoded sulogin + * (conf/sulogin) + */ + nargv[0] = SULOGIN; + nargv[1] = NULL; + + if(execv(SULOGIN,nargv) == -1) { + print_errno(MSG_FATAL_PANIC); + } + + /* there's nothing todo, if everything fails */ + _exit(23); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/core/set_signals.c b/software/cinit/browse_source/cinit-0.3pre13/src/core/set_signals.c new file mode 100644 index 00000000..0ebb6899 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/core/set_signals.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Define signal handlers + */ + + +#include /* sigaction, sigemtpyset */ +#include /* NULL */ +#include "intern.h" /* defines */ +#include "reboot.h" /* reboot related */ +#include "signals.h" /* reboot related */ + +void set_signals(int action) +{ + struct sigaction sa; + + sigemptyset(&sa.sa_mask); /* no other signals should be blocked */ + sa.sa_flags = 0; + + if(action == ACT_SERV) { + sa.sa_handler = sig_child; + sa.sa_flags = SA_NOCLDSTOP; + } else { + sa.sa_handler = SIG_DFL; + } + + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + sa.sa_flags = 0; /* reset flags */ + if(action == ACT_SERV) { + sa.sa_handler = do_reboot; + } + sigaction(SIG_CINIT_HALT, &sa, NULL); /* halt */ + sigaction(SIG_CINIT_POWEROFF, &sa, NULL); /* poweroff */ + sigaction(SIG_CINIT_REBOOT, &sa, NULL); /* reboot */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/core/sig_child.c b/software/cinit/browse_source/cinit-0.3pre13/src/core/sig_child.c new file mode 100644 index 00000000..728e2cf8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/core/sig_child.c @@ -0,0 +1,94 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The child handler + * + */ + +#include /* waitpid */ +#include /* NULL */ +#include /* gettimeofday() */ /* FIXME: CHECK POSIX */ +#include /* time(),gettime.. */ /* FIXME: CHECK POSIX */ + +#include "intern.h" /* mini_printf */ +#include "svc-intern.h" /* list_search_pid */ +#include "svc.h" /* list_search_pid */ +#include "messages.h" /* messages/D_PRINTF */ + +extern int svc_lock; + +/*********************************************************************** + * sig_child: (c)collect the children + */ +void sig_child(int tmp) +{ + /* New code: + * - search for pid in service list + * * if (respawn) -> start new + * - insert delay? if exit code is non-zero? if uptime too less? + * * if (once) -> update service status + * * else ignore, but reap away + */ + pid_t pid; + int delay; + struct listitem *svc; + + + /* wait until the lock is reset */ + if(svc_lock) return; + +// struct timeval now; + + while((pid = waitpid(-1, &tmp, WNOHANG)) > 0) { + /* check if it's a watched child */ + svc = list_search_pid((pid_t) pid); + + if(svc != NULL) { + /* Check, that we are operating on it =. that it is no normal child */ + /* Also check for ST_SH_* to catch race conditions, where + * status is not yet updated => does that make sense or is + * the status overwritten after we return out of here? + */ + printf("CHILD: %s (%ld) (%d) bekannt!\n",svc->abs_path, svc->status, pid); + + if(svc->status & CINIT_ST_ONCE_RUN + || svc->status & CINIT_ST_RESPAWNING) { + if(WIFEXITED(tmp) && !WEXITSTATUS(tmp)) { + svc_success(svc); + } else { + svc_fail(svc); + } + } + //mini_printf("WHILE: Vorm respawn!\n",1); + /* respawn: restart: FIXME Delay for regular dying services */ + if(svc->status == CINIT_ST_RESPAWNING) { + svc_report_status(svc->abs_path,MSG_SVC_RESTART,NULL); + + //delay = MAX_DELAY / (time(NULL) - svc->start); + /* if(gettimeofday(&now,NULL) == -1) { + print_errno(MSG_GETTIMEOFDAY);; + delay = 0; + } else { + delay = MAX_DELAY / (now.tv_sec - svc->start); + } */ + + delay = 5; + + /* int test = time(NULL); + test++; + D_PRINTF("WHILE: IM respawn / for printf!\n"); + printf("sig_child: %d, %d, %d, %d\n", + MAX_DELAY, + (int) time(NULL), + (int) svc->start, + (int) (test - svc->start) + ); */ + + svc_start(svc,delay); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/generic/execute_and_wait.c b/software/cinit/browse_source/cinit-0.3pre13/src/generic/execute_and_wait.c new file mode 100644 index 00000000..ab808ff1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/generic/execute_and_wait.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something, but fork() before + * + */ + +#include /* pid_t */ +#include /* waitpid */ +#include /* fork */ + +#include "messages.h" /* MSG_* */ +#include "intern.h" /* print_errno, execute_sth */ + +int execute_and_wait(char *svc) +{ + pid_t pid; + int status; + + /* fork */ + pid = fork(); + + if(pid == -1) { + print_errno(MSG_ERR_FORK); + return 0; + } + + /* exec / child */ + if(pid == 0) { + execute_sth(svc); /* exits itself */ + } + + /* wait / parent */ + waitpid(pid,&status,0); + + if(WIFEXITED(status)) { + if(WEXITSTATUS(status) == 0) { + return 1; + } + } + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/generic/execute_sth.c b/software/cinit/browse_source/cinit-0.3pre13/src/generic/execute_sth.c new file mode 100644 index 00000000..02593940 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/generic/execute_sth.c @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Executes something: replaces us + */ + +#include /* _exit */ + +#include "intern.h" +#include "build_argv.h" +#include "messages.h" /* D_PRINTF */ + +void execute_sth(char *basename) +{ + int tmp; + struct ba_argv bav; + + tmp = cinit_build_argv(basename,&bav); + if((tmp = cinit_build_argv(basename,&bav)) != BA_OK) { + if(tmp != BA_E_MEM) { /* do not print something on memory errors */ + print_errno(basename); + } + _exit(1); + } + + /* tell the user what we execute */ + mini_printf(MSG_INTRO_EXEC,1); + mini_printf((bav.argv)[0],1); + mini_printf("\n",1); + + execve((bav.argv)[0], bav.argv, bav.envp); + print_errno(basename); + _exit(1); /* simply exit non-zero. That's enough for cinit to recognize + it as faulty */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/generic/file_exists.c b/software/cinit/browse_source/cinit-0.3pre13/src/generic/file_exists.c new file mode 100644 index 00000000..26d3f53c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/generic/file_exists.c @@ -0,0 +1,60 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * check whether file exists and is a file + */ + +#include /* errno */ +#include /* stat */ +#include /* NULL */ + +#include "intern.h" /* print_errno() */ +#include "svc-intern.h" /* svc_report_status() */ +#include "messages.h" /* messages.. */ + +int file_exists(char *filename) +{ + struct stat buf; + + /* check: + * - is it a link? if so, is it broken? report! + * - is it non existent? -> return non-existent + * - is it existent, but not a regular file? report! + */ + if(lstat(filename,&buf) == -1) { /* lstat fails? */ + if(errno == ENOENT) { + /* FIXME: remove later */ + printf("%s is not existing! => ok, most likely\n",filename); + return FE_NOT; + } else { + mini_printf("anderer fehler.\n",1); + print_errno(filename); + return FE_ERR; + } + } else { + if(S_ISLNK(buf.st_mode)) { /* is a link */ + /* check link destination */ + if(stat(filename,&buf) == -1) { /* do real stat(): */ + if(errno == ENOENT) { + svc_report_status(filename,MSG_BROKENLINK,NULL); + return FE_NOLINK; + } else { + /* FIXME: MSG_*, ?? */ + mini_printf("anderer fehler.\n",1); + print_errno(filename); + return FE_ERR; + } + } + } + } /* caught all stat() errors */ + + if(!S_ISREG(buf.st_mode)) { + svc_report_status(filename,MSG_NONREGULAR,NULL); + return FE_OTHER; + } + + return FE_FILE; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre13/src/generic/mini_printf.c new file mode 100644 index 00000000..d5b0d1f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/generic/mini_printf.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Print the world! + * + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) return; + + p = str; + while(*p) p++; + + write(fd,str,(size_t) (p - str)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/generic/openreadclose.c b/software/cinit/browse_source/cinit-0.3pre13/src/generic/openreadclose.c new file mode 100644 index 00000000..b271b410 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/generic/openreadclose.c @@ -0,0 +1,66 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * read a file + * + */ + +#include /* open, read, close */ +#include /* strncpy */ +#include /* realloc */ +#include /* errno */ +#include /* NULL */ +#include /* open */ +#include "intern.h" /* ORC_* */ + +int openreadclose(char *filename, char **where) +{ + + int tmp; + int cnt; + int fd; + char buf[512]; + + *where = NULL; + + /* what a wonderful loop */ + while((fd = open(filename,O_RDONLY)) == -1) { + if(errno == ENOENT) return ORC_ERR_NONEXISTENT; + if(errno != EINTR) return ORC_ERR_OPEN; + } + + cnt = 0; + while (1) { + tmp = read(fd,buf,512); + + if(tmp == -1) { + if(errno == EINTR) + continue; + else + return ORC_ERR_READ; + } else if(tmp == 0) { + break; + } + + cnt += tmp; + *where = realloc(*where,cnt + 1); + if(*where == NULL) return ORC_ERR_MEM; + + /* FIXME check correctness of copied buffer... + * and get some sleep..soon, very soon! */ + strncpy(&(*where)[cnt-tmp],buf,tmp); + } + + while((fd = close(fd)) == -1) { + if(errno == EINTR) continue; + return ORC_ERR_CLOSE; + } + + /* terminate string! */ + (*where)[cnt] = '\0'; + + return ORC_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/generic/path_absolute.c b/software/cinit/browse_source/cinit-0.3pre13/src/generic/path_absolute.c new file mode 100644 index 00000000..ef8b002e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/generic/path_absolute.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create an absulte path + */ + +#include /* chdir(),getcwd */ +#include /* PATH_MAX */ +#include "intern.h" /* print_errno */ +#include "messages.h" /* messages */ + +int path_absolute(char *relpath, char *newpath, size_t size) +{ + char oldpath[PATH_MAX+1]; + + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + if(chdir(relpath) == -1) { + print_errno(relpath); + return 0; + } + + if(!getcwd(newpath,size)) { + print_errno(relpath); + return 0; + } + + if(chdir(oldpath) == -1) { + print_errno(oldpath); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/generic/path_append.c b/software/cinit/browse_source/cinit-0.3pre13/src/generic/path_append.c new file mode 100644 index 00000000..87cc49ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/generic/path_append.c @@ -0,0 +1,28 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create path to needs + */ + +#include /* strlen */ +#include /* PATH_MAX */ + +#include "intern.h" /* mini_printf, PD_ERR */ + +int path_append(char *path, char *append) +{ + size_t end = strlen(path); + + if(strcmp(&path[end-1],SLASH)) { + if((end + strlen(SLASH) + strlen(append)) > PATH_MAX) return 0; + strcat(path,SLASH); + } else { + if((end + strlen(append)) > PATH_MAX) return 0; + } + strcat(path,append); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/generic/print_errno.c b/software/cinit/browse_source/cinit-0.3pre13/src/generic/print_errno.c new file mode 100644 index 00000000..0286f550 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/generic/print_errno.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * stolen from tcpserver_blocker + * + * Author: Nico Schottelius + * Date: 2006-08-24 + * + * Print the error found in errno + */ + +#include /* strerror */ +#include /* errno */ + +#include "intern.h" /* mini_printf, PD_ERR */ + +void print_errno(char *msg) +{ + if(msg) { + mini_printf(msg, FD_ERR); + mini_printf(": ", FD_ERR); + } + mini_printf(strerror(errno), FD_ERR); + mini_printf("\n", FD_ERR); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/generic/sleep_before_kill.c b/software/cinit/browse_source/cinit-0.3pre13/src/generic/sleep_before_kill.c new file mode 100644 index 00000000..e3c92615 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/generic/sleep_before_kill.c @@ -0,0 +1,43 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Sleep: + * read configuration, + * fallback to builtin value if not possible, + * sleep. + * + */ + +#include /* nanosleep */ +#include /* strtol() */ +#include /* errno */ + +#include "intern.h" /* print_errno */ +#include "messages.h" /* messages */ + +void sleep_before_kill() +{ + char *content; + int tmp; + struct timespec ts; + + if(openreadclose(CINIT_SLEEPFILE,&content) == ORC_OK) { + errno = 0; + tmp = strtol(content, NULL, 10); + if(errno != 0) tmp = SLEEP_KILL; + free(content); + } else { + mini_printf(MSG_BUILTIN_SLEEP,1); + tmp = SLEEP_KILL; + } + + ts.tv_sec = tmp; + ts.tv_nsec = 0; + + if(nanosleep(&ts,NULL) == -1) { + print_errno(MSG_ERR_SLEEP); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/generic/strip_final_newline.c b/software/cinit/browse_source/cinit-0.3pre13/src/generic/strip_final_newline.c new file mode 100644 index 00000000..4629bb9f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/generic/strip_final_newline.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * If the last character is \n, shrink the memory and remove it + * + */ + +#include /* NULL */ +#include /* strchr */ +#include /* alloc */ + +char *strip_final_newline(char *str) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) { + return NULL; + } + + p = strrchr(str,'\n'); + if(p) { + if(*(p+1) == '\0') { + *p = '\0'; /* DO NOT FORGET TO TERMINATE STRING */ + str = realloc(str,(p-str)); + } + } + + return str; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/generic/usage.c b/software/cinit/browse_source/cinit-0.3pre13/src/generic/usage.c new file mode 100644 index 00000000..260b4ea5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/generic/usage.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * usage: tell the world what we want - seriously no capitalism + * usage: tell the user what's wrong and a help text + * + */ + +#include /* _exit() */ +#include "intern.h" /* mini_printf */ + +void usage(char *banner, char *text) +{ + /* print banner + error message */ + mini_printf(banner,1); + mini_printf(text,1); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/include/build_argv.h b/software/cinit/browse_source/cinit-0.3pre13/src/include/build_argv.h new file mode 100644 index 00000000..b61b27a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/include/build_argv.h @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * build **argv + */ + +#ifndef CINIT_BA_HEADER +#define CINIT_BA_HEADER + +/***************************************************************************** + * Defines: return values + */ +enum { + BA_OK, + BA_E_NOTFOUND, + BA_E_PARAMS, + BA_E_ENV, + BA_E_MEM, + BA_E_OTHER +}; + +/***************************************************************************** + * Structures + */ +struct ba_argv { + char **argv; + char **envp; +}; + +/***************************************************************************** + * Functions + */ +int cinit_build_argv(char *basename, struct ba_argv *bav); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/include/cinit.h b/software/cinit/browse_source/cinit-0.3pre13/src/include/cinit.h new file mode 100644 index 00000000..b2c762aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/include/cinit.h @@ -0,0 +1,66 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Header file for external programs (in theory) + */ + +#ifndef __CINIT_EXTERNAL_HEADER +#define __CINIT_EXTERNAL_HEADER + +/* includes */ +#include /* required for functions */ +#include /* PATH_MAX */ +#include /* pid_t */ + +/* + * structures: independent of the ipc code! + */ + +/* messages from the client */ +struct cinit_question { + int32_t cmd; + char data[PATH_MAX]; + int32_t options; +}; + +/* messages from cinit */ +struct cinit_answer { + int32_t ret; + int32_t options; + char data[PATH_MAX]; +}; + +/* codes for messages */ +enum { + /* questions */ + CINIT_MSG_QUESTIONS=1000, /* begin questions at 1000 */ + CINIT_MSG_GET_STATUS, /* status of a service */ + CINIT_MSG_GET_PID, /* get pid of a service */ + CINIT_MSG_GET_VERSION, /* version of cinit */ + + /* answers */ + CINIT_MSG_ANSWERS=2000, /* begin answers at 2000 */ + CINIT_MSG_OK, /* general ok value */ + CINIT_MSG_ERR, /* general error value */ + CINIT_MSG_SVC_UNKNOWN /* Services is not known */ +}; + +struct cinit_msg_msg { + int code; + char *msg; +}; + +//struct cinit_msg_msg cinit_codes2messages[] = { + +//} + +/* functions */ +pid_t cinit_svc_get_pid(char *); +int32_t cinit_get_svc_status(char *); +int cinit_get_version(char *); +int cinit_send_to(struct cinit_question *, struct cinit_answer *); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/include/cmd.h b/software/cinit/browse_source/cinit-0.3pre13/src/include/cmd.h new file mode 100644 index 00000000..0645aff4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/include/cmd.h @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Header file for the cmd (cinit management) + */ + +#ifndef CINIT_CMD_HEADER +#define CINIT_CMD_HEADER + +#define CMD_USAGE "cmd - cinit management\n\n" \ + "cmd -[ed] -[nw] -[ps] [service] -[v]\n\n" \ + " -e: enable service\n" \ + " including dependencies\n" \ + " -d: disable service\n" \ + " including dependencies\n\n" \ + " -n: without needs\n" \ + " Skip wants when en/disabling\n" \ + " -w: without wants\n" \ + " Skip needs when en/disabling\n\n" \ + " -h: get help\n" \ + " this messages" \ + " -p: get process id (pid)\n" \ + " of specified service\n" \ + " -s: get status\n" \ + " of specified service\n" \ + " -v: get version\n" \ + " of cinit\n" \ + " -V: get version\n" \ + " of cmd\n" \ + "" + +#define CMD_OPTIONS "e:d:hp:s:vV" + +#define MSG_KILL "kill()" +#define CMD_VERSION "cmd 0.1" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/include/intern.h b/software/cinit/browse_source/cinit-0.3pre13/src/include/intern.h new file mode 100644 index 00000000..9a373de1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/include/intern.h @@ -0,0 +1,114 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * internal header + */ + + +#ifndef _CINIT_INTERN_H +#define _CINIT_INTERN_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ +#include "cinit.h" /* structures: answer / question */ + +/*********************************************************************** + * Defines + */ +#define SLASH "/" +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC + +enum { /* FIXME: there are some default defines somewhere for that */ + FD_IN=0, + FD_OUT=1, + FD_ERR=2 +}; + +enum { /* returns of openreadclose */ + ORC_OK, /* everything went fine */ + ORC_ERR_NONEXISTENT, /* file does not exist */ + ORC_ERR_OPEN, /* error opening the file */ + ORC_ERR_READ, + ORC_ERR_CLOSE, + ORC_ERR_MEM +}; + +/* values for execute_sth: + * STRICT: print and error, if .../on does not exist + * NOSTRICT: no .../on is fine + */ +enum { + EXEC_STRICT, + EXEC_NOSTRICT +}; + +enum { + FE_FILE, /* file exists and is a file */ + FE_OTHER, /* file exists, but is no file */ + FE_NOT, /* file does not exist */ + FE_NOLINK, /* file is a broken symbolic link*/ + FE_ERR /* some error occured */ +}; + +/*********************************************************************** + * Paths + */ +#define CINIT_SVCDIR CINIT_DIR SLASH SVCDIR +#define CINIT_INIT CINIT_SVCDIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK +#define CINIT_BIN PREFIX SLASH "sbin" SLASH "cinit" + +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC +#define CINIT_LAST CINIT_CONFDIR SLASH C_LAST +#define CINIT_SLEEPFILE CINIT_CONFDIR SLASH SLEEP_BEFORE_KILL + +/* needed by set_signals */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* functions (used by server and client) */ +void mini_printf(char *str, int fd); +void set_signals(int action); +//void usage(char *banner, char *stext); + +/* core functions */ +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +//int msg_svc_on_off(char *svc, char action); +//int msg_change_status(char *svc, char status, pid_t pid); +//int begin_msg(char cmd); + +/* client functions */ +pid_t respawn_svc(char *abspath); +char **read_file(char *file); +void sig_terminate(int signal); + +/* communication */ +int read_command(struct cinit_question, struct cinit_answer *); +int answer_svc_status(char *, struct cinit_answer *); +int answer_svc_pid(char *, struct cinit_answer *); +int answer_version(struct cinit_answer *); + +/* generic */ +void execute_sth(char *basename); +int execute_and_wait(char *svc); +int path_append(char *path, char *append); +int path_absolute(char *relpath, char *buf, size_t size); +int openreadclose(char *filename, char **where); +char *strip_final_newline(char *str); +int file_exists(char *filename); +void sleep_before_kill(); + +/* util */ +void print_errno(char *text); + +#endif /* INTERN */ diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/include/ipc.h b/software/cinit/browse_source/cinit-0.3pre13/src/include/ipc.h new file mode 100644 index 00000000..f10fa998 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/include/ipc.h @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Prototypes for ipc handler + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +/* FIXME: change to cinit/types.h later */ +#include "cinit.h" + +/***************************************************************************** + * Functions: in server + */ +int cinit_ipc_init(void); /* init in init */ +int cinit_ipc_listen(void); /* listen in init */ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + +/***************************************************************************** + * Functions: in clients + */ +int cinit_ipc_logon(void); /* logon to init */ + +int cinit_ipc_connect(void); /* connect to init */ + +int cinit_ipc_csend(struct cinit_question *); /* ask the server */ +int cinit_ipc_cread(struct cinit_answer *); /* read answer */ + +int cinit_ipc_logoff(void); /* logoff */ + +/***************************************************************************** + * Functions: shared + */ + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/include/listing b/software/cinit/browse_source/cinit-0.3pre13/src/include/listing new file mode 100644 index 00000000..bccdad37 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/include/listing @@ -0,0 +1,8 @@ +include/intern.h +include/config.h +include/ipc.h +include/messages.h +include/os.h +include/reboot.h +include/signals.h +include/svc.h diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/include/messages.h b/software/cinit/browse_source/cinit-0.3pre13/src/include/messages.h new file mode 100644 index 00000000..6b6a5ef6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/include/messages.h @@ -0,0 +1,154 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit (at) schottelius.org) + * + * part of cLinux/cinit + * + * All messages + */ + +#ifndef _CINIT_MSG_H +#define _CINIT_MSG_H + +/* version */ +#define CINIT_VERSION "cinit-" VERSION +#define MSG_BOOTING CINIT_VERSION ": Booting from " + +#define MSG_DP ": " + +#define MSG_USAGE_1 ": fast executing, small and simple init " +#define MSG_USAGE_2 "with support for profiles\n" +#define MSG_USAGE_3 "\nError: cinit must be started as PID 1.\n" +#define MSG_USAGE MSG_USAGE_1 MSG_USAGE_2 MSG_USAGE_3 +#define MSG_ERR_FORK "fork" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_OPEN "open" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_READ "read" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" + +//#define MSG_ERR_DEPS "Too many dependencies" +//#define MSG_ERR_ACCEPT "accept" +//#define MSG_ERR_WAITPID "waitpid" +//#define MSG_ERR_POLL "poll" +//#define MSG_ERR_MODIFY "modify list failed" +//#define MSG_ERR_COMM "Communication failed" + +//#define MSG_ERR_LESS_ARGS "Too less arguments!" +//#define MSG_ERR_BAD_ARGS "Wrong arguments / parameter" +//#define MSG_ERR_ARGS_LEN "Wrong parameter length" + +#define LOG_SVC_STOPED "Service stoped" +#define LOG_SVC_ONCE "Started once" +#define LOG_SVC_RESPAWN "Respawns now" +//#define LOG_NEED_FAIL "One or more need failed" +//#define LOG_SVC_FAILED "Service already failed, not starting." +#define LOG_SVC_NOTEXIST "Service does not exist" + +#define MSG_EXEC_FAILED "Failed to execute " + +#define MSG_RESCUE "Switching to rescue mode ..." +#define MSG_UPDATE "Updating cinit ..." +#define MSG_HOT_REBOOT "Hot reboot in progress ..." + +#define MSG_SHOULD_NOT_HAPPEN "This should not happen, I do not know what todo!" + +/* DEBUG */ +#ifdef DEBUG +# include +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) {} +#endif + +/* macros */ +#define SERVICE_LOG(svc,message) { \ + mini_printf(svc,1); \ + mini_printf(MSG_DP,1); \ + mini_printf(message,1); \ + mini_printf("\n",1); \ +} +#define LOG(s) { \ + mini_printf(s,1); \ + mini_printf("\n",1); \ +} +#define P_START_SERVICE(name) { mini_printf(MSG_START_SVC,1); mini_printf(name,1); mini_printf("\n",1); } +#define P_EXEC_FAILED(name) { mini_printf(MSG_EXEC_FAILED,1); mini_printf(name,1); mini_printf("\n",1); } + +/* NEW (clean) Service status: Messages to the outside */ + +/* services: how they should be printed + * /etc/cinit/svc/long/name: started once + * /etc/cinit/svc/long/name: is respawning + * /etc/cinit/svc/long/name: FAILED (why it happened) + */ + +#define MSG_INTRO_CINIT "cinit:" +#define MSG_INTRO_SPACE MSG_INTRO_CINIT " " +#define MSG_INTRO_SVC MSG_INTRO_CINIT +#define MSG_INTRO_STOP MSG_INTRO_CINIT "stop: " +#define MSG_INTRO_EXEC MSG_INTRO_CINIT "exec: " + +/* FIXME: remove/append, but no intro! */ +#define MSG_INTRO_FAIL "FAILED " +#define MSG_INTRO_RESPAWN MSG_INTRO_CINIT "respawn: " +#define MSG_INTRO_OK MSG_INTRO_CINIT "ok: " + +#define MSG_SVC_FORK "fork() failed" +#define MSG_SVC_NEED_FAIL MSG_INTRO_FAIL "Needs failed for service" +#define MSG_SVC_FAIL MSG_INTRO_FAIL "Service failed!" + + +#define MSG_BUILTIN_SLEEP MSG_INTRO_STOP "Using built-in sleep" + +#define MSG_TREE_EXEC MSG_INTRO_SPACE "Execution of reverse service tree\n" + +/* general errors */ +#define MSG_GETCWD "Getcwd failed! Your system is most likely broken!" +#define MSG_FATAL_PANIC MSG_INTRO_SPACE "I tried everything, but even panic() failed: " +#define MSG_ERR_SLEEP MSG_INTRO_SPACE "Sleep did not succeed" +#define MSG_GETTIMEOFDAY MSG_INTRO_SPACE "gettimeofday() failed!" + +/* execution */ +//#define MSG_EXECUTING MSG_INTRO_EXEC + +/* stat() errors */ +#define MSG_NONREGULAR "Is not a regular file." +#define MSG_BROKENLINK "Is a broken link." + +/* Service messages */ +#define MSG_SVC_START "Starting... " +#define MSG_SVC_STOP "Stoping... " +#define MSG_SVC_RESTART "Restarted." +#define MSG_SVC_SLEEP "Sleeping before restart" +#define MSG_SVC_OK_ONCE "Started once." +#define MSG_SVC_OK_RESPAWN "Is respawning." + +/* Status messages */ +#define MSG_SHUTDOWN_START MSG_INTRO_STOP "\nBeginning the shutdown process..." +#define MSG_SHUTDOWN_SVC MSG_INTRO_STOP "Shutting down services now..." +#define MSG_SHUTDOWN_KILL MSG_INTRO_STOP "Killing remaining processes..." +#define MSG_SHUTDOWN_LAST MSG_INTRO_STOP "Executing final service..." +#define MSG_POWER_OFF MSG_INTRO_STOP "Powering off..." +#define MSG_HALT MSG_INTRO_STOP "Halting system ..." +#define MSG_REBOOT MSG_INTRO_STOP "Rebooting ..." + +/* client messages */ +#define MSG_HALT_KILL "halt.kill" +#define MSG_REBOOT_KILL "reboot.kill" +#define MSG_POWEROFF_KILL "poweroff.kill" + + +/* reboot */ +#define MSG_TERMKILL MSG_INTRO_FAIL "SIGTERM" +#define MSG_KILLBILL MSG_INTRO_FAIL "SIGKILL" + +#endif /* _CINIT_MSG_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/include/os.h b/software/cinit/browse_source/cinit-0.3pre13/src/include/os.h new file mode 100644 index 00000000..b3320c0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/include/os.h @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * os specific functions + */ + +#ifndef CINIT_OS_HEADER +#define CINIT_OS_HEADER + +/***************************************************************************** + * Functions + */ +void cinit_halt(void); +void cinit_poweroff(void); +void cinit_reboot(void); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/include/reboot.h b/software/cinit/browse_source/cinit-0.3pre13/src/include/reboot.h new file mode 100644 index 00000000..cd8a345e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/include/reboot.h @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot specific functions + * + */ + +#ifndef CINIT_REBOOT_HEADER +#define CINIT_REBOOT_HEADER + +/***************************************************************************** + * the main reboot function + */ +void do_reboot(int signal); + + +/***************************************************************************** + * os specific functions + */ +void cinit_reboot(void); +void cinit_halt(void); +void cinit_poweroff(void); + + +/***************************************************************************** + * Functions: abstract do_reboot + */ +#define cinit_do_reboot() do_reboot(SIGHUP) +#define cinit_do_halt() do_reboot(SIGUSR1) +#define cinit_do_poweroff() do_reboot(SIGTERM) + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/include/signals.h b/software/cinit/browse_source/cinit-0.3pre13/src/include/signals.h new file mode 100644 index 00000000..a51e402d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/include/signals.h @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Define signals to use: needs signal.h to be included before. + */ + +#ifndef CINIT_SIGNALS_HEADER +#define CINIT_SIGNALS_HEADER + +#define SIG_CINIT_HALT SIGUSR1 +#define SIG_CINIT_POWEROFF SIGTERM +#define SIG_CINIT_REBOOT SIGHUP + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/include/svc-intern.h b/software/cinit/browse_source/cinit-0.3pre13/src/include/svc-intern.h new file mode 100644 index 00000000..35ea3438 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/include/svc-intern.h @@ -0,0 +1,82 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Internal service specifics + */ + + +#ifndef __CINIT_SVC_INTERN_H +#define __CINIT_SVC_INTERN_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* service list */ +struct listitem { + struct listitem *prev; /* previous item */ + struct listitem *next; /* next item */ + + char *abs_path; /* name of service */ + long int status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + time_t start; /* time the process was started last time */ + + + struct dep *wanted; /* list of services that want this service */ + struct dep *needed; /* list of services that need this service */ + + struct dep *wants; /* list of services that this service wants */ + struct dep *needs; /* list of services that this service needs */ +}; + +/* list of dependencies */ +struct dep { + struct dep *prev; + struct dep *next; + struct listitem *svc; +}; + +/* variables */ +extern struct dep *svc_init; /* the services to start */ +extern struct listitem *svc_list; /* the list of services */ + +/* list functions */ +struct listitem *list_insert(char *path, int status); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); +struct listitem *list_search(char *path); +struct listitem *list_search_pid(pid_t pid); + +/* service */ +struct listitem *svc_create(char *svc); +struct listitem *gen_svc_tree(char *svc); +int check_add_deps(struct listitem *svc, int type); +void dep_entry_add(struct dep **list, struct dep *new); +struct dep *dep_entry_del(struct dep *del); +int tree_exec(struct dep *start); +int svc_set_status(struct listitem *li, int status); +int svc_should_respawn(struct listitem *li); +int svc_needs_status(struct listitem *li); +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type); +struct dep *dep_create(struct listitem *svc); +void svc_success(struct listitem *li); +void svc_fail(struct listitem *li); +void svc_report_status(char *svc, char *msg, char *err); +void svc_start(struct listitem *li, int delay); +void shutdown_services(struct listitem *start); + + + +/*********************************************************************** + * to decide whether to operate on needs or wants + */ +enum dep_types { + DEP_WANTS, + DEP_NEEDS +}; + +#endif /* _CINIT_SVC_INTERN_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/include/svc-messages.h b/software/cinit/browse_source/cinit-0.3pre13/src/include/svc-messages.h new file mode 100644 index 00000000..eb3b51bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/include/svc-messages.h @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Service status messages + */ + + +#ifndef __CINIT_SVC_MESSAGES_H +#define __CINIT_SVC_MESSAGES_H + +#include "svc.h" + +struct cinit_svc_msg { + int code; + char *msg; +}; + +struct cinit_svc_msg cinit_svc_msg_codes[] = { + { CINIT_ST_SH_ONCE, "Service should be started once" }, + { CINIT_ST_SH_RESPAWN, "Service should respawn" }, + { CINIT_ST_ONCE_OK, "Service successfully started once" }, + { CINIT_ST_ONCE_FAIL, "Service failed to start once" }, + { CINIT_ST_RESPAWNING, "Service is respawning" }, + { CINIT_ST_NEED_FAILD, "One ore more needs failed" }, + { CINIT_ST_IN_LIST, "Service is in starter list" }, + { CINIT_ST_BAD_ERR, "Some strange error happened" }, + { CINIT_ST_ONCE_RUN, "Service is currently running once" }, + { CINIT_ST_NOT_EXIST, "This service does not exist" } +}; + +#endif /* _CINIT_SVC_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/include/svc.h b/software/cinit/browse_source/cinit-0.3pre13/src/include/svc.h new file mode 100644 index 00000000..bbf40c83 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/include/svc.h @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Service status (also exposed to the outside) + */ + + +#ifndef __CINIT_SVC_H +#define __CINIT_SVC_H + +/*********************************************************************** + * The real status types a service may have (ignore above) + * We have 32 Bits, we should use them ;-) + */ +enum cinit_svc_status { + /* first define basics */ + CINIT_ST_SH_ONCE = 0x1, /* service SHould be started once */ + CINIT_ST_SH_RESPAWN = 0x2, /* service SHould respawn */ + CINIT_ST_ONCE_OK = 0x4, /* service was successfully started once */ + CINIT_ST_ONCE_FAIL = 0x8, /* service failed to start */ + CINIT_ST_RESPAWNING = 0x10, /* service is respawning */ + CINIT_ST_NEED_FAILD = 0x20, /* this service is not started, need failed */ + CINIT_ST_IN_LIST = 0x40, /* this service is being started (= in list) */ + CINIT_ST_BAD_ERR = 0x80, /* some kind of error that SHOULD NOT happen */ + CINIT_ST_ONCE_RUN = 0x100, /* the once process is currently running */ + CINIT_ST_NOT_EXIST = 0x200 /* there's no such service in our database */ +}; + +/*********************************************************************** + * Possibilities the needs of a service may have + */ +enum cinit_svc_needs_status { + CINIT_SNS_NEEDS_STARTED = 1, /* all needs are started. We may start, too */ + CINIT_SNS_NEEDS_FAILED, /* one ore more needs failed */ + CINIT_SNS_NEEDS_UNFINISHED /* one ore more needs are not yet started */ +}; +#endif /* _CINIT_SVC_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq-rt/README b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq-rt/README new file mode 100644 index 00000000..cc1a1b7e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq-rt/README @@ -0,0 +1,2 @@ +This implementation uses the new realtime inferface of +posix instead of the old one functions. diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq-rt/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq-rt/cinit_ipc_init.c new file mode 100644 index 00000000..ef22b6d1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq-rt/cinit_ipc_init.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include + +#include "cinit.h" +#include "config.h" +#include "msgq-rt.h" + +int cinit_ipc_init(void) +{ + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq-rt/mq_open.c b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq-rt/mq_open.c new file mode 100644 index 00000000..445e7dc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq-rt/mq_open.c @@ -0,0 +1,20 @@ +#include +#include + +int main() +{ + mqd_t readq = mq_open("/test",O_RDWR|O_CREAT|O_EXCL); + //mqd_t readq = mq_open("/bin/ls",O_RDWR|O_CREAT|O_EXCL); + + if(readq == -1) { + perror("oh nein"); + return 1; + } + mqd_t writeq = mq_open("/bin/cp",O_WRONLY|O_CREAT|O_EXCL); + if(readq == -1) { + perror("oh oh nein"); + return 1; + } +} + + diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq-rt/msgq-rt.h b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq-rt/msgq-rt.h new file mode 100644 index 00000000..d09a2808 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq-rt/msgq-rt.h @@ -0,0 +1,39 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +#define MSGQ_PATHNAME "/cinit" /* identifier */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + pid_t pid; + struct msg_client msg; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server_short { + long mtype; + struct asw_sstatus answer; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/README.text b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/README.text new file mode 100644 index 00000000..c9a1acf2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/README.text @@ -0,0 +1,20 @@ +cinit/src/ipc/msgq: About this msqg implementation +=================================================== +Nico Schottelius +0.1, Initial Version from 2006-08-04 +:Author Initials: NS + +Intro here + +Introduction +------------ + +cinit opens a + +Files +----- +- README.text: This file +- cinit_init_ipc.c: Init +msgq.h +objects + diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_cread.c b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_cread.c new file mode 100644 index 00000000..a3d443cd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_cread.c @@ -0,0 +1,28 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Client reads messages from cinit + * + */ + +#include /* msg* */ +#include /* memcpy() */ +#include /* getpid() */ +#include "intern.h" /* print_errno */ +#include "msgq.h" /* msq specific */ + +int cinit_ipc_cread(struct cinit_answer *buf) +{ + struct msgq_server asr; + + if(msgrcv(__cinit_mq_in, &asr, sizeof(asr.asr), getpid(), 0) == -1) { + print_errno(MSG_MSGQ_MSGRCV); + return 0; + } + memcpy(buf, &(asr.asr), sizeof(*buf)); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_csend.c b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_csend.c new file mode 100644 index 00000000..1b686a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_csend.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Client sends messages to cinit + * + */ + +#include /* msgget */ +#include /* memcpy() */ +#include "intern.h" /* print_errno */ +#include "msgq.h" /* structure */ + +int cinit_ipc_csend(struct cinit_question *qsn) +{ + struct msgq_client msg; + + msg.mtype = 1; /* cinit = 1 */ + + /* copy question structure into the msgq-structure */ + memcpy(&(msg.qsn), qsn, sizeof(msg.qsn)); + + if(msgsnd(__cinit_mq_out, &msg, sizeof(msg.qsn), 0) == -1) { + print_errno(MSG_MSGQ_MSGSEND); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_destroy.c b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_destroy.c new file mode 100644 index 00000000..8186cba9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_destroy.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Destory ipc mechanism, cinit is gonna die soon. + * + */ + +#include /* msgget */ +#include /* NULL */ +#include "msgq.h" /* mq_in, mq_out */ +#include "intern.h" /* print_errno */ + +void cinit_ipc_destroy(void) +{ + if(msgctl(__cinit_mq_in, IPC_RMID, NULL) == -1) { + print_errno(__CINIT_MSG_MSGQ_DESTROY); /* print warning, continue */ + } + if(msgctl(__cinit_mq_out, IPC_RMID, NULL) == -1) { + print_errno(__CINIT_MSG_MSGQ_DESTROY); /* print warning, continue */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_init.c new file mode 100644 index 00000000..d5102f13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_init.c @@ -0,0 +1,44 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include /* ftok */ +#include /* msgget */ +#include "intern.h" /* print_errno */ +#include "msgq.h" /* message queue */ + +int cinit_ipc_init(void) +{ + key_t k_tmp; + + /* to_server */ + k_tmp = ftok(__CINIT_MSGQ_PATHNAME, __CINIT_MSGQ_TO_SERVER); + if(k_tmp == -1) { + print_errno(__CINIT_MSG_MSGQ_FTOK); + return 0; + } + __cinit_mq_in = msgget(k_tmp, __CINIT_MSGQ_PERMS | IPC_CREAT); + if(__cinit_mq_in == -1) { + print_errno(__CINIT_MSG_MSGQ_MSGGET); + return 0; + } + + k_tmp = ftok(__CINIT_MSGQ_PATHNAME, __CINIT_MSGQ_TO_CLIENT); + if(k_tmp == -1) { + print_errno(__CINIT_MSG_MSGQ_FTOK); + return 0; + } + __cinit_mq_out = msgget(k_tmp, __CINIT_MSGQ_PERMS | IPC_CREAT); + if(__cinit_mq_out == -1) { + print_errno(__CINIT_MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_listen.c new file mode 100644 index 00000000..96962d6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_listen.c @@ -0,0 +1,63 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* printf() */ + +#include /* msgget */ +#include /* errno */ + +#include "intern.h" /* print_errno */ +#include "msgq.h" /* structs */ + +int cinit_ipc_listen(void) +{ + int tmp; + struct cinit_msgq_client qsn; + struct cinit_msgq_server asr; + struct msqid_ds msq; + + /* FIXME: remove debug */ + printf("MSGQ-IPC: Listening...\n"); + + tmp = msgrcv(__cinit_mq_in, &qsn, sizeof (qsn.qsn), 0, 0); + + /* message system problem */ + if(tmp == -1) { + if(errno != EINTR) { + print_errno(__CINIT_MSG_MSGQ_MSGRCV); + } + + return -1; + } + + /* retrieve pid */ + if(msgctl(__cinit_mq_in, IPC_STAT, &msq) == -1) { + print_errno(__CINIT_MSG_MSGQ_MSGCTL); + return -1; + } + + // debug code + //printf("pid direkt: self: %d (peer: %d)\n",msq.msg_lrpid, msq.msg_lspid); + + if(!read_command(qsn.qsn, &(asr.asr))) { + /* FIXME: mini_print */ + printf("read command failed\n"); + + asr.asr.ret = CINIT_MSG_ERR; + } + + asr.mtype = msq.msg_lspid; + if(msgsnd(__cinit_mq_out, &asr, sizeof(asr.asr), 0) == -1) { + /* FIXME: do different things on differen errnos ... */ + print_errno("msgsend/answer"); + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_logoff.c b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_logoff.c new file mode 100644 index 00000000..ac8306d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_logoff.c @@ -0,0 +1,14 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Disconnect from cinit + * + */ + +int cinit_ipc_logoff(void) +{ + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_logon.c b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_logon.c new file mode 100644 index 00000000..e15b12f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/cinit_ipc_logon.c @@ -0,0 +1,44 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ +#include "intern.h" /* print_errno */ +#include "msgq.h" /* msgq constants */ + +int cinit_ipc_logon(void) +{ + key_t k_tmp; + + /* generiere nen schluessel: andersrum als im Server */ + k_tmp = ftok(__CINIT_MSGQ_PATHNAME, __CINIT_MSGQ_TO_CLIENT); + if(k_tmp == -1) { + print_errno(__CINIT_MSG_MSGQ_FTOK); + return 0; + } + __cinit_mq_in = msgget(k_tmp, 0); + if(__cinit_mq_in == -1) { + print_errno(__CINIT_MSG_MSGQ_MSGGET); + return 0; + } + + k_tmp = ftok(__CINIT_MSGQ_PATHNAME, __CINIT_MSGQ_TO_SERVER); + if(k_tmp == -1) { + print_errno(__CINIT_MSG_MSGQ_FTOK); + return 0; + } + __cinit_mq_out = msgget(k_tmp, 0); + if(__cinit_mq_out == -1) { + print_errno(__CINIT_MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/msgq.h b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/msgq.h new file mode 100644 index 00000000..68398764 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/msgq.h @@ -0,0 +1,58 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * header of message queuing interface + * + */ + +#ifndef __CINIT_IPC_HEADER +#define __CINIT_IPC_HEADER + +#include /* structures */ + +/*********************************************************************** + * configuration + */ + +#define __CINIT_MSGQ_PATHNAME "/bin/sh" /* should be on every *nix */ +#define __CINIT_MSGQ_TO_SERVER 'i' /* also for ftok */ +#define __CINIT_MSGQ_TO_CLIENT 'o' /* also for ftok */ +#define __CINIT_MSGQ_PERMS 0660 /* queue permissions */ + +/*********************************************************************** + * global variables: FIXME: rename, we're in client namespace! + */ +int __cinit_mq_in; /* input */ +int __cinit_mq_out; /* output */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct cinit_msgq_client { + long mtype; + struct cinit_question qsn; +}; + +/* messages _from_ the server _to_ the client */ +struct cinit_msgq_server { + long mtype; + struct cinit_answer asr; +}; + +/*********************************************************************** + * Messages + */ + +#define __CINIT_MSG_MSGQ_FTOK "ftok" +#define __CINIT_MSG_MSGQ_MSGGET "msgget" +#define __CINIT_MSG_MSGQ_MSGCTL "msgctl" +#define __CINIT_MSG_MSGQ_MSGSEND "msgsend" +#define __CINIT_MSG_MSGQ_MSGRCV "msgrcv" +#define __CINIT_MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/objects b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/objects new file mode 100644 index 00000000..7c99d09f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/msgq/objects @@ -0,0 +1,5 @@ +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/socket+linux-tmpfs/begin_msg.c b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/socket+linux-tmpfs/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/socket+linux-tmpfs/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c new file mode 100644 index 00000000..88c310f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c @@ -0,0 +1,125 @@ +/* + * (c) 2005, 2006 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * create a socket, when we recieved a signal + */ +int main(int argc, char **argv) +{ + struct sockaddr_un addr; + struct pollfd plist; + char *initdir; + + list = NULL; /* list of services is empty currently */ + initdir = CINIT_INIT; /* default init dir */ + + cpid = getpid(); + if(cpid != 1) { + usage(MSG_USAGE,MSG_NOT_ONE); + } + + set_signals(ACT_SERV); /* set signal handlers */ + + /* read args, profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* tell the world we are there FIXME: do we really need three calls? */ + mini_printf(MSG_CINIT,1); mini_printf(initdir,1); mini_printf("\n",1); + + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c new file mode 100644 index 00000000..a174d78d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c @@ -0,0 +1,141 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int socket) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + while ( (nsock = accept(socket,(struct sockaddr *) NULL, + (socklen_t *) NULL)) != -1) { + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = ST_FAIL; + } else { + status = RT_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP (RESPAWNING) *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; + list_tmp = list_search(buf); + + /* FIXME: + - handle off + - handle switching off once services + - perhaps remove old cinit code, which has respawing childs + */ + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + /* kill cinit watcher, which kills the real process */ + kill(list_tmp->pid,SIGTERM); + + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + } + + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + status = ST_FAIL; + } else { /* return status */ + status = list_tmp->status; + } + } else { /* no service there */ + status = RT_NOTEXIST; + } + do_result(nsock,&status); + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + SERVICE_LOG(buf,MSG_ERR_MODIFY); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + case CMD_UPDATE: + sig_reboot(SIGCONT); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } + + /* hier kommt man haeufiger herein, interrupted system call */ + if( errno != EAGAIN && errno != EINTR) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/ipc/socket+linux-tmpfs/connect_sock.c b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/socket+linux-tmpfs/connect_sock.c new file mode 100644 index 00000000..2c2d45de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/ipc/socket+linux-tmpfs/connect_sock.c @@ -0,0 +1,38 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include /* memset, strcpy */ + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/README b/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/README new file mode 100644 index 00000000..096cc779 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/README @@ -0,0 +1,22 @@ +Build a small library that can be used by different applications, that provides: + + Constants / Macros: + for cinit_halt: + CINIT_HALT + CINIT_REBOOT + CINIT_POWEROFF + + for cinit_svc_start/stop: + CINIT_SVC_NORMAL + CINIT_SVC_NEEDS + CINIT_SVC_ONLY + CINIT_SVC_WANTS + + Functions: + void cinit_halt(int how); + int cinit_svc_start(char *svc, int how); + int cinit_svc_stop(char *svc, int how); + int cinit_svc_stop(char *svc, int how); + +This lib must then include: + - choosen ipc functions diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/cinit_get_svc_status.c b/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/cinit_get_svc_status.c new file mode 100644 index 00000000..262ea7da --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/cinit_get_svc_status.c @@ -0,0 +1,30 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Retrieves status of a service + */ + + +#include /* str* */ +#include /* integers */ +#include "cinit.h" /* header for clients */ + +/* returns either the status (>0) + * or -1 on memory error + */ +int32_t cinit_get_svc_status(char *name) +{ + struct cinit_question qsn; + struct cinit_answer asr; + + qsn.cmd = CINIT_MSG_GET_STATUS; + strcpy((qsn.data), name); + qsn.options = 0; + + if(!cinit_send_to(&qsn, &asr)) return -1; + + return asr.ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/cinit_get_version.c b/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/cinit_get_version.c new file mode 100644 index 00000000..659443fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/cinit_get_version.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Retrieves version of cinit + */ + +#include /* malloc */ +#include /* str*, memset */ +#include /* NULL */ + +#include "cinit.h" /* header for clients */ + +int cinit_get_version(char *buf) +{ + struct cinit_question ask; + struct cinit_answer asr; + + memset(&ask, '\0', sizeof(ask)); + memset(&asr, '\0', sizeof(asr)); + ask.cmd = CINIT_MSG_GET_VERSION; + + if(!cinit_send_to(&ask, &asr)) return 0; + + if(asr.ret != CINIT_MSG_OK) return 0; + + /* buf is always big enough to save the version string */ + strcpy(buf, asr.data); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/cinit_halt.c b/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/cinit_halt.c new file mode 100644 index 00000000..c388ba89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/cinit_halt.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * cinit_halt(): call for library + */ + + +#include "" /* include global header */ +int cinit_halt(int how) +{ + switch(how) { + case 'p': /* power off */ + break; + + default: + break; + } + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/cinit_send_to.c b/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/cinit_send_to.c new file mode 100644 index 00000000..49edc481 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/cinit_send_to.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * sends data from the client to cinit + */ + + +#include "ipc.h" /* IPC */ +#include "cinit.h" /* struct cinit_message */ + +int cinit_send_to(struct cinit_question *data, struct cinit_answer *res) +{ + if(!cinit_ipc_logon()) return 0; + if(!cinit_ipc_csend(data)) return 0; + if(!cinit_ipc_cread(res)) return 0; + if(!cinit_ipc_logoff()) return 0; + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/cinit_svc_get_pid.c b/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/cinit_svc_get_pid.c new file mode 100644 index 00000000..8cb270d5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/libcinit/cinit_svc_get_pid.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Retrieves status of a service + */ + + +#include /* str* */ +#include "cinit.h" /* header for clients */ + +/* returns either the status (>0) + * or -1 on memory error + */ +pid_t cinit_svc_get_pid(char *name) +{ + struct cinit_question qsn; + struct cinit_answer asr; + + qsn.cmd = CINIT_MSG_GET_PID; + strcpy((qsn.data), name); + qsn.options = 0; + + if(!cinit_send_to(&qsn, &asr)) return -1; + + if(asr.ret == CINIT_MSG_OK) { + return asr.options; + } else { + return (pid_t) 0; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/object_lists/cinit b/software/cinit/browse_source/cinit-0.3pre13/src/object_lists/cinit new file mode 100644 index 00000000..612d7e3a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/object_lists/cinit @@ -0,0 +1,54 @@ +core/build_argv.o +core/cinit.o +core/panic.o +core/set_signals.o +core/do_reboot.o +core/sig_child.o +generic/execute_sth.o +generic/file_exists.o +generic/mini_printf.o +generic/path_absolute.o +generic/path_append.o +generic/print_errno.o +generic/openreadclose.o +generic/strip_final_newline.o +generic/sleep_before_kill.o +generic/execute_and_wait.o +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +svc/gen_svc_tree.o +svc/gen_halt_tree.o +svc/list_delete.o +svc/list_insert.o +svc/list_search.o +svc/list_search_pid.o +svc/svc_create.o +svc/check_add_deps.o +svc/dep_entry_add.o +svc/dep_entry_del.o +svc/shutdown_services.o +svc/tree_exec.o +svc/svc_set_status.o +svc/svc_should_respawn.o +svc/svc_needs_status.o +svc/dep_needs_wants_add.o +svc/dep_create.o +svc/svc_success.o +svc/svc_report_status.o +svc/svc_start.o +svc/svc_fail.o +comm/read_command.o +comm/answer_svc_status.o +comm/answer_svc_pid.o +comm/answer_version.o diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/object_lists/cmd b/software/cinit/browse_source/cinit-0.3pre13/src/object_lists/cmd new file mode 100644 index 00000000..bc72c3bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/object_lists/cmd @@ -0,0 +1,11 @@ +client/cmd.o +generic/print_errno.o +generic/mini_printf.o +libcinit/cinit_get_svc_status.o +libcinit/cinit_get_version.o +libcinit/cinit_send_to.o +ipc/current/cinit_ipc_logon.o +ipc/current/cinit_ipc_csend.o +ipc/current/cinit_ipc_cread.o +ipc/current/cinit_ipc_logoff.o +libcinit/cinit_svc_get_pid.o diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/object_lists/halt.kill b/software/cinit/browse_source/cinit-0.3pre13/src/object_lists/halt.kill new file mode 100644 index 00000000..e5b12a36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/object_lists/halt.kill @@ -0,0 +1,3 @@ +client/halt.kill.o +generic/print_errno.o +generic/mini_printf.o diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/object_lists/poweroff.kill b/software/cinit/browse_source/cinit-0.3pre13/src/object_lists/poweroff.kill new file mode 100644 index 00000000..306fc0bf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/object_lists/poweroff.kill @@ -0,0 +1,3 @@ +client/poweroff.kill.o +generic/print_errno.o +generic/mini_printf.o diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/object_lists/reboot.kill b/software/cinit/browse_source/cinit-0.3pre13/src/object_lists/reboot.kill new file mode 100644 index 00000000..f851badf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/object_lists/reboot.kill @@ -0,0 +1,3 @@ +client/reboot.kill.o +generic/print_errno.o +generic/mini_printf.o diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/os/freebsd/halt.c b/software/cinit/browse_source/cinit-0.3pre13/src/os/freebsd/halt.c new file mode 100644 index 00000000..37064cc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/os/freebsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/os/freebsd/objects b/software/cinit/browse_source/cinit-0.3pre13/src/os/freebsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/os/freebsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/os/freebsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre13/src/os/freebsd/poweroff.c new file mode 100644 index 00000000..c73dd079 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/os/freebsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWEROFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/os/freebsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre13/src/os/freebsd/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/os/freebsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/os/linux/halt.c b/software/cinit/browse_source/cinit-0.3pre13/src/os/linux/halt.c new file mode 100644 index 00000000..5ee3eb53 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/os/linux/halt.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * How to halt the system + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT_SYSTEM); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/os/linux/objects b/software/cinit/browse_source/cinit-0.3pre13/src/os/linux/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/os/linux/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/os/linux/poweroff.c b/software/cinit/browse_source/cinit-0.3pre13/src/os/linux/poweroff.c new file mode 100644 index 00000000..c7d2b1c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/os/linux/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff the system + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWER_OFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/os/linux/reboot.c b/software/cinit/browse_source/cinit-0.3pre13/src/os/linux/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/os/linux/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/os/netbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre13/src/os/netbsd/halt.c new file mode 100644 index 00000000..972aecf9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/os/netbsd/halt.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_halt(void) +{ + reboot(RB_HALT,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/os/netbsd/objects b/software/cinit/browse_source/cinit-0.3pre13/src/os/netbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/os/netbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/os/netbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre13/src/os/netbsd/poweroff.c new file mode 100644 index 00000000..17d7b259 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/os/netbsd/poweroff.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_poweroff(void) +{ + reboot(RB_HALT|RB_POWERDOWN,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/os/netbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre13/src/os/netbsd/reboot.c new file mode 100644 index 00000000..14313e17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/os/netbsd/reboot.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/os/openbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre13/src/os/openbsd/halt.c new file mode 100644 index 00000000..37064cc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/os/openbsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/os/openbsd/objects b/software/cinit/browse_source/cinit-0.3pre13/src/os/openbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/os/openbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/os/openbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre13/src/os/openbsd/poweroff.c new file mode 100644 index 00000000..bf4120e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/os/openbsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_HALT | RB_POWERDOWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/os/openbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre13/src/os/openbsd/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/os/openbsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/check_add_deps.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/check_add_deps.c new file mode 100644 index 00000000..a6ec06d3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/check_add_deps.c @@ -0,0 +1,128 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +/* FIXME: clean headers, check: + * getcwd */ +#include + +#include +#include +#include +#include +#include +#include +#include + + +#include /* PATH_MAX */ +#include /* malloc */ +#include /* strcpy */ + +#include "intern.h" /* mini_printf */ +#include "messages.h" +#include "svc-intern.h" + +int check_add_deps(struct listitem *svc, int type) +{ + char buf[PATH_MAX+1]; + char oldpath[PATH_MAX+1]; + struct dirent *tdirent; + struct dep *deps = NULL; + struct listitem *new_svc; + DIR *d_tmp; + + /* remember where we started */ + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + /* FIXME remove in production */ + D_PRINTF("CAD::"); + D_PRINTF(svc->abs_path); + D_PRINTF("\n"); + + /* Create path */ + strcpy(buf,svc->abs_path); + if(type == DEP_NEEDS) { + if(!path_append(buf,C_NEEDS)) return 0; + } else { + if(!path_append(buf,C_WANTS)) return 0; + } + + d_tmp = opendir(buf); + if(d_tmp == NULL) { + if(errno != ENOENT) { + print_errno(buf); + return 0; + } + return 1; /* it's fine when there's no dependencies */ + } + + if(chdir(buf) == -1) { /* change to needs or wants */ + print_errno(buf); + return 0; + } + + while((tdirent=readdir(d_tmp))!=NULL) { + if(*(tdirent->d_name) == '.') continue; /* ignore .* */ + + /* skip non-working directories / broken links + * path_absolute reports errors on failure */ + if(!path_absolute(tdirent->d_name,buf,PATH_MAX+1)) continue; + + /* 1. create the service we depend on + * 2. initialize its dependencies + */ + if(!(new_svc = gen_svc_tree(buf))) return 0; + + /* We need ALL dependencies, as we are called only once + * per service; no need to test that first! + * + * And the other service CANNOT know anything about us yet, + * so we always add us to its list. + */ + + /* Dependencies: + * - a.needs b; add b to the list of dependencies. + * - a.needs b; add a to the list of needed by b. + * + * 1. check whether the dependency already exists + * 2. otherwise add it + * 3. do it once for needs, once for needed_by + */ + + /* create a dependency entry containing us */ + deps = dep_create(svc); + if(!deps) return 0; + + if(type == DEP_NEEDS) { + dep_entry_add(&(new_svc->needed),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->needs),deps); + } else { + dep_entry_add(&(new_svc->wanted),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->wants),deps); + } + } + if(chdir(oldpath) == -1) { + print_errno(buf); + return 0; + } + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/dep_create.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/dep_create.c new file mode 100644 index 00000000..542cb329 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/dep_create.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Create dependency + */ + +#include /* NULL */ +#include /* malloc() */ +#include "svc-intern.h" /* structs */ + +/* search for an entry by path, reverse: from end to the beginning */ +struct dep *dep_create(struct listitem *svc) +{ + struct dep *entry; + + entry = malloc(sizeof(struct dep)); + if(!entry) return NULL; + entry->svc = svc; + + return entry; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/dep_entry_add.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/dep_entry_add.c new file mode 100644 index 00000000..254f7431 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/dep_entry_add.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include "svc-intern.h" /* types */ + +/* + * list: pointer to the list + * new: pointer to data to insert (already filled up) + * + * We add the new element BEFORE the existing element! + */ +void dep_entry_add(struct dep **deplist, struct dep *new) +{ + if(*deplist == NULL) { /* new list */ + *deplist = new; + (*deplist)->prev = *deplist; + (*deplist)->next = *deplist; + } else { /* already existing */ + new->next = *deplist; /* new-> first */ + new->prev = (*deplist)->prev; /* last <- new */ + (*deplist)->prev->next = new; /* last -> new */ + (*deplist)->prev = new; /* new <- first */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/dep_entry_del.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/dep_entry_del.c new file mode 100644 index 00000000..7a914929 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/dep_entry_del.c @@ -0,0 +1,36 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include /* free() */ +#include "svc-intern.h" /* struct *dep */ + +/* + * tmp: pointer to data to remove (must not be NULL) + * + * Returns either the next object or NULL if there's no next object + */ +struct dep *dep_entry_del(struct dep *del) +{ + struct dep *tmp; + + /* last service in the list */ + if(del->next == del && del->prev == del) { + tmp=NULL; + } else { + /* remove from list */ + del->prev->next = del->next; + del->next->prev = del->prev; + tmp = del->next; + } + + free(del); + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/dep_needs_wants_add.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/dep_needs_wants_add.c new file mode 100644 index 00000000..c82a4bef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/dep_needs_wants_add.c @@ -0,0 +1,65 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Add all wants or needs from a specific service to dep list + * -> this builds the needs and needed_by and + * -> or this builds the wants and wanted_by and + * + * This function is used to fillup the starting list with dependencies + * after a service has sucessfully been executed. + */ + +#include /* NULL */ +#include "svc-intern.h" /* struct *dep */ +#include "svc.h" /* struct *dep */ + +/* + * list: pointer to the list + * svc: pointer to data to the service + */ + +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type) +{ + struct dep *tmp, *new, *end; + + if(type == DEP_NEEDS) { + end = svc->needed; + } else { + end = svc->wanted; + } + + /* Place to the first dependency of this service */ + tmp = end; + if(tmp != NULL) { + do { + /* Add service to the starter list, which + * - should be started once + * - should be respawned (both VIRGIN services!) + * - and which are not already in the list! + */ + if(((tmp->svc->status & CINIT_ST_SH_ONCE) || + (tmp->svc->status & CINIT_ST_SH_RESPAWN)) && + !(tmp->svc->status & CINIT_ST_IN_LIST)) { + new = dep_create(tmp->svc); + if(!new) return 0; + tmp->svc->status |= CINIT_ST_IN_LIST; + dep_entry_add(list,new); + } + /* FIXME: Clearify if we should go forward or backwards? + * this decision will influence starting order + * and may thereby add a minimal mount of speed enhancement + * + * As far as I can see it is not predictable, which way is + * better, because it heavily depends on the other services. + * + * If you know better, provide me with a patch ;-) + */ + tmp = tmp->next; + } while(tmp != end); + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/gen_halt_tree.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/gen_halt_tree.c new file mode 100644 index 00000000..1801bbaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/gen_halt_tree.c @@ -0,0 +1,44 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * This function reads the full service tree and generates + * a list of services to begin shutdown (those that are not + * wanted or needed by any other service). + */ + +#include /* NULL */ + +#include "svc-intern.h" /* structs */ +#include "intern.h" /* structs */ + +struct dep *gen_halt_list(struct listitem *svc_tree) +{ + struct dep *list = NULL, *new = NULL; + struct listitem *tmp; + + /* no tree? nothing to shutdown. */ + if(!svc_tree) { + return NULL; + } + + /* find all services that do not depend on other services: + * - empty wants? (currently ignore them) + * - empty needs! + */ + tmp = svc_tree; + do { + if(tmp->needs == NULL) { + /* create new dependency */ + new = dep_create(tmp); + if(!new) return NULL; + + dep_entry_add(&list,new); + } + tmp = tmp->next; + } while(tmp != svc_tree); + + return list; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/gen_svc_tree.c new file mode 100644 index 00000000..59f68cb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/gen_svc_tree.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +#include + +#include "intern.h" /* functions */ +#include "svc.h" /* constants */ +#include "svc-intern.h" /* functions */ + +struct listitem *gen_svc_tree(char *svc) +{ + struct listitem *li; + struct dep *deps; + + /* only do something if the service is not already known */ + if((li=list_search(svc))) return li; + + /* create a template, so other instances won't try to recreate us */ + if(!(li=svc_create(svc))) return NULL; + + if(!check_add_deps(li,DEP_NEEDS)) return NULL; + if(!check_add_deps(li,DEP_WANTS)) return NULL; + + /* no dependencies? then you are a start service */ + if(!li->wants && !li->needs) { + deps = dep_create(li); + if(!deps) return NULL; + dep_entry_add(&svc_init,deps); + + /* Mark it as being in the startup list, so it does not + * get added again in a dep_needs_wants_add call */ + li->status |= CINIT_ST_IN_LIST; + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_delete.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_delete.c new file mode 100644 index 00000000..7ead6275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_delete.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* free */ +#include "intern.h" /* list_search */ +#include "svc-intern.h" /* listitem */ + +/* ... */ +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if(tmp == NULL) { + return 0; + } + + tmp->next->prev = tmp->prev; + tmp->prev->next = tmp->next; + + free(tmp->abs_path); + free(tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_display_all.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_display_all.c new file mode 100644 index 00000000..4955acbb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_display_all.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Show all list elements - mainly for debugging + */ + +#include /* NULL */ + +#include "messages.h" /* D_PRINTF */ +#include "svc.h" + +int list_display_all() +{ + struct listitem *tmp; + + if(svc_list == NULL) { + return 0; + } else { + tmp = svc_list; + } + + do { + D_PRINTF("Service: "); + D_PRINTF(tmp->abs_path); + D_PRINTF("\n"); + + tmp = tmp->prev; + } while(tmp != svc_list); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_insert.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_insert.c new file mode 100644 index 00000000..0e99ad6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_insert.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* malloc */ +#include /* bzero / memset */ +#include "svc-intern.h" /* the list pointer */ + +struct listitem *list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc(sizeof(struct listitem)); + if(tmp == NULL) return NULL; + memset(tmp, '\0', sizeof(struct listitem)); + + if(svc_list == NULL) { /* list is empty, we have to init it */ + svc_list = tmp; + svc_list->next = svc_list; + svc_list->prev = svc_list; + } else { /* list has members,add this one */ + tmp->next = svc_list; /* begin after the new element */ + tmp->prev = svc_list->prev; /* change to the ex-last */ + svc_list->prev->next = tmp; /* change last element */ + svc_list->prev = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc(strlen(path) + 1); + if(tmp->abs_path == NULL) return NULL; + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_modify.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_modify.c new file mode 100644 index 00000000..267539d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_modify.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED. Not in use anymore. + * + * part of cLinux/cinit + * + * List handling + */ + +#error "NOT IN USE" + +#include +#include +#include "cinit.h" +#include "comm.h" /* for ST_OFF */ +#include "svc.h" /* for ST_OFF */ + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + + tmp = list_search(path); + if(tmp == NULL) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_search.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_search.c new file mode 100644 index 00000000..6ceb43d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_search.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* NULL */ +#include /* strcmp */ +#include "svc-intern.h" /* struct listitem */ + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if(svc_list == NULL) { /* think positive */ + return NULL; + } else { + tmp = svc_list; + } + + do { + if(!strcmp(path, tmp->abs_path)) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_search_pid.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_search_pid.c new file mode 100644 index 00000000..112c8eab --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/list_search_pid.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Search by pid + */ + +#include /* NULL */ +#include /* pid_t */ +#include "svc-intern.h" /* struct listitem */ + +struct listitem *list_search_pid(pid_t pid) +{ + struct listitem *tmp; + + if(svc_list == NULL) { + return NULL; + } else { + tmp = svc_list; + } + + do { + if(pid == tmp->pid) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/shutdown_services.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/shutdown_services.c new file mode 100644 index 00000000..280de8ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/shutdown_services.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Shutdown all services: This is more or less the negative + * version of 'tree_exec()' + */ + +#include "svc-intern.h" /* struct */ + +void shutdown_services(struct listitem *svc) +{ + while(0) { + svc++; + } + /* stop services in the correct order: + * - begin at a random process, and walk the tree up to the wanted_by and needed_by + * - switch to next service, as soon as this tree is finished + */ + +// while(we_are_wanted_or_needed) { +// shutdown_services(next_wants_or_needs_us); +// } + +// shutdown_services(svc) + + /* begin at svc, iterate until a service without dependencies is found, + * continue stopping through wanted-by / needed-by / wants / needs */ + + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_add_needs.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_add_needs.c new file mode 100644 index 00000000..2c045328 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_add_needs.c @@ -0,0 +1,69 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED! + * + * part of cLinux/cinit + * + * List handling + */ + +#error "NOT IN USE" + +#include "cinit.h" +#include "messages.h" + +int svc_add_needs(char *needs, char *is_needed) +{ + struct listitem *svc_needs, *svc_is_needed; + + + /* retrieve service entries in global service list */ + svc_needs = svc_is_needed = NULL; + svc_needs = list_search(needs); + svc_is_needed = list_search(is_needed); + + /* and exit if one is missing */ + if( !svc_needs || !svc_is_needed ) { + return 0; + } + + /* first add needs */ + + /* now add needed_by */ + + malloc... /* for adding */ + + if(svc->needs == NULL) { + svc->needs = neu; + } else { + svc->next = neu; + } + + /* write generic function for dependencies or even all lists */ + dep_entry_add(list_pointer,new_entry); + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members,add this one */ + tmp->after = list; /* begin after the new element */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_create.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_create.c new file mode 100644 index 00000000..18ca7c9a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_create.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* strcpy */ +#include /* stat */ +#include /* stat */ +#include /* PATH_MAX */ +#include /* errno */ + +#include "svc.h" /* constants */ +#include "svc-intern.h" /* listitem */ +#include "intern.h" /* path_append */ +#include "messages.h" /* D_PRINTF */ + +/* checking for existence is done before! */ +/* FIXME: check heedars for conformance with POSIX */ +struct listitem *svc_create(char *svc) +{ + char buf[PATH_MAX+1]; + struct stat statbuf; + struct listitem *li; + + li = list_insert(svc,-1); + if(!li) return NULL; + + /* FIXME: add two path length checks? svc and svc+strlen(C_RESPAWN)? */ + strcpy(buf,svc); + if(!path_append(buf,C_RESPAWN)) return NULL; + + if(stat(buf,&statbuf) == -1) { + if(errno == ENOENT) { + svc_set_status(li,CINIT_ST_SH_ONCE); + } else { + return NULL; + } + } else { + svc_set_status(li,CINIT_ST_SH_RESPAWN); + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_fail.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_fail.c new file mode 100644 index 00000000..35d22fec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_fail.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Mark the service as being failed + */ + +#include "svc.h" +#include "svc-intern.h" + +void svc_fail(struct listitem *li) +{ + if(li->status & CINIT_ST_ONCE_RUN) + li->status = CINIT_ST_ONCE_FAIL; + else { + /* FIXME: do something senseful, record time of dead? */ + li->status = CINIT_ST_RESPAWNING; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_needs_status.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_needs_status.c new file mode 100644 index 00000000..74846a69 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_needs_status.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return status of the needs of this service + */ + +#include /* NULL */ +#include "svc.h" /* service information */ +#include "svc-intern.h" /* service information */ + +int svc_needs_status(struct listitem *svc) +{ + int retval = CINIT_SNS_NEEDS_STARTED; + struct dep *deps = svc->needs; + + if(deps == NULL) return CINIT_SNS_NEEDS_STARTED; /* no needs, everything fine */ + + do { + /* worst case: need failed */ + if((deps->svc->status & CINIT_ST_NEED_FAILD) || + (deps->svc->status & CINIT_ST_ONCE_FAIL) || + (deps->svc->status & CINIT_ST_BAD_ERR) ){ + retval = CINIT_SNS_NEEDS_FAILED; + break; + } + /* services are being started */ + if((deps->svc->status & CINIT_ST_SH_ONCE) || + (deps->svc->status & CINIT_ST_SH_RESPAWN) || + (deps->svc->status & CINIT_ST_ONCE_RUN) ){ + // printf("%s (%ld) waits for %s (%ld)\n",svc->abs_path, svc->status, deps->svc->abs_path, deps->svc->status); + retval = CINIT_SNS_NEEDS_UNFINISHED; + } + deps = deps->next; + } while(deps != svc->needs); + + return retval; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_report_status.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_report_status.c new file mode 100644 index 00000000..3802afe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_report_status.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Tell the world what happened to the service + */ + +#include "intern.h" /* mini_printf */ +#include "messages.h" /* MSG_INTRO_SVC */ + +void svc_report_status(char *svc, char *msg, char *err) +{ + mini_printf(MSG_INTRO_SVC,1); + mini_printf(svc,1); + mini_printf(": ",1); + mini_printf(msg,1); + if(err) { + mini_printf(" (",1); + mini_printf(err,1); + mini_printf(")",1); + } + mini_printf("\n",1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_respawn_check.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_respawn_check.c new file mode 100644 index 00000000..0fae4def --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_respawn_check.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED? not in use. + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#error "NOT IN USE" + +#include /* NULL */ +#include /* PATH_MAX */ +#include "svc.h" + +/* checking for existence is done before! */ +int svc_respawn_check(struct listitem *svc) +{ + char buf[PATH_MAX+1]; + + strcpy(buf,svc->abs_path); + if(!path_append(buf,C_RESPAWN)) return 0 +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_set_status.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_set_status.c new file mode 100644 index 00000000..52f28ac1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_set_status.c @@ -0,0 +1,18 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include "svc-intern.h" + +/* checking for existence is done before! */ +int svc_set_status(struct listitem *li, int status) +{ + /* FIXME: also set time? */ + + return (li->status = status); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_should_respawn.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_should_respawn.c new file mode 100644 index 00000000..91bc592c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_should_respawn.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return whether should respawn or not + */ + +#include "svc-intern.h" +#include "svc.h" + +/* checking for existence is done before! */ +int svc_should_respawn(struct listitem *li) +{ + return (li->status & CINIT_ST_SH_RESPAWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_start.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_start.c new file mode 100644 index 00000000..1c8cdc72 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_start.c @@ -0,0 +1,120 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start a service + */ + +#include /* NULL */ +#include /* fork */ +#include /* strerror */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* nanosleep() */ +//#include /* gettimeofday() */ + +#include "svc.h" /* struct * */ +#include "svc-intern.h" /* struct * */ +#include "messages.h" /* MSG_* */ +#include "intern.h" /* execute_sth */ + +extern int svc_lock; + +//void svc_start(struct listitem *li, int strict) +void svc_start(struct listitem *li, int delay) +{ + char buf[PATH_MAX+1]; + struct timespec ts; + + /* set global lock to avoid race condition */ + svc_lock = 1; + + /* first update status before forking ! */ + if(li->status & CINIT_ST_SH_ONCE) + li->status = CINIT_ST_ONCE_RUN; + else + li->status = CINIT_ST_RESPAWNING; + + /* set start time */ + li->start = time(NULL); + + /* FIXME: All cleanup must go here + * close(fds); + * reset signals + * reset env? + * + * FIXME: Add logging possibility to here + * open (0,1,2) to other processes, if specified */ + + /* BUG: + * the following child may return _before_ + * the fork returns in the parent. + * Thus this pid may not be registered. + * + * And that's the reason why we need the global svc_lock! + */ + li->pid = fork(); + + /********************** parent ************************/ + if(li->pid > 0) { + svc_lock = 0; + printf("%s is at %d\n",li->abs_path, li->pid); + return; + } + + /********************** Error ************************/ + if(li->pid < 0) { + svc_report_status(li->abs_path,MSG_SVC_FORK,strerror(errno)); + svc_set_status(li,CINIT_ST_BAD_ERR); + return; + } + + /********************** Client / fork() ************************/ + /* sleep, if necesseray */ + if(delay) { + ts.tv_sec = delay; + ts.tv_nsec = 0; + + /* FIXME: also report value; int2char */ + printf("Delay: %d\n", delay); + svc_report_status(li->abs_path,MSG_SVC_SLEEP,NULL); + + /* do not need to check for errors, because we can continue anyway */ + /* WRONG: FIXME: look whether to sleep again */ + nanosleep(&ts,NULL); + } + svc_report_status(li->abs_path,MSG_SVC_START,NULL); + + /* length check is done by path_append */ + strcpy(buf,li->abs_path); + if(!path_append(buf,C_ON)) return; + + /* Check for existence */ + li->status = file_exists(buf); + + if(li->status == FE_NOT) { + /* FIXME: remove later */ + printf("********************\n"); + printf("WO/EXE: %s\n",li->abs_path); + printf("********************\n"); + /* probably a problem: we exit too fast, cinit does not + * yet have us in the process list. is that possible? + * => catch with sleep */ + //sleep(2); + _exit(0); /* nothing there? fine! */ + } + + if(li->status == FE_FILE) { + /* FIXME: reset signals: Is this necessary? Or does fork clean it anyway? */ + set_signals(ACT_CLIENT); + + /* and now, fire it up */ + execute_sth(buf); + } else { + /* FIXME: report? */ + /* either no file or an error */ + _exit(1); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_success.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_success.c new file mode 100644 index 00000000..63caeb10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/svc_success.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include /* NULL */ + +#include "svc.h" /* listitem, svc_report_status */ +#include "svc-intern.h" /* listitem, svc_report_status */ +#include "messages.h" /* messages */ + +void svc_success(struct listitem *li) +{ + if(li->status & CINIT_ST_ONCE_RUN) { + svc_report_status(li->abs_path,MSG_SVC_OK_ONCE,NULL); + li->status = CINIT_ST_ONCE_OK; + } else { + svc_report_status(li->abs_path,MSG_SVC_OK_RESPAWN,NULL); + li->status = CINIT_ST_RESPAWNING; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/svc/tree_exec.c b/software/cinit/browse_source/cinit-0.3pre13/src/svc/tree_exec.c new file mode 100644 index 00000000..a2fa2d81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/svc/tree_exec.c @@ -0,0 +1,92 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + + +#include /* NULL */ + +#include /* NULL */ +#include "intern.h" /* mini_printf */ +#include "messages.h" /* messages */ +#include "svc.h" /* svc_init */ +#include "svc-intern.h" /* svc_init */ + +/* some thoughts... + * + * - we already generated the tree, now we need to start it from + * the endings + * + * - after starting the first service we have to care about SIG_CHILD + * to record changes + * + * - we execute all services in parallel without problems, because of + * SIG_CHILD notification + * + * - After successfully starting the service we start the services that + * need or want that service + */ +int tree_exec(struct dep *start) +{ + struct dep *tmp = start; + struct dep *hack; + struct timespec ts; + + mini_printf(MSG_TREE_EXEC,1); + + /* the main starting loop: All services in this list should be + * started, but it is possible that dependent services are in the + * list. In this case simply skip the current service + */ + do { + switch(svc_needs_status(tmp->svc)) { + case CINIT_SNS_NEEDS_STARTED: + /* FIXME: MSG_* */ + svc_report_status(tmp->svc->abs_path,"Finished needs.", NULL); + /* execute service, add dependencies, remowe from list */ + svc_start(tmp->svc,0); + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_NEEDS)) return 0; + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_WANTS)) return 0; + tmp = dep_entry_del(tmp); + break; + + case CINIT_SNS_NEEDS_FAILED: + /* mark service as NEED_FAILD and delete from list */ + svc_report_status(tmp->svc->abs_path,MSG_SVC_NEED_FAIL,NULL); + svc_set_status(tmp->svc,CINIT_ST_NEED_FAILD); + tmp = dep_entry_del(tmp); + break; + + case CINIT_SNS_NEEDS_UNFINISHED: + /* FIXME: continue here! */ + + hack = tmp->svc->needs; + do { + // get needs +// printf("%s waits for %s",tmp->svc->abs_path,hack->svc->abs_path); + // display status of needs + // printf("%s: %ld\n",hack->svc->abs_path,hack->svc->status); + hack = hack->next; + } while(hack != tmp->svc->needs); + + tmp = tmp->next; /* continue with the next item */ + ts.tv_sec = 2; + ts.tv_nsec = 0; + nanosleep(&ts,NULL); + break; + } + /* This case happens, if it's the last service waiting for something */ + /* if(tmp == tmp->next) { + + nanosleep()? + printf("BUUUUUUUUUUUUUG, exit\n"); + break; + } */ + } while(tmp != NULL); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/test/data1.c b/software/cinit/browse_source/cinit-0.3pre13/src/test/data1.c new file mode 100644 index 00000000..341c6615 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/test/data1.c @@ -0,0 +1,47 @@ +#include +#include +#include + +int main() +{ + int a, b, e; + char *c = "/etc/cinit/svc/...", *data; + + int a2, b2; + char *c2; + + a2 = b2 = 0; + + a = 1001; + b = strlen(c); + c2 = malloc(b+1); + if(!c2) return 40; + + e = sizeof(a) + sizeof(b) + b; + + printf("e=%d (b=%d)\n",e,b); + + data = malloc(e); + if(!data) return 20; + + /* in */ + strcpy(data,(char *) &a); + e = sizeof(a); + strcpy(&data[e],(char *) &b); + e += sizeof(b); + strcpy(&data[e],c); + + /* out */ + strncpy((char *) &a2,data,sizeof(a2)); + printf("a2=%d\n",a2); + e = sizeof(a2); + + strncpy((char *) &b2,&data[e],sizeof(b2)); + printf("b2=%d\n",b2); + e += sizeof(b2); + + strncpy(c2,&data[e],b2); + printf("c2=%s\n",c2); + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/test/fork-latency.c b/software/cinit/browse_source/cinit-0.3pre13/src/test/fork-latency.c new file mode 100644 index 00000000..7d813479 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/test/fork-latency.c @@ -0,0 +1,104 @@ +/************* + * + * A very small program to show that the child() of a fork() + * proceess can exit before fork() returns in the parent + * + * Nico Schottelius, Copying: GPLv3, 20070925 + * + * I run it this way: ./fork-latency | grep "child exited" | sort | uniq | wc -l + * => Number of children that exited before we recorded them! + * + * Or: ./fork-latency | grep "found" | sort | uniq | wc -l + * => children, which exited after fork() returned. + * + * Some interesting facts: + * + * - Very often the children exit before fork() returns: + * + * [8:58] denkbrett:test% ./fork-latency | grep "found" | sort | uniq | wc -l + * 2 + * + * - It looks like waitpid() returns more than once the same pid (MAX=500): + * + * [9:01] denkbrett:test% ./fork-latency | grep "child exited before fork" | wc -l + * 8435 + * + * [9:02] denkbrett:test% ./fork-latency | grep "found" | wc -l + * 111 + * + * [9:02] denkbrett:test% ./fork-latency | grep "found" > TMP + * [9:03] denkbrett:test% head TMP + * (475) found + * (475) found + * (475) found + * (374) found + * (374) found + * (374) found + * (374) found + * (373) found + * (374) found + * (374) found + * + * + * Imho waitpid() should return 0, because we specified WNOHANG and + * SA_NOCLDSTOP, if no child changed status + */ + + +#include /* fork() */ +#include /* sigaction, sigemtpyset */ +#include /* waitpid */ +#include /* printf, NULL */ + +#define MAX 500 /* number of forks */ + +pid_t list[MAX]; +int i=MAX; + +void sig_child(int status) +{ + int o; + int found; + pid_t pid; + + while((pid = waitpid(-1, &status, WNOHANG)) > 0) { + if(pid == -1) return; /* ignore errors */ + + found = 0; + // no need to search the whole list, use o = i instead + //for(o = 0; o < MAX; o++) { + for(o = i; o < MAX; o++) { + if(list[o] == pid) { + found = 1; + break; + } + } + if(found) { + printf("(%d) found\n", i); + } else { + printf("(%d) child exited before fork() returned\n", i); + } + } +} + +int main() +{ + struct sigaction sa; + sigemptyset(&sa.sa_mask); + + sa.sa_flags = 0; + sa.sa_handler = sig_child; + sa.sa_flags = SA_NOCLDSTOP; + sigaction(SIGCHLD,&sa,NULL); + + for(i=MAX-1; i >= 0; i--) list[i] = 0; + + i=MAX; + + for(i = MAX-1;i >= 0; i--) { + list[i] = fork(); + + /* child exists immediately */ + if(list[i] == 0) return 0; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/test/memcpy.c b/software/cinit/browse_source/cinit-0.3pre13/src/test/memcpy.c new file mode 100644 index 00000000..b3abfcb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/test/memcpy.c @@ -0,0 +1,46 @@ +#include /* memcpy() */ +#include + +struct cinit_answer { + int options; + char data[2045]; +}; + +int f1(struct cinit_answer *buf); +int f2(struct cinit_answer *buf); + + +int f2(struct cinit_answer *buf) +{ + struct cinit_answer msg; + + printf("f2: %p\n",buf); + + msg.options = 12; + strcpy(msg.data,"stringit"); + + printf("addr= %p\n", memcpy(buf,&msg,sizeof(*buf))); + + printf("ok\n"); + + return 1; +} + +int f1(struct cinit_answer *buf) +{ + printf("f1: %p\n",buf); + printf("ret=%d\n",f2(buf)); + + return 1; +} + +int main() +{ + struct cinit_answer test; + + if(!f1(&test)) return 1; + + printf("s: %s d: %d\n",test.data, test.options); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/test/test-newline.c b/software/cinit/browse_source/cinit-0.3pre13/src/test/test-newline.c new file mode 100644 index 00000000..95e03a36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/test/test-newline.c @@ -0,0 +1,29 @@ +#include +#include +#include +#include + +char *strip_final_newline(char *test1); + +int main() +{ + //char *test1 = "zeile1\nzeile2\n"; + //char *test2 = "zeile1\nzeile2\nzeile3"; + char *test1; + char *test2; + + test1 = malloc(50); + test2 = malloc(50); + + strcpy(test1,"zeile1\nzeile2\n"); + strcpy(test2,"zeile1\nzeile2\nzeile3"); + + char *result; + result = strip_final_newline(test1); + printf("A%sA\n",result); + + result = strip_final_newline(test2); + printf("B%sB\n",result); + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/test/test_build_argv+link.c b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_build_argv+link.c new file mode 100644 index 00000000..f74b4f36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_build_argv+link.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec_link"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/test/test_build_argv.c b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_build_argv.c new file mode 100644 index 00000000..3938aa0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_build_argv.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec new file mode 100644 index 00000000..e5cf3f01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec @@ -0,0 +1,7 @@ +#!/bin/sh +# Nico Schottelius +# Test-skript for cinit + +echo '$0': "$0" +echo '$@': "$@" +echo 'cinit_is_great:' $cinit_is_great diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec.env b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec.env new file mode 100644 index 00000000..853e0663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec.env @@ -0,0 +1 @@ +cinit_is_great=yes diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec.params b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec.params new file mode 100644 index 00000000..afe0f2ef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec.params @@ -0,0 +1 @@ +Let's see if we read the arguments....YES! diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec_link b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec_link new file mode 120000 index 00000000..c2ec9306 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec_link @@ -0,0 +1 @@ +test_exec \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec_link.env b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec_link.env new file mode 120000 index 00000000..30ea4990 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec_link.env @@ -0,0 +1 @@ +test_exec.env \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec_link.params b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec_link.params new file mode 120000 index 00000000..0b77c256 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_exec_link.params @@ -0,0 +1 @@ +test_exec.params \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/test/test_gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_gen_svc_tree.c new file mode 100644 index 00000000..c13c46b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_gen_svc_tree.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test gen_svc_tree + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + gen_svc_tree("/etc/cinit/svc/init"); + list_display_all(); +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/test/test_openreadclose.c b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_openreadclose.c new file mode 100644 index 00000000..2f722da5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/test/test_openreadclose.c @@ -0,0 +1,16 @@ +#include + +int openreadclose(char *filename, char **where); + +int main() +{ + char *data; + char *file = "test_openreadclose.c"; + + openreadclose(file,&data); + + printf("%s\n",data); + + return 1; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/test/tired.c b/software/cinit/browse_source/cinit-0.3pre13/src/test/tired.c new file mode 100644 index 00000000..112424ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/test/tired.c @@ -0,0 +1,22 @@ +#include + +struct msgq_server_short { + long mtype; + int mu; +}; + +main() +{ + struct msgq_server_short t1, *t2; + + t2 = &t1; + + int a = sizeof(t1); + int b = sizeof(t2); + int c = sizeof(*t2); + + printf("a=%d,b=%d,c=%d\n",a,b,c); + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/src/test/transfer_structure.c b/software/cinit/browse_source/cinit-0.3pre13/src/test/transfer_structure.c new file mode 100644 index 00000000..5e95b997 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/src/test/transfer_structure.c @@ -0,0 +1,56 @@ +#include +#include +#include +#include + +struct test { + char buf[2048]; + int cmd; +}; + +struct badtest { + char *buf; + int cmd; +}; + +#define PATH "/etc/cinit/svc/local-tuning/udev" + +int main() +{ + struct test cmd; + struct badtest nocmd; + int pfd[2]; + int tmp; + + strcpy(cmd.buf,"/which/service/to/disable"); + cmd.cmd = 42; + + if(pipe(pfd) == -1) return 1; + nocmd.cmd = 42; + nocmd.buf = malloc(strlen(PATH)+1); + strcpy(nocmd.buf,PATH); + + + if(fork() > 1) { + tmp = write(pfd[1],&cmd,sizeof(cmd)); + printf("PA: tmp=%d\n",tmp); + + tmp = write(pfd[1],&nocmd,sizeof(nocmd)); + printf("PA: tmp2=%d\n",tmp); + } else { + strcpy(cmd.buf,""); + cmd.cmd = 0; + + tmp = read(pfd[0],&cmd,sizeof(cmd)); + printf("CH: tmp = %d, cmd = %d, buf = %s\n",tmp,cmd.cmd,cmd.buf); + + free(nocmd.buf); + nocmd.cmd = 0; + + tmp = read(pfd[0],&nocmd,sizeof(nocmd)); + printf("CH: tmp = %d, cmd = %d, buf = %s\n",tmp,nocmd.cmd,nocmd.buf); + } + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre13/util/README b/software/cinit/browse_source/cinit-0.3pre13/util/README new file mode 100644 index 00000000..f66e0ddb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/util/README @@ -0,0 +1,4 @@ +-- OBSOLETED -- + -> This code is not in use in cinit-0.3 anymore! +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.3pre13/util/ccontrol.c b/software/cinit/browse_source/cinit-0.3pre13/util/ccontrol.c new file mode 100644 index 00000000..95bc5212 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/util/ccontrol.c @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * ccontrol: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define USAGE_TEXT "ccontrol - control cinit\n\n" \ + "Usage:\n\nccontrol -[phurs]\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-u\t- (update) Reboot (warm) and update cinit\n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n\n" \ + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * ccontrol: control cinit + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 2) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + + switch(argv[1][1]) { + case 'p': /* power off */ + LOG(MSG_POWER_OFF); + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + LOG(MSG_HALT); + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + LOG(MSG_REBOOT); + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + LOG(MSG_RESCUE); + msg_reboot(CMD_RESCUE); + break; + + case 'u': /* update */ + LOG(MSG_UPDATE); + msg_reboot(CMD_UPDATE); + break; + + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* cinit-0.2 return codes implemented - nothing changed*/ diff --git a/software/cinit/browse_source/cinit-0.3pre13/util/cservice.c b/software/cinit/browse_source/cinit-0.3pre13/util/cservice.c new file mode 100644 index 00000000..66be6563 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/util/cservice.c @@ -0,0 +1,164 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * cservice: control cinit services + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit services + */ + +#define USAGE_TEXT "cservice - start and stop cinit services\n\n" \ + "cservice -[ear] \n" \ + "\t-e\t- (ein,on ) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n" \ + "\t-r\t- (restart) stop and start a service\n" + +/*********************************************************************** + * fuzzy_path: allow other kinds of path specification .. + */ +char *fuzzy_path(char *rpath) +{ + char pathtmp[PATH_MAX]; + char *re = NULL; + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return NULL; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(rpath); + return NULL; + } + + re = malloc( strlen(pathtmp) + 1); + + if(re != NULL) { + strcpy(re,pathtmp); + } + + return re; +} + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + char *real_name = NULL; + + /* argv */ + if(argc != 3) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + if(strlen(argv[1]) != 2) C_USAGE(MSG_ERR_ARGS_LEN); + + real_name = fuzzy_path(argv[2]); + + /* fuzzy path failed, exit! */ + if(real_name == NULL) { + return 1; + } + switch(argv[1][1]) { + case 'a': /* aus */ + case 'r': /* restart */ + switch( msg_svc_on_off(real_name,CMD_STOP_SVC) ) { + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_OFF: + SERVICE_LOG(real_name,LOG_SVC_STOPED); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + /* FIX THIS AFTER cinit-0.2 */ + case RT_TMPNOW: + case RT_ERR: + case RT_SVC_FAILED: + case RT_UNSPEC: + case RT_SUCCESS: + case ST_NEED_FAIL: + case ST_TMP: + case ST_ONCE: + case RT_NOTEXIST: + case ST_RESPAWN: +// SERVICE_LOG(real_name,"Ein bekanntest ding"); + break; +/* default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; */ + } + if( argv[1][1] == 'a') break; /* only continue if restarting */ + + case 'e': /* ein */ + switch (run_svc(real_name)) { /* run_svc fuzzys itself */ + case RT_NOTEXIST: + SERVICE_LOG(real_name,LOG_SVC_NOTEXIST); + break; + case RT_SVC_FAILED: + SERVICE_LOG(real_name,LOG_SVC_FAILED); + break; + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_ONCE: + SERVICE_LOG(real_name,LOG_SVC_ONCE); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + case ST_RESPAWN: + SERVICE_LOG(real_name,LOG_SVC_RESPAWN); + break; + case ST_NEED_FAIL: + SERVICE_LOG(real_name,LOG_NEED_FAIL); + break; + default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; + } + break; + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* uses cinit-0.2 return code style */ diff --git a/software/cinit/browse_source/cinit-0.3pre13/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.3pre13/util/msg_reboot.c new file mode 100644 index 00000000..efe78ec6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre13/util/msg_reboot.c @@ -0,0 +1,21 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + if(!begin_msg(cmd)) return 0; + close(sock); + return 1; +} +/* clean for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre14/ b/software/cinit/browse_source/cinit-0.3pre14/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.3pre14/.gitignore b/software/cinit/browse_source/cinit-0.3pre14/.gitignore new file mode 100644 index 00000000..2afe5e76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/.gitignore @@ -0,0 +1,32 @@ +*.o +*.a +*0? +MT +ddoc +contrib+tools/cinit.graph.text +config.h +sbin +tmp +os/current +tmpbin +src/os/current +src/ipc/current +src/cinit +*.html +*.htm +*.man +*.texi +*.texi +*.docbook +src/halt.kill +src/poweroff.kill +src/reboot.kill +doc/man/*.[0-9] +doc/man/*.xml +src/cmd +.*.swp +.exclude +src/.configured +src/cinit.halt +src/cinit.poweroff +src/cinit.reboot diff --git a/software/cinit/browse_source/cinit-0.3pre14/CHANGES b/software/cinit/browse_source/cinit-0.3pre14/CHANGES new file mode 100644 index 00000000..ce8f4b43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/CHANGES @@ -0,0 +1,108 @@ +cinit-0.3pre14: 2008-03-17 + - Added test-suite for cmd + - Added support to shutdown services in cinit and cmd + (without needs and wants) + - Added linux-sysvinit wrapper for shutdown (See + scripts/wrapper/linux-sysvinit/shutdown) + - Rewrote most parts of cmd (to make it more beautiful) + - Changed license to GPL 3.0 + +cinit-0.3pre13: 2007-09-26 + - Added -V (get cmd version), -h (help), -p (get pid) to cmd + - Cleaned up namemsage in msgq.h + - Added global service lock + - Splitted of svc.h to svc.h, svc-intern.h and svc-messages.h + - Prepared logic splitoff from cinit_ipc_listen() + - Fixed bug: fork() has a general race condition + (see src/test/fork-latency.c) through use of global lock + +cinit-0.3pre12: 2007-09-06 + - Added DESTDIR support + - Added support to get service status via cmd: cmd -s + * also supports relative paths to CINIT_DIR ("/etc/cinit") + - Fixed git clone problem: hooks are needed for dumb git + - Fixed bug: We did not wait for services to finsh, which we depend on being + ran once. + +cinit-0.3pre11: 2007-09-01 + - Added basic communication: + * client binary "cmd" with argument -v returns cinit-version + - Updated {halt,reboot,poweroff}.kill + +cinit-0.3pre10: + - Fixed make install target + - Added halt.kill, poweroff.kill and reboot.kill (including manpages!) + - Fixed invalid comparision in core/cinit.c + - Be verbose: Print what we execute + - Updated documentation + +cinit-0.3pre9: 2007-05-15 + - Implemented sleeping before respawn (static delay) + - Report broken links on execution, but ignore empty services + - Cleaned up message queue error reporting + +cinit-0.3pre8: 2007-04-06 + - Updated and merged documentation: Codingstyle and Codingguide + - Cleaned sigaction-code (fixes segfault on glibc) + - Cleaned object listings + - Added notifications at shutdown + - Fixed status check + +cinit-0.3pre7: 2007-02-17 + - Many code cleanups + - Fixed glibc problem with sigaction (for details view src/core/set_signals.c) + - Added general shutdown support (will *NOT* yet stop services, + but still stop your system) + +cinit-0.3pre6: + - Many code cleanups + - Added user documentation and cleaned up documentation in general + +cinit-0.3pre5: + - Finished new SIGCHLD handler + - First cleanups for real release. + - This version is the first 0.3pre version that can handle respawn! + +cinit-0.3pre4: + - Re-implemented execution of services. + - This version is the first 0.3pre version that COULD bootup your system! + +cinit-0.3pre3: + - Finished execution all services via the reversed service tree. + +cinit-0.3pre2: + - Finished generation of the dependency tree. + +cinit-0.3pre1: + - cinit should now compile on mostly all unices + - introduced much new code + - THIS IS A DEVELOPER RELEASE, NOT USABLE IN PRODUCTION ENVIRONMENTS. + +cinit-0.2.1: (Bugfix release) + - Fixed problem in contrib+tools/Makefile when installing + - added many new scripts to convert sys-v-init, which are still early beta + (see bin/cinit.merge.sysvinit-debian-sid) + +cinit-0.2: + - Much more verbose error reporting + - You can now also disable 'once ran' services, + - You can restart services with csevice -r + - Online speech in German is available + - C_DELAY support - variable delay for sending SIGKILL after SIGTERM + - First /etc/csys configuration example (wasserstoff) is available + - a Mailing list was created + - Added tools to analyze cinit configuration + (cinit-vis.pl, cinit.graph.text.c) + - Added tools to import and export configuration to XML + (make.cconfig.from.xml.rb,cconfig.graph.xml.rb) + - Removed unecessary signalling + - Added many helper scripts to install services (cinit.install.service*) + - Fixed many small bugs in old helper scripts (cinit.add.getty, cinit.get-conf, ...) + - Added ccontrol, which allows to control cinit + - Added update (-u) via ccontrol + - Stripped cservice, which now "only" controls services + - Removed swapoff from cinit code, should be handled by off + - Much better error and processing descriptions + - A bit more verbose reporting + - Restructured run_svc, now with better error detection + - Removed Kernel panic, when halting system diff --git a/software/cinit/browse_source/cinit-0.3pre14/COPYING b/software/cinit/browse_source/cinit-0.3pre14/COPYING new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/COPYING @@ -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/software/cinit/browse_source/cinit-0.3pre14/CREDITS b/software/cinit/browse_source/cinit-0.3pre14/CREDITS new file mode 100644 index 00000000..febdcf4b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/CREDITS @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: ls -l) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete + * providing cinit-vs.pl to visualize the cinit-tree +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) +Sandro Koechli + * testing, testing and testing cinit and cinit documentation +Marcus Wagner + * building and maintaining the Debian package +Peter Portmann + * testing cinit and documentation, writing cinit.graph.text in C, other coding +Tonnerre Lombard + * NetBSD support (host + hints) diff --git a/software/cinit/browse_source/cinit-0.3pre14/Changelog b/software/cinit/browse_source/cinit-0.3pre14/Changelog new file mode 100644 index 00000000..0fbf76f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/Changelog @@ -0,0 +1,10 @@ +Mo Okt 3 00:19:40 CEST 2005 + *Changelog can now be found in git database (cg-log) +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.3pre14/Makefile b/software/cinit/browse_source/cinit-0.3pre14/Makefile new file mode 100644 index 00000000..c55cf030 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/Makefile @@ -0,0 +1,80 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# Directories and files +CDIRS=src doc + +# +# Targets +# + +# +# Warn per default, make sure the user knows what she does +# +warn: + @cat doc/.buildwarn + +all: sources documentation +dev-all: all sizecheck + +install clean dist distclean: + @for subdir in ${CDIRS}; do \ + echo "Making $@ in $$subdir"; \ + (cd $$subdir && ${MAKE} ${MAKEFLAGS} $@) || break; \ + done; + +.PHONY: sources +sources: + ${MAKE} -C src all + +.PHONY: documentation +documentation: + ${MAKE} -C doc documentation + +sizecheck: sources + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l src/cinit > $$FILE; cat $$FILE; \ + cg-add $$FILE + cg-commit $$FILE -m "Size added" + #cg-commit $$FILE -m "Size: $$(awk '{ print $5 }' $$FILE)" + +source-size: clean + @echo -n "Source size (in KiB): " + @du -s src/ | awk '{ sum+=$$1 } END { print sum }' + + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + +config: + @./bin/cinit.configure.os + @./bin/cinit.configure.tools + @./bin/cinit.configure.ipc + @touch src/.configured + + +################################################################################ +# Tests +# +tests: + # does not work, due getting killed, due to design :-) + #./scripts/internal/compile_run_as_compiler.sh + ./scripts/internal/test_on_hosts.sh ./scripts/internal/compile_test.sh + +################################################################################ +# +# Developer targets +# + +release: ./scripts/internal/cinit.release + ./scripts/internal/cinit.release now + +scripts/internal/cinit.release: ./scripts/internal/test-cmd.sh + ./scripts/internal/test-cmd.sh + diff --git a/software/cinit/browse_source/cinit-0.3pre14/NEXTTODO b/software/cinit/browse_source/cinit-0.3pre14/NEXTTODO new file mode 100644 index 00000000..3942d764 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/NEXTTODO @@ -0,0 +1,48 @@ +- Add service start/stop to cmd +-> then continue in cinit itself. + + cinit_svc_disable.c + +- remove malloc for paths + use + +- cleanly define functions for cmd + +-------------------------------------------------------------------------------- +- svc_stop_wait() + => calls svc_stop() and waits until the process + is finished + => pay attention for child handler! + => wait for that specific PID! + => use global lock? +- answer_svc_stop(char *svc, int method) + => is called by the IPC methods + => checks whether the service exists + => returns the status of the service (NOT_EXISTS or + the new one) + => calls svc_stop_wait(), which returns + => method = + o including needed_by + o including wanted_by + o including needed_by and wanted_by + o only the service + +- cinit blocking while shutting down + => not good! + => only needed when being in ipc! + => otherwise tree_stop() catches that again. +- +- Documentate off exit codes: + * 0: successfully stopped + * 1: internal error: service status unknown + * 2: ...? + +Done for pre14: +- svc_stop() + => stops an existing service + => sets status + => calls "off" +- svc_stop_deps() => takes care about dependencies + +- Add comment about path_absolute in manpage of cmd => requires the directory + to be there. diff --git a/software/cinit/browse_source/cinit-0.3pre14/README b/software/cinit/browse_source/cinit-0.3pre14/README new file mode 100644 index 00000000..00f2651b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/README @@ -0,0 +1,106 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Unix +- true dependencies (soft and hard!) +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +FIXME: Add mailing list here + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre14/ROADMAP b/software/cinit/browse_source/cinit-0.3pre14/ROADMAP new file mode 100644 index 00000000..0bf98337 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/ROADMAP @@ -0,0 +1,115 @@ +-------------------------------------------------------------------------------- +THIS DOCUMENT SHOULD VANISH AS SOON AS EVERYTHING IS FINE +-------------------------------------------------------------------------------- + +Timeline +--------- + * ~ End of October 2006: Reunderstand the code, manifest changes [DONE] + * ~ Mid of November 2006: Have a compile-able cinit [DONE] + * ~ End of November 2006: Have a testsystem booting cinit [DONE] + * ~ Mid of December 2006: Have production stable cinit + - Begin with migration scripts + - publish installable pre-releases + * ~ End of December 2006: Have some generic migration scripts + - Have (different) understanable documents + * ~ Mid of January 2007: Begin official release of cinit-0.3 + + + + +Versions +--------- + +0.3: +~~~ + code: Make cinit compile again :) [DONE] + code: double check to remove Linux specific source from general tree [DONE] + code: seperate ipc from the rest [DONE] + code: fix / check signal handlers [DONE] + code: cleanup makefile [DONE] + code: add porting code: add support for any unix in general [DONE] + code: stabilize code, remove experimenting parts + code: remove delay support, let off/off.params do that. [DONE] + code: add special directory (/etc/cinit/conf?) for non-services [DONE] + code: move production code to src/ [DONE] + end user doc: add warning for special binaries and hint for r/o only + amiga alike systems + + doc: begin to merge old documents into new structure and move them + to the doc/ancient directory [DONE] + +0.3.1: + devel doc: how to write merging scripts + devel doc: merging framework: + - minimal (do not look at the current configuration, build minimal) + - use current system (slowly, may use old scripts) + - rebuilt current system (recommened) + + tools: general framework for merging + end user doc: merging old init to cinit + + code: add porting code: add support for freebsd + code: better readable output: + -> starting + [ started once ] + [ respawning ] + [ failed ] (+ REASON!) + [ needs failed ] (which ones) + + -> stopping + [ stopping ] (for dependencies) + [ stopped ] ? + [ not running ] ? + + code: export profile information (CINIT_PROFILE) + end user doc: using different profiles in user space + end user doc: write examples for profiles: + o switch ssh known_hosts based on profile + o different proxy settings in browsers + - environment + - mozilla settings + o start samba (for lan) + o start samba (for company lan) + o use nis and nfs (company profile) + + doc: continue to merge old documents into new structure and move them + to the doc/ancient directory +0.3.2: + end user doc: what to read to use cinit + end user doc: installing cinit + end user doc: configuring cinit + tools: writing cinit-config (graphical (dialog based?) configuration tool) + code: add porting code: add support for openbsd + + code: add reverse dependency chain (or earlier?) [DONE] + code: better support for external tools + o neustarten + o mit herunterfahren + o mit herunterfahren und allen Diensten, die abhaengen + o ohne herunterfahren + o Statische Daten + o pid vom Daemon + o pid vom einmal ausgefuehrten Programm + + + doc: end to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.3: + devel doc: writing an init system + devel doc: the conf/-configuration system + + code: check conf/ and perhaps rewrite b0rken english sentences + + code / doc: add logging support for services -> use multilog? + code: add porting code: add support for netbsd + +0.4: + first stable, tested, well documented version. + + code: check for optimisation + + other: compare with other init systems + +0.4.x: + code: add porting code: add support for other unices diff --git a/software/cinit/browse_source/cinit-0.3pre14/TODO b/software/cinit/browse_source/cinit-0.3pre14/TODO new file mode 100644 index 00000000..cdb08485 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/TODO @@ -0,0 +1,307 @@ +-------------------------------------------------------------------------------- +- define service status in one document, so repeatition stops! +-------------------------------------------------------------------------------- +- add error handling to cinit.install.binary +-------------------------------------------------------------------------------- +- add code do implement stopping / restarting with dependency tree +-------------------------------------------------------------------------------- +# cinit.create.empty.service: can only be started from the bin directory + +- Fix Switching services off !! +- Error codes when shutting down a service? +- Delay dokumentieren +- no_kill dokumentieren + +- on.out, on.err, on.in? + -> reading/writing from/to files + +- implement "no_kill" until cinit-0.2 or 0.3? + + +-------------------------------------------------------------------------------- +- Source Logic issues + - remove FIXME entries (and what should be fixed, too) +-------------------------------------------------------------------------------- +Helper scripts, rausgenommen aus Der Doku, muessen fuer +cinit-0.3 ueberprueft werden: + +Configure help scripts +~~~~~~~~~~~~~~~~~~~~~~ +cinit-conf later +Using prepared scripts + +In the bin/ directory of this tarball you'll find at least: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +Optimisations +------------- + - Installing cinit + o compiling cinit from source + o debian / gentoo + - Configuring + * add scripts! see below + - define coding guidelines -> general, with url? + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml + +tree_exec +~~~~~~~~~ +- only check dependencies (=needs) after the basic run? + +Documentation +------------- + +developer +~~~~~~~~~ +- ST_IN_LIST == startup marker, used to (NOT) insert services into startup +- dep_needs_wants_add is used to add dependencies of a service to the general + starter list + + +user +---- +- do we really need swapoff? remove umount, swapoff! + * to services! + -> they have to do it! +- dependencies with leading '.' (dot) are ignored. +- about cinit-configuration structure + * cconfig + * svc/ + * special/ (or however we called it) + - panic + - halt + - poweroff + - reboot + +-------------------------------------------------------------------------------- +FAQ +~~~ +- DOKU: what happens when a service does not terminate.... + und er als once drin ist +--> Wenn kein ReSPAWN und der Prozess beendet sich nicht, + dann haengt init! + +- multuicall probleme -> busysbox --> GIBT ES NICHT!! + ---> DOKU DAZU! mit links, doppelt links, aus test + ---> erklaeren, dass es unproblematisch ist! + +-------------------------------------------------------------------------------- +csvc: +11:09 < folken23> telmich: oder service allready started. +-------------------------------------------------------------------------------- +cinit: +11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet + werden konnte. +11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0 + zurueckgeworfen. + ---> errno in execute_sth! + +Child handlin +~~~~~~~~~~~~~g +- free() everything before starting child + +Later +~~~~~ +- close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? + -> yep, clean environment! +- logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? +-------------------------------------------------------------------------------- +- Doc + * main.text -> cleanup / remove / split + * config-dirs + * FAQ + * ideas + * meta.dependencies + - config/hints/meta depps + * optimising + - integrate into other + * README.text + - update + * replacing.init + - update / integrate + * special-services.text + - into configuring/hints? + * TODO + - into paths, if necessary + * updating.cinit + - update as soon as update is possible? + * using.rescue + - update as soon as update is possible? + * 'os-integration.text' + * 'daemons.backgrounding' + * There are some hints on how to migrate to cinit in general and also + some os specific help in the file 'migrating-init-systems.text', +- CODECHECK: + * what happens with the wants of the last services? + - are they added? + - are they added at the correct position? +- scripts + * `cinit.check.config` (doc/user/configuring.cinit.text) + -> circular depedencies! +- Doc.next: + - installing: report! + -> write report script. +- Doc later + * current-init-problems.text + - current-init-problems.text explains why cinit does not use nor recommends the use of shell scripts. + * special-services.text + +- Begin documentation + * Check Makefile + * Integrate Makefile into main Makefile + * create manpage + * Write a small manual + - install + - configure + - boot (different OS) + * generate asciidoc! +- Doc way: + * installing + * configuring + - testconfig! + * booting + - different OS / bootloader + * debugging +- Shutdomn code: + * begin at init, then shutdown wants/needs, ... +- check that the new wants and need elements are nserted the other way round + * we go to next, elements must be put before us! +- replace cinit_ipc_logon with cinit_ipc_init... + * delay ipc code -> after start! + +- Cleanup / create object lists + object-lists/ + cinit + cservice + ccontrol + cinit.halt + cinit.reboot + cinit.shutdown (shell script?!?) + + +TODO.pre9: + + Done: + - pfad korrigieren (home/..../ -> cinit.release) + - cg-add nicht aufrufen beim make all! +ser/nico/oeffentlich/computer/projekte/cinit/cinit-0.3pre8/doc' +FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l src/cinit > $FILE; cat $FILE; \ + cg-add $FILE +-rwx------ 1 nico nico 72601 2007-04-06 17:52 src/cinit +There is no GIT repository here (.git not found) +make: *** [sizecheck] Fehler 1 + - setup VM for testing: qemu/kvm/virtualbox (no commercial bloaty) + -> uml! + - sleep when respawnig! + -> static delay of five seconds + do_reboot.c: + is ipc closed? -> check! => done! + - ignore msgrcv: Interrupted system call +Session terminated, killing shell...msgq-destroy: Invalid argument +msgq-destroy: Invalid argument + - do not print an error if /etc/cinit/conf/last is non-existent! + => print it. Do not not print it, as this can aid debugging. + include locking via shm, remove test on pid1 + => not necessary imho currently + + +TODO.pre10: + Done: + cleanup client/ comm/ contrib+tools/ util/ tmp/ + Debugging cinit-configuration: + ls -lR /etc/cinit + or: cinit.read.... + +TODO.pre11: + Remove some debugging, re-introduce DEBUG() macro.. + Fix doc: + + make dist should cleanup cc / ld to sane values? + or do I experiement in tmp/*? + + http://linux.schottelius.org/cinit/browse_source/current/doc/user/config-dirs + conf/c_halt + + IPC: + * check msqg-code + * documentate the ipc functions: update devel/ipc.text + * check cinit_read_command() (devel/ipc.h) + + do_reboot.c: + write cinit_svc_shutdown + - implement do_reboot() + * so not only booting with cinit works, but also the shutdown + - write libcinit for use in cmd() + - find out why gettimeofday() and time() do strange things when called in SIG_CHLD + => bug opened in glibc, got to code testprogram + - write cinit.conf.check + * report broken links in needs/wants + * report circular dependencies + - pretty print, reporting is ugly! + Add handler for ctrl+alt+delete + * document in paths + * check whether there's an os-unspecific way to do that + cleanup bin/ + - write sys-v-init-shutdown-wrapper + * shutdown + * halt + * reboot + * poweroff + - write manpages for + - *.kill + - cmd + + install: + make install => does not overwrite critical targets + * cinit + * *.kill (see client/*) + * cmd + make force-install => overwrites /sbin/{halt,poweroff,reboot}? + => with script that wraps cmd + make install-template: + * creates categories + make install-miniconf: + * creates categories + * creates one service starting a shell (depending on the OS!) + + cleanup src/ + finish ipc code so clients can access cinit + implement CMD_INFO (see comm.h) + + +TODO.pre12: + Check and clean doc/ + Remove *TODO*+ROADMAP and leave behin doc/TODO + +TODO.pre13: + code cmd=(cservice ccontrol halt reboot shutdown poweroff) + => halt/r/... also with kill ... + Test, release and prepare for final cinit-0.3 + +TODO.0.3.1 + add log support + cinit logs to + -> shm saver + services log to + +TODO unclear + - create migration scripts diff --git a/software/cinit/browse_source/cinit-0.3pre14/TODO.doc b/software/cinit/browse_source/cinit-0.3pre14/TODO.doc new file mode 100644 index 00000000..a170a50d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/TODO.doc @@ -0,0 +1,29 @@ +- doc/user/paths.text + * finish + * add examples +- add cross-compilation howto +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + +caveats +------- + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- cinit ignores the Keyboard request +- Currently there is no support to react on 'ctr+alt+del': +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + diff --git a/software/cinit/browse_source/cinit-0.3pre14/TODO.lucky b/software/cinit/browse_source/cinit-0.3pre14/TODO.lucky new file mode 100644 index 00000000..3ac57ee5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/TODO.lucky @@ -0,0 +1,16 @@ +18:18 hey, ich hatte gerade ein wenig lust mich mit cinit zu befassen, hier also mein + kleiner bug-report: in src/include fehlt cinit.h, (alles auf das aktuelle + tarball bezogen), ich hab's aus pre9 genommen, hatte ich noch da, da git nicht + wollte(Cannot get remote repository information.), ausserdem hast du _ statt - + in doc/man/cinit.text verwendet bei der email, das mag docbook nicht, die + beiden zeilen habe ich korrigiert, danch ging schon mal make all und auch make + ins +18:35 und warum installiert er die man pages nicht mit? +07:20 so, kleiner zwischenbericht, das argv problem bei lvm gibt es mit pre10 nicht + mehr, d.h. dass man auch kein shell-skript mehr braucht um lvm/luks-devices zu + mounten :) +07:20 soweit sieht eig. alles gut aus +07:21 wenn das so bleibt, dann werd' ich dauerhaft auf cinit umsteigen :) +07:21 und wenn sich die gelegenheit bietet, dann stell ich cinit auch mal in der + info-ag von unserer schule vor :) + diff --git a/software/cinit/browse_source/cinit-0.3pre14/TODO.optimisations b/software/cinit/browse_source/cinit-0.3pre14/TODO.optimisations new file mode 100644 index 00000000..8a686b4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/TODO.optimisations @@ -0,0 +1,19 @@ +This file describes enhancements or optimisations that +could be done / checked. + + +Code +---- + +fork() +~~~~~~ + +Security +^^^^^^^^^ +- Closed fds? +- Close other things? +- IPC? + +Cleanup +^^^^^^^ +- Do we have to reset signals or is that done anyway by fork()? diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cdoc-man.sh b/software/cinit/browse_source/cinit-0.3pre14/bin/cdoc-man.sh new file mode 100644 index 00000000..fc1adde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cdoc-man.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Nico Schottelius +# Date: 21-Aug-2005 +# Last Modified: - +# + +set -e + +[ $# -ne 1 ] && exit 23 + +SRC=$1 + +cd "$SRC" + +# +# Title heading +# +echo .TH $(cat "meta/name" "meta/man_section" "meta/date") + +# +# Name +# +echo .SH NAME +echo $(cat meta/name) - $(cat meta/short_description) + +# +# Synopsis +# +echo .SH SYNOPSIS +echo $(cat path) $(cat parameters) + +# +# description +# +echo .SH DESCRIPTION +echo $(cat long_description) + +# +# availability +# +for section in availability examples "see also" author; do + if [ -f "$section" ]; then + echo .SH $section | tr '[a-z]' '[A-Z]' + cat "$section" + fi +done + +# +# files +# +if [ -f files ]; then + echo .SH FILES + cat files | sed 's/\(.*\)/.IP "\1" /' +fi + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.add.dependency new file mode 100644 index 00000000..7bc9cc65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.add.dependency @@ -0,0 +1,51 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or wants Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +# adding 'wishes' for x-mas and requires for 'the mass' and 'tv' +case $DEP in + wishes|wants) DEP=$C_WANTS ;; + needs|requires) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could someone PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEP_DIR="${BASEDIR}/${SVC_A}/${DEP}" + +if [ ! -d "$DEP_DIR" ]; then + echo "$DEP_DIR does not exist, creating..." + mkdir "$DEP_DIR" + if [ $? -ne 0 ]; then + echo "Error occured due to creating directory. Exiting." + exit 1 + fi +fi + +DEST="${DEP_DIR}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.add.getty new file mode 100644 index 00000000..987a5bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.add.getty @@ -0,0 +1,75 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# Date: 2005-05-24 (Last changed: 2005-08-07) +# + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | sort -n | tail -n 1) + +[ ! "$LAST_NUMBER" ] && LAST_NUMBER=0 + +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +#echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + */mgetty) + mygetty=$getty + params="38400 tty${NUMBER}" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +# check input +if [ ! "$mygetty" ]; then + read -p "Getty to use [$mygetty]: " rgetty +fi +if [ ! "$params" ]; then + read -p "Parameters to pass [$params]: " rparams +fi +if [ ! "$params" -o ! "$mygetty" ]; then + echo "Sorry, either getty or parameters are not supplied." + exit 23 +fi + +echo -n "Creating $mygetty ($params) in $DDIR ... " +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DDIR" +ln -s "$mygetty" "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.configure.ipc b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.configure.ipc new file mode 100644 index 00000000..65190baa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.configure.ipc @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius, 2006-07-28 +# +# cinit: configure the ipc method to use +# + +HIER=$(dirname $0) +DDIR=$HIER/../src/ipc +DFILE=${DDIR}/current +IPC_METHOD=$(head -n 1 "$HIER/../conf/ipc_method") + +echo "Configure: IPC: Using \"$IPC_METHOD\" as IPC method" + +# always remove link before, as ln seems to be broken +# Doing ln -sf src/ipc/$method current twice, will create the file +# "current" _BELOW_ src/ipc/$method and not overwrite the link +# src/ipc/current + +rm -f "${DFILE}" +ln -sf "${IPC_METHOD}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.configure.mark b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.configure.mark new file mode 100644 index 00000000..62454c7f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.configure.mark @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: touch a file to mark everything configured +# 2006-08-27 +# + +echo "Configure: MK: Marking directory as configured" +touch .configured diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.configure.os b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.configure.os new file mode 100644 index 00000000..d5b8e6e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.configure.os @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups symlinks for the os +# + +DDIR=$(dirname $0)/../src/os +DFILE="$DDIR/current" +OSCONFIG=$(dirname $0)/../conf/os + +OS=$(head -n 1 "$OSCONFIG") + +echo "Configure: OS: Binaries are created for $OS ..." + +rm -f "${DFILE}" +ln -sf "${OS}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.configure.tools b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.configure.tools new file mode 100644 index 00000000..43242a01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.configure.tools @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups scripts for compiling and linking +# + +HIER=$(dirname $0) +DDIR=$HIER/../tmpbin/ +CC=$(head -n 1 "$HIER/../conf/cc") +CFLAGS=$(head -n 1 "$HIER/../conf/cflags") +LD=$(head -n 1 "$HIER/../conf/ld") +LDFLAGS=$(head -n 1 "$HIER/../conf/ldflags") +STRIP=$(head -n 1 "$HIER/../conf/strip") + +echo "Configure: CC: Creating cc, ld and strip ..." + +mkdir -p "$DDIR" +cd "$DDIR" + +echo "$CC $CFLAGS \"\$@\"" > cc +echo "$LD $LDFLAGS \"\$@\"" > ld +echo "$STRIP \"\$@\"" > strip + +# set correct permissions +chmod 0700 * diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.create.empty.service new file mode 100644 index 00000000..365c4bc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.create.empty.service @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.binary new file mode 100644 index 00000000..a368ac23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.binary @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: - +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice +"$INSTALL_PROG" sbin/ccontrol $DESTDIR/$PREFIX/sbin/ccontrol +"$INSTALL_PROG" bin/cinit.reboot $DESTDIR/$PREFIX/sbin/cinit.reboot +"$INSTALL_PROG" bin/cinit.shutdown $DESTDIR/$PREFIX/sbin/cinit.shutdown +"$INSTALL_PROG" bin/cinit.wait.for.daemon \ + $DESTDIR/$PREFIX/sbin/cinit.wait.for.daemon + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi + +# install as /sbin/shutdown, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/shutdown ]; then + ln -s $PREFIX/sbin/cinit.shutdown $DESTDIR/$PREFIX/sbin/shutdown +fi + +# install as /sbin/reboot, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/reboot ]; then + ln -s $PREFIX/sbin/cinit.reboot $DESTDIR/$PREFIX/sbin/reboot +fi diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.config-dir b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.config-dir new file mode 100644 index 00000000..c9adb70f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.config-dir @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.dir new file mode 100644 index 00000000..5e16f690 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.dir @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/sbin" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.fsck b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.fsck new file mode 100644 index 00000000..4508860a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.fsck @@ -0,0 +1,36 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 3 ]; then + echo "$(basename $0): name device filesystem-type" + exit 1 +fi + +NAME=$1 +DEVICE=$2 +FS_TYPE=$3 + +FSCK=/sbin/fsck.$FS_TYPE + +if [ ! -f "$FSCK" ]; then + echo "Missing $FSCK, abort." + exit 1 +fi + +if [ ! -e "$DEVICE" ]; then + echo "Missing $DEVICE abort." + exit 1 +fi + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME" +ln -sf "$FSCK" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON" +echo "$DEVICE" > "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.miniconf b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.miniconf new file mode 100644 index 00000000..45dcc632 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.miniconf @@ -0,0 +1,103 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: 2005-08-07 +# + + +. $(dirname $0)/cinit.read-conf + +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" +echo "" +echo "This will install a minimal cinit configuration." +echo "This configuration _SHOULD_ be able to run on _MOST_ systems." +echo "Still, it's highly EXPERIEMENTAL, use with CAUTION." +echo "" +echo "Please make sure, that" +echo " - you are using a journaling filesystem (fsck is not used)" +echo " - you have agetty, fgetty or mingetty installed" +echo " - you are runnig Linux 2.6 (sysfs is used)" +echo " - you have udev or static device nodes (you need /dev/tty*)" +echo " - getties will run on tty2-tty7, tty1 is used or logging" +echo "" +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" + +notosoftwarepatents="Please keep an eye on software patents, they are evil." +read -p "Do you really want to continue? [y/N] " notosoftwarepatents + +if [ "$notosoftwarepatents" = "y" -o "$notosoftwarepatents" = "Y" ]; then + echo "Let us try it ..." +else + echo 'Bye bye!' + exit 0 +fi + +set -e + +# Create basic layout +$(dirname $0)/cinit.install.standard-dirs + +# Install services: +# - mount root r/w +# - mount /proc +# - mount /sys +# - install getties on tty2-tty7 +# - add cleanup for /etc/mtab +# - add loopback device +# - init service + echo + +################################### mount ##################################### +# mount root read/write +$(dirname $0)/cinit.install.service.mount-root + +# - mount /proc +$(dirname $0)/cinit.install.service.mount-proc + +# - mount /sys +$(dirname $0)/cinit.install.service.mount-sys + +# mount needs everything below it +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/root" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/proc" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/sys" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" + +################################### getty ##################################### +# mount root read/write +# install getties +begin_getty=2 +end_getty=7 +i=$begin_getty + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" +while [ "$i" -le "$end_getty" ]; do + $(dirname $0)/cinit.add.getty + ln -sf "${DESTDIR}/${CINIT_DIR}/getty/$i" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" + i=$(($i+1)) +done + +################################### mtab ##################################### +# - add cleanup for /etc/mtab +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" +$(dirname $0)/cinit.install.service.cleanup-mtab +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" + +################################### lo ##################################### +# - add loopback device +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" +$(dirname $0)/cinit.install.service.network-lo +ln -sf "${DESTDIR}/${CINIT_DIR}/network/lo" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" + +# - init service + echo +# init depends on mount, getty -> everything from base-layout +$(dirname $0)/cinit.install.service.init +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" + +ln -sf "${DESTDIR}/${CINIT_DIR}/local-services/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/getty/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/network/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.cleanup-mtab b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.cleanup-mtab new file mode 100644 index 00000000..30a8dd48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.cleanup-mtab @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: cleanup mtab +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" +echo '#!/bin/sh' > "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'rm -f /etc/mtab' >>"${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'ln -s /proc/mounts /etc/mtab' \ + >> "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +chmod 0700 "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.hostname.generic b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.hostname.generic new file mode 100644 index 00000000..2d72f50e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.hostname.generic @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service, which sets the hostname +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): hostname" + exit 1 +fi + +HOSTNAME=$1 +HOSTNAME_BIN=${HOSTNAME_BIN:-/bin/hostname} + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/network/hostname" +ln -sf "$HOSTNAME_BIN" "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON" +echo "$HOSTNAME" > "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.init b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.init new file mode 100644 index 00000000..c3a10931 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.init @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +ln -sf /bin/echo "${DESTDIR}/${CINIT_DIR}/${C_INIT}/$C_ON" +echo '*** cinit initial service successfully started ***' \ + > "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.keymap.c_keymap b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.keymap.c_keymap new file mode 100644 index 00000000..235a329e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.keymap.c_keymap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install keymap from environment setting +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +if [ -z "$C_KEYMAP" ]; then + echo "Set C_KEPMAP to the wanted keymap." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" ]; then + echo "Service keymap already exists." + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find loadkeys) + +if [ $? -ne 0 ]; then + echo "Did not find binary loadkeys." + exit 1 +fi + +echo -n "Installing keymap to ${DESTDIR}/${CINIT_DIR}/local-tuning/keymap ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON" + +echo "$C_KEYMAP" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.mount-proc b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.mount-proc new file mode 100644 index 00000000..024847a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.mount-proc @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /proc +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/proc" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/proc/$C_ON" +echo proc > "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo /proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.mount-root b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.mount-root new file mode 100644 index 00000000..a1bd56ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.mount-root @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount root r/w +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# mount root read/write +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/root" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/root/$C_ON" +echo -n > "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo -o >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo remount,rw >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo / >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.mount-sys b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.mount-sys new file mode 100644 index 00000000..8c8191aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.mount-sys @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /sys +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /sys +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/sys" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/sys/$C_ON" +echo sys > "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo sysfs >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo /sys >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.network-lo b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.network-lo new file mode 100644 index 00000000..45bff6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.network-lo @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: loopback device +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/lo" +ln -sf /sbin/ifconfig "${DESTDIR}/${CINIT_DIR}/network/lo/$C_ON" +echo lo > "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo 127.0.0.1/8 >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo up >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.ntpdate.debian b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.ntpdate.debian new file mode 100644 index 00000000..2af2ee4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.ntpdate.debian @@ -0,0 +1,47 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install ntpdate +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +. /etc/default/ntpdate + +if [ -z "$NTPSERVERS" ]; then + echo "No ntp servers found, aborting" + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find ntpdate) + +if [ $? -ne 0 ]; then + echo "Did not find binary ntpdate." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" ]; then + echo "Service ntpdate already exists." + exit 1 +fi + +echo -n "Installing ntpdate to ${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON" + +for server in $NTPSERVERS; do + echo "$server" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON$C_PARAMS" +done + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.udev b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.udev new file mode 100644 index 00000000..d91f01cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.service.udev @@ -0,0 +1,64 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install udev +# Date: 2005-10-15 +# Comment: DO NOT RSYNC TO THE WRONG SIDE! +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BIN_UDEVSEND=$($(dirname $0)/cinit.path-find udevsend) +BIN_UDEVSTART=$($(dirname $0)/cinit.path-find udevstart) +BIN_SYSCTL=$($(dirname $0)/cinit.path-find sysctl) +BIN_MOUNT=$($(dirname $0)/cinit.path-find mount) +SERVICE="local-tuning/udev" + +if [ -z "$BIN_UDEVSEND" -o -z "$BIN_UDEVSTART" -o -z "$BIN_SYSCTL" -o -z "$BIN_MOUNT" ]; then + echo "Did not find a binary." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo "Installing ${SERVICE} to ${DESTDIR}/${CINIT_DIR}/ ..." + +# 0. general udev +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}" +# 1. udevmount +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/mount/udev" +ln -sf "$BIN_MOUNT" "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON" +echo "udev" > "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "-t" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "tmpfs" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "/dev" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" + +# 2. udevstart +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart" +ln -sf "$BIN_UDEVSTART" "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart/$C_ON" + +# dependencies +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/sys +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/udev + +# 3. udev to hotplug +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug" +ln -sf "$BIN_SYSCTL" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug/$C_ON" +echo "$BIN_UDEVSEND" > "${DESTDIR}${CINIT_DIR}/${SERVICE}/hotplug/$C_ON$C_PARAMS" + +$(dirname $0)/cinit.add.dependency ${SERVICE}/hotplug needs mount/proc + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.standard.init.deps b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.standard.init.deps new file mode 100644 index 00000000..dcc5cd07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.standard.init.deps @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add standard sub-configuration directories to init wants +# Date: 2005-10-11 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.standard.mounts b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.standard.mounts new file mode 100644 index 00000000..bb1fc0c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.standard.mounts @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create normal mounts +# Date: 2005-10-16 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.swap b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.swap new file mode 100644 index 00000000..84e6c928 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.swap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install swap +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +SERVICE=mount/swap + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BINARY=swapon +BINARY_PATH=$($(dirname $0)/cinit.path-find $BINARY) +if [ $? -ne 0 ]; then + echo "Did not find binary $BINARY." + exit 1 +fi + +HAS_SWAP=$(awk '$3 ~ /swap/ { print $3 }' /etc/fstab) +if [ -z "$HAS_SWAP" ]; then + echo "Seems you have no swap, service not installing" + exit 1 +fi +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo -n "Installing ${SERVICE} to ${DESTDIR}${CINIT_DIR}/${SERVICE} ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON" + +echo "-a" >> "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.merge.sysvinit-debian-sid b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.merge.sysvinit-debian-sid new file mode 100644 index 00000000..3ef0ce03 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.merge.sysvinit-debian-sid @@ -0,0 +1,137 @@ +#!/bin/sh +# Nico Schottelius +# Date: Sun Oct 16 16:57:03 CEST 2005 +# cLinux/cinit +# Automagically convert Debian-Sysv-Iinit +# THIS IS NOT CLEAN. +# THIS IS NOT EVEN INTENTED TO BE CLEAN. +# This is just a small hack, because my girlfriend wants her notebook back. + +echo "***> $(basename $0): converting Debian-Sys-V-Init" + +# read standard values, may be overwritten from outside +. $(dirname $0)/cinit.read-conf + +echo "***> Finding standard config ..." +# variables, which can be set from the outside +ROOT_DEV=${ROOT_DEV:-$(awk '$2 ~ /^\/$/ { print $1 }' /etc/fstab)} +ROOT_FSCK=${ROOT_FSCK:-$(awk '$2 ~ /^\/$/ { print $6 }' /etc/fstab)} +ROOT_FS=${ROOT_FS:-$(awk '$2 ~ /^\/$/ { print $3 }' /etc/fstab)} +RUNLEVEL=${RUNLEVEL:-$(runlevel | awk '{ print $2 }')} + +echo "***> Detecting keymap (this may take some time)" + +if [ -z "$C_KEYMAP" ]; then + echo "Please set the variable C_KEYMAP to your keymap." + echo "It is impossible to detect reliable your keymap in Debian." + exit 1 +fi + + +echo "***> Configuration" +echo "Hostname (\$HOSTNAME): $HOSTNAME" +echo "Keymap (\$C_KEYMAP): $C_KEYMAP" +echo "Root device (\$ROOT_DEV): $ROOT_DEV" +echo "Root fsck (\$ROOT_FSCK): $ROOT_FSCK" +echo "Root FS (\$ROOT_FS): $ROOT_FS" +echo "Runlevel (\$RUNLEVEL): $RUNLEVEL" +echo "Destdir: (\$DESTDIR): $DESTDIR" +echo "Config-Dir: (\$CINIT_DIR): $CINIT_DIR" +read -p "Is this correct (Y/n) " correct + +if [ "$correct" != "y" -a "$correct" != "Y" ]; then + echo "***> Abort." + exit 1 +fi + +if [ -d "${DESTDIR}${CINIT_DIR}" ]; then + echo "ERROR: Configuration already exists at ${DESTDIR}${CINIT_DIR}." + exit 1 +fi + +echo "***> Installing standard structure and dependencies" +set -e +$(dirname $0)/cinit.install.config-dir +$(dirname $0)/cinit.install.standard.dirs +$(dirname $0)/cinit.install.standard.init.deps + +echo "***> Adding mount / r/w" +$(dirname $0)/cinit.install.service.mount-root + +if [ "$ROOT_FSCK" = "1" ]; then + echo "***> Adding fsck for $ROOT_DEV ..." + $(dirname $0)/cinit.install.fsck root "$ROOT_DEV" "$ROOT_FS" + echo "***> Adding dependency" + $(dirname $0)/cinit.add.dependency mount/root needs fsck/root +else + echo "***> Skipping fsck for $ROOT_DEV ..." +fi + +echo "***> Setting up standard mounts ..." +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up hostname: $HOSTNAME" +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up keymap" +$(dirname $0)/cinit.install.service.keymap.c_keymap + +echo "***> Creating getties (tty1-8)" +for i in `seq 1 8`; do + $(dirname $0)/cinit.add.getty + + # each getty needs: + # - root r/w + $(dirname $0)/cinit.add.dependency getty/$i needs mount/root + # - hostname + $(dirname $0)/cinit.add.dependency getty/$i needs network/hostname +done + +echo "***> Enabling getties (tty2-8)" +for i in `seq 2 8`; do + # add getties to getty/ + $(dirname $0)/cinit.add.dependency getty wants getty/$i +done + +# +# Convert services: check /etc/rcS.d and /etc/rcX.d +# +echo "***> Converting services ..." +for script in $(cd /etc/rcS.d/; ls S*; cd /etc/rc${RUNLEVEL}.d/; ls S*); do + echo -n "$script: " + case $script in + # SCRIPTS READY + *ntpdate) + $(dirname $0)/cinit.install.service.ntpdate.debian + $(dirname $0)/cinit.add.dependency local-tuning/ntpdate needs network + ;; + *udev*) + $(dirname $0)/cinit.install.service.udev + + # SCRIPTS NEVER READY + *glibc.sh|*module-init-tools|*modutils|*procps.sh|*hotplug-net|*bootmisc.sh|*nviboot|*screen-cleanup|*x11-common|*sudo|*makedev|*rmnologin) + echo "Ignoring (useless)." + ;; + + # SCRIPTS NOT YET READY + *mountvirtfs|*checkroot.sh|*ifupdown-clean|*checkfs.sh|*mountall.sh|*ifupdown|*hostname*|*mountnfs.sh|*alsa|*rsync|*ssh|*fam|*cron|*gdm) + echo "converting planned later." + ;; + + # SCRIPTS LATER TO DO + *bootlogd|*keymap.sh|*hwclock*|*discover|*pppd-dns|*dns-clean|*networking|*portmap|*console-screen.sh|*urandom|*klogd|*apmd|*dbus-1|*exim4|*pcmcia|*nfs-common|*stop-bootlogd) + echo "unsupported currently (FIXME PLEASE)." + ;; + *sysklogd|*ppp|*inetd|*lpd|*aumix|*atd) + echo "unsupported (choose a better alternative)." + ;; + *initrd-tools.sh|*libdevmapper*|*hotplug) + echo "Ignoring (general or bloated script)." + ;; + *) + echo "Ignoring (unknown)" + ;; + esac +done + +echo "***> Finished." diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.path-find b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.path-find new file mode 100644 index 00000000..0d0f362b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.path-find @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: find binary in path +# Date: 2005-10-15 +# + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): searched binary" + exit 1 +fi + +binary=$1 + +# this is NOT really clean, paths can also contain spaces +for pfad in $(echo $PATH | sed 's/:/ /g'); do + fullname=$pfad/$binary + if [ -f "$fullname" ]; then + echo "$fullname" + exit 0 + fi +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.remove.getty new file mode 100644 index 00000000..4950eeed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.remove.getty @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + +if [ ! "$NUMBER" ]; then + echo "There is no getty to remove." + exit 1 +fi + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r "$DDIR" +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.shutdown new file mode 100644 index 00000000..702c8a17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.shutdown @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# TODO: use ccontrol! +# 2005-05-24 (Last changed: 2005-06-18) + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -p|--power-off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " -s|--rescue: Rescue mode" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -p|--power-off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + -s|--rescue) kill -USR2 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.uml.test new file mode 100644 index 00000000..f6ea7fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.1 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG umid=cinit$$ init=/sbin/cinit" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..7f027455 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 (Last Changed: 2005-06-17) + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +PIDFILE=$1; shift +DAEMON=$1; shift + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/.README b/software/cinit/browse_source/cinit-0.3pre14/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/c_confdir b/software/cinit/browse_source/cinit-0.3pre14/conf/c_confdir new file mode 100644 index 00000000..091e6192 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/c_confdir @@ -0,0 +1,3 @@ +conf + +The directory below cinit_dir for cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/c_delay b/software/cinit/browse_source/cinit-0.3pre14/conf/c_delay new file mode 100644 index 00000000..dc30f147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGTERM for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/c_env b/software/cinit/browse_source/cinit-0.3pre14/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/c_init b/software/cinit/browse_source/cinit-0.3pre14/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/c_last b/software/cinit/browse_source/cinit-0.3pre14/conf/c_last new file mode 100644 index 00000000..8debf155 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/c_last @@ -0,0 +1,7 @@ +last + +Name of the file below cinit_dir/c_confdir/ to execute right before +reboot/halt/poweroff. + +This maybe a shellscript with the OS-specific umount procedure (like umount -a), +see doc/user/configuring.cinit for more details. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/c_needs b/software/cinit/browse_source/cinit-0.3pre14/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/c_off b/software/cinit/browse_source/cinit-0.3pre14/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/c_on b/software/cinit/browse_source/cinit-0.3pre14/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/c_panic b/software/cinit/browse_source/cinit-0.3pre14/conf/c_panic new file mode 100644 index 00000000..7fdb77b3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/c_panic @@ -0,0 +1,5 @@ +panic + +Name of the file below cinit_dir/c_confdir/ to execute on panic. +This name .params (normally panic.params) will be passed as parameters/ +argumunts to panic. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/c_params b/software/cinit/browse_source/cinit-0.3pre14/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/c_respawn b/software/cinit/browse_source/cinit-0.3pre14/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/c_sock b/software/cinit/browse_source/cinit-0.3pre14/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/c_tmp b/software/cinit/browse_source/cinit-0.3pre14/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.3pre14/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.3pre14/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/c_wants b/software/cinit/browse_source/cinit-0.3pre14/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/cc b/software/cinit/browse_source/cinit-0.3pre14/conf/cc new file mode 100644 index 00000000..b168ae6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/cc @@ -0,0 +1,3 @@ +gcc + +The c-compiler to use. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/cflags b/software/cinit/browse_source/cinit-0.3pre14/conf/cflags new file mode 100644 index 00000000..f205afb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/cflags @@ -0,0 +1,6 @@ +-pipe -W -Wall -Werror -Iinclude -g -D_XOPEN_SOURCE=600 -D_USE_POSIX + +Standard flags to pass to (g)cc. + +-D_XOPEN_SOURCE=600 must be used on glibc to select the right standard. +-D_USE_POSIX is needed for sigemptyset on glibc diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/cinit_dir b/software/cinit/browse_source/cinit-0.3pre14/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/confdir b/software/cinit/browse_source/cinit-0.3pre14/conf/confdir new file mode 100644 index 00000000..55fb65e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/confdir @@ -0,0 +1,3 @@ +conf + +The subdirectory below /etc/cinit to be used for general configurations. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/destdir b/software/cinit/browse_source/cinit-0.3pre14/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/getty_dir b/software/cinit/browse_source/cinit-0.3pre14/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/install_directory b/software/cinit/browse_source/cinit-0.3pre14/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/install_prog b/software/cinit/browse_source/cinit-0.3pre14/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/ipc_method b/software/cinit/browse_source/cinit-0.3pre14/conf/ipc_method new file mode 100644 index 00000000..fc75e273 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/ipc_method @@ -0,0 +1,5 @@ +msgq + +The type of IPC (inter process communication) to use. +Valid values can be optained by issuing `ls src/ipc/`. + diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/ld b/software/cinit/browse_source/cinit-0.3pre14/conf/ld new file mode 100644 index 00000000..b60e4836 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/ld @@ -0,0 +1,3 @@ +gcc + +Comment missing. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/ldflags b/software/cinit/browse_source/cinit-0.3pre14/conf/ldflags new file mode 100644 index 00000000..fc214daf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/ldflags @@ -0,0 +1,3 @@ + + +No flags specified normally. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/max_delay b/software/cinit/browse_source/cinit-0.3pre14/conf/max_delay new file mode 100644 index 00000000..30725bf8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/max_delay @@ -0,0 +1,4 @@ +30 + +Maximum number of seconds to sleep between retrying to start it +(respawn only). diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/max_deps b/software/cinit/browse_source/cinit-0.3pre14/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/msgq_pathname b/software/cinit/browse_source/cinit-0.3pre14/conf/msgq_pathname new file mode 100644 index 00000000..1bef0b6b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/msgq_pathname @@ -0,0 +1,4 @@ +/bin/sh + +Used to generate an unique identifier for the message queue. +See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/msgq_to_clients b/software/cinit/browse_source/cinit-0.3pre14/conf/msgq_to_clients new file mode 100644 index 00000000..dd15808a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/msgq_to_clients @@ -0,0 +1,4 @@ +o + +This is use in ftok to generate a key_t for the message queue use to write +to the clients. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/msgq_to_server b/software/cinit/browse_source/cinit-0.3pre14/conf/msgq_to_server new file mode 100644 index 00000000..f87ae3f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/msgq_to_server @@ -0,0 +1,4 @@ +i + +This is use in ftok to generate a key_t for the message queue use to write +to the server. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/os b/software/cinit/browse_source/cinit-0.3pre14/conf/os new file mode 100644 index 00000000..ddbf8f9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/os @@ -0,0 +1,14 @@ +linux + +Select the operating system compiling for. + +Current possibilities: + + - linux + + +Currently Planned possibilities: + + - freebsd + - openbsd + - netbsd diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/p_asciidoc b/software/cinit/browse_source/cinit-0.3pre14/conf/p_asciidoc new file mode 100644 index 00000000..52485c86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/p_asciidoc @@ -0,0 +1,6 @@ +asciidoc + +The binary on your system (with or without path) which does what I expect +asciidoc todo. + +Default: asciidoc diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/p_docbooktoman b/software/cinit/browse_source/cinit-0.3pre14/conf/p_docbooktoman new file mode 100644 index 00000000..d62c9015 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/p_docbooktoman @@ -0,0 +1,6 @@ +docbook2x-man + +The binary on your system (with or without path) which converts +docbook to manpages. + +Default: docbook2x-man diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/p_docbooktotexi b/software/cinit/browse_source/cinit-0.3pre14/conf/p_docbooktotexi new file mode 100644 index 00000000..278f6805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/p_docbooktotexi @@ -0,0 +1,6 @@ +docbook2x-texi + +The binary on your system (with or without path) which converts +docbook to texinfo. + +Default: docbook2x-texi diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/prefix b/software/cinit/browse_source/cinit-0.3pre14/conf/prefix new file mode 100644 index 00000000..6b90469f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/prefix @@ -0,0 +1,5 @@ + + +Where to install cinit. Normally this will be /, but you can put it anywhere. +The subdirectory 'sbin' under this prefix must be readable by the kernel. +This is normally either empty or "/". diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/profile b/software/cinit/browse_source/cinit-0.3pre14/conf/profile new file mode 100644 index 00000000..b9104bf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/profile @@ -0,0 +1,9 @@ +cprofile: + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile:" is the standard, as +the Linux kernel eats everything in the form 'var=parm'. +The old (pre cinit-0.1) option "cprofile=" should therefore +NOT be used. + +Under Linux you tell it the bootloader like grub or LILO. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/service_categories b/software/cinit/browse_source/cinit-0.3pre14/conf/service_categories new file mode 100644 index 00000000..2216ea97 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/service_categories @@ -0,0 +1,7 @@ +getty init local-tuning local-services mount network remote-services + +List of directories normally created below /etc/cinit/svc/ as +'pseudo-services'. + +Btw, 'init' is the first service and has always to be there, but it does not really +fit into here, because it's a real one, compraed to the pseudo services. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/sleep_before_kill b/software/cinit/browse_source/cinit-0.3pre14/conf/sleep_before_kill new file mode 100644 index 00000000..2671f22d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/sleep_before_kill @@ -0,0 +1,7 @@ +sleep_before_kill + +The file that specifies how long to sleep after sending SIGTERM, before sending +SIGKILL to every process. If this file is non-existing the builtin value from +'sleep_kill'. + +The file should be located below conf/ diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/sleep_kill b/software/cinit/browse_source/cinit-0.3pre14/conf/sleep_kill new file mode 100644 index 00000000..b419241a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/sleep_kill @@ -0,0 +1,8 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. + +Note: This does NOT affect terminating services, they are shutdown by +their own 'off' functions. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.3pre14/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.3pre14/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/sleep_svc b/software/cinit/browse_source/cinit-0.3pre14/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/sock_queue b/software/cinit/browse_source/cinit-0.3pre14/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/strip b/software/cinit/browse_source/cinit-0.3pre14/conf/strip new file mode 100644 index 00000000..08736418 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/strip @@ -0,0 +1,3 @@ +strip -R .comment -R .note + +Strip out unecessary parts of the binaries. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/sulogin b/software/cinit/browse_source/cinit-0.3pre14/conf/sulogin new file mode 100644 index 00000000..24859afc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/sulogin @@ -0,0 +1,6 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it, if the standard panic +action fails (as specified in cinit_dir/c_confdir/panic). + +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/svcdir b/software/cinit/browse_source/cinit-0.3pre14/conf/svcdir new file mode 100644 index 00000000..087a3848 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/svcdir @@ -0,0 +1,3 @@ +svc + +Directory below /etc/cinit that contains the services. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf/version b/software/cinit/browse_source/cinit-0.3pre14/conf/version new file mode 100644 index 00000000..56476ae6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf/version @@ -0,0 +1,3 @@ +"0.3pre14" + +The version. diff --git a/software/cinit/browse_source/cinit-0.3pre14/conf2/README b/software/cinit/browse_source/cinit-0.3pre14/conf2/README new file mode 100644 index 00000000..c753107d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/conf2/README @@ -0,0 +1,33 @@ +Migrate conf/ to general conf/-buildsystem (write documentation for it). + +gpm2 may be an example for this! + +conf/targets: + targets to make available in Makefile and their dependencies + + abstract the build-process somehow, so one can create build-targets? + + c-programs/ (includes cc / ld) + cinit (link to conf/object_listings cinit?) +conf/object_listings + lists of dependencies: + conf/object_listings/cinit contains all objects needed for cinit + +conf/programs/ + like cc, ld, install, ... + +conf/built-options/ + like --... in ./configure + +conf/install/ + + options/ + destdir (prefixed before everything) + prefix (standard prefix) + bin (relative to prefix, if not beginning with a /) + sbin (relative to prefix, if not beginning with a /) + lib (relative to prefix, if not beginning with a /) + targets/ + cinit/ + built-target (link to conf/targets/cinit) + destination (relative to diff --git a/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/Makefile b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/Makefile new file mode 100644 index 00000000..23cc41f0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/Makefile @@ -0,0 +1,70 @@ +# +# (c) 2005 Peter Portmann (pp at bluewin.ch) +# cinit/contrib+tools +# +# This script is written for the clinux-System and published +# under the terms of GPL 2.0 +# +# Version: 0.2 +# clean with a single command instead of two commands. +# +# ChangeLog: +# 0.1 initial version +# +# Todo: +# +# Features: + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +DEBUG=-g -DDEBUG +#OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! +LDFLAGS= + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. -I../ +LD=gcc +STRIP=strip -R .comment -R .note + +INSTALL = install + +prefix = /usr +bindir = $(prefix)/bin + +# objects + +CLIENT=cinit.graph.text.o + +COMMUNICATION=error.o usage.o mini_printf.o + +OBJ=$(CLIENT) $(COMMUNICATION) + +# +PROGRAMS=cinit.graph.text +SCRIPTS=cconfig.graph.xml.rb \ + make.cconfig.from.xml.rb \ + cinit-vis.pl + +# targets +all: $(PROGRAMS) + +cinit.graph.text: $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +clean: + rm -f *.o $(PROGRAMS) + +install: all + @echo '*** Installing contrib+tools ***' + $(INSTALL) -d -m755 $(DESTDIR)$(bindir) + for bin in $(SCRIPTS) $(PROGRAMS); do \ + $(INSTALL) $$bin $(DESTDIR)/$(bindir); \ + done diff --git a/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/README b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/README new file mode 100644 index 00000000..85fa2f5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/README @@ -0,0 +1,11 @@ +contrib+tools/ + programs written by others and external tools not necessary + needed but (very) nice to have + + + cinit-vis.pl - draw an ascii graph of cinit configuration [perl] + cinit.graph.text - draw an ascii graph of cinit configuration [c] + + cconfig.graph.xml.rb - creates a xml file from a cconfig [ruby] + make.cconfig.from.xml.rb - creates a cconfig from a xml file [ruby] + diff --git a/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/README.ruby b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/README.ruby new file mode 100644 index 00000000..ed210cee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/README.ruby @@ -0,0 +1,7 @@ +The ruby tools for general cconfig [0] are written by René Nussbaumer [1]. +You can find the documentation for them at [2]. + + +[0]: http://nico.schotteli.us/papers/linux/cconfig/ +[1]: http://killerfox.forkbomb.ch/ +[2]: http://killerfox.forkbomb.ch/articles/cconfig/tools diff --git a/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/cconfig.graph.xml.rb b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/cconfig.graph.xml.rb new file mode 100644 index 00000000..d18ba422 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/cconfig.graph.xml.rb @@ -0,0 +1,117 @@ +#!/usr/bin/env ruby + +=begin + + Writes an XML-Tree for a cconfig directory + Idea by Nico Schottelius aka telmich + Implemented and (C) by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added support for binary files + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Changed checking order: symlink, directory, file. Because of + a logical bug -> directory follows symlink so, when a symlink + points to a directory no «link» element is created. + + Version 0.1 (René Nussbaumer): + * Holy hack for directory scanning (needs to be optimized) + * Hack for rexml to print out «lost» tags. This rexml sux. + + Todo: + * Optimize scanning. + * Use another xml library instead of rexml crap. + Problem: Produce dependencies -> no std-lib + + Features: + * Create a flat (no deepnes without directory) and 1:1 image + of an cconfig directory + +=end + +require 'rexml/document' +require 'base64' +require 'digest/sha1' + +require 'filemagic' + +@version = '0.3' + +def determineTarget(entry) + return 'external' if(!File.expand_path(entry).index(@initpath)) + return 'link' if(FileTest.symlink?(entry)) + return 'object' if(FileTest.directory?(entry)) + return 'attribute' if(FileTest.file?(entry)) + return 'unknown' # Should never be reached +end + +def createTree(dir, parent) + dir.each { |entry| + next if(entry =~ /^(\.|\.\.)$/) + + if(FileTest.symlink?(entry)) + e = parent.add_element('link') + + # Much fun with links + e.add_attributes( { 'name' => entry, 'target' => determineTarget(File.readlink(entry)) } ) + e.add_text(File.readlink(entry)) + elsif(FileTest.directory?(entry)) + e = parent.add_element('object') + e.add_attribute('name', entry) + + # Bad, that we need to change the directory every time. + oldPwd = Dir.pwd + Dir.chdir(entry) + createTree(Dir.new('.'), e) + Dir.chdir(oldPwd) + elsif(FileTest.file?(entry)) + e = parent.add_element('attribute') + e.add_attribute('name', entry) + if(File.stat(entry).size?) + # Yeah, we got one WITH content! W00h00, let's party. + + fm = FileMagic.new(FileMagic::MAGIC_MIME) + if(fm.file(entry) =~ /executable/) + e.add_attribute('type', 'binary') + text = File.new(entry).read + e.add_attribute('sha1', Digest::SHA1.hexdigest(text)) + e.add_text(Base64.encode64(text)) + else + e.add_text(File.new(entry).read) + end + fm.close() + end + end + } +end + + +if(!ARGV[0] || !FileTest.directory?(ARGV[0])) + puts 'You need to specify a directory' + Kernel.exit(-1) +end + +doc = REXML::Document.new + +e = doc.add_element('cconfig') +e.add_attribute('name', File.basename(ARGV[0])) +e.add_attribute('version', @version) + +@initpath = File.expand_path(ARGV[0]) +Dir.chdir(ARGV[0]) +createTree(Dir.new('.'), doc.root) + +out = '' +doc.write(out, 0, false, true) + +REXML::XMLDecl.new('1.0', 'utf-8').write($stdout) # This should automatically printed by rexml. Damn bugs. +puts '' +puts out # Workaround for a buggy rexml + diff --git a/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/cinit-vis.pl b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/cinit-vis.pl new file mode 100644 index 00000000..4a439fc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/cinit-vis.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# (c) by Marcus Przyklink (downhill-clinux@burningchaos.org) +# written for cinit and published under GPL +# beautified a bit by Nico Schottelius +# optimized by René Nussbaumer +# Version: 0.1 + +use strict; +use warnings; + +# +# Variables for location and output +# +# cinit-directory +my $path = "/etc/cinit/svc/"; +# started profile +my $starting_point = "init"; +# the spaces for each level (integer: amount of spaces) +my $space = 3; +# marker for need +my $need = "-->"; +# marker for want +my $want = "==>"; + +# +# main function, recursively list the components of the cinit system +# +if (@ARGV) { + if( $ARGV[0] =~ /-(h|-help)/ ) { + print "Usage: " . __FILE__ . " without parameters for standard-use (check variables in file)\n"; + print " Parameters:\n"; + print " -h for this help\n"; + print " profile-name for a profile\n"; + exit(0); + } + else { + $starting_point = $ARGV[0]; + } +} + +# +# start first instance +# +sub get_deeper { + my ($point, $tmp_counter, $need_want) = splice @_; + + print " " x ($space * $tmp_counter) . ($need_want ? $need : $want) . " " . $point . "\n"; + + opendir(DIR, "${path}${point}/needs") and + my @next_need = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + opendir(DIR, "${path}${point}/wants") and + my @next_want = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + + for(@next_need) { + get_deeper($_, $tmp_counter + 1, 1); + } + for(@next_want) { + get_deeper($_, $tmp_counter + 1, 0); + } +} + +# +# start first instance +# +get_deeper($starting_point, 0, 0); + +# +# work done, go home +# +exit(0); diff --git a/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/cinit.graph.text.c b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/cinit.graph.text.c new file mode 100644 index 00000000..5e5316ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/cinit.graph.text.c @@ -0,0 +1,200 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + cinit.graph.text.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.2 + + ChangeLog: + Version 0.2 (Peter Portmann): + * Not assigned link destinies are marked by (!). + * Not readable directories are marked by "directory not readable". + + Version 0.1 (Peter Portmann): + * Print of the directory structure of the contained files and links + without following the links. + + Todo: + + Features: +*/ + +//#include +#include +#include +#include +#include +#include +#include +#include +//#include "cinit.h" +#include "error.h" + +#define FTW_F 1 /* file isn't a directory */ +#define FTW_D 2 /* file is a directory */ +#define FTW_DNR 3 /* not readable directory */ +#define FTW_NS 4 /* unsuccesfully stat on this file */ +#define MAX_CHAR 4096 + +/*********************************************************************** + * cinit.graph.text - textual representation of the cinit directory + */ + +#define CSERVICE_BANNER "cinit.graph.text - textual representatio of the cinit directory\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncinit.graph.text \n" \ + "\tpath\t- cinit installationpath\n" + +typedef int EACH_ENTRY(const char *, const struct stat *, int); +typedef enum { FALSE=0, TRUE=1 } bool; + +static char dirpath[PATH_MAX]; +static int depth = 0; +static long int filecount = 0; + +static EACH_ENTRY each_entry; +static int pp_ftw(char *, EACH_ENTRY *); +static int each_getinfo(EACH_ENTRY *); + +/*********************************************************************** + * pp_ftw: file tree walk + */ +static int pp_ftw(char *filepath, EACH_ENTRY *function) +{ + int n; + + if(chdir(filepath) < 0) /* In angegebenen Pfad wechseln */ + err_msg(FATAL_SYS, "can't change to %s", filepath); + + if(getcwd(dirpath, PATH_MAX) == 0) /* Absoluten Pfadnamen ermitteln */ + err_msg(FATAL_SYS, "error using getcwd for %s", filepath); + + n = each_getinfo(function); + + return(n); +} + +/*********************************************************************** + * each_getinfo: get more info for each file. + */ +static int each_getinfo(EACH_ENTRY *function) +{ + struct stat statpuff; + struct dirent *direntz; + DIR *dirz; + int n; + char *zgr; + + if(lstat(dirpath, &statpuff) < 0) + return(function(dirpath, &statpuff, FTW_NS)); /* Error on stat */ + + if(S_ISDIR(statpuff.st_mode) == 0) + return(function(dirpath, &statpuff, FTW_F)); /* no directory */ + + /* It's a directory. + * Call function() for it. After that handel each file in the directory. */ + + if((dirz = opendir(dirpath)) == NULL) { /* Directory not readable */ + closedir(dirz); + return(function(dirpath, &statpuff, FTW_DNR)); + } + + if((n = function(dirpath, &statpuff, FTW_D)) != 0) /* return the directorydirpath */ + return(n); + + zgr = dirpath + strlen(dirpath); /* append slash to the dirpathname */ + *zgr++ = '/'; + *zgr = '\0'; + + while((direntz = readdir(dirz)) != NULL) { + /* ignor . and .. */ + if(strcmp(direntz->d_name, ".") && strcmp(direntz->d_name, "..")) { + strcpy(zgr, direntz->d_name); /* append filename after slash */ + depth++; + if(each_getinfo(function) != 0) { /* Recursion */ + depth--; + break; + } + depth--; + } + } + *(zgr-1) = '\0'; /* deleting evrything after the slash */ + + if(closedir(dirz) < 0) + err_msg(WARNING, "closedir for %s failed", dirpath); + + return(n); +} + +/*********************************************************************** + * each_entry: handling each file and build the graph step by step. + */ +static int each_entry(const char *filepath, const struct stat *statzgr, int filetype) +{ + struct stat statpuff; + static bool erstemal=TRUE; + int i; + + char link[MAX_CHAR]; + + filecount++; + if(!erstemal) { + for(i=1 ; i<=depth ; i++) + printf("%4c|", ' '); + printf("----%s", strrchr(filepath, '/')+1); + } else { + printf("%s", filepath); + erstemal = FALSE; + } + + switch(filetype) { + case FTW_F: + switch(statzgr->st_mode & S_IFMT) { + case S_IFREG: break; + case S_IFCHR: printf(" c"); break; + case S_IFBLK: printf(" b"); break; + case S_IFIFO: printf(" f"); break; + case S_IFLNK: + printf(" -> "); + if(( i=readlink(filepath, link, MAX_CHAR)) != -1) + printf("%.*s", i, link); + if(stat(filepath, &statpuff) < 0) + printf(" (!)"); + break; + case S_IFSOCK: printf(" s"); break; + default: printf(" ?"); break; + } + printf("\n"); + break; + + case FTW_D: + printf("/\n"); + break; + + case FTW_DNR: + printf("/ directory not readable\n"); + break; + + case FTW_NS: + err_msg(WARNING_SYS, "Error using 'stat' on file %s", filepath); + break; + + default: + err_msg(FATAL_SYS, "Unknown Filetype (%d) by file %s", filetype, filepath); + break; + } + + return(0); +} + +/*********************************************************************** + * main: + */ +int main(int argc, char *argv[]) +{ + if(argc != 2) + usage(CSERVICE_BANNER, USAGE_TEXT); + + exit(pp_ftw(argv[1], each_entry)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/cinit.h b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/cinit.h new file mode 100644 index 00000000..cbde3195 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/cinit.h @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Dummy header file to intgrate mini_printf and usage + */ + +#ifndef CINIT_DUMMY_HEADER +#define CINIT_DUMMY_HEADER + +void usage(char *banner, char *text); +void mini_printf(char *str,int fd); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/error.c b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/error.c new file mode 100644 index 00000000..8174c702 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/error.c @@ -0,0 +1,124 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#include "error.h" +#include +#include +#include +#include +#include +#include + +#define MAX_CHAR 4096 + +int debug; /* Aufrufer von log_msg oder log_open muss debug setzen: + 0, wenn interaktiv; 1, wenn Daemon-Prozess */ + +/*---- Lokale Routinen zur Abarbeitung der Argumentliste --------------------*/ +static void msg_err(int sys_msg, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + return; +} + +static void msg_log(int sys_msg, int prio, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + if (debug) { + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + } else { + strcat(puffer, "\n"); + syslog(prio, puffer); + } + return; +} + +/*---- Global aufrufbare Fehlerroutinen -------------------------------------*/ +void err_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_err(0, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + case DUMP: + msg_err(1, fmt, az); + break; + default: + msg_err(1, "Falscher Aufruf von err_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + else if (kennung==DUMP) + abort(); /* core dump */ + exit(1); +} + +void log_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_log(0, LOG_ERR, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + msg_log(1, LOG_ERR, fmt, az); + break; + default: + msg_log(1, LOG_ERR, "Falscher Aufruf von log_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + exit(2); +} + +/*---- log_open --------------------------------------------------------------- + initialisiert syslog() bei einem Daemon-Prozess */ +void log_open(const char *kennung, int option, int facility) +{ + if (debug==0) + openlog(kennung, option, facility); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/error.h b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/error.h new file mode 100644 index 00000000..a55690fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/error.h @@ -0,0 +1,29 @@ +#ifndef ERROR_H +#define ERROR_H +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.h + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#define WARNING 0 +#define WARNING_SYS 1 +#define FATAL 2 +#define FATAL_SYS 3 +#define DUMP 4 + +void log_msg(int kennung, const char *fmt, ...); +void err_msg(int kennung, const char *fmt, ...); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/make.cconfig.from.xml.rb b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/make.cconfig.from.xml.rb new file mode 100644 index 00000000..05f35cc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/make.cconfig.from.xml.rb @@ -0,0 +1,227 @@ +#!/usr/bin/env ruby + +=begin + + Create a cconfig directory based on a xml input. + (C) 2005 by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added binary file support + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Added some commandline options + * Added «level» so control the restrictivity of the program + * Added more «intelligence» to the program, to detect internal broken dependcies. + * Support «debug»-Levels. + * Print statistic at the end of the programs about warnings and errors. + + Version 0.1 (René Nussbaumer): + * Initial + + Todo: + * Use an rexml alternative + * Some cleanup + * Optimize + * Testing? + + Features: + * Create a cconfig directory based on a xml + +=end + +require 'rexml/document' +require 'getoptlong' +require 'base64' +require 'digest/sha1' + +@verbose = 0 +@level = 1 +@version = '0.3' + +@warnings = 0 +@errors = 0 +@checklist = Array.new + +def printMsg(prefix, msg) + puts '%-12s %s' % [prefix + ':', msg] +end + +def error(msg, fatal = 0) + @errors += 1 + fatal = 0 if(@level < 1) + fatal = 255 if(@level > 1 && !fatal) + printMsg(fatal != 0 ? 'PANIC' : 'ERROR', msg) + Kernel.exit(-fatal) if(fatal != 0) +end + +def warn(msg) + error(msg, 1) if(@level > 1) + @warnings += 1 + printMsg('WARNING', msg) +end + +def info(msg) + printMsg('INFO', msg) +end + +def debug(msg, verbosity = 1) + if(@verbose >= verbosity) + printMsg("DEBUG(#{verbosity})", msg) + end +end + +def createObject(name) + error("#{name} already exists.", 1) if(FileTest.exists?(name)) + begin + Dir.mkdir(name) + rescue + error("Could not create directory #{name}: #{$!}. Abort.", 7) + end + debug("Object #{File.expand_path(name)} has been created.", 4) +end + +def createAttribute(name, content = nil) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + begin + file = File.new(name, 'w') + file.print content if(content && !content.empty?) + file.close + debug("Attribute #{File.expand_path(name)} has been created", 4) + rescue + error("Could not create file #{name}: #{$!}. Skipped.") + end +end + +def createLink(name, target, type) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + error("Broken dependencies! Please take a look if #{target} exists on your system", 2) if(type == 'external' && !FileTest.exists?(target)) + if(!FileTest.exists?(target) && type != 'external') + #info("Possible break. But maybe the target #{target} does not yet exists. Checking later.") + exptarget = File.expand_path(target) + @checklist << exptarget + debug("Adding #{target} to the list of internal dependcies to check.", 2) + end + begin + error('You\'ve a system which does not support symbolic links. Abort.', 3) if(File.symlink(target, name) != 0) + rescue + error("Could not create symlink #{name} => #{target}: #{$!}.", 3) + end + debug("Link #{File.expand_path(name)} has been created", 4) +end + +def doWork(elm) + name = elm.name + attrname = elm.attributes['name'] + error("XML Tag with missing name attribute!", 5) if(!attrname) + if(name =~ /(object|cconfig)/) + if(name == 'cconfig') + if(elm.attributes['version']) + info("Found a version string: #{elm.attributes['version']}") + warn("This XML is maybe incompatible with this programm. I'm a version #{@version} script. The XML is generated with a version #{elm.attributes['version']} script. Please update.") if(elm.attributes['version'] > @version) + end + end + createObject(attrname) + if(elm.has_elements?) + pwd = Dir.pwd + Dir.chdir(attrname) + elm.each_element { |e| + doWork(e) + } + Dir.chdir(pwd) + end + elsif(name == 'attribute') + text = nil + e = nil + text = e.value if((e = elm.get_text)) + if(text && elm.attributes['type'] && elm.attributes['type'] == 'binary') + text = Base64.decode64(text) + if(Digest::SHA1.hexdigest(text) != elm.attributes['sha1']) + warn("SHA1 differs from file: #{Dir.pwd}#{attrname}") + end + end + createAttribute(attrname, text) + elsif(name == 'link') + error("link-Tag without content.", 6) if(!elm.has_text?) + error("link with missing target. Skipped.") if(!elm.attributes['target']) + createLink(attrname, elm.get_text.value, elm.attributes['target']) + end +end + +puts "This is #{File.basename(__FILE__)} v#{@version} by René Nussbaumer" +puts + +opts = GetoptLong.new( + ['--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT], + ['--level', '-l', GetoptLong::REQUIRED_ARGUMENT], + ['--version', '-V', GetoptLong::NO_ARGUMENT] +) + +opts.each { |arg,value| + case arg + when '--verbose' + @verbose += 1 + value.each_byte { |x| + if(x.chr == 'v') + @verbose += 1 + end + } + debug("Verbosity set to: #{@verbose}") + when '--level' + debug("Setting level to: #{value}", 3) + case value + when 'low' + @level = 0 + when 'normal' + @level = 1 + when 'paranoid' + @level = 2 + else + warn('Unknown level: ' + value) + end + when '--version' + Kernel.exit(0) + else + warn("Unknown option #{arg}#{value && !value.empty? ? ('with value ' + value) : ''}") + end +} + +if(!ARGV[0]) + puts 'Need at least one argument' + puts "Usage: #{__FILE__} " + Kernel.exit(1) +end + + +filedesc = $stdin + +if(ARGV[0] != '-') + filedesc = File.new(ARGV[0]) +end + +doc = REXML::Document.new filedesc + +doWork(doc.root) + +if(!@checklist.empty?) + info('Now checking all broken internal dependcies again') + broken = 0 + @checklist.each { |path| + debug("Checking #{path}.", 2) + if(!FileTest.exists?(path)) + broken += 1 + warn("Broken dependcies. #{path} does not exist. Please fix.") + end + } + info('Looks good.') if(broken == 0) + info('Bad, bad.') if(broken > 0) +end + +info("Successed. #{@warnings} warnings, #{@errors} errors") + diff --git a/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/mini_printf.c new file mode 120000 index 00000000..3e9a596c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/mini_printf.c @@ -0,0 +1 @@ +../src/generic/mini_printf.c \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/usage.c b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/usage.c new file mode 120000 index 00000000..c26691ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/contrib+tools/usage.c @@ -0,0 +1 @@ +../src/generic/usage.c \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/.buildwarn b/software/cinit/browse_source/cinit-0.3pre14/doc/.buildwarn new file mode 100644 index 00000000..41183a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/.buildwarn @@ -0,0 +1,24 @@ + +Welcome to the cinit +******************** + +Hints: +------ + - Settings can be found in conf/* (also used for compiling) + - Cinit configuration is normally found in /etc/cinit + +Documentation +------------- +The documentation can be found in doc/: + + - doc/user/ contains documentation for users + - doc/devel/ contains documentation for developers + + Please read doc/user/installing-cinit.text BEFORE installing. + +Building cinit +-------------- + + "make all" - to build cinit + "make install" - to install cinit, documentation and core tools + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/Makefile b/software/cinit/browse_source/cinit-0.3pre14/doc/Makefile new file mode 100644 index 00000000..0daac842 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/Makefile @@ -0,0 +1,107 @@ +# +# Makefile stolen from ccollect +# Nico Schottelius, Fri Jan 13 12:13:08 CET 2006 +# + +A2X=a2x +ASCIIDOC=asciidoc +DOCBOOKTOTEXI=docbook2x-texi +DOCBOOKTOMAN=docbook2x-man +XSLTPROC=xsltproc +XSL=/usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl + +# +# Asciidoc will be used to generate other formats later +# +MANDOCS = man/cinit.text man/halt.kill.text man/poweroff.kill.text \ + man/reboot.kill.text man/cmd.text +USERDOCS = user/compiles.on.text user/configuring.cinit.text \ + user/conf-system.text \ + user/cross-compiling.text user/current-init-problems.text \ + user/daemons.backgrounding.text user/dependencies.text \ + user/example-directory-structure.text \ + user/installing-cinit.text user/paths.text \ + user/profiles.text user/README.text +DEVELDOCS = devel/codingguideline.text +DOCS = $(MANDOCS) $(USERDOCS) $(DEVELDOCS) + +# +# Doku +# +HTMLDOCS = $(DOCS:.text=.html) +DBHTMLDOCS = $(DOCS:.text=.htm) + +#TEXIDOCS = $(DOCS:.text=.texi) + +MANPDOCS = $(MANDOCS:.text=.man) + +DOCBDOCS = $(DOCS:.text=.docbook) + +DOC_ALL = $(HTMLDOCS) $(DBHTMLDOCS) $(TEXIDOCS) $(MANPDOCS) + +# +# End user targets +# +help: + @echo "----------- documentation make targets --------------" + @echo "documentation: generate HTML, Texinfo and manpage" + @echo "html: only generate HTML (via asciidoc/docbook/xsltproc)" + @echo "htm: only generate HTML (via asciidoc)" + @echo "info: only generate Texinfo" + @echo "man: only generate manpages" + @echo "pdf: only generate pdfs (requires: fop)" + +install: $(DOC_ALL) + @echo "===> Copy " man/*.[0-9] "to the correct manpaths" + +# +# Internal targets +# +html: $(HTMLDOCS) +htm: $(DBHTMLDOCS) +info: $(TEXIDOCS) +man: $(MANPDOCS) +documentation: $(DOC_ALL) + + +# +# Generic targets +# + +# docbook gets .htm, asciidoc directly .html (or the other way round) +%.html: %.docbook + ${XSLTPROC} -o $@ ${XSL} $< + +%.htm: %.text + ${ASCIIDOC} -n -o $@ $< + +%.docbook: %.text + ${ASCIIDOC} -n -b docbook -o $@ $< + +%.texi: %.docbook + ${DOCBOOKTOTEXI} --to-stdout $< > $@ + +%.mandocbook: %.text + ${ASCIIDOC} -b docbook -d manpage -o $@ $< + +#%.man: %.mandocbook +# ${DOCBOOKTOMAN} --to-stdout $< > $@ + +%.man: %.text + ${A2X} -f manpage $< + +%.pdf: %.text + ${A2X} -f pdf $< + +# +# Distribution +# +clean distclean: + rm -f $(DOC_ALL) + rm -f man/*.texi man/*.xml man/*.[0-9] + +# +# Be nice with the users and generate documentation for them +# +dist: distclean documentation + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/README.text b/software/cinit/browse_source/cinit-0.3pre14/doc/README.text new file mode 100644 index 00000000..46fe59fe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/README.text @@ -0,0 +1,57 @@ +cinit/doc +========= +Nico Schottelius +0.1, Initial Version from 2006-11-30 +:Author Initials: NS + +This directory contains the cinit documentation. + +Files and directories in this directory +---------------------------------------- + +ancient +~~~~~~~ +Old documents, only thought to irritate you. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +braindumps +~~~~~~~~~~ +Files I used to make the situation clear to myself. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +devel +~~~~~ +Developer related documents. Contains information for adding code, +for developing external tools to cinit or code guidelines for writing +patches to cinit. + + +logs +~~~~ +Logfiles or raw data dumps. + + +Makefile +~~~~~~~~ +The makefile used to generate the documentation. + + +man +~~~ +Manpages. + + +README.text +~~~~~~~~~~~ +This file + + +user +~~~~ +The most important part: Documentation for users (aka sysadmins, +hackers, endusers?): Explains howto install, configure, use and +debug cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/README b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/README new file mode 100644 index 00000000..45e193f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/README @@ -0,0 +1,16 @@ +Ancient +======= +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 + + +These files may be incorrect, outdated, totally wrong or even trying +to take over world dominance. + + +Why are they still there? +------------------------- + +Just because to document the early days of cinit. If you are +a software archaeologist in the year 2423, you'll be happy that +I saved those files. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/caveats b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/caveats new file mode 100644 index 00000000..5ab123e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/caveats @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/author b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/availability b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/availability new file mode 100644 index 00000000..cfb3f8a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/availability @@ -0,0 +1 @@ +cinit is currently Linux-specific. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/examples b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/examples new file mode 100644 index 00000000..1a7d2dcb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/examples @@ -0,0 +1 @@ +See http://linux.schottelius.org/cinit/#config diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/files b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/files new file mode 100644 index 00000000..4d6c0921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/files @@ -0,0 +1,5 @@ +/sbin/cinit - the init system +/sbin/cservice - control cinit +/sbin/cinit.reboot (/sbin/reboot if non-existent before) +/sbin/cinit.shutdown (/sbin/shutdown if non-existent before) +/etc/cinit - configuration directory diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/long_description b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/long_description new file mode 100644 index 00000000..18c3c082 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/long_description @@ -0,0 +1,5 @@ +cinit is a fast executing, small and simple init with support for profiles. It +minds dependencies (hard and soft, 'needs' and 'wants') and executes processes +in parallel. And it has a simple configuration, which makes many shell-scripts +unecessary (but you still could use them if you really want), which leads to +better performance and less memory using. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/meta/name new file mode 100644 index 00000000..b853da25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/meta/name @@ -0,0 +1 @@ +cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/parameters b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/parameters new file mode 100644 index 00000000..54df4727 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/parameters @@ -0,0 +1 @@ +cprofile: diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/path b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/path new file mode 100644 index 00000000..37edf339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/path @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/see also b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit.commands b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit.commands new file mode 100644 index 00000000..d34d13bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cinit.commands @@ -0,0 +1,73 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (using SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. +CMD_UPDATE: Update cinit, hot-reboot the system. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/author b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/long_description b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/long_description new file mode 100644 index 00000000..82818a93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/long_description @@ -0,0 +1 @@ +cservice controls cinit. Please use cservice -h for help. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/meta/name new file mode 100644 index 00000000..49c847bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/meta/name @@ -0,0 +1 @@ +cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/parameters b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/parameters new file mode 100644 index 00000000..605b08b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/parameters @@ -0,0 +1 @@ +[-eaphru] [thilo] diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/path b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/path new file mode 100644 index 00000000..85b0cb56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/path @@ -0,0 +1 @@ +/sbin/cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/see also b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/cservice-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/extern/README b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/extern/README new file mode 100644 index 00000000..e734d6d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/extern/README @@ -0,0 +1,2 @@ +doc/extern/ + Some things related to cinit from the outside world. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/extern/ipc.thoughts b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/extern/ipc.thoughts new file mode 100644 index 00000000..e2619d34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/extern/ipc.thoughts @@ -0,0 +1,83 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2 ), +1024 is the maximum opened file deskriptors, +minus 3 (stdin/stdout/stderr) already opened, divided +by two, because two fds needed per client. + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt, + - poweroff, + - update itself (hot-reboot) + - and to start a rescue mode (see using.rescue). + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + CONT: update + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/extern/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/extern/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/extern/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/extern/linux.kernel.eats.arguments b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/extern/linux.kernel.eats.arguments new file mode 100644 index 00000000..dbaf57d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/extern/linux.kernel.eats.arguments @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +Linux, the kernel, eats arguments +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +If you specify + + variable=value + +to the Linux kernel, the argument will NOT be passed to cinit. + +Here's the relevant code block from init/main.c of the Linux kernel: + +------------------------------------------------------------------------------- + +From init(void * unused) the function run_init_process(char *init_filename) +is called, which passes argv_init (char * argv_init[MAX_INIT_ARGS+2]) to init. + +First init_setup(char *str) resets all elements of the argv_init to NULL. + +The function unknown_bootoption(char *param, char *val) fills the +argv_init array, but only with parameters, which have no value +(val). + +The function parse_args calls unknown_bootoption with the unknown options. + +------------------------------------------------------------------------------- + +This way the profile support in all cinit versions below cinit-0.1 will +only work if you change conf/profile, because "cprofile=value" will +not be given to cinit, because it's not treated as a command line option. + +The original value "cprofile=" is replaced by "cprofile:" as of cinit-0.1. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/extern/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/extern/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/extern/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/fun-testing b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/fun-testing new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/fun-testing @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/how_it_works_internally b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/init-idea-first b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/init-idea-first new file mode 100644 index 00000000..2d677d8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/init-idea-first @@ -0,0 +1,38 @@ +- restarting/respawning + touch respawn +- dependencies + a needs started b +- clean multiply dependencies +- start & stop dependencies + start_depends + stop_depends +- parallel executation +- start and stop commands + start -> link + start_param -> parameters, like minit + stop -> link + stop_param -> parameters, like minit + + if no stop command is available, try to kill the pid we started at stop + +/startup/ + start_depends=gettys +/shutdown/ + stop_depends=power_off + + +gettys/ + start_depends=getty/1 + start_depends=getty/2 + start_depends=getty/3 + start_depends=getty/4 ... + +getty/1/ + start=/sbin/fgetty + respawn + +power_off/ + stop_depend=umount + +umount/ + stop_depend= diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/porting.to.other.os b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/porting.to.other.os new file mode 100644 index 00000000..65fdc07b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will perhaps become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/removing.zombies b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/removing.zombies new file mode 100644 index 00000000..9527e652 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + cinit in general will keep the behaviour of reaping the vestiges, + which broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/security b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/security new file mode 100644 index 00000000..f1dac591 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/security @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation, which will not accept connect() +by others than root. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console then! + +For extra parnoid settings you can do the following: + + ei # chmod 700 /etc/cinit/tmp/coala + ei # chown root:root /etc/cinit/tmp/coala diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/socket.poll_vs_o_async b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/socket.poll_vs_o_async new file mode 100644 index 00000000..477f2bff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/socket.poll_vs_o_async @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------------- +Socket: poll(2) vs. O_ASYNC, +Nico Schottelius 2005-06-22 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +0. General problem +1. O_ASYNC +2. poll(2) + + +0. General problem + +cinit has to react, as soon as there's data on the socket. + +1. O_ASYNC + +When you open a socket with O_ASYNC (or specify it with fcntl(2)) under +Linux, your process recieves the SIGIO signal from the kernel, as soon +as data is available. + +The problem is the handling of signals seems not to be serialised: + +The function, which is called on the SIGIO signal (called sigio() here) +calls other functions. Those functions way recieve SIGIO while working, +so the first data stream is not yet finished, though the next +stream is beeing read. + +This gives very nice race-conditions, which are very nice to debug. + +2. poll(2) + +poll(2) is a standard Unix-call (XPG4-UNIX), which waits a specific +timeout (or infinite time if you specify a value less that zero) for +the socket (or the fd in general) to be in a state where +data is available to read (in fact poll can do much more, but we are +not interested only in POLLIN and POLLPRI). + +While poll(2) seems to be a very bit slower than sigio it works reliable. + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/thoughts.closed b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/thoughts.closed new file mode 100644 index 00000000..91a8e080 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/ancient/thoughts.closed @@ -0,0 +1,52 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c + +7. Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. As this is not needed + currently, it's not implemented. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/README.text b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/README.text new file mode 100644 index 00000000..c4947a13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/README.text @@ -0,0 +1,2 @@ +DO NOT READ CONTENT IN THIS DIRECTORY. +(or at least do not blame me, if you get really confused after reading it) diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/big-picture.text b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/big-picture.text new file mode 100644 index 00000000..4426c236 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/big-picture.text @@ -0,0 +1,122 @@ +Just a small hint-file for me to see how cinit works: + + - cinit starts + * cinit executes either init or a profile + - the dependency-tree begins + + - now cinit begins to try to execute the dependencies + * first the needs (if those fail, wants are never called) + - fork() for every dependency? + +-------------------------------------------------------------------------------- +another idea: + + - cinit starts + - cinit reads the full depedency tree + * it builds n-depth trees + * it begins at the set init service (profile or init!) + * init is the first entry. always. + * read full service information (like on/off/params/respawn) + * design of each tree element: see below + - add a tree for the needs + - add a tree for the wants + - the elements have links, one service is created only once + - after the tree is created, execution begins + * begin from the bottom + * save a pointer to the last level somehow before? + +Pre calculation: + - need to act on changes (some kind of file watcher) + * need to keep status (?) + * what with now missing needs / wants? + - missing needs: shutdown now missing needs? + - simply ignore them? + - shut them down if not needed (no one has a link in needs?) + * +-------------------------------------------------------------------------------- +Sample dependency tree: + + init + / \ + needs wants + / | \ / | \ + a b c d e f + / | \ / | \ + needs needs needs END needs END + / | \ \ | | | | + b c d c f a e a +-------------------------------------------------------------------------------- +How this would be sorted:: + init: + needs: a b c + wants: d e f + a: + needs: b c d + b: + needs: c f + c: + needs: a e + d: + - + e: + needs: a + f: + - +-------------------------------------------------------------------------------- +So in this case, cinit may start services the following way: + d f + -> Wouldn't be possible in pre-calculation, because of circular dependencies. +-------------------------------------------------------------------------------- + Try a 'real' dependency tree: + a needs b c d + b needs c d + c and d do not need other stuff +-------------------------------------------------------------------------------- +Now cinit would it do the following way: + start c, start d + b will be started, as soon as c and d successfully finish + as soon as b is finished, a will be started +-------------------------------------------------------------------------------- +Now let's think about how this could look like in code... +- when we built up the tree, we have some ends (n to say) +- we can / must start starting (;-) at the end +- we would have more than one line back (z may be needed by c, i, and a) + * like in "c is needed by s, c, o" + * maxdepth counter? + * asynchronous rollback? + +--> to think more about it! +-------------------------------------------------------------------------------- + +tree elements: + * name (= path) + * on, off, +params + * respawn_delay + - -1 if not respawning + - >= 0 time to wait between restart + * status + - NOT STARTED (status on initialisation) + - RESPAWNING (running, respawning) + - RESPAWN_DELAY (waiting to respawn it) + - ONCE (started once) + * errormsg + - pointer to an error message in case of failure + * needs + - List of services we need + * wants + - List of services we want + * used_by + - List of services which use this service +-------------------------------------------------------------------------------- + +Conclusions +------------ + +cinit as the main executor +~~~~~~~~~~~~~~~~~~~~~~~~~~ +If cinit should start all services directly and manage dependencies +only internally, it will need to have build a reverse dependency tree, +so it begins starting at the end. + +cinit could execute all possible parallel running services in parallel +and open pipes to the (dumb) service executors. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/circular-dependencies.text b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/circular-dependencies.text new file mode 100644 index 00000000..dcc91ea7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/circular-dependencies.text @@ -0,0 +1,35 @@ +What todo with circular dependencies? + a needs b + b needs a + + - try to start them? + status a: is_starting + status b: not_set + a wants b, so a service starter for b starts + status a: is_starting, waiting for b + status b: is_starting + service starter for b sees that a is needed + service starter for b sees that a is already being started + service starter for b begins to execute b + status a: is_starting, waiting for b + status b: is_starting, executing "on" + service starter b finishes + status a: is_starting, waiting for b + status b: FAILED | RESPAWN | ONCE + service a continues + b successful: execute on + b failed: register / print that we do not start, because + b failed + + -> this would only catch possible deadlocks, if the dependency + tree / status check is done dynamically + -> in case of pre-building the dep-tree this situation must + be concerned: + - start both a and b? + - or stop due to circular dependency? + + - Abort on detection of a circular dependency + * possible without pre-calculating? + - perhaps only with direct communication possible? + * pre calculate + - do not start that services? diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/converting-debian b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/converting-debian new file mode 100644 index 00000000..ee40fdff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/converting-debian @@ -0,0 +1,30 @@ +# If you would like to automatically convert a debian system, you could +# use this script as a start point +# +# how it could look like +# + +# create cinit base configuration + +# analyse enabled services +level=$(awk -F: '/^id/ { print $2 }' /etc/inittab) +rcdir="/etc/rc${level}.d/" +initdir=/etc/init.d + +cd "$rcdir" +for svc in *; do + if [ -d "${debian_map_dir}/${svc}" ]; then + echo "Adding $svc" + else + + fi +done + +# Also add existing services in /etc/init.d +for ... + if [ ! -e $rcdir/$svc ] + if [ -d "${debian_map_dir}/${svc}" ]; then + echo "Adding, but not enabling" + fi + fi +done diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/converting-general b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/converting-general new file mode 100644 index 00000000..8a0a2e40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/converting-general @@ -0,0 +1,10 @@ +kern=$(uname -s) + +case "${kern}" in + $known_kern) + $scriptdir/$kern + ;; + *) + echo "Unknown system" + ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/creating-new-configurations b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/creating-new-configurations new file mode 100644 index 00000000..a251de5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/creating-new-configurations @@ -0,0 +1,6 @@ +scripts/create_baseconfig.sh # create base +scripts/cinit.install.standard.dirs # create common categories + +- create fsck +- set hostname +- create getty(s) diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/messages.text b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/messages.text new file mode 100644 index 00000000..f4ef769e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/messages.text @@ -0,0 +1,6 @@ +This document describes the messages used between cinit and its +"clients" (i.e. ccontrol, cservice, cinit.halt, ...): + +Signal messages +--------------- +As signals diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/possible_service_pre_calculation.text b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/possible_service_pre_calculation.text new file mode 100644 index 00000000..96ec3a73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/possible_service_pre_calculation.text @@ -0,0 +1,19 @@ +- start at + * create a new service entry (if not exists) <--- + * reads needs | + - follow dependencies ------------------------ + * only if service does not yet exist! | + * read wants | + - follow dependencies ------------------------ + * only if service does not yet exist! + * create + - needed by entry in dependencies + - needs entry in service + - wanted by entry in dependencies + - wants entry in service + + * record + - (on,off)(,.env,.params)? + - alternatively put that code into service starter + * add services without further needs into a special + "begin" structure to be reused at fireing of the services? diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/possible_service_status.text b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/possible_service_status.text new file mode 100644 index 00000000..eb0f21e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/possible_service_status.text @@ -0,0 +1,14 @@ + + - NOT_SET: this service has not yet been initialized + - RESPAWNING: happily respawning + - RESPAWN_DELAY: waiting delay before restarting + * HINT: using alarm()? + - senseful for single process service watcher + * HINT: using nanosleep()? + - senseful for per service process watcher + - NEED_FAILED + * add a (somehow terminated) list of services that failed? + * use global status to checkout which services failed? + - WANT_FAILED? + * NOT NECESSARY, it is a simple want, we do not need it. + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/registering_needs_wants.text b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/registering_needs_wants.text new file mode 100644 index 00000000..ededbd41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/registering_needs_wants.text @@ -0,0 +1,55 @@ +Each service has a list of services it + - needs + - is needed by + - wants + - is wanted by + + +Each entry is a service pointer. +The simplest list could look like this: + + service a: + needs: + b f g NULL + +So the needs pointer is NULL terminated: + needs = realloc(count_links) + -> how to get the count? + 0x02 + 0x + + Better: A double linked list (like the main service list)? + +Could look like: + service a: + needs: + *service + *next + *prev + +This design could also be used for wants. + +On the other hand, we've to register us at the needed/wanted service: + + service b: + needed_by: + *service + *next + *prev + + +So each service needs four pointers: + needs + needed_by + wants + wanted_by + +And on each request both lists have to be modified! + +Example: + + Service "a" adds "b" as needed: + + - add "a" needs "b" + - add "b" needed_by "a" + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/root-vm-testing b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/root-vm-testing new file mode 100644 index 00000000..a8773dea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/root-vm-testing @@ -0,0 +1,9 @@ +[19:33] denkbrett:root% cat uml-mount.sh +SDIR=$(dirname $0) +DDIR=$(dirname $0)/root +sudo mount "$SDIR/Debian-3.0r0.ext2" "$DDIR" -o loop,acl + +denkbrett# tar cfj ~nico/projekte/cinit/conf-vm-2007-03-05.tar.bz2 cinit +denkbrett# chown -R nico cinit +denkbrett# chown nico ../sbin + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/shutdown.text b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/shutdown.text new file mode 100644 index 00000000..ac76425d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/shutdown.text @@ -0,0 +1,84 @@ +cinit - braindumps - shutdown +============================= +Nico Schottelius +v0.1, for cinit-0.3, 2007-01-11 +:Author Initials: NS + +Just some braindumps. Do not read. + +Introduction +------------ +Shutting down the system. + +When? +----- +- reboot +- halt +- power off +- further needed? + +How / What? +------------ +- Stop services in the correct order + * reuse the service tree / needs / needed_by! + * call off, if existent + * if respawning, send SIGTERM? + - not if off is existent? + * give some variables to off? + - $RESPAWN_PID: if respawning +- send SIGTERM to other apps? + * or put that into special? special/post_svc_shutdown +- call special/{halt,poweroff,reboot} + * no, implemented that directly into cinit! +- implement timely controlled shutdown: + * cinit.shutdown forks (?) itself and waits, then sends a signal + to cinit to initiate the shutdown process + * create mappers for target OS + - Linux + - {free,net,open}bsd + - others may contribute theirself +- also implement poweroff + * kill -TERM 1 +- also implement reboot + * kill -HUP 1 +- also implement halt + * kill -USR1 1 + + +The implementation +----------------- +x shutdown is initiated +x disable communication (nobody can influence us anymore) +x install special signal handler? + - no. we do not care about zombies anymore, we are gone soon anyway + - simply reset to the default +- begin to shutdown services + * where to start? + * begin shutdown at the end of the tree, viewing/sorting it by the 'needed_by' + -> where to begin sort? + -> worst implementation: scan all services (easy for now) + -> result: list of services, that noone needs :-) + * stop those services and step above + - stop a service, as soon as noone needs it anymore + * check all needed_by links + * more or less the inverted gen_svc_tree +- how to shutdown a service + * if existing, call off + - if off does not exist: + * if respawn: send sigterm to the process + * also implement sigkill at this stage? + - think we can delay it to the end + - otherwise users can use off! + - implement environment for off ($cinit_respawn_pid, $cinit_service_name) + - do *NOT* care about the return value, we can't do anything for it + anymore anyway +- after all services are shutdown, kill all remaining services + * SIGTERM + * wait(defined_time_in_seconds) + * SIGKILL +- call the last command + * to cleanup the system + - umount -a (if needed) + - swapoff (if needed) + - sync (if needed) +- switch off diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/sizes b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/sizes new file mode 100644 index 00000000..ddd30f75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/braindumps/sizes @@ -0,0 +1,6 @@ +sysvinit: +root 1 0.0 0.0 1944 648 ? Ss 02:12 0:00 init [2] + +cinit-0.3pre8-glibc-linux: +compiler 25323 0.0 0.0 1564 392 pts/2 S+ 20:22 0:00 ./cinit + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/devel/README.text b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/README.text new file mode 100644 index 00000000..20524651 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/README.text @@ -0,0 +1,18 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit development documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +(cinit-)developers. + +Content +------- diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/devel/cinit-0.4.text b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/cinit-0.4.text new file mode 100644 index 00000000..61b718f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/cinit-0.4.text @@ -0,0 +1,115 @@ +cinit 0.4 - Redesign of cinit +============================================ +Nico Schottelius +0.4.0, for cinit 0.4, Initial Version from 2006-03-11 +:Author Initials: NS + + +cinit 0.2 ran fine and the general project of developing a +parallel executing init system is finished. +With cinit 0.4 there are new aims to reach. + + +Introduction +------------ + +. AIMS + - portability: no Linux-dependency anymore + - cleaner signal handling + - better documentation so more people can use it + + +Current problems +---------------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The mount(2) system call is os-specific. +The temporary fs is os-specific. + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Race conditions when multiple signals arrive + + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +serv/sig_reboot.c contains umount, remount hard coded. + + +Solutions +--------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Remove +- the mount call +- do not create an initial socket + +Wait until we recieve a signal, then we create a socket +under the configured socket directory (see `conf/sockdir`). + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +Misc +~~~~ + +- Configuration + /etc/cinit/config/ + init -> link to initial service + pre_boot + pre_boot_args + post_boot + post_boot_args + /etc/cinit/services/ + /etc/cinit/profiles/ + links to the starting services + + + +cinit - Internals +================= +Nico Schottelius +0.1 for cinit-0.3, Initial version: So Feb 19 10:25:46 CET 2006 +:Author Initials: NS + + +Introduction +------------ +This document describes the internals of cinit. It is thought +to be read by developers. + + +Child handler code in cinit-0.3 +------------------------------- + +In cinit versions <= cinit-0.2.1 the respawning services where +handled by an extra child handler, which was a fork of cinit. This +had some problems: + + - We allocated more memory than necessary, unecessary parts of + cinit were copied + - The SIG_CHILD-handler was not written very clean, in some versions + it was completly missing. + + +. So in `cinit-0.3` we changed it the following way: + - no extra child handlers + - handle everything in the SIG_CHILD handling function + - when sig_child is recieved do: + - check against respawn list + - if it is a respawning service, [do the following in a seperate fork?] + check whether it successfully stoped + - if yes: restart immediatly + - if no: sleep $sleep_time and then restart diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/devel/codingguideline.text b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/codingguideline.text new file mode 100644 index 00000000..d4686d8f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/codingguideline.text @@ -0,0 +1,149 @@ +Coding style +============ +Nico Schottelius +0.1, for cinit, Initial version from 2006-11-13 +:Author Initials: NS + +This document describes the coding style used in cinit. + + +Indent +------ +Indent the code by 3 spaces for each level. +Indent variable names, so the names begin all at the same position. +Use three spaces to place them. + + +Whitespaces +----------- +Where to put or avoid whitespaces (space or linefeed (lf)). + + +Spaces +~~~~~~ +- After closing brace "if(test) return 0;" +- Spaces before and after '=', '>', '<', '==', '!='', '>=', '<=', '>>', '<<', '&', '&&', '|', '||' +- After start of comment and before end of comment: '/* text */' + + + After ')', ',' + +No spaces +~~~~~~~~~ +- Within braces and code "(!test)", +- Before braces "if(code)" +- No space before ), so if '))', do not put a space after the first ')' + + +Linebreaks +~~~~~~~~~~ +This somehow includes the setting of braces (indirectly through (not) setting +spaces. + +If +^^ + +Put the if, the braces and the opening curly brace on one line, +put the closing one together with `else` and the new opening +curly brace on one line: + +------------------------------------------------------------------------------ +if(...) { + /* code */ +} else { + /* else: code */ +} +------------------------------------------------------------------------------ + +While +^^^^^ +------------------------------------------------------------------------------ +while(condition) { + /* repeat */ +} +------------------------------------------------------------------------------ + +Do-While +^^^^^^^^ +------------------------------------------------------------------------------ +do { + /* something */ +} while(running); +------------------------------------------------------------------------------ + +Switch +^^^^^^ + +------------------------------------------------------------------------------ +switch(value) { + case DO_SOMETHING: + /* code */ + break; + default: + break; +} +------------------------------------------------------------------------------ + + + +Where to put curly braces +------------------------- + +Functions +~~~~~~~~~ +Opening and closing curly braces are placed on a seperate row: + +------------------------------------------------------------------------------ +int func(int params) +{ + body +} +------------------------------------------------------------------------------ + + +If, else, while, do-while +~~~~~~~~~~~~~~~~~~~~~~~~~ +See above. + + +Comments +--------- +where necessery, do not state the obvious in comments: + + /* this code increments tmp */ + ++tmp; + +If there is more than one line containing a comment, try to adjust them +so they look the same in width and position: + +------------------------------------------------------------------------------ + int illuminati = 23; /* do not want to comment that */ + int the_answer_to_everything = 42; /* 42. */ + + [...] + + while(illuminati < the_answer_to_everything) { /* only try before them */ + overtake_world(&self); /* overtake is complex */ + } +------------------------------------------------------------------------------ + + +Header +------- +Put a header into each file, containing: + + - Date of file being put into existence (year is enough) + - Name and e-mail (obfuscated if you want) of the author(s) + - Description of the function + - Copyright statement (if not included GPLv2 or later is assumed) + + +Includes +~~~~~~~~ +Include system headers first, then place own headers. Comment the includes, +wherefore you added them. Example: + +------------------------------------------------------------------------------ +#include /* write */ +#include "cinit.h> /* cinit_ipc_* */ +------------------------------------------------------------------------------ diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/devel/communication.text b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/communication.text new file mode 100644 index 00000000..64ea30cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/communication.text @@ -0,0 +1,248 @@ +cinit - communication +===================== +Nico Schottelius +0.1 for cinit-0.3, Initial version: 2006-08-11 +:Author Initials: NS + +This document describes the internal communication of cinit. +It is thought to be read by developers. + + +Introduction +------------ +This document describes the messages used between cinit, cinit forks +and other programs that want to talk to cinit. It does NOT +describe the communication method, but only the messages sent +(for the communication method read "ipc.text"). + + +Document status +~~~~~~~~~~~~~~~ +This document is still being written, it is not finished. + + +About Messages +-------------- + +Order +~~~~~ +The client always initiates the communication. +cinit will begin listening to messages directly after its start. + + +Numbers +~~~~~~~ +Can be found in include/cinit.h. + + +Data +~~~~~ +A message always conists of a predefined structure (see src/headers/comm.h). +Can't use a structure, were missing the point that we cannot transfer dynamic +length strings. Thus the protocol consists of: + + client(int) => cinit + cinit(ini) => client + => after that follows command specific data + +The byte order is host specific (may be little or big endian). + +STRUCTURE WITH STATIC SIZE. MSGRCV! +IPC LAYER CREATES TRANSPORT! + +Type +~~~~ +Messages are binary data. + +The messages +------------ +The client always uses the same structure (struct msg_client) to contact +cinit. This way cinit does not need to handle dynamic data structures. + +cinit in contrast delivers different data structures to its clients, +depending on the question. + +The questions are issued by any type of client, the internal command used is +noted in square brackets ([]). + +The answers are given by cinit. + + +Question: Start a service (and its dependencies) [CMD_START_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to start the service and its dependencies. + +The client must provide cinit with the following information: +. Name of the service to be started +. Reason why to start it +. eventually additional information (see below) + +The reason +^^^^^^^^^^ +Can be one of: +- RS_NONE (it's a manual start request) +- RS_WANTS (a currently starting service wants to start this service) +- RS_NEEDS (a currently starting service needs to start this service) + +If the reason is RS_WANTS or RS_NEEDS the client must supply the name +of the service, which wants it to be started. + + +Question: Start a service (nothing else) [CMD_START_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to start the service and which will +report the status back. + + +Question: Stop a service (and its dependencies) [CMD_STOP_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to stop the service and each service +that 'needs' it. + +This function works recursively, thus also killing those services, that +need the service that need the current service. + + +Question: Stop a service (nothing else) [CMD_STOP_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to stop this service and which will +report the status back. + + +Question: Stop a service (plus 'needs' and 'wants') [CMD_STOP_SVC_WANTS] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Same as 'Stop a service (and its dependencies)', but also stop the +services that want to have this service. + +This function works recursively, thus also killing those services, that +'need' or 'want' the service that 'need' or 'want' the current service. + + +Question: What's the status of service XYZ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Code, length of service name, the service name (without \0). +int, int, char[]; + + + +Question: Could you change the status? [CMD_CHG_STAT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A cinit fork reports the new status of a service. + + +Question: Could you start the rescue mode? [CMD_RESCUE] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +spawn the rescue program. + + +Question: Could you halt the system? [CMD_HALT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +halt the system. + + +Question: Could you reboot the system? [CMD_REBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +reboot the system. + + +Question: Could you poweroff the system? [CMD_POWEROFF] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +poweroff the system. If poweroff is not possible, the system will +be halted. + + +Question: Could you warmboot the system? [CMD_WBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +restart itself and the bootup process. + + +Question: Could you send information about a service? [CMD_INFO] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will respond with detailled information about the service +to the client. + + +Answer: Return short status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Start a service (and its dependencies) + - Question: Start a service (nothing else) + - Question: Stop a service (and its dependencies) + - Question: Stop a service (nothing else) + - Question: Stop a service (plus 'needs' and 'wants') + - Question: Could you change the status? + +cinit only responds the status of the asked service. +The structure send is "asw_sstatus", which only include a status byte. + + +Answer: Return long status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Could you send information about a service? + + +old Messages (to be transferred into this document) +--------------------------------------------------- + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Service status: + +-------------------------------------------------------------------------------- +service status (cinit), +Nico Schottelius 2005-09-29 (Last Modified: -) +-------------------------------------------------------------------------------- + +There are service status and service returns. Service status is a status +a service can have. A service return is a value from a function that +describes what happened with the service. + +Status has ST_ prefix, return has RT_ prefix. +See cinit.h for most up to date versions. + + +ST_NEED_FAIL - this service will not be started, until the needs are started +ST_FAIL - this service failed to start +ST_UNSPEC - some unknown error. This should never happen. +ST_ERR - ??? /* tried earlier, service failed, won't retry */ + +ST_SUCCESS - service was successfully started - senseful? +ST_TMP - some instance is currently working on it +ST_ONCE - executed once sucessfully +ST_RESPAWN - service is running and respawning + +ST_TMPNOW 55 /* now you are on it - only for clients */ +#define ST_OFF 56 /* Switching service off */ + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/devel/configuring.text b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/configuring.text new file mode 100644 index 00000000..405a4d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/configuring.text @@ -0,0 +1,18 @@ +cinit/doc/devel/using-conf.text +================================ +Nico Schottelius +0.1, Initial Version from 2006-07-28 +:Author Initials: NS + +About conf/* and how to use the configurations. + +Introduction +------------ + +Who should read those documents? +-------------------------------- + +Content +------- + + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/devel/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/cross-compiling.text new file mode 100644 index 00000000..fdf70564 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/cross-compiling.text @@ -0,0 +1,36 @@ +TODO: + - merge into "Cross compiling" + +cinit - Problems that may arise +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Max open files + OS dependent + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/devel/ipc.text b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/ipc.text new file mode 100644 index 00000000..e57ac039 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/ipc.text @@ -0,0 +1,169 @@ +IPC - in cinit and in general +============================= +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +IPC - Inter process communication + +Introduction +------------ +This document describes the IPC methods used and/or tested for +cinit. + +It does not describe in detail, how the different methods work +(this is already done many times, there's great documentation +available online), but more the advantages and disadvantages +(especially for an init system). + +What is IPC? +~~~~~~~~~~~~ +IPC describes methods to communicate between different processes +(programs). + +IPC as described by SUSV3 (The Single UNIX Specification Version 3) +aka IEEE Std 1003.1, 2004 Edition aka POSIX only defines +MSQ, SHM and Semaphores as IPC. This document also covers +Sockets and FIFOs. + + +What is not (yet) covered by this document? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Speed of different IPC methods, different behaviour on different +unices. + + +Why do you need IPC for an init system? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +cinit IPC history + analysis +---------------------------- + + +FIFOs +~~~~~ +First in - first out +File on the filesystem +Always need two files for two way communication + +Hints +^^^^^ +The first idea for IPC in cinit was to use two FIFOs, like minit does. +Wrong assumption: +runit also uses fifos, but two fifos for each services. That way +more parallel transmissions is possible. +You have to pay attention: Maximum number of opened files! +(On Linux 2.6 this is 1024, which makes a maximum of 512 services. +This limit is most likely never reached, but you have to keep it +in mind). + +Sockets +~~~~~~~ +Clean and beautiful. They allow easy two way communication. + +If you created a socket, fs is r/o, you cannot use it, although +there is SO_REUSE. + +First method: Using memory mapped part (tmpfs). +Second method: use interal communication (pipes!) and external after +/etc/cinit/ becomes writable. + + +Current IPC configuration +-------------------------- + +- switchable (conf/ipc_method) +- each ipc implementation needs: + + ipc.h -> for global variables and ipc specific things + prefix variables with ipc_ + int cinit_ipc_init(void); -> general initialization + return 1 on success, 0 on failure + int cinit_ipc_listen(void); -> begin to listen for messages + int cinit_ipc_send(void *data) -> send data to a client + +Abstraction layer: cinit_ipc_* +------------------------------ +You can choose or even reimplement ipc code for cinit. You only have to create +a directory below src/ipc/ and create the following necessary functions: + +int cinit_ipc_init(void); +~~~~~~~~~~~~~~~~~~~~~~~~~ +Initialise the IPC functions in cinit. + + +int cinit_ipc_listen(void); +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Never ending looping function that listens for commands and passes the +retrieved command to read_command(). + +other +~~~~~~ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + + +cinit_get_data(int ident, int size, void *data) => read size bytes from client +with ident + +/***************************************************************************** + * Functions: in clients + */ + int cinit_ipc_logon(void); /* logon to init (client init) */ + int cinit_ipc_connect(void); /* connect to init */ + int cinit_ipc_csend(struct cinit_message *data); /* send to the server from a client */ + + +-------------------------------------------------------------------------------- +Messages: + + struct cinit_question qsn; + struct cinit_answer asr; + +question: + +answer: + +int cinit_send_to(struct cinit_question *data, struct cinit_answer *res) + -> return 0 on ipc errors + +-------------------------------------------------------------------------------- +enable / disable services: + + - send svc + - send flags + + - recv return: + CINIT_ASW_SVC_STOPPED: successfully stopped the service + + CINIT_ASW_SVC_ERR: failed to stop the service + CINIT_ASW_SVC_WANTS: wants failed + CINIT_ASW_SVC_NEEDS: needs failed + opt contains number of failed services + retriev them from cinit after that + +-------------------------------------------------------------------------------- +TO SORT: + +1. message queues + o clients schreiben rein + o datenpaket gross genug fuer antwort? + +2. shared memory + o client kann direkt rauslesen, was gestartet werden muss + o client kann direkt abhaengigkeiten starten, muss diese aber + eintragen + +Ausprobieren: + - Mutexe + - Message Queues + - + +Ideen: + Message queue + 1. Client geht auf die normale + als id = pid (cast!) + dann rueck via anderer queue + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/devel/lists.text b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/lists.text new file mode 100644 index 00000000..6360acb3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/lists.text @@ -0,0 +1,22 @@ +Lists in cinit-0.3 are generalized, all have the same general layout: + + - double linked + - have 'prev' and 'next' as pointers + + Add an element to a list + + /--------------------------\ + |<->first<->middle<->last<->| + + + After insert: + + /-------------------------------\ + |<->first<->middle<->last<->new<->| + + We alway have 'first'. + Need to adjust: + - new->prev = last (= first->next) + - new->next = first + - first->prev = new + - first->prev->next (= last->next) = new diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/devel/merging.other.initsystems.text b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/merging.other.initsystems.text new file mode 100644 index 00000000..0baa4789 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/merging.other.initsystems.text @@ -0,0 +1,68 @@ +TODO: + - rewrite to asciidoc + - implement a sample merge + +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not mean that he does not accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated! + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/devel/optimising.cinit b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/optimising.cinit new file mode 100644 index 00000000..4f4b5c02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/optimising.cinit @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options +2. striping + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + +The current standard for cinit is: (see CFLAGS in the Makefile). + + +2. striping + +With strip(1) you can remove specific sections of object files. +You have to find out, which ones you can remove safely +(for instance with objdump(1)). + +The current standard for cinit is: (see STRIP in the Makefile) diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/devel/testing.text b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/testing.text new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/devel/testing.text @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/gpl3-header b/software/cinit/browse_source/cinit-0.3pre14/doc/gpl3-header new file mode 100644 index 00000000..27f761be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/gpl3-header @@ -0,0 +1,23 @@ +/******************************************************************************* + * + * 2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * purpose_of_this_file_is_also_there_behind_the_big_header + * + */ diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/logs/2006-10-25.config.wasserstoff b/software/cinit/browse_source/cinit-0.3pre14/doc/logs/2006-10-25.config.wasserstoff new file mode 100644 index 00000000..f28bd71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/logs/2006-10-25.config.wasserstoff @@ -0,0 +1,16 @@ +[17:12] wasserstoff:svc# pwd +/etc/cinit/svc +[17:12] wasserstoff:svc# ls +init +17:12] wasserstoff:svc# mkdir getty +[17:12] wasserstoff:svc# mkdir getty/2/ +[17:12] wasserstoff:svc# cd getty/2 +[17:12] wasserstoff:2# ln -s /sbin/getty on +17:12] wasserstoff:2# echo 38400 > on.params +[17:13] wasserstoff:2# echo tty2 >> on.params +[17:13] wasserstoff:2# cd ../../init +[17:14] wasserstoff:init# mkdir needs +[17:14] wasserstoff:init# cd needs +[17:14] wasserstoff:needs# ln -s ../../getty/2 getty-2 +[17:14] wasserstoff:needs# + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/logs/2006-11-22.startup-with-debug b/software/cinit/browse_source/cinit-0.3pre14/doc/logs/2006-11-22.startup-with-debug new file mode 100644 index 00000000..44121cf4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/logs/2006-11-22.startup-with-debug @@ -0,0 +1,55 @@ +[0:08] wasserstoff:cinit-0.3pre3% ./src/cinit +cinit-0.3pre3: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty:: +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2:: +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout:: +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3:: +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning:: +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount:: +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root:: +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network:: +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0:: +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback:: +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::/etc/cinit/svc/init +========> tree_exec() +/etc/cinit/svc/local-tuning/keyboard-layout:::abhaengigkeiten gestartet, exec; add wants, needsdep_needs_wants_add::/etc/cinit/svc/local-tuning/keyboard-layout add: (/etc/cinit/svc/getty/2) + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/logs/2006-11-30.startup-0.3pre5 b/software/cinit/browse_source/cinit-0.3pre14/doc/logs/2006-11-30.startup-0.3pre5 new file mode 100644 index 00000000..2ded7712 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/logs/2006-11-30.startup-0.3pre5 @@ -0,0 +1,1821 @@ +cinit-0.3pre4: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2 +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3 +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0 +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/test +gen_tree::/etc/cinit/svc/test +CAD::/etc/cinit/svc/test +CAD::NEW::/etc/cinit/svc/test::/etc/cinit/svc/test/env +gen_tree::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +START::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test +CAD::/etc/cinit/svc/init +========> tree_exec() +TEX::/etc/cinit/svc/local-tuning/keyboard-layout +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout::/etc/cinit/svc/getty/2::(A)::::/etc/cinit/svc/getty/3::(A)::::/etc/cinit/svc/local-tuning::(A):: +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout +TEX::/etc/cinit/svc/mount/root +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +DNWA::/etc/cinit/svc/mount/root::/etc/cinit/svc/mount::(A):: +DNWA::/etc/cinit/svc/mount/root +TEX::/etc/cinit/svc/network/eth0 +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +DNWA::/etc/cinit/svc/network/eth0::/etc/cinit/svc/network::(A):: +DNWA::/etc/cinit/svc/network/eth0 +TEX::/etc/cinit/svc/network/loopback +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +DNWA::/etc/cinit/svc/network/loopback::/etc/cinit/svc/network +DNWA::/etc/cinit/svc/network/loopback +TEX::/etc/cinit/svc/test/env +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +DNWA::/etc/cinit/svc/test/env::/etc/cinit/svc/test::(A):: +DNWA::/etc/cinit/svc/test/env +TEX::/etc/cinit/svc/getty/2 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/2/on +CBA::/etc/cinit/svc/getty/2/on +DNWA::/etc/cinit/svc/getty/2::/etc/cinit/svc/getty::(A):: +DNWA::/etc/cinit/svc/getty/2 +TEX::/etc/cinit/svc/getty/3 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/3/on +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +DNWA::/etc/cinit/svc/getty/3::/etc/cinit/svc/getty +DNWA::/etc/cinit/svc/getty/3 +TEX::/etc/cinit/svc/local-tuning +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +/etc/cinit/svc/local-tuning/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/local-tuning::/etc/cinit/svc/init::(A):: +DNWA::/etc/cinit/svc/local-tuning +TEX::/etc/cinit/svc/mount +::/etc/cinit/svc/mount/root +/etc/cinit/svc/mount/root: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +/etc/cinit/svc/mount/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/mount::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/mount +TEX::/etc/cinit/svc/network +::/etc/cinit/svc/network/eth0 +/etc/cinit/svc/network/eth0: <<16>> +::/etc/cinit/svc/network/loopback +/etc/cinit/svc/network/loopback: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +/etc/cinit/svc/network/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/network::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/network +TEX::/etc/cinit/svc/test +::/etc/cinit/svc/test/env +/etc/cinit/svc/test/env: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +/etc/cinit/svc/test/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/test::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/test +TEX::/etc/cinit/svc/getty +::/etc/cinit/svc/getty/2 +/etc/cinit/svc/getty/2: <<4>> +::/etc/cinit/svc/getty/3 +/etc/cinit/svc/getty/3: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +/etc/cinit/svc/getty/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/getty::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/getty +TEX::/etc/cinit/svc/init +::/etc/cinit/svc/getty +/etc/cinit/svc/getty: <<4>> +::/etc/cinit/svc/local-tuning +/etc/cinit/svc/local-tuning: <<4>> +::/etc/cinit/svc/mount +/etc/cinit/svc/mount: <<4>> +::/etc/cinit/svc/network +/etc/cinit/svc/network: <<4>> +::/etc/cinit/svc/test +/etc/cinit/svc/test: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +DNWA::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/init +=> cinit started. +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +ORC:/etc/cinit/svc/init/on.params +ORC:/etc/cinit/svc/getty/2/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test +SC::/etc/cinit/svc/test/env::FAILED::::RESPAWN::ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test + +msgrcv: Interrupted system call +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/2/on +ORC:/etc/cinit/svc/getty/2/on.params +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted +SC::/etc/cinit/svc/network/eth0::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted + +msgrcv: Interrupted system call +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. +SC::/etc/cinit/svc/init::FAILED::::RESPAWN::ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. + +msgrcv: Interrupted system call +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. +SC::/etc/cinit/svc/network/loopback::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. + +msgrcv: Interrupted system call +mount: only root can do that +SC::/etc/cinit/svc/mount/root::FAILED::::RESPAWN::ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +mount: only root can do that + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +LSP:: 32705: /etc/cinit/svc/init:1 (0) +LSP:: 32705: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32705: /etc/cinit/svc/test:65 (0) +LSP:: 32705: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32705: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32705: /etc/cinit/svc/network:65 (0) +LSP:: 32705: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32705: /etc/cinit/svc/mount:65 (0) +LSP:: 32705: /etc/cinit/svc/local-tuning:65 (0) +LSP:: 32705: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32705: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32705: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32705: /etc/cinit/svc/getty:65 (0) +LSP:: 32706: /etc/cinit/svc/init:65 (0) +LSP:: 32706: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32706: /etc/cinit/svc/test:65 (0) +LSP:: 32706: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32706: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32706: /etc/cinit/svc/network:65 (0) +LSP:: 32706: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32706: /etc/cinit/svc/mount:65 (0) +LSP:: 32706: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32706: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32706: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32706: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32706: /etc/cinit/svc/getty:65 (0) +LSP:: 32707: /etc/cinit/svc/init:65 (0) +LSP:: 32707: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32707: /etc/cinit/svc/test:65 (0) +LSP:: 32707: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32707: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32707: /etc/cinit/svc/network:65 (0) +LSP:: 32707: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32707: /etc/cinit/svc/mount:4 (32706) +LSP:: 32707: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32707: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32707: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32707: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32707: /etc/cinit/svc/getty:65 (0) +LSP:: 32708: /etc/cinit/svc/init:65 (0) +LSP:: 32708: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32708: /etc/cinit/svc/test:65 (0) +LSP:: 32708: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32708: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32708: /etc/cinit/svc/network:4 (32707) +LSP:: 32708: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32708: /etc/cinit/svc/mount:4 (32706) +LSP:: 32708: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32708: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32708: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32708: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32708: /etc/cinit/svc/getty:65 (0) +LSP:: 32709: /etc/cinit/svc/init:65 (0) +LSP:: 32709: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32709: /etc/cinit/svc/test:4 (32708) +LSP:: 32709: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32709: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32709: /etc/cinit/svc/network:4 (32707) +LSP:: 32709: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32709: /etc/cinit/svc/mount:4 (32706) +LSP:: 32709: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32709: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32709: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32709: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32709: /etc/cinit/svc/getty:65 (0) +LSP:: 32702: /etc/cinit/svc/init:4 (32710) +LSP:: 32702: /etc/cinit/svc/test/env:4 (32702) +pid: 0, m_client +LSP:: 32700: /etc/cinit/svc/init:4 (32710) +LSP:: 32700: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32700: /etc/cinit/svc/test:4 (32708) +LSP:: 32700: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32700: /etc/cinit/svc/network/eth0:16 (32700) +pid: 0, m_client +LSP:: 32710: /etc/cinit/svc/init:4 (32710) +pid: 0, m_client +LSP:: 32701: /etc/cinit/svc/init:16 (32719) +LSP:: 32701: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32701: /etc/cinit/svc/test:4 (32708) +LSP:: 32701: /etc/cinit/svc/network/loopback:4 (32701) +pid: 0, m_client +LSP:: 32699: /etc/cinit/svc/init:16 (32719) +LSP:: 32699: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32699: /etc/cinit/svc/test:4 (32708) +LSP:: 32699: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32699: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32699: /etc/cinit/svc/network:4 (32707) +LSP:: 32699: /etc/cinit/svc/mount/root:4 (32699) +pid: 0, m_client +LSP::SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz + 32698: /etc/cinit/svc/init:16 (32719) +LSP:: 32698: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32698: /etc/cinit/svc/test:4 (32708) +LSP:: 32698: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32698: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32698: /etc/cinit/svc/network:4 (32707) +LSP:: 32698: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32698: /etc/cinit/svc/mount:4 (32706) +LSP:: 32698: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32698: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32698: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +pid: 0, m_client +LSP:: 32728: /etc/cinit/svc/init:16 (32719) +LSP:: 32728: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32728: /etc/cinit/svc/test:4 (32708) +LSP:: 32728: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32728: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32728: /etc/cinit/svc/network:4 (32707) +LSP:: 32728: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32728: /etc/cinit/svc/mount:4 (32706) +LSP:: 32728: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32728: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32728: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32728) +pid: 0, m_client +LSP:: 32735: /etc/cinit/svc/init:16 (32719) +LSP:: 32735: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32735: /etc/cinit/svc/test:4 (32708) +LSP:: 32735: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32735: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32735: /etc/cinit/svc/network:4 (32707) +LSP:: 32735: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32735: /etc/cinit/svc/mount:4 (32706) +LSP:: 32735: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32735: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32735: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32735) +pid: 0, m_client +LSP:: 32742: /etc/cinit/svc/init:16 (32719) +LSP:: 32742: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32742: /etc/cinit/svc/test:4 (32708) +LSP:: 32742: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32742: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32742: /etc/cinit/svc/network:4 (32707) +LSP:: 32742: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32742: /etc/cinit/svc/mount:4 (32706) +LSP:: 32742: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32742: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32742: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32742) +pid: 0, m_client +LSP:: 32749: /etc/cinit/svc/init:16 (32719) +LSP:: 32749: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32749: /etc/cinit/svc/test:4 (32708) +LSP:: 32749: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32749: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32749: /etc/cinit/svc/network:4 (32707) +LSP:: 32749: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32749: /etc/cinit/svc/mount:4 (32706) +LSP:: 32749: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32749: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32749: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32749) +pid: 0, m_client +LSP:: 32756: /etc/cinit/svc/init:16 (32719) +LSP:: 32756: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32756: /etc/cinit/svc/test:4 (32708) +LSP:: 32756: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32756: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32756: /etc/cinit/svc/network:4 (32707) +LSP:: 32756: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32756: /etc/cinit/svc/mount:4 (32706) +LSP:: 32756: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32756: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32756: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32756) +pid: 0, m_client +LSP:: 32763: /etc/cinit/svc/init:16 (32719) +LSP:: 32763: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32763: /etc/cinit/svc/test:4 (32708) +LSP:: 32763: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32763: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32763: /etc/cinit/svc/network:4 (32707) +LSP:: 32763: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32763: /etc/cinit/svc/mount:4 (32706) +LSP:: 32763: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32763: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32763: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32763) +pid: 0, m_client +LSP:: 302: /etc/cinit/svc/init:16 (32719) +LSP:: 302: /etc/cinit/svc/test/env:16 (32717) +LSP:: 302: /etc/cinit/svc/test:4 (32708) +LSP:: 302: /etc/ciSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN:: +msgrcv: Interrupted system call +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +nit/svc/network/loopback:16 (32720) +LSP:: 302: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 302: /etc/cinit/svc/network:4 (32707) +LSP:: 302: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 302: /etc/cinit/svc/mount:4 (32706) +LSP:: 302: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 302: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 302: /etc/cinit/svc/local-tuning/keyboard-layout:16 (302) +pid: 0, m_client +LSP:: 312: /etc/cinit/svc/init:16 (32719) +LSP:: 312: /etc/cinit/svc/test/env:16 (32717) +LSP:: 312: /etc/cinit/svc/test:4 (32708) +LSP:: 312: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 312: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 312: /etc/cinit/svc/network:4 (32707) +LSP:: 312: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 312: /etc/cinit/svc/mount:4 (32706) +LSP:: 312: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 312: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 312: /etc/cinit/svc/local-tuning/keyboard-layout:16 (312) +pid: 0, m_client +LSP:: 326: /etc/cinit/svc/init:16 (32719) +LSP:: 326: /etc/cinit/svc/test/env:16 (32717) +LSP:: 326: /etc/cinit/svc/test:4 (32708) +LSP:: 326: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 326: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 326: /etc/cinit/svc/network:4 (32707) +LSP:: 326: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 326: /etc/cinit/svc/mount:4 (32706) +LSP:: 326: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 326: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 326: /etc/cinit/svc/local-tuning/keyboard-layout:16 (326) +pid: 0, m_client +LSP:: 333: /etc/cinit/svc/init:16 (32719) +LSP:: 333: /etc/cinit/svc/test/env:16 (32717) +LSP:: 333: /etc/cinit/svc/test:4 (32708) +LSP:: 333: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 333: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 333: /etc/cinit/svc/network:4 (32707) +LSP:: 333: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 333: /etc/cinit/svc/mount:4 (32706) +LSP:: 333: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 333: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 333: /etc/cinit/svc/local-tuning/keyboard-layout:16 (333) +pid: 0, m_client +LSP:: 340: /etc/cinit/svc/init:16 (32719) +LSP:: 340: /etc/cinit/svc/test/env:16 (32717) +LSP:: 340: /etc/cinit/svc/test:4 (32708) +LSP:: 340: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 340: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 340: /etc/cinit/svc/network:4 (32707) +LSP:: 340: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 340: /etc/cinit/svc/mount:4 (32706) +LSP:: 340: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 340: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 340: /etc/cinit/svc/local-tuning/keyboard-layout:16 (340) +pid: 0, m_client +LSP:: 347: /etc/cinit/svc/init:16 (32719) +LSP:: 347: /etc/cinit/svc/test/env:16 (32717) +LSP:: 347: /etc/cinit/svc/test:4 (32708) +LSP:: 347: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 347: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 347: /etc/cinit/svc/network:4 (32707) +LSP:: 347: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 347: /etc/cinit/svc/mount:4 (32706) +LSP:: 347: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 347: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 347: /etc/cinit/svc/local-tuning/keyboard-layout:16 (347) +pid: 0, m_client +LSP:: 354: /etc/cinit/svc/init:16 (32719) +LSP:: 354: /etc/cinit/svc/test/env:16 (32717) +LSP:: 354: /etc/cinit/svc/test:4 (32708) +LSP:: 354: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 354: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 354: /etc/cinit/svc/network:4 (32707) +LSP:: 354: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 354: /etc/cinit/svc/mount:4 (32706) +LSP:: 354: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 354: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 354: /etc/cinit/svc/local-tuning/keyboard-layout:16 (354) +pid: 0, m_client +LSP:: 372: /etc/cinit/svc/init:16 (32719) +LSP:: 372: /etc/cinit/svc/test/env:16 (32717) +LSP:: 372: /etc/cinit/svc/test:4 (32708) +LSP:: 372: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 372: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 372: /etc/cinit/svc/network:4 (32707) +LSP:: 372: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 372: /etc/cinit/svc/mount:4 (32706) +LSP:: 372: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 372: /etc/cinit/svc/getty/3:4 (327SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +04) +LSP:: 372: /etc/cinit/svc/local-tuning/keyboard-layout:16 (372) +pid: 0, m_client +LSP:: 379: /etc/cinit/svc/init:16 (32719) +LSP:: 379: /etc/cinit/svc/test/env:16 (32717) +LSP:: 379: /etc/cinit/svc/test:4 (32708) +LSP:: 379: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 379: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 379: /etc/cinit/svc/network:4 (32707) +LSP:: 379: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 379: /etc/cinit/svc/mount:4 (32706) +LSP:: 379: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 379: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 379: /etc/cinit/svc/local-tuning/keyboard-layout:16 (379) +pid: 0, m_client +LSP:: 386: /etc/cinit/svc/init:16 (32719) +LSP:: 386: /etc/cinit/svc/test/env:16 (32717) +LSP:: 386: /etc/cinit/svc/test:4 (32708) +LSP:: 386: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 386: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 386: /etc/cinit/svc/network:4 (32707) +LSP:: 386: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 386: /etc/cinit/svc/mount:4 (32706) +LSP:: 386: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 386: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 386: /etc/cinit/svc/local-tuning/keyboard-layout:16 (386) +pid: 0, m_client +LSP:: 393: /etc/cinit/svc/init:16 (32719) +LSP:: 393: /etc/cinit/svc/test/env:16 (32717) +LSP:: 393: /etc/cinit/svc/test:4 (32708) +LSP:: 393: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 393: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 393: /etc/cinit/svc/network:4 (32707) +LSP:: 393: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 393: /etc/cinit/svc/mount:4 (32706) +LSP:: 393: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 393: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 393: /etc/cinit/svc/local-tuning/keyboard-layout:16 (393) +pid: 0, m_client +LSP:: 400: /etc/cinit/svc/init:16 (32719) +LSP:: 400: /etc/cinit/svc/test/env:16 (32717) +LSP:: 400: /etc/cinit/svc/test:4 (32708) +LSP:: 400: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 400: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 400: /etc/cinit/svc/network:4 (32707) +LSP:: 400: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 400: /etc/cinit/svc/mount:4 (32706) +LSP:: 400: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 400: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 400: /etc/cinit/svc/local-tuning/keyboard-layout:16 (400) +pid: 0, m_client +LSP:: 407: /etc/cinit/svc/init:16 (32719) +LSP:: 407: /etc/cinit/svc/test/env:16 (32717) +LSP:: 407: /etc/cinit/svc/test:4 (32708) +LSP:: 407: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 407: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 407: /etc/cinit/svc/network:4 (32707) +LSP:: 407: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 407: /etc/cinit/svc/mount:4 (32706) +LSP:: 407: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 407: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 407: /etc/cinit/svc/local-tuning/keyboard-layout:16 (407) +pid: 0, m_client +LSP:: 414: /etc/cinit/svc/init:16 (32719) +LSP:: 414: /etc/cinit/svc/test/env:16 (32717) +LSP:: 414: /etc/cinit/svc/test:4 (32708) +LSP:: 414: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 414: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 414: /etc/cinit/svc/network:4 (32707) +LSP:: 414: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 414: /etc/cinit/svc/mount:4 (32706) +LSP:: 414: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 414: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 414: /etc/cinit/svc/local-tuning/keyboard-layout:16 (414) +pid: 0, m_client +LSP:: 421: /etc/cinit/svc/init:16 (32719) +LSP:: 421: /etc/cinit/svc/test/env:16 (32717) +LSP:: 421: /etc/cinit/svc/test:4 (32708) +LSP:: 421: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 421: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 421: /etc/cinit/svc/network:4 (32707) +LSP:: 421: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 421: /etc/cinit/svc/mount:4 (32706) +LSP:: 421: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 421: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 421: /etc/cinit/svc/local-tuning/keyboard-layout:16 (421) +pid: 0, m_client +LSP:: 428: /etc/cinit/svc/init:16 (32719) +LSP:: 428: /etc/cinit/svc/test/env:16 (32717) +LSP:: 428: /etc/cinit/svc/test:4 (32708) +LSP:: 428: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 428: /etc/cinit/svc/network/eth0:16SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call + (32718) +LSP:: 428: /etc/cinit/svc/network:4 (32707) +LSP:: 428: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 428: /etc/cinit/svc/mount:4 (32706) +LSP:: 428: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 428: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 428: /etc/cinit/svc/local-tuning/keyboard-layout:16 (428) +pid: 0, m_client +LSP:: 435: /etc/cinit/svc/init:16 (32719) +LSP:: 435: /etc/cinit/svc/test/env:16 (32717) +LSP:: 435: /etc/cinit/svc/test:4 (32708) +LSP:: 435: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 435: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 435: /etc/cinit/svc/network:4 (32707) +LSP:: 435: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 435: /etc/cinit/svc/mount:4 (32706) +LSP:: 435: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 435: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 435: /etc/cinit/svc/local-tuning/keyboard-layout:16 (435) +pid: 0, m_client +LSP:: 452: /etc/cinit/svc/init:16 (32719) +LSP:: 452: /etc/cinit/svc/test/env:16 (32717) +LSP:: 452: /etc/cinit/svc/test:4 (32708) +LSP:: 452: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 452: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 452: /etc/cinit/svc/network:4 (32707) +LSP:: 452: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 452: /etc/cinit/svc/mount:4 (32706) +LSP:: 452: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 452: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 452: /etc/cinit/svc/local-tuning/keyboard-layout:16 (452) +pid: 0, m_client +LSP:: 459: /etc/cinit/svc/init:16 (32719) +LSP:: 459: /etc/cinit/svc/test/env:16 (32717) +LSP:: 459: /etc/cinit/svc/test:4 (32708) +LSP:: 459: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 459: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 459: /etc/cinit/svc/network:4 (32707) +LSP:: 459: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 459: /etc/cinit/svc/mount:4 (32706) +LSP:: 459: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 459: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 459: /etc/cinit/svc/local-tuning/keyboard-layout:16 (459) +pid: 0, m_client +LSP:: 466: /etc/cinit/svc/init:16 (32719) +LSP:: 466: /etc/cinit/svc/test/env:16 (32717) +LSP:: 466: /etc/cinit/svc/test:4 (32708) +LSP:: 466: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 466: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 466: /etc/cinit/svc/network:4 (32707) +LSP:: 466: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 466: /etc/cinit/svc/mount:4 (32706) +LSP:: 466: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 466: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 466: /etc/cinit/svc/local-tuning/keyboard-layout:16 (466) +pid: 0, m_client +LSP:: 473: /etc/cinit/svc/init:16 (32719) +LSP:: 473: /etc/cinit/svc/test/env:16 (32717) +LSP:: 473: /etc/cinit/svc/test:4 (32708) +LSP:: 473: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 473: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 473: /etc/cinit/svc/network:4 (32707) +LSP:: 473: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 473: /etc/cinit/svc/mount:4 (32706) +LSP:: 473: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 473: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 473: /etc/cinit/svc/local-tuning/keyboard-layout:16 (473) +pid: 0, m_client +LSP:: 480: /etc/cinit/svc/init:16 (32719) +LSP:: 480: /etc/cinit/svc/test/env:16 (32717) +LSP:: 480: /etc/cinit/svc/test:4 (32708) +LSP:: 480: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 480: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 480: /etc/cinit/svc/network:4 (32707) +LSP:: 480: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 480: /etc/cinit/svc/mount:4 (32706) +LSP:: 480: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 480: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 480: /etc/cinit/svc/local-tuning/keyboard-layout:16 (480) +pid: 0, m_client +LSP:: 487: /etc/cinit/svc/init:16 (32719) +LSP:: 487: /etc/cinit/svc/test/env:16 (32717) +LSP:: 487: /etc/cinit/svc/test:4 (32708) +LSP:: 487: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 487: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 487: /etc/cinit/svc/network:4 (32707) +LSP:: 487: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 487: /etc/cinit/svc/mount:4 (32706) +LSP:: 487: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 487: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 487: /etc/cinit/svc/local-tuning/keyboard-layout:16 (487) +pid: 0, mLoading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +_client +LSP:: 494: /etc/cinit/svc/init:16 (32719) +LSP:: 494: /etc/cinit/svc/test/env:16 (32717) +LSP:: 494: /etc/cinit/svc/test:4 (32708) +LSP:: 494: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 494: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 494: /etc/cinit/svc/network:4 (32707) +LSP:: 494: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 494: /etc/cinit/svc/mount:4 (32706) +LSP:: 494: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 494: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 494: /etc/cinit/svc/local-tuning/keyboard-layout:16 (494) +pid: 0, m_client +LSP:: 501: /etc/cinit/svc/init:16 (32719) +LSP:: 501: /etc/cinit/svc/test/env:16 (32717) +LSP:: 501: /etc/cinit/svc/test:4 (32708) +LSP:: 501: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 501: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 501: /etc/cinit/svc/network:4 (32707) +LSP:: 501: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 501: /etc/cinit/svc/mount:4 (32706) +LSP:: 501: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 501: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 501: /etc/cinit/svc/local-tuning/keyboard-layout:16 (501) +pid: 0, m_client +LSP:: 510: /etc/cinit/svc/init:16 (32719) +LSP:: 510: /etc/cinit/svc/test/env:16 (32717) +LSP:: 510: /etc/cinit/svc/test:4 (32708) +LSP:: 510: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 510: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 510: /etc/cinit/svc/network:4 (32707) +LSP:: 510: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 510: /etc/cinit/svc/mount:4 (32706) +LSP:: 510: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 510: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 510: /etc/cinit/svc/local-tuning/keyboard-layout:16 (510) +pid: 0, m_client +LSP:: 520: /etc/cinit/svc/init:16 (32719) +LSP:: 520: /etc/cinit/svc/test/env:16 (32717) +LSP:: 520: /etc/cinit/svc/test:4 (32708) +LSP:: 520: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 520: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 520: /etc/cinit/svc/network:4 (32707) +LSP:: 520: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 520: /etc/cinit/svc/mount:4 (32706) +LSP:: 520: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 520: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 520: /etc/cinit/svc/local-tuning/keyboard-layout:16 (520) +pid: 0, m_client +LSP:: 533: /etc/cinit/svc/init:16 (32719) +LSP:: 533: /etc/cinit/svc/test/env:16 (32717) +LSP:: 533: /etc/cinit/svc/test:4 (32708) +LSP:: 533: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 533: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 533: /etc/cinit/svc/network:4 (32707) +LSP:: 533: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 533: /etc/cinit/svc/mount:4 (32706) +LSP:: 533: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 533: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 533: /etc/cinit/svc/local-tuning/keyboard-layout:16 (533) +pid: 0, m_client +LSP:: 541: /etc/cinit/svc/init:16 (32719) +LSP:: 541: /etc/cinit/svc/test/env:16 (32717) +LSP:: 541: /etc/cinit/svc/test:4 (32708) +LSP:: 541: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 541: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 541: /etc/cinit/svc/network:4 (32707) +LSP:: 541: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 541: /etc/cinit/svc/mount:4 (32706) +LSP:: 541: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 541: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 541: /etc/cinit/svc/local-tuning/keyboard-layout:16 (541) +pid: 0, m_client +LSP:: 548: /etc/cinit/svc/init:16 (32719) +LSP:: 548: /etc/cinit/svc/test/env:16 (32717) +LSP:: 548: /etc/cinit/svc/test:4 (32708) +LSP:: 548: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 548: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 548: /etc/cinit/svc/network:4 (32707) +LSP:: 548: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 548: /etc/cinit/svc/mount:4 (32706) +LSP:: 548: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 548: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 548: /etc/cinit/svc/local-tuning/keyboard-layout:16 (548) +pid: 0, m_client +LSP:: 555: /etc/cinit/svc/init:16 (32719) +LSP:: 555: /etc/cinit/svc/test/env:16 (32717) +LSP:: 555: /etc/cinit/svc/test:4 (32708) +LSP:: 555: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 555: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 555: /etc/cinit/svc/network:4 (32707) +LSP:: 555: /etc/cinit/svSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/man/cinit.text b/software/cinit/browse_source/cinit-0.3pre14/doc/man/cinit.text new file mode 100644 index 00000000..19d0015a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/man/cinit.text @@ -0,0 +1,64 @@ +cinit(8) +======== +Nico Schottelius + + +NAME +---- +cinit - fast executing, small and simple init with support for profiles + + +SYNOPSIS +-------- +'cinit' [cprofile:name_of_profile] + + +DESCRIPTION +----------- +Cinit is an init system. It normally gets started by the operating +system (Linux, *BSD, ...) directly after the kernel has been loaded. + +Cinit uses parallel execution of services as far as possible. To +ensure the correct boot order you need to specify which service +'needs' or 'wants' another service. The resulting dependency tree +is used at startup to determine which service to start when. + +This may result in different boot orders depending on whether +one service is one time faster or slower. Due to the dependencies +this is not a problem, but allowed and wished per design. + +For more information refer to the texinfo or html documentation. + + +OPTIONS +------- + +cprofile:name_of_profile:: + If specified, cinit will start the named profile instead of the + standard 'init' service + + +BUGS +---- +cinit is not tested nor documented very well currently. + +The porting to other OS is not finished yet (mainly missing +system level binaries: shutdown, reboot, halt). + +Both is work in progress. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + + +COPYING +------- +Copyright \(C) 2006 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/man/cmd.text b/software/cinit/browse_source/cinit-0.3pre14/doc/man/cmd.text new file mode 100644 index 00000000..76bce74b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/man/cmd.text @@ -0,0 +1,88 @@ +cmd(8) +====== +Nico Schottelius + + +NAME +---- +cmd - cinit management and information tool + + +SYNOPSIS +-------- +'cmd' [-ed (i|w|n)] [-(p|s) ] [-v] + + +DESCRIPTION +----------- +cmd adds the management possibility to cinit(8). You can retrieve +several information from cinit and change services. + +OPTIONS +------- +-d:: + Disable service (see below for required parameters) + (NOT YET IMPLEMENTED) + +-e:: + Enable service + - i: Included all needs and wants + - n: Exclude needs + - w: Exclude wants + (NOT YET IMPLEMENTED) + +-p:: + Retrieve last process id (pid) for the specific service. For respawn + services this is the pid of the running service. For services that are + started only once it is the pid it had when running. + (NOT YET IMPLEMENTED) + +-s:: + Retrieve status of a service. Warning: Do not add trailing slash. + Path can be specified absolute (/etc/cinit/svc/mount/root) or + relative (mount/root). + +-v:: + Get version of cinit. + +-V:: + Get version of cmd. + + + +EXAMPLES +-------- +Get version:: + [8:44] denkbrett:src# cmd -v + + Version of cinit: 0.3pre12 + +Get status:: + [8:37] denkbrett:src# ./cmd -s mount/root + + Status of /etc/cinit/svc/mount/root is: 2001 + + +EXIT STATUS +----------- +Cmd returns 0 on success, 1 on user errors, 2 on communication errors. + +BUGS +---- +Not everything is implemented. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License Version 3 (GPLv3). diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/man/cservice b/software/cinit/browse_source/cinit-0.3pre14/doc/man/cservice new file mode 100644 index 00000000..26a472b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/man/cservice @@ -0,0 +1,37 @@ +WARNING: + cservice is not yet ready for cinit-0.3! + +-------------------------------------------------------------------------------- +cservice, +Nico Schottelius, 2005-06-10 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +cservice - control cinit + +cservice -[phearsu] + -e - (ein) start a service (including all needed dependencies) + -a - (aus) stop a respawing service, don't care about other services + + -r - reboot + -h - halt + -p - poweroff (on some systems the same as halt) + -s - reScue mode - only a shell + + -u - update: hot reboot - shutdown system and execute /sbin/cinit + +A service may be specified either as relative or as absolute path. + +-h, -p, -r, -s and -u need the "Magic Word" to do their work: "thilo" + +-------------------------------------------------------------------------------- + +Some examples: + + cservice -e /etc/cinit/getty/8 # fire up getty/8 + cd /etc/cinit/getty; cservice -a ./8 # shut down getty/8 + cservice -h thilo # halt + cservice -r thilo # reboot + cservice -s thilo # rescue + cservice -u thilo # update + +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/man/halt.kill.text b/software/cinit/browse_source/cinit-0.3pre14/doc/man/halt.kill.text new file mode 100644 index 00000000..4a31e257 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/man/halt.kill.text @@ -0,0 +1,46 @@ +halt.kill(8) +============ +Nico Schottelius + + +NAME +---- +halt.kill - Halts systems running cinit through a kill call + +SYNOPSIS +-------- +'halt.kill' + + +DESCRIPTION +----------- +You normally halt your system through 'cmd'. If cmd is unavailable or +the IPC system has problem there is still the possibilty to halt +it through a signal. See 'src/include/signals.h' for more details which +signals are used. + +OPTIONS +------- + +none:: + No options are used, If you execute halt.kill, your system will be halted. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + +SEE ALSO +--------- +cmd(8) + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/man/poweroff.kill.text b/software/cinit/browse_source/cinit-0.3pre14/doc/man/poweroff.kill.text new file mode 100644 index 00000000..62807ba1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/man/poweroff.kill.text @@ -0,0 +1,47 @@ +poweroff.kill(8) +================ +Nico Schottelius + + +NAME +---- +poweroff.kill - Halts and powers off systems running cinit through a kill call + +SYNOPSIS +-------- +'poweroff.kill' + + +DESCRIPTION +----------- +You normally poweroff your system through 'cmd'. If cmd is unavailable or +the IPC system has problem there is still the possibilty to poweroff +it through a signal. See 'src/include/signals.h' for more details which +signals are used. + +OPTIONS +------- + +none:: + No options are used, If you execute poweroff.kill, your system will be + powered off. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + +SEE ALSO +--------- +cmd(8), halt.kill(8), reboot.kill(8) + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/man/reboot.kill.text b/software/cinit/browse_source/cinit-0.3pre14/doc/man/reboot.kill.text new file mode 100644 index 00000000..a748553e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/man/reboot.kill.text @@ -0,0 +1,47 @@ +reboot.kill(8) +============== +Nico Schottelius + + +NAME +---- +reboot.kill - Reboots systems running cinit through a kill call + +SYNOPSIS +-------- +'reboot.kill' + + +DESCRIPTION +----------- +You normally reboot your system through 'cmd'. If cmd is unavailable or +the IPC system has problem there is still the possibilty to reboot +it through a signal. See 'src/include/signals.h' for more details which +signals are used. + +OPTIONS +------- + +none:: + No options are used, If you execute reboot.kill, your system will be + rebooted. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + +SEE ALSO +--------- +cmd(8), halt.kill(8), poweroff.kill(8) + + +COPYING +------- +Copyright \(C) 2007 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre11 b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre11 new file mode 100644 index 00000000..ec532269 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre11 @@ -0,0 +1,10 @@ +Done: +- cleanup ipc: + merge cinit_ipc_logon() and cinit_ipc_connect()? + => already done! +- finish cmd in general, perhaps only including one command. +[18:51] denkbrett:src# LANG=C cp cinit /sbin/cinit +cp: cannot create regular file `/sbin/cinit': Text file busy + => mv & cp! + => documentation! + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre12 b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre12 new file mode 100644 index 00000000..edbe41d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre12 @@ -0,0 +1,41 @@ +Wished release date: 6/7. September + +-------------------------------------------------------------------------------- +Done: +- begin to write documentation about client functions + => noone needs that anyway. skip and concentrate on functions now. + +cleanup ipc! + where to call !cinit_ipc_logon and !cinit_ipc_connect? + +-------------------------------------------------------------------------------- +Add +Hallo, + +Liebster Nico, wuerdest du die dazu durchringen "make install" und +vllt. sogar "make install-test" in die cinit 0.3er branch aufnehmen? + +vlg Lucky + ==> added make install in previous releases, make test maybe come back + later again. +- cleanup communication: + put parts of comm.h into cinit.h => global exposure + or define new structure in cinit.h? + => removed comm.h +- check svc path in cmd: if it's relative, add /etc/cinit/svc to it + => added. +- add update for git => so cloning does not fail! + => added hook. +Use http://www.opengroup.org/onlinepubs/009695399/basedefs/stdint.h.html + => partly implemented + +- remove manual pid support, use the one supplied by msgctl() + => ok. +- there seems to be a race condition in the execution of the + dependency tree: it happens that services that depend on + mounted /proc, have needs on mount/proc are still exited + before /proc is mounted. + problem of cinit or of mount, exiting too early? + guess the first one, so fix it :-) + + => missing check in svc_needs_status.c diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre13 b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre13 new file mode 100644 index 00000000..ff8d4296 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre13 @@ -0,0 +1,19 @@ +Wished released date: 10./11. September + +-------------------------------------------------------------------------------- +Done: +- add get_svc_pid() +- cleanup msgq.h: namespace! +- cleanup cmd: add real usage, add -h for help +- cleanup cinit_ipc_logon()! [already done before] +- cleanup headers: ==> not yet needed. + seems to make more sense, to have more than one exposed header. + cinit.h gets to fast too big. so splitoff to: + /* main */ + /* ... */ +- create libcinit.a/so and link against it => not need right now. +- pre12 seems to have an IPC problem: Fix it. ==> problem with not finishing cinit startup +- global symbol to track the connection to cinit in the client + => cinit_ipc_cinit() - initalise ipc in the client (only once) + => not really our problem, client should be able to remember + whether she called us once or twice. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre13.race-condition b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre13.race-condition new file mode 100644 index 00000000..19bea29a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre13.race-condition @@ -0,0 +1,12 @@ +09:49 < telmich> is it possible, that if I fork() and call _exit(0) in the child, that the + _exit(0) is executed earlier than the fork() call returns in the parent? +09:49 < telmich> I'm having some race condition in cinit, where the pid is not yet updated in + the service structure, and the child exited before and thus cinit does not + update the service +09:49 < telmich> as being run +09:51 < telmich> rexy_: currently I'm thinking about implementing a lock before starting the + fork() +09:51 < telmich> rexy_: thus cinit will react differently, if the starting function is still + running +09:51 < telmich> rexy_: but I'm somehow confused, that fork() allows such race condition + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre14 b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre14 new file mode 100644 index 00000000..e002d60c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre14 @@ -0,0 +1,3 @@ +Wished release date: 13. September +- add support for shutting down services + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre15 b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre15 new file mode 100644 index 00000000..60ae294a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre15 @@ -0,0 +1,62 @@ +Wished release date: 20. September +- Add support for starting/stoping services via cmd + - add support for additional information (like which services stopped + when having dependencies) + - if cinit has to stop / start others, how to report? + - add strings to cinit internally to a buffer? + -> or struct cinit_answer + status + +- add support to enable services + +- create some boot profiles +- cinit.install.standard.dirs.argv +- code check: + * check needs: + really started, after started or after finished starting? + * wants: + are they checked? + +- fix devel/codingguideline.text! + +- perhaps merge svc_need_status to svc_status + +cinit-communication: + cinit_get_failed_needs(char *name, int *cnt); +- add support for shutting down services on halt +- cleanup msgq/cinit_ipc_listen.c +- move logic out of the child handler: + => use the new while()-loop in core/cinit.c! + + time() and co. are problematic in a child handler! + + introduce global list of services to execute + => perhaps reuse already existing dependency-list? + + tree_exec(): check whether adding something to the dep list hurts + => don't think so. + expand / change ipc handler: + make it return the message + move while() loop to core/cinit.c + + in the while loop, the global dependency list should + be empty. + + if it is not, we should start something. + + => chance cinit_ipc_listen() to use without while() loop + => export logic to core/cinit.c +- map status numbers to messages +- Cleanup doc/user/NEW_using_cinit_freebsd + => make a real document! +- change to GPLv3? + => ask Markus (cinit), Killerfox (cconfig) and Peter (cconfig) +- write / update manpage for cmd! +- add sleep() support after service exited. + +-------------------------------------------------------------------------------- +Done: +- add minimal test-suite: + cmd -s /etc/cinit/svc/init + cmd -p /etc/cinit/svc/init + cmd -v + cmd -V diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre16 b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre16 new file mode 100644 index 00000000..16e6efb5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre16 @@ -0,0 +1,9 @@ +Wished release date: 27. September +- check porting code: + * advise users to set conf/os + * add uname -r | tr ... as make osconfig +- check that all parts of cinit compile at least under: + * linux, linux on 64bit + * FreeBSD + * NetBSD +- cleanup output diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre17 b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre17 new file mode 100644 index 00000000..82976e37 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.3pre17 @@ -0,0 +1,11 @@ +Wished release date: 3. October + +"Code quality assurance release" + +- Fix bugs all outstanding bugs. +- Give cinit some time, write some documentation and make pre17 the last pre of the 0.3 + serie. +- Give the code out to other developers, request explicit strong critics + => So even + "This could be in theory, if Mars is behind Pluto on Sunday evening" bugs + are out. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.4 b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.4 new file mode 100644 index 00000000..3b772d4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.4 @@ -0,0 +1,44 @@ +-------------------------------------------------------------------------------- +Clean service status messages: + Ausgaben nach Beendigung vom Starten des Services. + + [ on ] %s + Ergebnis + [ off ] %s +-------------------------------------------------------------------------------- +16:13 < KillerFox> telmich: hast du eigentlich schon hooks in cinit? +20:07 < KillerFox> Vapier führt mal wieder Selbstgespräche. +23:39 < telmich> KillerFox: wozu? +23:42 < KillerFox> telmich: es wäre durchaus interessant, um z.B. sterbende Prozesse wieder zu + starten und so. +23:42 < KillerFox> oder einen Hinweis per Mail zu verschicken. +23:43 < telmich> ahh, du meinst so benachrichtigungen von cinit an $prozess? +23:43 < KillerFox> jein +23:43 < KillerFox> du machst z.B. /etc/cinit/hooks/ +23:43 < KillerFox> darin gibts dann Scripte die bei bestimmten Ereignise aufgerufen werden. +23:43 < KillerFox> z.B. wenn ein Prozess stirbt +23:44 < KillerFox> du kannst dir natürlich auch überlegen, es auf Prozessebene herunter zu + hacken +23:44 < telmich> ja, eher letzeres +23:44 < KillerFox> so könnte man auch ein paar nette Sachen machen. z.B. Aufräumarbeiten + nachdem ein Prozess beendet wurde oder so +23:45 < KillerFox> telmich: ich finde beides Sinnvoller +23:45 < KillerFox> telmich: globale und lokale Hooks +23:45 < KillerFox> lokale überschreiben globale oder so +23:45 < telmich> oder laufen beide +23:45 < KillerFox> oder man kaskadiert sie. +23:45 < KillerFox> genau +23:46 < KillerFox> sinnvolle hooks: pre-start, start, post-start, pre-stop, stop, post-stop, + crash +23:46 < KillerFox> oder sowas +23:47 < KillerFox> vielleicht fallen dir noch mehr ein. +23:48 < KillerFox> die Kommunikation könnte man dann wahlweise über Parameter oder + Umgebungsvariablen lösen +23:48 < KillerFox> um z.B. mitzuteilen welcher Prozess gestoppt wurde +23:49 < KillerFox> z.B. wenn man in pre-stop je nach Bedingung den Stop-Vorgang abbrechen will. +23:49 < telmich> via ${ipc} => kommt darauf an, was implementiert ist; zZ ist es ja msgq +23:50 < telmich> ahh, so +23:50 < telmich> das waere noch recht trivial ueber pipes +23:50 < KillerFox> fifos/sockets, was auch immer. +23:50 < KillerFox> das müsste man dann mit einer Bibliothek lösen oder so +23:50 < telmich> ja, die ist auch im aufbau in libcinit/ + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.4.1 b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.4.1 new file mode 100644 index 00000000..b0d7685d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/todo/0.4.1 @@ -0,0 +1,2 @@ +- Generate automatic asciidoc from conf/* + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/FAQ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/FAQ new file mode 100644 index 00000000..53494f73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile:home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/README.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/README.text new file mode 100644 index 00000000..3467ba63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/README.text @@ -0,0 +1,21 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit user documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +People using cinit. + +Content +------- + +hints.text: Some general hints +tuning.text: Some tuning hints diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/TODO b/software/cinit/browse_source/cinit-0.3pre14/doc/user/TODO new file mode 100644 index 00000000..6044e97a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/TODO @@ -0,0 +1,4 @@ +All the content in this file is unsorted. Reading may harm you. + +Confdir: /etc/cinit/conf/ +panic: /etc/cinit/conf/panic, /etc/cinit/conf/panic.params diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/compiles.on.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/compiles.on.text new file mode 100644 index 00000000..ad467d38 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/compiles.on.text @@ -0,0 +1,19 @@ +cinit - known configurations cinit compiles on +============================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-12-08 +:Author Initials: NS + + +This document lists all the configuration known to me on that +cinit compiles. If you compiled cinit with another configuration, +drop a mail to nico-cinit-report [at] schottelius.org. + +The list +-------- +cinit is known to compile on: + +- x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +- x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/conf-system.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/conf-system.text new file mode 100644 index 00000000..600112c3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/conf-system.text @@ -0,0 +1,34 @@ +The conf/ system +================= +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-08 +:Author Initials: NS + +This documentes describes the configuration system used by cinit. + + +What is the conf/ system? +------------------------- +The conf/ system is the configuration system for the cinit build. +The first line of each file below conf/ is a configuration value +with the name of the file: + +---------------------------------------------------------------------- +[9:00] hydrogenium:cinit-0.3pre6% head -n 1 conf/cc +gcc +---------------------------------------------------------------------- + +This means that the variable "cc" has the value "gcc". + + +What is the reason for conf/? +----------------------------- +I needed a small and simple configuration system, which may be included +in the full build process. + + +Is conf/ also usable for other projects? +---------------------------------------- +In its current state conf/ is just a prototype, with which I experiement +a lot. But it is possible that the future aim is to provide a simele +configuration and autoconfiguraton mechanism. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/configuring.cinit.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/configuring.cinit.text new file mode 100644 index 00000000..c04da745 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/configuring.cinit.text @@ -0,0 +1,327 @@ +cinit - Configuring +=================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2005-05-28 +:Author Initials: NS + + +This documentes describes how to configure cinit. +You should already have cinit installed, otherwise read +"cinit - Installing" first. + + +General configuration layout +---------------------------- +Cinit uses the <<>> configuration syntax, which means that +the configuration is kept as simple as possible. The following +sections will show you what that means. + +The cinit configuration consists of +- a special configuration directory +- and the service definitions. + +Paths +----- +Normally the configuration is kept below '/etc/cinit' +(though you can change this before compiling in conf/cinit_dir). + +The full description of the path layout of cinit and how to change it +can be found in 'paths.text'. + +Conf +---- +The special configuration directory is normally called `conf/` +(defined at compile-time in `conf/c_confdir`). + +For all executables into this directory apply the same rules as mentioned +below in "Execution: on and off": Appened .params specifies parameters, +appended .env specifies environment. + + +conf/last +~~~~~~~~~ +This is the last part that will be executed. After it has finished, cinit +will halt, power-off or reboot your machine. + +You can use it for whatever task to accomplish (as most things of cinit), but +the idea behind it is to use it for cleaning up things that are not covered +by the off parts of the services. This maybe swapoff (although this is an unecessary +call before poweroff, imho and even if needed this could be handled within the +off part of the same services that enabled it) or `umount -a` for everything +manually mounted and not unmounted yet. + + +conf/sleep_before_kill +~~~~~~~~~~~~~~~~~~~~~~ +This file contains just one line: The number of seconds to sleep after SIGTERM was sent +to every remaining process before sending SIGKILL to all processes. If this file +is unreadable or not existent, cinit will fall back to the value compiled in +(which was specified at build time in conf/sleep_kill). + + +Services +-------- +cinit is service based. Other init systems use shell +scripts (for instance /etc/rc, /etc/init.d/rc as starters +and /etc/rc*.d/* as "service definitions"). + +'current-init-problems.text' explains why cinit does *not* +use nor recommends the use of shell scripts. + +A service is simply a directory. This directory contains information about + +- what should be started when starting the service +- what should be started when stoping the service +- what dependencies the service has +- whether to restart it, when it exits + + +Full service definition +~~~~~~~~~~~~~~~~~~~~~~~ +. A service consists of + - a base directory (like /etc/cinit/svc/mount/root/) + - dependency configuration (`needs` and `wants`) + - start/stop programs (`on` and `off`) + - respawn flag (`respawn`) + + +Base directory +^^^^^^^^^^^^^^ +You can create the base directory everywhere below /etc/cinit/svc. +You may and it is recommened to create a directory structure +(see 'example-directory-structure.text'). + + +Dependencies +^^^^^^^^^^^^ +The subdirectories + +- `wants` +- and `needs` + +contain the dependencies for the service. + +Read 'dependencies.text' for more information. + + +Respawning +^^^^^^^^^^^ +If you create the empty file 'respawn' (adjustable via conf/c_respawn) +the service will be restarted after it exits. + +-------------------------------------------------------------------------------- +# Tell cinit to respawn the eth0.udhcpc service +touch /etc/cinit/svc/network/eth0.udhcpc +-------------------------------------------------------------------------------- + + +Execution: on and off +^^^^^^^^^^^^^^^^^^^^^ +When a service starts, the file `on` in the service +directory is executed. It is ok, if this file is not existing. +When a service stops, the file `off` in the service +directory is executed. + +The file with the extension `.params` is used to specify the arguments +to pass. Each line contains exactly one parameter. + +The file with the extension `.env` is used to specify the environment +to pass. Each line contains exactly one variable definition in the form +'variable=value'. + +. The following six files are possibly used on starting/stoping: + - ./on (the program called on startup) + - ./on.params (the parameters to pass to the program, see conf/c_params) + - ./on.env (the environment to pass to the program, see conf/c_env) + - ./off (the program called when shutting down the service) + - ./off.params (the parameters to pass to the program) + - ./on.env (the environment to pass to the program) + +Some examples: +---------------------------------------------------------------------- + /etc/cinit/svc/init: + ./wants -> services it wants + ./needs -> services it needs +---------------------------------------------------------------------- + +A more or less normal service without dependencies: +---------------------------------------------------------------------- + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it +---------------------------------------------------------------------- + +A service with all options used: +---------------------------------------------------------------------- + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn service + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting +---------------------------------------------------------------------- + + +Profiles +-------- +Profiles allow you to define different startup scenarios and select +those before bootup. Read 'profiles.text' for more information about +profiles. + +The profile support was added in cinit-0.0.6. + + +Service execution order +------------------------ +The first service executed is '/etc/cinit/svc/init'. +If a profile is selected '/etc/cinit/svc/`profilename`' is used +instead. + +Cinit builds a full service dependency tree through the `wants` +and `needs` of the first service and its dependencies +(recursively). + +After the tree is generated, cinit begins to start the services +at the end of the tree. These services have no `needs`. + +If you manage to create circular dependencies your system will not startup. +You can verify the correctness your configuration with the script +`cinit.check.config`. + + +Hints +----- + +Service executing / parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The on and off files can and should be links to the programs you want +to execute instead of a shell script. This way you save yourself the overhead +of loading a shell. The speed enhancement is very big if you have shells +like bash installed as /bin/sh (which is *not* senseful anyway, I would +recommend dash or ksh for /bin/sh). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. +The service could look like this: +---------------------------------------------------------------------- + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). +---------------------------------------------------------------------- + + +Daemons +~~~~~~~~ +Daemons are programs that go away to the background (using fork()) after +start). + +The fork-away strategy seems to be some illness introduced by traditional +init systems, that are dependent on the fact, that a process exits on +startup. + +cinit in contrast remembers the process ID (pid) of the services it +restarts (those with `respawn` enabled). + +So when the daemon fork()s away and the parent process exits it looks to +cinit like the watched service died and cinit will restart it. + +Happily, most processes can be taught not to go to background. +Some processes even do that by default and very less are broken that +one cannot tell them not to background. + +A list of known processes that are normally used in respawn +processes can be found in 'daemons.backgrounding.text'. + +If your process is not listed in `daemons.backgrounding.text', +check the documentation of your daemon program, if may have a +switch to disable forking. + +But, with a small hack it is even possible to respawn those broken processes: + +We start a program, that + - starts the daemon, + - monitors the pidfile of the daemon, + - waits until that pid does not exist anymore + - and then exits. + +Such a program is included into the cinit source tarball, +though I do not recommend using it. The better way is to implement +non forking mode into your process. + +The name of the program (actually a shell script) is 'cinit.wait.for.daemon'. + +You can use it as the `on` part of a service and add + + - the pidfile, + - the process binary + - and the process parameters + +to `on.params`. + +Thus the service could look like: +---------------------------------------------------------------------- + svc-broken-daemon/ + on -> /sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL +---------------------------------------------------------------------- +(This is not a so good example, because Apache supports non-forking mode). + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + + +Logging +~~~~~~~ +Currently there's no special logging support. +When a process writes to stdout, it will be displayed on +the same stdout cinit is connected to. + +In newer versions cinit (perhaps cinit-0.4) will also support logging +stdout and stderr of a service. + + +How to migrate your old init-system configuration to cinit +---------------------------------------------------------- +This is highly dependent on your actual system, your system +configuration and your own ideas. + +Cinit is able to replace all other init systems I know about. + +So the only question is "How to do it?". + +There are some hints on how to migrate to cinit in general and also +some os specific help in the file 'migrating-init-systems.text', + + +Debugging the configuration +---------------------------- +Use `ls -lR /etc/cinit` or one of the tools found in contrib+tools/. + + +Examples +-------- +Currently there are some example configurations available +at http://unix.schottelius.org/cinit/samples/cinit-0.3/, sorted +by host on which they are created. + +In near future, there will also be a file name configuration.example.text, +which will lead you to a sample configuration. + + +References +---------- ++ [[[cconfig]]] http://nico.schotteli.us/papers/linux/cconfig/ diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/cross-compiling.text new file mode 100644 index 00000000..67208534 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/cross-compiling.text @@ -0,0 +1,6 @@ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/current-init-problems.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/current-init-problems.text new file mode 100644 index 00000000..529c2f84 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/current-init-problems.text @@ -0,0 +1,170 @@ +Currently available init systems and their problems +=================================================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-11 +:Author Initials: NS + + +This document describes some other init systems, especially +the "traditional" ones and describes their problems. + + +Introduction +------------- +some history, sysv, bsd, + +minit, runit, initng, cinit, upstart + + +Implementations +--------------- +List of current implementations as of 2006-12-12. + + +Linux Sys-V-Init +~~~~~~~~~~~~~~~~ +Debian Sid + +/etc/inittab + +"First script" /etc/init.d/rcS (specified +/etc/init.d/rcS: Bourne shell script text executable + +Runlevels: 0-6, different states + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% /sbin/runlevel +N 2 +-------------------------------------------------------------------------------- + + +Depending on runlevel, the init calls /etc/init.d/rc $runlevel. + +This is manually configured in /etc/inittab + +/etc/init.d/rc: Bourne shell script text executable + +/etc/init.d/rc + +Calls symlinks in /etc/rc?.d. Each runlevel a directory: + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% ls -ld /etc/rc*.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc0.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc1.d +drwxr-xr-x 3 root root 4096 2006-12-01 16:56 /etc/rc2.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc3.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc4.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc5.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc6.d +drwxr-xr-x 2 root root 4096 2006-11-28 23:17 /etc/rcS.d +-------------------------------------------------------------------------------- + + + +rlmanager: sys-v-init hack +~~~~~~~~~~~~~~~~~~~~~~~~~~ +rlmanager: one script to be executed, sources +simply configuration + +Gentoo Linux +~~~~~~~~~~~~ +no content yet + +BSD init +~~~~~~~~ +Analyzed on FreeBSD. +/etc/rc +/etc/rc.d/ system services +/usr/local/etc/rc.d/ user installed services +Scripts may use values from /etc/rc.conf to check whether +they should be started or not. + +runit +~~~~~ +Three stages: Script1, dependencies, Script3 + + +Initng +~~~~~~ +no content yet + +minit +~~~~~ +Focus on being small. Needs libowfat. +Log support through pipe. + + + + + +Problems overview +----------------- + +Scripts +~~~~~~~ +Scripts are slow. Startup time. Execution time. Unecessary overhead. + + +Sequential startup +~~~~~~~~~~~~~~~~~~ +In the 'old' init systems there is no support of parallel execution. +So if one services hangs at startup, the whole system has to wait +(for instance a dhcp request). In the worst case this may result in +a non-booting system. Systems with dependencies can start the gettys +for login before, in parallel to or even after blocking services are +started. The fact, that they *are* started means you can interact with +the system, you can end looping or blocking services. + +So sequential startup may not only be the reason for a pretty +slow system, but also for an unmaintainable one. + +Unecessary services +~~~~~~~~~~~~~~~~~~~ +Many implementations try to do whatever-is-possible on boot, trying to +cover every possible and impossible situation. + +Portmap without any program that needs it. + +Starting all installed services per default (Debian) vs. let the +user choose what to start (Gentoo). + +Nicht entfernte Altlasten ab und zu. + + +No dependencies +~~~~~~~~~~~~~~~ +Systems without dependencies may result in a chaos state after booting up. + + +Only soft dependencies +~~~~~~~~~~~~~~~~~~~~~~~ +The dependencies are used, but because of soft dependencies, services +may be started although their dependency is missing. + + +Parallel init system debugging +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In contrast to the old init systems, parallel executing init systems +are much harder to debug. If the starting init systems does not have +proper logging / reporting to the user (like cinit-0.2 has), the user +may never find out, what happened and why. + + +Parallel / dependency checking init system with variable boot order +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The boot order may be different each time you boot and is dependent +on the success or failure of services. This way you can never tell +exactly how and in which order they are executed. On multiprocessor +machines, where processes may be truely executed in parallel, there +is no order anymore, but there are n orders on n processors. + +To solve this issue, init systems which support parallel execution +should ship with some testing tools, that simulate a startup. + +cinit will ship with such a tool in cinit-0.4. + + +References +---------- +no content yet diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/daemons.backgrounding.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/daemons.backgrounding.text new file mode 100644 index 00000000..5b61b91d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/daemons.backgrounding.text @@ -0,0 +1,84 @@ +cinit - Daemons backgrounding +============================= +Nico Schottelius +0.1, for cinit 0.3, Initial versinon from 2005-06-12 + + +This document describes the backgrounding process and how to disable it. + + + +Definition +----------- +A daemon is a program which runs in the background. +Running in the background means you cannot access the process +directly (like you can press a key in a shell). + + +Daemons and cinit +------------------ +cinit normally watches system services and restarts them +(`respawn` flag in the configuration). If the process goes to background, +cinit cannot control it directly anymore. + +List of daemons and non-forking parameters +------------------------------------------- + +The following daemons / servers are known to avoid backgrounding easily: + +- acpid [x86 power management]: -f (undocumentated but works) +- apache [webserver]: -DFOREGROUND +- asterisk [pbx]: -f +- bind [dns server/caching]: -f +- cardmgr [pcmcia/cardbus]: -f +- cron (vixie) [schedular]: -f +- cupsd [printer server]: -f or -F +- dhclient [dhcp client]: -d +- dhcp3 (isc) [dhcp server]: -f +- distccd [compile server]: normal behaviour +- dnsmasq [dhcp/tfpt/dns]: -k +- dovecot [imap/pop3 server]: -F +- fam [file alteration monitor]:-f +- fcron [schedular]: -f +- frox [ftp proxy]: "NoDetach" in config +- freeradius [radiusd]: -f +- gdm [display manager]: -nodaemon +- hybrid [irc server]: -foreground +- icecast2 [sound streamer]: normal behaviour +- mini-lpd [printer server]: normal behaviour +- metalog [log server]: normal behaviour +- monotone [vcs]: normal behaviour +- mpd [music server]: --no-daemon +- nessusd ["security server"]: normal behaviour +- ntpd [time server]: -n +- nylon [socks proxy]: -f (prints output to terminal) +- oidentd [identd server]: -i +- oops [http proxy]: normal behaviour +- openpbx [pbx]: -f +- openssh [ssh server]: -D +- openvpn [vpn server]: normal behaviour +- pbbuttonsd [power management]:normal behaviour +- portmap [portmapper]: -f +- proftpd [ftp server]: -n +- qmail [mta]: normal behaviour +- rsync ["file server"]: --no-detach +- silcd ["secure chat server"]: -F, --foreground +- slapd [ldap]: -d +- snmpd [snmp daemon]: -f +- stunnel [ssl wrapper]: "foreground = yes" in config +- svnserve [vcs]: --foreground +- syslogd [log server]: -n +- syslog-ng [log server]: -F +- tcpserver [super server]: normal behaviour +- udhcpc [dhcp client]: normal behaviour +- vsftpd [ftp server]: normal behaviour (or: config: background=no) +- xinetd [super server]: -dontfork + + +Problematic daemons +------------------- +Those are the daemons that do not offer the possibility (as of release 0.2): + +- atd (no switch, no configuraton option) +- inetd (some variants) +- nscd (no switch, no configuraton option) diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/debugging.configuration b/software/cinit/browse_source/cinit-0.3pre14/doc/user/debugging.configuration new file mode 100644 index 00000000..1289865e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/debugging.configuration @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +Debugging your init configuration, +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +As writing an init configuration is not the easiest thing, +here are some problems (P) and debugging hints (H): + +P: There's no output! +H: If you don't start a service which outputs something there won't be any, + cinit starts up silently. + +P: Service XYZ seems not to work? +H: Try the following in your shell: + cd /etc/cinit/the-service; ./on "$(on.params)" + If that succeeds it has perhaps something missing which should have been + started before. +H: Create a test-service, which contains the following: + on: link to /bin/echo + on.params: "A test string" (with or without the quotes) + Now add the test-service to the needs directory of service XYZ. + If you see output the next time, the service is started. + Otherwise you forgot to make another service dependent on service + XYZ. + +P: How can I test if a non-outputting service successfully started? +H: Create another service, which depends on your service and make + it echo something. + +P: Does that profile support really work? +H: Try that: cprofile:NONEXISTENT and you'll see. + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/dependencies.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/dependencies.text new file mode 100644 index 00000000..e1154a54 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/dependencies.text @@ -0,0 +1,68 @@ +cinit - Dependencies +==================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-13 +:Author Initials: NS + +This document describes the different dependency types of cinit. + + +Dependencies in general +----------------------- +Each service may have two types (non-exclusive) types of dependencies: +The so called `needs` or `wants`. These are directories below the service +directory and contain symbolic links to the dependencies. +The name of the link can be freely chosen. + +An example: + +The service '/etc/cinit/svc/getty/2' needs the service +'/etc/cinit/svc/local-tuning/keyboard-layout': +-------------------------------------------------------------------------------- +[21:35] hydrogenium:needs# cd /etc/cinit/svc/getty/2/needs +[21:35] hydrogenium:needs# ls -l +insgesamt 0 +lrwxrwxrwx 1 root root 37 2006-10-26 17:51 keyboard-layout -> ../../../local-tuning/keyboard-layout +[21:35] hydrogenium:needs# cd keyboard-layout/ +[21:35] hydrogenium:keyboard-layout# pwd -P +/etc/cinit/svc/local-tuning/keyboard-layout +-------------------------------------------------------------------------------- +(Warning: This is an incomplete example, it misses at least `mount/root` +as dependency) + +This service could additionally want something else, too. It is also +possible that a service only `wants` another service or that a service +has no dependencies. + + +Absolute versus relative links +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +cinit does not care whether a link is relative or absolute. And +as far as I can see it does not make any difference to usability. + +In general, it seems to be a little bit 'easier' to use relative links +when manually configuring cinit ('ln -s ../../../service' versus +'ln -s /etc/cinit/svc/category/service'), but easier readable when +analysing them (with `ls -l'). + + +The two types +------------- + +needs +~~~~~ +`Needs` are the 'hard dependencies': If a services fails to start that +is linked in the `needs` directory, the service will not be started. + + +wants +~~~~~ +`Wants` are the 'soft dependencies': cinit will try to start the dependencies +found in `wants` before the service, but the service will also be started, +indenpendend of success of the dependencies. + + +Circular dependency problem +---------------------------- +If you manage to create circular dependencies cinit will fall into an +endless loop. Use `cinit.check.config` to verify your configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/example-directory-structure.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/example-directory-structure.text new file mode 100644 index 00000000..d19ac1fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/example-directory-structure.text @@ -0,0 +1,140 @@ +cinit - Example directory structure +=================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-12 +:Author Initials: NS + + +This document describes a tested directory hierarchy that +you could adapt for your setup. But this is no need, you +are free to design your own layout and/or improve this one. + + +Main idea +--------- +The main reason for this layout is that all services directly located +in /etc/cinit/svc/ would create a not-so-easy maintainable chaos. + + +Categories +---------- +When thinking about grouping some parts together, there came some categories +to my mind: + +- init: This must be there. It is no real choice (well, working with profiles + is an alternative) +- we need to mount things +- things that are used to 'configure' my local system +- network connectivity +- services only locally reachable +- services remote reachable +- something that let me login + +With these requirements the following categories (=directories) were created: + + +getty +~~~~~ +Gettys are those little and nice programs that allow you to login. +As we normally want to have more than one it seems to be senseful +to create a category for it. + +For the creation of the getty services itself, an extremly simply +scheme is used: Simply create services with the number of the getty +that is running. This results in the following setup: + +-------------------------------------------------------------------------------- + /etc/cinit/svc/getty/ + 2/ + 3/ + 4/ + ... +-------------------------------------------------------------------------------- + +The number '1' is skipped, because cinit normally logs to stdout that is +connected to the first console. + +`/etc/cinit/svc/getty/needs/` contains all enabled gettys. This way +`/etc/cinit/svc/init/needs/` can refer to `/etc/cinit/svc/getty/` only +but will catch all gettys. + +If you want to allow users to login via a graphical login screen +(also known as X11 with xdm/gdm/kdm) you could add this service as +`getty/gdm` for instance, because gdm is just another getty (just with +more colours). + + +init +~~~~ +`init` is the service everything begins with. You simply put all other +categories into the `needs` (or if soft-dependencies to `wants`) of this +service. + + +local-services +~~~~~~~~~~~~~~ +This directory contains all the services that are only locally reachable. +This may contain local webserver, a MTA that only accepts mails +via /usr/sbin/sendmail (like qmail is capable of) or some other local +only available services. + + +local-tuning +~~~~~~~~~~~~ +This directory is used for local configuration. It contains services, +that setup the keyboard layout (perhaps called `local-tuning/keyboard-layout` +needed by `getty`!), adjust system to hardware time, cleans /tmp +(`local-tuning/tmpclean`), ... + + +mount +~~~~~ +This directory contains the service to remount the root filesystem +read-write (`mount/root`) which is dependend on the filesystem +check (`mount/root/fsck`, also have a look at 'special-services.text'). +It also contains the services that mount the pseudo filesystems +(`mount/proc` (FreeBSD, Linux) and `mount/sys` (Linux)) and all +other partitions (`mount/home`, `mount/usr`,...) which again contain +a dependency to the filesystem check, if necessary. + + +network +~~~~~~~ +The `network` directory should cover all of the network basics. +This includes setting the hostname (`network/hostname`) configuring +network devices (`network/eth0.static`, `network.ath0.master`) limiting +network accesses (`network/firewall`), enable packet forwarding +(`network/ip-forward`), adjusting the available bandwith +(`network/traffic-shaping`), ... + + +If there are too many network devices, you could create a subfolder named +`network/devices/`. + +I used to suffix the network devices with the mode they run, so I can +use different modes in different profiles (setup the wireless card in +master mode at home, in ad-hoc mode at a friend and in managed mode at +work). + + +remote-services +~~~~~~~~~~~~~~~~ +Remote-services are all services that are reachable from remote hosts. +This includes ssh (`remote-services/opensshd`), webserver +(`remote-services/lighttpd` or `remote-services/apache22`). + +Most servers `need` a working network interface, before they can be +started, but mostly it is enough to have the loopback interface up. + +This results in the possible `needs` dependency for `network/loopback` +and soft dependencies, what we call `wants` on `network`. + +Other examples for remote services are +- dns (`remote-services/dnscache`, `remote-services/tinydns`, + `remote-services/bind`) +- fileserver (`remote-services/smbd`, `remote-services/mmbd`) +- network infrastructure (`remote-services/bgpd`) +- many others + +Many daemons used for `remote-services` are described in +'daemons.backgrounding.text'. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/freebsd.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/freebsd.text new file mode 100644 index 00000000..05499166 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/freebsd.text @@ -0,0 +1,21 @@ +11:33 < mux> from sys/kern/init_main.c: +11:33 < telmich> mux: that's true; I just tried with linux and I tell the + bootloader, who tells the kernel then +11:33 < mux> static char init_path[MAXPATHLEN] = +11:33 < mux> #ifdef INIT_PATH __XSTRING(INIT_PATH); +11:33 < mux> #else +"/sbin/init:/sbin/oinit:/sbin/init.bak:/rescue/init:/stand/sysinstall"; +11:33 < mux> #endif +11:33 < mux> but you give a loader tunable +11:34 < mux> if ((var = getenv("init_path")) != NULL) { +11:34 < mux> strlcpy(init_path, var, sizeof(init_path)); +11:34 < mux> freeenv(var); +11:34 < mux> } +11:34 < mux> here you are +11:34 < telmich> ahh, that's good +11:34 * telmich has to try cinit on freebsd the next days :-) +12:34 < mux> (s/you give/you can give/) +11:35 < mux> so, simply init_path)="/sbin/cinit" in /boot/loader.conf should do + it +11:35 < mux> minus the typo + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/ideas b/software/cinit/browse_source/cinit-0.3pre14/doc/user/ideas new file mode 100644 index 00000000..d3f13d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/ideas @@ -0,0 +1,3 @@ +- cinit-multi-machine-daemon: + coordinating bootup with several machines + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/installing-cinit.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/installing-cinit.text new file mode 100644 index 00000000..34902057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/installing-cinit.text @@ -0,0 +1,63 @@ +cinit - Installing +================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-06-02 +:Author Initials: NS + +This documentes describes how to install cinit. + + +Installing +---------- +Installing cinit is not a big deal, so is this document. +Where possible I added a list of commands to execute at the +end of each section. + + +From source +~~~~~~~~~~~ +Retrieve the latest source from http://unix.schottelius.org/cinit/. +Then extract it, change to the source directory, adjust your OS in the +file "conf/os" and type "make all". + +To report success run scripts/report.compile and send the output +to nico-cinit-report |at| schottelius.org. I will use this information +to know how and where cinit is compiled. Personal values like hostnames +or your e-mail address will *not* be published. + +Code to install cinit: +---------------------------------------------------------------------- +# the program we use to retrieve the source (fetch on FreeBSD) +get=wget +# change to current version +version=0.3pre6 +url=http://unix.schottelius.org/cinit/cinit-${version}.tar.bz2 +# get it +$get "$url" +# exctract it +tar xvjf "cinit-${version}.tar.bz2" +# build it and report success +who=nico-cinit-report +where=schottelius.org +cd cinit-${version} && make all && \ +./scripts/report.compile | mail -s "cinit: compile report" "${who}@${where}" +---------------------------------------------------------------------- + +Warning: Currently the install target is missing. Simply copy +"src/cinit" to /sbin/cinit. + + +Changing compile time parameters +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +All compile time configurations are kept below the "conf" +directory. Please read 'conf-system.text' for more information. + + +Cross-compiling +--------------- +For cross compiling see 'cross-compiling.text'. + + +Continue reading +---------------- +After having installed cinit, continue reading the document "Configuring cinit". diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/main.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/main.text new file mode 100644 index 00000000..ddf88304 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/main.text @@ -0,0 +1,113 @@ +cinit - a modern init system +============================= +Nico Schottelius +v0.1, for cinit-0.2.2, 2005-01-18 +:Author Initials: NS + + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/meta.dependencies b/software/cinit/browse_source/cinit-0.3pre14/doc/user/meta.dependencies new file mode 100644 index 00000000..fe743c48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/meta.dependencies @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, one would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation (see profile.support). + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +why it does not even need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ + +This way you have the indirection (meta-dependencies) in the filesystem +and cinit does not need any additional code. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/paths.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/paths.text new file mode 100644 index 00000000..d44bca61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/paths.text @@ -0,0 +1,121 @@ +cinit - Configuration +====================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Configuring cinit - the paths used + + +Main structure +--------------- +The base directory under which all configurations are found +is '/etc/cinit' (changable via conf/cinit_dir). + +The basic hierarchy is shown below: +---------------------------------------------------------------------- +/etc/cinit + svc -> services (adjustable: conf/svcdir) + conf -> general configuration (adjustable: conf/confdir) +---------------------------------------------------------------------- + + +The subdirectory 'conf' +~~~~~~~~~~~~~~~~~~~~~~~ +In this directory are general configurations located. +See below for the list of files that are located in this +directory. + + +The subdirectory 'svc' +~~~~~~~~~~~~~~~~~~~~~~ +This directory contains the services. A service is a directory. + + +Filenams for executable files +------------------------------ +When you create something that cinit should execute (like on +starting a service, on stopping a service, on panic, ...), cinit +will recognize the following extensions: + +. cinit executions extensions + - 'name' - the file that should be executed + - `'name'.params` - the parameter to pass to 'name' when executing + - `'name'.env` - the environment to pass to 'name' when executing + + +Name.params +~~~~~~~~~~~ +The 'params' file is a simple file containing one argument on each +line. + +Example: +---------------------------------------------------------------------- +[17:34] hydrogenium:cinit-0.3pre6% ls -l /etc/cinit/svc/init/on +lrwxrwxrwx 1 root root 9 2006-11-16 09:12 /etc/cinit/svc/init/on -> /bin/echo +[17:34] hydrogenium:cinit-0.3pre6% cat /etc/cinit/svc/init/on.params +The initial service has been started. (first parameter) +Some other useful information. (second parameter) +---------------------------------------------------------------------- + +Name.env +~~~~~~~~ +The 'env' file contains the environment definition. +Specify one assignment on each line, containing only "variable=value". + +Example: +---------------------------------------------------------------------- +[18:00] hydrogenium:% cat /etc/cinit/svc/remote-services/tinydns/on.env +IP=192.168.42.23 +---------------------------------------------------------------------- + +eof + +List of executable files +------------------------ +This list shows you what files are executable for cinit. + +on / off +~~~~~~~~~ +The files `on` and `off` are executed if found within a service +definition. `on` is called when starting the service, `off` +is called when stoping it. + + +conf/panic +~~~~~~~~~~ +This file will be executed by cinit if it has to panic. +Panic situation may occur, when there are heavy problems +like failing memory allocation in core areas. You can +change the name of the file in the pre-compilation settings +in `conf/c_panic`. + +If `conf/panic` is missing and cinit has to panic, a builtin +panic action will be called (see `conf/sulogin`). + + +conf/halt +~~~~~~~~~ +`conf/halt` will be called when cinit has shutdown all services +and wants to halt the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_halt`. + + +conf/poweroff +~~~~~~~~~~~~~ +`conf/poweroff` will be called when cinit has shutdown all services +and wants to poweroff the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_poweroff`. + + +conf/reboot +~~~~~~~~~~~ +`conf/reboot` will be called when cinit has shutdown all services +and wants to reboot the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_reboot`. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/problems-and-solutions.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/problems-and-solutions.text new file mode 100644 index 00000000..92cdd241 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/problems-and-solutions.text @@ -0,0 +1,33 @@ +cinit - Problems occured and solutions used +=========================================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2007-05-28 +:Author Initials: NS + +This documentes describes real problems people had with +cinit and their appropriate solutions. Feel free to add +your problems and solutions here. + + +Introduction +------------ + + +Adding problems and solutions +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Simply add your problem and solution and sign your paragraph +with your name. Then send the diff -u to the cinit mailinglist +or setup a git-repository so I can pull the changes. + + +Hibernate +--------- +uses /sbin/runlevel, which should *not* respond with 0 or 6 +as the second number. As cinit does not have /sbin/runlevel, +because cinit does not have any runlevels, you could hardcode +it to values hibernate accepts: + +---------------------------------------------------------------------- +#!/bin/sh +echo N 2 +---------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/problems.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/problems.text new file mode 100644 index 00000000..4fe8a315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/problems.text @@ -0,0 +1,114 @@ +Problems using cinit +==================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2007-04-24 +:Author Initials: NS + + +Using a high-speed, true dependency aware, profile supporting +logical acting and reliable init system like cinit is not +completly problem free. This document describes some common +problems you may have and their solutions. + + +Possible problems +----------------- + +Confused users +~~~~~~~~~~~~~~ +Compared to traditional init systems like sys-v-init or bsd-init +cinit introduces a complet new boot concept. This does not just +mean that you have services instead of shell-scripts (which is +one reason cinit is starting up faster), but also that the boot +order may be changed dynamically at bootup:, if a service fails. +And even if no service fails, the boot order may be different +on each boot, because processes are started in parallel and +may return earlier or later on each boot. To coordinate the +parallel running processes, cinit uses depencies, which are pretty +easy to understad when configurung, but may need some more +detailled watching at boot to understand it. + +The 'confused users'-problem is perhaps also the biggest +problem for introducing cinit as a replacement to current +init systems. + + +Configuration issues +~~~~~~~~~~~~~~~~~~~~ + +Not marking services as respawn +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +When cinit starts, it will wait for every service to exit. +So if you have a dependency on a service +that never exits, the whole init process may hang (dependending +on the dependencies). If you have services that are intendet +*not* to exit after start, you *have* to mark those with +`respawn`: Those services are started and watched by cinit +and will be restarted. This was a design choice to ensure +that all 'always running' processes *are* restarted. + +I did not find any service that should not exit and not +have a respawn flag. If you really really really have such +a service and you can prove to me that the respawn flag +would do harm to your system, I will think about implementing +a flag that tells cinit not to wait for it, but mark it +as successfully run after it has been started. + +User interaction +~~~~~~~~~~~~~~~~ + +User input +~~~~~~~~~~ +There may be the situation that you have to press a key +or enter some data when a service starts up (like entering +the password for your crypto harddisks). With cinit, this +will look like a mess, because other services may write to +the same console the service wrote a user prompt. + +The best solution for this problem is in my humble +opinion to create an user-input daemon that serialises +the requests and displays one after another. + +This could look like this: Your daemon wants to ask for +a passphrase for the SSL-certificate. You add aa needs +to this daemon to the 'input-daemon'. When you +start this service, it will contact the input-daemon +running on another virtual console and displaying a text +and an input field that is passed back to this service. +After that the input daemon changes back to the initial +console or asks for the next input, if there is another +request available. + +This input daemon may also be run on a graphical (X11) display. +. +Output to the user +~~~~~~~~~~~~~~~~~~ +When cinit starts up there may be many messages printed +out that also may look like printed random order. +To prevent your endusers from being confused you can create +some kind of graphical interface (like a framebuffer +or X11 display) that reads the output of cinit and converts +it to flashing images. It could look like this: + +---------------------------------------------------------------------- + + Your (graphical?) display: + -------------------------------------------------------------- + | /-----------------\ | + | | Red border, | | + | | failed to start | | + | \-----------------/ | + | | + | /------ | + | | Green border, | + | image van | + | | + | | + | | + | | + | | + | | + -------------------------------------------------------------- + + +---------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/profiles.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/profiles.text new file mode 100644 index 00000000..ab4d3c4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/profiles.text @@ -0,0 +1,79 @@ +cinit - Profiles +================ +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-06-04 +:Author Initials: NS + + +cinit profiles described. + + +What are profiles? +------------------ +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +How to use profiles? +--------------------- +Simply pass 'cprofile:PROFILENAME' (like cprofile:home) to cinit. + + +How to pass argumenents to cinit? +--------------------------------- +How to pass arguments to your init system depends on your operating +system and on your bootloader. + +Linux +~~~~~ +Under Linux the init-system gets the kernel arguments +(see linux.kernel.eats.arguments) as arguments. +So you can use + + kernel /usr/src/linux/vmlinuz cprofile:work (grub1,grub2) + append="cprofile:work" (LILO,yaboot) + +Other Unices should work like Linux, please consult your local +documentation. + + +How to configure profiles? +-------------------------- +It's very simple: Normally cinit would call /etc/cinit/svc/init as +the first service (with all its dependencies). If you pass 'cprofile=wireless' +to it, cinit will start from /etc/cinit/svc/wireless +instead. + +So the only thing you have to do is to create a service directory +below /etc/cinit/svc with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit/svc; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/svc/init; tar c . | (mkdir ../myprof; cd ../myprof; tar x ) + +That's it! + + +Some examples +------------- + +Here are some examples we found in #cLinux: + +-------------------------------------------------------------------------------- + profile name what it does + + musibox only start mp3blaster + terminal start only minicom, which opens the serial line + net-terminal start a respawning shell script, which starts + ssh to the selected host + video start X+mplayer, which plays the dvd/cdrom + wireless What to start when beeing in an unknown wlan + home/work selected services (nfs, ip, ...) for home or work +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/replacing.init b/software/cinit/browse_source/cinit-0.3pre14/doc/user/replacing.init new file mode 100644 index 00000000..2858c56c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/replacing.init @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and link, move or copy cinit to init (ln -s /sbin/cinit /sbin/init), reboot. + +That's everything in general, the biggest part will be to configuring cinit. + +See also doc/merging.other.initsystems. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/respawning-sleep.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/respawning-sleep.text new file mode 100644 index 00000000..24ed17e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/respawning-sleep.text @@ -0,0 +1,52 @@ +cinit - Respawning and sleeping +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2007-04-13 +:Author Initials: NS + + +How cinit sleeps, before a service is respawned. + +Introduction +------------ +When a service, that is configured to be respawning, exits cinit restarts it. +Because services may be broken and thus cinit would try to restart it many +times in a second, it is necessary to sleep between restarts. + +The big question: How to sleep? +------------------------------------ +The first possibility is to sleep a fixed amount of time between restarts: +For instance one second. This is not a good solution, because this waits +one unecessary second if the process just crashed. It may be too less, if +the service is really broken. + +The second possibility is to sleep a dynamic amount of time. + + +The next big question: How long to sleep? +----------------------------------------- +I think that as long as a service is broken we should not investigate to much +time into restarting it. So we can define a maximum amount of time to sleep +(for instance 30 seconds). The minimum amount of time to sleep is zero seconds. + +When the service is first started, the sleep time defaults to the minimum +amount of time. Each time the service is restarted, the sleep time is adjusted: + +sleep time (st) = Maximum sleep time (mst) / Time the process was running (tr) + +- If tr is < 1 it is adjusted to 1 and thus st is set to mst. +- If tr is > mst, st is set to 0. + + +How to force restart of a service? +---------------------------------- +Use cvsc (to be implemented). + + +Hom is it implemented? +---------------------- +Everytime cinit has to respawn a service it has to fork() itself. +The sleep call is implemented in the fork, so cinit itself does not have +to care about it. After the sleep time is over or the fork() recieves +SIGALARM it executes the real service. cinit itself records as start time +the current time plus sleep time. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/special-services.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/special-services.text new file mode 100644 index 00000000..4367bed1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/special-services.text @@ -0,0 +1,12 @@ +at: + no non-forking mode +fsck: + returns non-zero if it repaired something. + You have to wrap it into a shell-script :-( + + #!/bin/sh + fsck $@ + [ $? -le 1 ] && exit 0 + exit 1 + +Non-zero exit in general diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/supported-os.text b/software/cinit/browse_source/cinit-0.3pre14/doc/user/supported-os.text new file mode 100644 index 00000000..97b29506 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/supported-os.text @@ -0,0 +1,32 @@ +Supported operating systems +=============== +Nico Schottelius +0.1, Initial Version from 2007-02-15 +:Author Initials: NS + +This document lists the supported operating systems. + + +Supported OS +------------ +This means currently that cinit compiles on that system + +Tested by the author +~~~~~~~~~~~~~~~~~~~~ +- GNU/Linux +- FreeBSD +- NetBSD + +Reported by others +~~~~~~~~~~~~~~~~~~ +[none] + +Unsupported OS +-------------- + +OpenBSD +~~~~~~~ +Seems to not comply to Posix / XSI. Have a look at +http://home.schottelius.org/~nico/unix/openbsd/ftok-sys-ipc.h-problem. +This is a demo of the problem on OpenBSD 4.0 with cinit-0.3pre7-git. + diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/updating.cinit b/software/cinit/browse_source/cinit-0.3pre14/doc/user/updating.cinit new file mode 100644 index 00000000..fc0d3fef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/updating.cinit @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. call cservice -u thilo (if you have cinit-0.1 or later) + + For older versions: + + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything running and restart as if you would just + have booted. diff --git a/software/cinit/browse_source/cinit-0.3pre14/doc/user/using.rescue b/software/cinit/browse_source/cinit-0.3pre14/doc/user/using.rescue new file mode 100644 index 00000000..f58ff512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/doc/user/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user"). + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/cconfig.mk.makefile b/software/cinit/browse_source/cinit-0.3pre14/scripts/cconfig.mk.makefile new file mode 100644 index 00000000..822addce --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/cconfig.mk.makefile @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-20, 0110 CEST +# cconfig: create makefile from conf/ directory +# currently: all files +# later: only built-defines +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "#" +echo "# Warning: Autogenerated by $0, do not edit. " +echo "#" +for conf in ${CONFS}; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + echo "${NAME}=${value}" +done diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/cinit.build-env b/software/cinit/browse_source/cinit-0.3pre14/scripts/cinit.build-env new file mode 100644 index 00000000..94e093e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/cinit.build-env @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: build environment to be used in scripts +# * Should be sourced by using scripts +# 2006-10-26 +# + +. $(dirname $0)/cinit.read-conf + +export BASEDIR=${DESTDIR}${CINIT_DIR} +export SERVICES=${BASEDIR}/${SVCDIR} +export CONFIG=${BASEDIR}/${CONFDIR} diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/cinit.get-confdir b/software/cinit/browse_source/cinit-0.3pre14/scripts/cinit.get-confdir new file mode 100644 index 00000000..38d8572d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/cinit.get-confdir @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# Date: 2005-05-24 (Last Changed: 2005-08-08) + +# try environment first +if [ "$CINIT_CONF_DIR" ]; then + CONFDIR=$CINIT_CONF_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +else + echo 'Did not find cinit configuration!' >&2 + echo "Please set the variable CINIT_CONF_DIR" >&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/cinit.install.standard.dirs b/software/cinit/browse_source/cinit-0.3pre14/scripts/cinit.install.standard.dirs new file mode 100644 index 00000000..22cf273d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/cinit.install.standard.dirs @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install standard sub-configuration directories +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.build-env + +for svc in $SERVICE_CATEGORIES; do + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${SERVICES}/${svc}" +done + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/cinit.mkheader b/software/cinit/browse_source/cinit-0.3pre14/scripts/cinit.mkheader new file mode 100644 index 00000000..80e3f7cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/cinit.mkheader @@ -0,0 +1,32 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric: no quotes needed + is_numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + is_string="$(echo $value | grep '^"')" + + # + # Check for quote type + # + if [ ! "$is_numeric" -a ! "$is_string" ]; then + one_char=$(echo -n $value | wc -c) + + if [ "$one_char" -eq 1 ]; then + value="'$value'" + else + # is a string + value="\"$value\"" + fi + fi + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/cinit.read-conf b/software/cinit/browse_source/cinit-0.3pre14/scripts/cinit.read-conf new file mode 100644 index 00000000..80a32463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/cinit.read-conf @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# ~ 2005 +# + +CONFS=$($(dirname $0)/cinit.get-confdir) + +set -e + +for conf in ${CONFS}/*; do + NAME="$(basename $conf | tr a-z A-Z)" + if eval test -z \$$NAME; then + eval $NAME=\"$(head -n 1 $conf)\" + eval export $NAME + fi +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/configuration/README b/software/cinit/browse_source/cinit-0.3pre14/scripts/configuration/README new file mode 100644 index 00000000..64c0d174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/configuration/README @@ -0,0 +1 @@ +Scripts used to generate or aid in creating a configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/configuration/freebsd/create_services.sh b/software/cinit/browse_source/cinit-0.3pre14/scripts/configuration/freebsd/create_services.sh new file mode 100644 index 00000000..52e123a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/configuration/freebsd/create_services.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Reads list of services to create from stdin +# Create services (add correct dependencies) +# +# Options: +# -d: alternate destination directory (instead of /etc/cinit/svc) diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/configuration/freebsd/enable_services.sh b/software/cinit/browse_source/cinit-0.3pre14/scripts/configuration/freebsd/enable_services.sh new file mode 100644 index 00000000..ce4563a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/configuration/freebsd/enable_services.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Reads list of services to enabled from stdin +# Services must already exist +# +# Options: +# -d: alternate destination directory (instead of /etc/cinit/svc) diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/configuration/freebsd/search_enabled_services.sh b/software/cinit/browse_source/cinit-0.3pre14/scripts/configuration/freebsd/search_enabled_services.sh new file mode 100644 index 00000000..69e519b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/configuration/freebsd/search_enabled_services.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Search for enabled services: +# - /etc/rc.conf +# - /usr/local/etc/rc.d/ +# Output list of services to stdout +# +# Options: +# -r diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/configuration/freebsd/search_services.sh b/software/cinit/browse_source/cinit-0.3pre14/scripts/configuration/freebsd/search_services.sh new file mode 100644 index 00000000..2043e857 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/configuration/freebsd/search_services.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# 2007-05-21 +# +# Task: +# Search all services: +# - /etc/rc.conf +# - /usr/local/etc/rc.d/ +# Output list of all services to stdout +# +# Options: +# -r diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/create_baseconfig.sh b/software/cinit/browse_source/cinit-0.3pre14/scripts/create_baseconfig.sh new file mode 100644 index 00000000..7c9b69e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/create_baseconfig.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# 2006-10-23 +# cLinux/cinit + +. $(dirname $0)/cinit.build-env + +set -e + +mkdir -p "${BASEDIR}" + +mkdir -p "${SERVICES}" +mkdir -p "${SERVICES}/${C_INIT}" + +mkdir -p "${CONFIG}" diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/README b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/README new file mode 100644 index 00000000..2162b6b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/README @@ -0,0 +1 @@ +Only to be used by Nico Schottelius. diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/cinit.release b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/cinit.release new file mode 100644 index 00000000..54f1fbe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/cinit.release @@ -0,0 +1,72 @@ +#!/bin/sh +# Nico Schottelius +# Build release tar +# Date: Sat Oct 15 21:38:29 CEST 2005 +# Last Changed: ls -l + +# only release if I tell it to release +[ "$1" = "now" ] || exit 23 + +#if [ $# -ne 2 ]; then +# echo "This is a maintainer-only script to release cinit" +# echo $(basename $0): source-dir version +# exit 1 +#fi + +# paths +DIR="$(cd $(dirname $0)/../../; pwd -P)" +DDIR="$(cd $(dirname $0)/../../../; pwd -P)" +RDIR=$(basename "$DIR") + +# version +VERSION="$(cd "$DIR"; pwd -P | sed 's;.*/cinit-;;')" +VERSION_CONF="$(head -n1 $(dirname $0)/../../conf/version | sed 's/^"\(.*\)"$/\1/')" +VERSION_CHANGES="$(head -n1 "$(dirname $0)/../../CHANGES" | sed 's/cinit-\(.*\):.*/\1/')" +OUT_NAME="cinit-${VERSION}.tar.bz2" + +# remote +D_HOST=home.schottelius.org +D_BASE=www/org/schottelius/unix/www/cinit +D_DIR=${D_BASE}/archives/ +D_SOURCE=${D_BASE}/browse_source/ +LINK=current + +echo "=> Version directory: $VERSION" +echo "=> Version conf/version: $VERSION_CONF" +echo "=> Version CHANGES: $VERSION_CHANGES" + +if [ "$VERSION" = "$VERSION_CONF" -a "$VERSION" = "$VERSION_CHANGES" ]; then + echo "=> Version confirmed." +else + echo "*** VERSION MISMATCH ***" + exit 42 +fi + +echo -n "=> Continue? " +read yes + +if [ ! -d "$DIR" ]; then + echo "$DIR is not a directory" + exit 1 +fi + +# do the work! +( cd "$DIR" && make dist ) || exit 1 + +echo "Creating bzip2 compressed tar" +cd $DDIR +tar cj -X $DIR/.exclude -f "$OUT_NAME" "$RDIR" +chmod 0644 "$OUT_NAME" + +echo "Transfering to $D_HOST" +scp "$OUT_NAME" "$D_HOST:$D_DIR" + +echo "Extracting to $D_SOURCE" +ssh "$D_HOST" "tar xfj $D_DIR/$OUT_NAME -C $D_SOURCE" + +echo "Correcting paranoid permissions" +ssh "$D_HOST" "find \"$D_SOURCE/$RDIR\" -type f -exec chmod 0644 {} \\;" +ssh "$D_HOST" "find \"$D_SOURCE/$RDIR\" -type d -exec chmod 0755 {} \\;" +ssh "$D_HOST" "cd \"$D_SOURCE\" && rm -f \"$LINK\" && ln -s \"$RDIR\" \"$LINK\"" + +echo "Please do not forget to update the website..." diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/compile+run.sh b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/compile+run.sh new file mode 100644 index 00000000..30ec68a6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/compile+run.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# yah - yet another hack + +if [ ! "$1" ]; then + echo "HOSTNAME" + exit 23 +fi + +host="$1" + +hier=$(dirname $0) + +$hier/compile_test.sh "$host" + +if [ $? -ne 0 ]; then + echo "aborting, did not compile on $1" + exit 1 +fi + +ssh "${host}" './cinit/src/cinit & (sleep 30; kill -9 $(pgrep cinit))' diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/compile_local.sh b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/compile_local.sh new file mode 100644 index 00000000..e2bfce5e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/compile_local.sh @@ -0,0 +1,24 @@ +# just a hack + +dir=$(dirname $0) + +sys=$(uname -s) +sys_small=$(echo $sys | tr '[A-Z]' '[a-z]') + +case $(uname -s) in + NetBSD|OpenBSD) + make=gmake + ;; + *) + make=make + ;; +esac + +cd "${dir}/../../" +echo $sys_small > conf/os +# automatically called by make.. +#./bin/cinit.configure.os + +cd "src" +$make clean +$make cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/compile_run_as_compiler.sh b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/compile_run_as_compiler.sh new file mode 100644 index 00000000..f1ba01d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/compile_run_as_compiler.sh @@ -0,0 +1,14 @@ +what=$(dirname $0)/../../ +what_real=$(cd "$what" && pwd -P) +dest=~compiler/cinit-test + +set -e +sudo rsync -av "${what_real}/" "$dest" +sudo chown -R compiler "$dest" +sudo -u compiler "${dest}/scripts/internal/compile_local.sh" +sudo -u compiler "${dest}/src/cinit" & +sleep 13 +sudo -u compiler "${dest}/scripts/internal/stop_cinit.sh" + +# exit 0 for make +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/compile_test.sh b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/compile_test.sh new file mode 100644 index 00000000..335f31ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/compile_test.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# yah - yet another hack + +host="$1" +what=$(dirname $0)/../../ + +rsync --exclude .git --exclude \*.o -av "${what}" "${host}:cinit" +ssh "${host}" "./cinit/scripts/internal/compile_local.sh" diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/create_test_config.sh b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/create_test_config.sh new file mode 100644 index 00000000..720ce969 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/create_test_config.sh @@ -0,0 +1,18 @@ +hier=$(dirname $0) + +set -e +${hier}/../cinit.install.standard.dirs +cat > /etc/cinit/svc/init/on << eof +#!/bin/sh +echo test1 +sleep 4 +echo test2 - \$@ +eof +chmod 0755 /etc/cinit/svc/init/on + +cat > /etc/cinit/svc/init/on.params << eof +es +scheint +zu +gehen +eof diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/find_right_version.sh b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/find_right_version.sh new file mode 100644 index 00000000..759f23c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/find_right_version.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +src="$(dirname $0)/../../" +src_abs=$(cd "$src" && pwd -P) + +for commit in $( git log --pretty=short | awk '/^commit/ { print $2 }'); do + set -e + cd "$src_abs" + temp=$(mktemp -d /tmp/cinit.XXXXXXXXXX) + git-archive --format=tar "$commit" | ( cd "$temp"; tar x ) + cd "${temp}/src" + set +e + make clean && make cinit && ./cinit + if [ "$?" -eq 0 ]; then + echo "Commit $commit is ok" + exit 0 + fi + echo "Broken $commit" + sleep 1 + set -e + rm -rf "$temp" +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/qemu-test.sh b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/qemu-test.sh new file mode 100644 index 00000000..fd41312e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/qemu-test.sh @@ -0,0 +1,22 @@ +#!/bin/sh +# Nico Schottelius +# 2007-09-03: For testing cinit in qemu +# + +emud="${HOME}/emu" +img="${emud}/debian-hd.img" +ddir="${emud}/mount" +loop=/dev/loop1 +fsck="/sbin/fsck.jfs" + +# my jfs is on the first partition, 512*63 bytes offset +offset="32256" + +set -e +set -x +sudo losetup -o "${offset}" "${loop}" "${img}" +sudo "${fsck}" "${loop}" +sudo mount "${loop}" "${ddir}" + +sudo umount "${loop}" +sudo losetup -d "${loop}" diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/stop_cinit.sh b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/stop_cinit.sh new file mode 100644 index 00000000..86e4d82b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/stop_cinit.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# Linux specific, but don't care, I am the only person that should use it + +killall -TERM cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/test-cmd.sh b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/test-cmd.sh new file mode 100644 index 00000000..dbfc5c73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/test-cmd.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# Nico Schottelius +# 2007-09-27: Test cmd +# + + +echo "Testing cmd..." +sudo /sbin/cmd -s /etc/cinit/svc/init +sudo /sbin/cmd -p /etc/cinit/svc/init +sudo /sbin/cmd -v +sudo /sbin/cmd -V diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/test_on_hosts.sh b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/test_on_hosts.sh new file mode 100644 index 00000000..afeb2627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/test_on_hosts.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# yah + +hosts="penrose.bsdprojects.net jiffies.forkbomb.ch ddna044.netstream.ch" + +set -e + +for host in $hosts; do + echo "$1 on $host" + "$1" "$host" | sed "s/^/${host}: /" + echo "==> Finished $host" +done diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/valgrind b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/valgrind new file mode 100644 index 00000000..f769f9da --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/internal/valgrind @@ -0,0 +1 @@ +valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes --leak-resolution=high ./cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/report.compile b/software/cinit/browse_source/cinit-0.3pre14/scripts/report.compile new file mode 100644 index 00000000..ac591412 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/report.compile @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# 2006-12-08 +# Report compile success +# + +echo "cinit compile success report" +echo "----------------------------" +"$(dirname $0)/cinit.mkheader" +echo "----------------------------" +uname -a +echo "----------------------------" +. "$(dirname $0)/cinit.read-conf" +echo '$CC' +"$CC" -v +echo "----------------------------" +echo -n "Size: " +ls -l "$(dirname $0)/../src/cinit" diff --git a/software/cinit/browse_source/cinit-0.3pre14/scripts/wrapper/linux-sysvinit/shutdown b/software/cinit/browse_source/cinit-0.3pre14/scripts/wrapper/linux-sysvinit/shutdown new file mode 100644 index 00000000..b8cf3837 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/scripts/wrapper/linux-sysvinit/shutdown @@ -0,0 +1,207 @@ +#!/bin/sh +# Nico Schottelius (nico-cinit /at/ schottelius.org) +# 2007-05-21 +# Behave as being shutdown from Linux' sysvinit + +# Always needed variables / functions +_0_short=${0##*/} +_o_seperator=":" +_oecho_seperator=":" +_eecho_seperator=">" + +# ok-exit/echo +_oecho() +{ + echo "${_0_short}${_oecho_seperator}" "$@" +} + +_oexit() +{ + _oecho "$@" + exit 0 +} + +# error-exit/echo +_eecho() +{ + echo "${_0_short}${_oecho_seperator}" "$@" >&2 +} + +_eexit() +{ + _eecho "$@" + exit 1 +} + +# Program specific variables + +time_t=0 # -t sec +warn_only_k=0 # -k +reboot_r=0 # -r +halt_h=0 # -h +poweroff_P=0 # -P +cancel_c=0 # -c +time=-1 # [time] +message="" # [warning-message] +cmd="" # what to execute internally +pidfile="/var/run/cinit.shutdown" +pid="" +runs="" + +version="0.1" +version_date="2007-10-30" + +message_intro="The system is going down for" +message_reboot="reboot" +message_halt="halt" +message_poweroff="poweroff" + +# unimplemented: -a, -H, -f, -F +# deprecated and thus not implemented: -n + +# traping signals +trap_signals() +{ + _oexit "Aborted shutdown" +} + +# all the functions + +usage() +{ + +cat << cinit_usage + +*** cinit linux-sysvinit shutdown wrapper (Version ${version} ${version_date}) *** + +Usage shutdown [-akrhHPfnc] [-t secs] time [warning message] + -a: use /etc/shutdown.allow + -k: don't really shutdown, only warn. + -r: reboot after shutdown. + -h: halt after shutdown. + -P: halt action is to turn off power. + -H: halt action is to just halt. + -f: do a 'fast' reboot (skip fsck). + -F: Force fsck on reboot. + -n: do not go through "init" but go down real fast. + -c: cancel a running shutdown. + -t secs: delay between warning and kill signal. + ** the "time" argument is mandatory! (try "now") ** + +You can also call "cinit.{halt|reboot|poweroff}" directly +(instead of using this wrapper). + +cinit_usage + +exit 0 + +} + +warn() +{ + ( echo ""; echo "$@"; echo "" ) | wall + ( echo ""; echo "$@"; echo "" ) +} + +if [ "$#" -lt 1 ]; then + usage +fi + +# getopt! +while [ "$#" -ge 1 ]; do + arg="$1"; shift + + case "${arg}" in + -a|-F|-f|-n) + _oexit "Sorry, ${arg} is not implemented." + ;; + -t) + if [ "$#" -lt 1 ]; then + _eexit "-t needs the time argument" + fi + time_t="$1"; shift + ;; + -k) + warn_only_k=1 + cmd=true + ;; + -r) + reboot_r=1 + cmd=cinit.reboot + message_what="${message_reboot}" + ;; + -h|-H) + halt_h=1 + cmd=cinit.halt + message_what="${message_halt}" + ;; + -P) + poweroff_P=1 + cmd=cinit.poweroff + message_what="${message_poweroff}" + ;; + -c) + cancel_c=1 + ;; + *) + # time unset? + if [ "${time}" = -1 ]; then + time="${arg}" + [ "${time}" = "now" ] && time=0 + elif [ -z "${message}" ]; then + message="${arg}" + else + _eexit "Already specified time and message" + fi + ;; + esac +done + +if [ -f "${pidfile}" ]; then + pid=$(cat "${pidfile}") + runs=$(kill -CONT "${pid}" >/dev/null 2>&1 && echo yes) +fi + +# do cancel or abort or locking +if [ "${cancel_c}" -eq 1 ]; then + if [ "${runs}" ]; then + kill -TERM "${pid}" + _oexit "Terminated running shutdown at \"${pid}\"." + else + _eexit "Cannot abort shutdown, not running." + fi +fi + +if [ -z "${time}" ]; then + usage +fi + +if [ -z "${cmd}" ]; then + _eexit "You need to specify one of -h, -P, -H, -r." +fi + +# add lock +if [ "${pid}" ]; then + if [ "${runs}" ]; then + _eexit "Shutdown already running." + else + _oecho "Overwriting stale pidfile" + fi +fi +echo $$ > "${pidfile}" + +if [ "${message}" ]; then + warn "${message}" +fi + +# signals to abort on +trap trap_signals INT HUP TERM + +while [ "${time}" -gt 0 ]; do + warn "${message_intro} ${message_what} in ${time} minute(s)." + sleep 60 + time=$((${time}-1)) +done + +warn "${message_intro} ${message_what} now." +"${cmd}" diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-17-19:03:48 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-17-19:03:48 new file mode 100644 index 00000000..e379e004 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-17-19:03:48 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 17 19:03 cinit +-rwx------ 1 nico users 46760 Jun 17 19:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-20-12:16:40 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-20-12:16:40 new file mode 100644 index 00000000..1f0c3325 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-20-12:16:40 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 20 12:16 cinit +-rwx------ 1 nico users 50860 Jun 20 12:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-20-15:16:31 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-20-15:16:31 new file mode 100644 index 00000000..75dc3e7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-20-15:16:31 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 15:16 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-20-16:29:28 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-20-16:29:28 new file mode 100644 index 00000000..1294bde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-20-16:29:28 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-20-16:29:50 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-20-16:29:50 new file mode 100644 index 00000000..69fe7490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-20-16:29:50 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 16:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-21-11:53:35 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-21-11:53:35 new file mode 100644 index 00000000..4a1e7b6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-21-11:53:35 @@ -0,0 +1,3 @@ +total 192 +-rwx------ 1 nico users 102039 Jun 21 11:53 cinit +-rwx------ 1 nico users 87871 Jun 21 11:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-07:33:11 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-07:33:11 new file mode 100644 index 00000000..e6c8ff14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-07:33:11 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47544 Jun 22 07:33 cinit +-rwx------ 1 nico users 46760 Jun 22 07:33 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-07:57:13 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-07:57:13 new file mode 100644 index 00000000..17161d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-07:57:13 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47536 Jun 22 07:57 cinit +-rwx------ 1 nico users 46760 Jun 22 07:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-08:08:40 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-08:08:40 new file mode 100644 index 00000000..770083f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-08:08:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47424 Jun 22 08:08 cinit +-rwx------ 1 nico users 46760 Jun 22 08:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-08:30:42 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-08:30:42 new file mode 100644 index 00000000..aa95fb3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-08:30:42 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47360 Jun 22 08:30 cinit +-rwx------ 1 nico users 46760 Jun 22 08:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-09:19:42 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-09:19:42 new file mode 100644 index 00000000..70c261bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-09:19:42 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 09:19 cinit +-rwx------ 1 nico users 50860 Jun 22 09:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-10:43:24 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-10:43:24 new file mode 100644 index 00000000..b8bc4076 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-10:43:24 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 10:43 cinit +-rwx------ 1 nico users 50860 Jun 22 10:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-12:42:57 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-12:42:57 new file mode 100644 index 00000000..c8119859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-12:42:57 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 22 12:42 cinit +-rwx------ 1 nico users 46760 Jun 22 12:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-13:52:41 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-13:52:41 new file mode 100644 index 00000000..793b92fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-13:52:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:52 cinit +-rwx------ 1 nico users 46760 Jun 22 13:52 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-13:59:40 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-13:59:40 new file mode 100644 index 00000000..d114c557 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-13:59:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:59 cinit +-rwx------ 1 nico users 46760 Jun 22 13:59 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-14:19:41 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-14:19:41 new file mode 100644 index 00000000..8d56882f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-14:19:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47640 Jun 22 14:19 cinit +-rwx------ 1 nico users 46760 Jun 22 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-14:37:18 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-14:37:18 new file mode 100644 index 00000000..b7c3e4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-22-14:37:18 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 22 14:37 cinit +-rwx------ 1 nico users 46760 Jun 22 14:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-23-06:22:23 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-23-06:22:23 new file mode 100644 index 00000000..9e38a5e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-23-06:22:23 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 23 06:22 cinit +-rwx------ 1 nico users 46760 Jun 23 06:22 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-24-17:53:55 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-24-17:53:55 new file mode 100644 index 00000000..3b750eaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-24-17:53:55 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:53 cinit +-rwx------ 1 nico users 46760 Jun 24 17:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-24-17:55:29 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-24-17:55:29 new file mode 100644 index 00000000..c30dcaf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-24-17:55:29 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:55 cinit +-rwx------ 1 nico users 46760 Jun 24 17:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-26-13:19:49 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-26-13:19:49 new file mode 100644 index 00000000..a4de830b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-06-26-13:19:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 26 13:19 cinit +-rwx------ 1 nico users 50860 Jun 26 13:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:07:13 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:07:13 new file mode 100644 index 00000000..e2c59ddf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:07:13 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:07 cinit +-rwx------ 1 nico users 50860 Jul 6 08:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:12:20 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:12:20 new file mode 100644 index 00000000..e562350c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:12:20 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:12 cinit +-rwx------ 1 nico users 50860 Jul 6 08:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:13:39 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:13:39 new file mode 100644 index 00000000..32fd8268 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:13:39 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:13 cinit +-rwx------ 1 nico users 50860 Jul 6 08:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:14:19 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:14:19 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:14:19 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:14:59 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:14:59 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:14:59 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:15:56 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:15:56 new file mode 100644 index 00000000..cf26e6f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-08:15:56 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:15 cinit +-rwx------ 1 nico users 50860 Jul 6 08:15 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-10:12:22 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-10:12:22 new file mode 100644 index 00000000..d5f0f2c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-10:12:22 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:08 cinit +-rwx------ 1 nico users 50860 Jul 6 10:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-10:12:31 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-10:12:31 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-10:12:31 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-10:12:49 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-10:12:49 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-07-06-10:12:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-08-29-21:21:34 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-08-29-21:21:34 new file mode 100644 index 00000000..e651a8ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-08-29-21:21:34 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 root root 444508 2005-08-29 21:21 cinit +-rwx------ 1 root root 440412 2005-08-29 21:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-08-29-23:50:55 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-08-29-23:50:55 new file mode 100644 index 00000000..a279aee3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-08-29-23:50:55 @@ -0,0 +1,3 @@ +insgesamt 856 +-rwx------ 1 nico nico 437564 2005-08-29 23:50 cinit +-rwx------ 1 nico nico 436316 2005-08-29 23:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-03-03:36:59 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-03-03:36:59 new file mode 100644 index 00000000..01e555f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-03-03:36:59 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 nico nico 444508 2005-09-03 03:36 cinit +-rwx------ 1 nico nico 440412 2005-09-03 03:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-03-04:34:35 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-03-04:34:35 new file mode 100644 index 00000000..1832930a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-03-04:34:35 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 04:34 cinit +-rwx------ 1 nico nico 440412 Sep 3 04:34 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-03-05:51:17 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-03-05:51:17 new file mode 100644 index 00000000..4e465d06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-03-05:51:17 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 05:51 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-03-05:54:20 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-03-05:54:20 new file mode 100644 index 00000000..9c040d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-03-05:54:20 @@ -0,0 +1,4 @@ +total 1300 +-rwx------ 1 nico nico 440412 Sep 3 05:54 ccontrol +-rwx------ 1 nico nico 444508 Sep 3 05:54 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-03-09:01:59 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-03-09:01:59 new file mode 100644 index 00000000..880422a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-03-09:01:59 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 3 09:01 cinit +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-05-19:41:12 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-05-19:41:12 new file mode 100644 index 00000000..0f07d86e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-05-19:41:12 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 root root 440412 2005-09-05 19:41 ccontrol +-rwx------ 1 root root 444508 2005-09-05 19:41 cinit +-rwx------ 1 root root 440412 2005-09-05 19:41 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-05-19:50:35 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-05-19:50:35 new file mode 100644 index 00000000..32ff19fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-05-19:50:35 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 5 19:50 cinit +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-24-01:42:38 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-24-01:42:38 new file mode 100644 index 00000000..0da6126e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-24-01:42:38 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-09-24 01:42 ccontrol +-rwx------ 1 nico nico 437628 2005-09-24 01:42 cinit +-rwx------ 1 nico nico 436316 2005-09-24 01:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-30-22:50:50 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-30-22:50:50 new file mode 100644 index 00000000..0d510174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-30-22:50:50 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 22:50 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 22:50 cinit +-rwx------ 1 nico nico 436316 2005-09-30 22:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-30-23:06:39 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-30-23:06:39 new file mode 100644 index 00000000..23450914 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-09-30-23:06:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 23:06 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 23:06 cinit +-rwx------ 1 nico nico 436316 2005-09-30 23:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-01-22:09:13 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-01-22:09:13 new file mode 100644 index 00000000..a62b9eb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-01-22:09:13 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-10-01 22:09 ccontrol +-rwx------ 1 nico nico 437308 2005-10-01 22:09 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-01-22:17:39 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-01-22:17:39 new file mode 100644 index 00000000..b1d8b11b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-01-22:17:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-01 22:17 ccontrol +-rwx------ 1 nico nico 437532 2005-10-01 22:17 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-02-11:12:29 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-02-11:12:29 new file mode 100644 index 00000000..e5f7b13d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-02-11:12:29 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:12 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-02-11:13:35 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-02-11:13:35 new file mode 100644 index 00000000..d7c14471 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-02-11:13:35 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-02-11:13:43 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-02-11:13:43 new file mode 100644 index 00000000..1711d01a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-02-11:13:43 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 11:13 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 436316 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-02-16:00:24 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-02-16:00:24 new file mode 100644 index 00000000..ab23228c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-02-16:00:24 @@ -0,0 +1,4 @@ +total 1284 +-rwx------ 1 nico nico 436316 Oct 2 16:00 ccontrol +-rwx------ 1 nico nico 437884 Oct 2 16:00 cinit +-rwx------ 1 nico nico 436316 Oct 2 16:00 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-02-23:17:11 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-02-23:17:11 new file mode 100644 index 00000000..92041cd9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-02-23:17:11 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 23:17 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 23:17 cinit +-rwx------ 1 nico nico 436316 2005-10-02 23:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-03-00:54:39 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-03-00:54:39 new file mode 100644 index 00000000..df47a057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-03-00:54:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:54 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:54 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-03-00:56:29 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-03-00:56:29 new file mode 100644 index 00000000..08db7fec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-03-00:56:29 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:56 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:56 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:56 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-13-09:55:52 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-13-09:55:52 new file mode 100644 index 00000000..d54a7ff4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-13-09:55:52 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:55 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:55 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-13-09:57:11 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-13-09:57:11 new file mode 100644 index 00000000..3b1af9ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-13-09:57:11 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:57 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:57 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-13-10:07:28 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-13-10:07:28 new file mode 100644 index 00000000..58d25315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-13-10:07:28 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 10:07 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 10:07 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 10:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-15-15:26:52 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-15-15:26:52 new file mode 100644 index 00000000..a88291e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-15-15:26:52 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 root root 436316 2005-10-15 15:26 ccontrol +-rwx------ 1 root root 437916 2005-10-15 15:26 cinit +-rwx------ 1 root root 436316 2005-10-15 15:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-15-21:23:56 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-15-21:23:56 new file mode 100644 index 00000000..43a4504d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-10-15-21:23:56 @@ -0,0 +1,4 @@ +total 36 +-rwx------ 1 nico nico 9148 Oct 15 21:23 ccontrol +-rwx------ 1 nico nico 11872 Oct 15 21:23 cinit +-rwx------ 1 nico nico 9768 Oct 15 21:23 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2005-11-17-17:03:53 b/software/cinit/browse_source/cinit-0.3pre14/size/2005-11-17-17:03:53 new file mode 100644 index 00000000..78543f15 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2005-11-17-17:03:53 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2005-11-17 17:03 ccontrol +-rwx------ 1 nico nico 11872 2005-11-17 17:03 cinit +-rwx------ 1 nico nico 9768 2005-11-17 17:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-11-23:45:54 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-11-23:45:54 new file mode 100644 index 00000000..f4852c81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-11-23:45:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-11 23:45 cinit +-rwx------ 1 nico nico 9768 2006-02-11 23:45 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-12-00:06:11 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-12-00:06:11 new file mode 100644 index 00000000..2fe41351 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-12-00:06:11 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-12-00:06:42 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-12-00:06:42 new file mode 100644 index 00000000..bf2ddc36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-12-00:06:42 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:06 ccontrol +-rwx------ 1 nico nico 11560 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-12-00:08:24 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-12-00:08:24 new file mode 100644 index 00000000..e25a49ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-12-00:08:24 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:08 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:08 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-12-00:09:33 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-12-00:09:33 new file mode 100644 index 00000000..0b64fa00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-12-00:09:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:09 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:09 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-12-00:13:32 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-12-00:13:32 new file mode 100644 index 00000000..b6c5c38e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-12-00:13:32 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:13 ccontrol +-rwx------ 1 nico nico 11500 2006-02-12 00:13 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-16-23:57:29 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-16-23:57:29 new file mode 100644 index 00000000..86b9fda9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-16-23:57:29 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11620 2006-02-16 23:57 cinit +-rwx------ 1 nico nico 9768 2006-02-16 23:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-17-00:16:18 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-17-00:16:18 new file mode 100644 index 00000000..28c853a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-17-00:16:18 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 00:16 cinit +-rwx------ 1 nico nico 9768 2006-02-17 00:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-17-22:48:35 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-17-22:48:35 new file mode 100644 index 00000000..5935acfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-17-22:48:35 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-17 22:48 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 22:48 cinit +-rwx------ 1 nico nico 9768 2006-02-17 22:48 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:03:54 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:03:54 new file mode 100644 index 00000000..9222f0b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:03:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:03 cinit +-rwx------ 1 nico nico 9768 2006-02-20 19:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:04:33 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:04:33 new file mode 100644 index 00000000..c5797edc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:04:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:04:36 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:04:36 new file mode 100644 index 00000000..fbcf9fa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:04:36 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:07:47 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:07:47 new file mode 100644 index 00000000..7e1fe18f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:07:47 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:07 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:12:33 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:12:33 new file mode 100644 index 00000000..2b4fda40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:12:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:12 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:12 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:14:56 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:14:56 new file mode 100644 index 00000000..bccb5d65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-02-20-20:14:56 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:14 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:14 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-01-23:32:43 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-01-23:32:43 new file mode 100644 index 00000000..fcbaf372 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-01-23:32:43 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-01 23:32 ccontrol +-rwx------ 1 nico nico 11640 2006-06-01 23:32 cinit +-rwx------ 1 nico nico 9768 2006-06-01 23:32 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-01:08:28 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-01:08:28 new file mode 100644 index 00000000..7683546c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-01:08:28 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:08 ccontrol +-rwx------ 1 nico nico 11688 2006-06-02 01:08 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-01:29:13 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-01:29:13 new file mode 100644 index 00000000..adbc6846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-01:29:13 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:29 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 01:29 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-11:13:39 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-11:13:39 new file mode 100644 index 00000000..46eaef4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-11:13:39 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:13 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:13 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-11:36:37 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-11:36:37 new file mode 100644 index 00000000..306402f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-11:36:37 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:36 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:36 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-15:17:17 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-15:17:17 new file mode 100644 index 00000000..7bb59095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-15:17:17 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:17 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:17 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-15:19:52 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-15:19:52 new file mode 100644 index 00000000..ce65256f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-06-02-15:19:52 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:19 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:19 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-11-29-235834 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-11-29-235834 new file mode 100644 index 00000000..c2c83117 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-11-29-235834 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73645 2006-11-29 23:57 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-02-172536 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-02-172536 new file mode 100644 index 00000000..4079d5db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-02-172536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73617 2006-12-02 17:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-02-174429 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-02-174429 new file mode 100644 index 00000000..5506928d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-02-174429 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73497 2006-12-02 17:44 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-02-182536 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-02-182536 new file mode 100644 index 00000000..14526d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-02-182536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 72092 2006-12-02 18:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-03-173231 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-03-173231 new file mode 100644 index 00000000..aca9d380 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-03-173231 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71944 2006-12-03 17:32 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-03-174544 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-03-174544 new file mode 100644 index 00000000..3c1cfea2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-03-174544 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71952 2006-12-03 17:45 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-03-191215 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-03-191215 new file mode 100644 index 00000000..4f2a2fa1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-03-191215 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-03 19:12 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-06-084947 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-06-084947 new file mode 100644 index 00000000..487af844 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-06-084947 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-06 08:49 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-14-213559 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-14-213559 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-14-213559 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-14-213717 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-14-213717 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-14-213717 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-14-213739 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-14-213739 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-14-213739 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-14-215315 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-14-215315 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-14-215315 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-14-215334 b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-14-215334 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2006-12-14-215334 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2007-02-17-210059 b/software/cinit/browse_source/cinit-0.3pre14/size/2007-02-17-210059 new file mode 100644 index 00000000..69179604 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2007-02-17-210059 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 75783 2007-02-17 20:59 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2007-02-23-202443 b/software/cinit/browse_source/cinit-0.3pre14/size/2007-02-23-202443 new file mode 100644 index 00000000..19cb71b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2007-02-23-202443 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 69439 2007-02-23 20:15 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2007-02-23-202720 b/software/cinit/browse_source/cinit-0.3pre14/size/2007-02-23-202720 new file mode 100644 index 00000000..19cb71b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2007-02-23-202720 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 69439 2007-02-23 20:15 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2007-03-07-231936 b/software/cinit/browse_source/cinit-0.3pre14/size/2007-03-07-231936 new file mode 100644 index 00000000..c2ef3d0b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2007-03-07-231936 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71213 2007-03-07 23:18 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/size/2007-04-06-011811 b/software/cinit/browse_source/cinit-0.3pre14/size/2007-04-06-011811 new file mode 100644 index 00000000..73de8724 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/size/2007-04-06-011811 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71281 2007-04-06 01:17 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/Makefile b/software/cinit/browse_source/cinit-0.3pre14/src/Makefile new file mode 100644 index 00000000..cd9045e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/Makefile @@ -0,0 +1,176 @@ +# +# 2008 Nico Schottelius (nico-cinit at schottelius.org) +# +# This file is part of cinit. + +# cinit 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. +# +# cinit 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 cinit. If not, see . + +# +# Don't edit Makefiles, use conf/* for configuration. +# + +################################################################################ +# +# Build tools / locations +# + +CC=../tmpbin/cc +CFLAGS= +LD=../tmpbin/ld +LDFLAGS= +STRIP=../tmpbin/strip +SBIN=../sbin +DESTDIR= +#DESTDIR=/home/user/nico/emu/dst + +################################################################################ +# +# All objects / binaries +# depend on headers. More or less. FIXME: use gcc -M +# +BIN=cinit.halt cinit.poweroff cinit.reboot cmd +CINIT=cinit +ALLBIN=${BIN} ${CINIT} + +# headers +CONFIG_H=include/config.h +CINIT_HEADERS=${shell cat include/listing} + +# objects +CINIT_OBJ=${shell cat object_lists/cinit} +HALTKILL_OBJ=${shell cat object_lists/halt.kill} +POWEROFFKILL_OBJ=${shell cat object_lists/poweroff.kill} +REBOOTKILL_OBJ=${shell cat object_lists/reboot.kill} +CMD_OBJ=${shell cat object_lists/cmd} + +# +# All objects +# +OBJ=${CINIT_OBJ} ${HALTKILL_OBJ} ${POWEROFFKILL_OBJ} ${REBOOTKILL_OBJ} + +################################################################################ +# +# End user target +# +#all: cinit cservice ccontrol sizecheck docs +all: ${ALLBIN} + + +################################################################################ +# +# Generic +# +${OBJ}: ${CINIT_HEADERS} + +%.o: %.c + ${CC} -c -o $@ $< + +################################################################################ +# +# First do configuration, so we include the right variables +# +Makefile: .configured + +.configured: ../conf/* + @../bin/cinit.configure.os + @../bin/cinit.configure.tools + @../bin/cinit.configure.ipc + @../bin/cinit.configure.mark + +${CINIT_OBJ}: ${CONFIG_H} + +${CONFIG_H}: ../conf/* + ../scripts/cinit.mkheader > ${CONFIG_H} + +################################################################################ +# +# Install targets +# + +#install: install-dir cinit cservice ccontrol +install: install-cinit install-utilities + +install-sbin: + install -d ${DESTDIR}/sbin + +install-utilities: install-sbin ${BIN} + @echo '*** Installing utilities ***' + install ${BIN} ${DESTDIR}/sbin + +install-cinit: install-sbin cinit + @echo '*** Installing cinit ***' + @echo "Need to delete cinit before reinstalling it {text file busy problem}" + rm -f ${DESTDIR}/sbin/cinit + install cinit ${DESTDIR}/sbin + +# FIXME: target broken +install-miniconf: + ./bin/cinit.install.miniconf + +# FIXME: target broken +install-dir: + ./bin/cinit.install.dir + + +################################################################################ +# +# Build targets +# + +cinit: ${CINIT_OBJ} + ${LD} $^ -o $@ + +cinit.halt: ${HALTKILL_OBJ} + ${LD} $^ -o $@ + +cinit.poweroff: ${POWEROFFKILL_OBJ} + ${LD} $^ -o $@ + +cinit.reboot: ${REBOOTKILL_OBJ} + ${LD} $^ -o $@ + +cmd: ${CMD_OBJ} + ${LD} $^ -o $@ + +################################################################################ +# +# Internal test targets +# + +uml: cinit cmd + ../../vm/uml/uml-mount.sh + cp cinit cmd ../../vm/uml/root/sbin/ + ../../vm/uml/uml-umount.sh + +umlstart: uml + ../../vm/uml/uml-start.sh + +################################################################################ +# +# Clenaup targets +# + +.PHONY: clean +.PHONY: dist +.PHONY: distclean + +dist: distclean + +distclean: clean + rm -f os/current ipc/current .configured + +clean: + rm -f ../tmpbin/*.configured + rm -f ${BIN} ${CINIT_OBJ} ${CINIT} + rm -f client/*.o test/*.o diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/Makefile.tests b/software/cinit/browse_source/cinit-0.3pre14/src/Makefile.tests new file mode 100644 index 00000000..0f4b4626 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/Makefile.tests @@ -0,0 +1,27 @@ +# +# Makefile for cinit tests +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +TEST_BUILD_ARGV=test/test_build_argv.o core/build_argv.o + +PROGS=test_build_argv test_build_argv_link + +tests: $(PROGS) + +test_build_argv: test/test_build_argv.o core/build_argv.o +test_build_argv_link: test/test_build_argv+link.o core/build_argv.o + +test_gen_svc_tree: test/test_gen_svc_tree.o svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/gen_svc_tree.o \ + generic/mini_printf.o \ + svc/list_display_all.o + +test_openreadclose: test/test_openreadclose.o generic/openreadclose.o diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/STOPPED b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/STOPPED new file mode 100644 index 00000000..a0013ca6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/STOPPED @@ -0,0 +1,12 @@ +0. Definition Nachrichten +0.1 Definition returncodes und co... + + +1. execute_sth: finish, so we can use it for panic + +2. MSGQ: + beidseitig implemenntieren + ipc header integrieren + Dokumentieren + + conf/* von msgq saeubern diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/charp_to_flag.c b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/charp_to_flag.c new file mode 100644 index 00000000..927ba6b7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/charp_to_flag.c @@ -0,0 +1,40 @@ +/******************************************************************************* + * + * 2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Convert char pointer to uint32_t flag + * + */ + +#include /* strchr */ +#include /* NULL */ + +#include "cinit.h" /* cinit */ + +uint32_t charp_to_flag(char *str) +{ + uint32_t ret = 0; + + if(str != NULL) { + if(strchr(str, CINIT_CMD_SVC_WANTS) != NULL) ret |= CINIT_QSN_SVC_WANTS; + if(strchr(str, CINIT_CMD_SVC_NEEDS) != NULL) ret |= CINIT_QSN_SVC_NEEDS; + } + + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/comm.h b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/comm.h new file mode 100644 index 00000000..4fbe8c50 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/comm.h @@ -0,0 +1,81 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit (at) schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#ifndef CINIT_COMM_HEADER +#define CINIT_COMM_HEADER + +#include /* PATH_MAX */ +#include /* pid_t */ + +/*********************************************************************** + * Commands the clients may issue to us + * maximum number of commands: 2^8 = 256 + */ +enum commands { + CMD_MIN='A', /* minimum command number */ + CMD_SVC_START, /* the client wants US to start a service */ + CMD_SVC_START_ONLY, /* start this service without dependencies */ + CMD_SVC_START_NEEDS, /* start this service, needs, but no wants */ + CMD_SVC_STOP, /* stop svc and all svcs that need it */ + CMD_SVC_STOP_ONLY, /* we should stop _only_ this service */ + CMD_SVC_STOP_WANTS, /* stop svc, all svcs that need or want it */ + CMD_CHG_STAT, /* the client reports a status change */ /* FIXME: NEEDED? */ + CMD_RESCUE, /* we should start the rescue mode */ /* UNIMPLEMENTED */ + CMD_HALT, /* halt the system */ + CMD_REBOOT, /* reboot the system */ + CMD_POWEROFF, /* poweroff the system */ + CMD_WBOOT, /* shutdown and restart everything */ /* UNIMPLEMENTED */ + CMD_INFO, /* send information about that service */ /* UNIMPLEMENTED */ + CMD_MAX , /* maximum command number */ +}; + +/* old + RT_ERR_COMM, * communication failed * + RT_ERR, * service starting failed * + RT_UNSPEC, * some kind of error, unspecified * + RT_SUCCESS, * successfully started: respawning or once * + RT_SVC_FAILED, * tried earlier, service failed, won't retry * + +*/ + +/*********************************************************************** + * client issues a command: start_command + */ +struct s_cmd { + char cmd; + pid_t pid; +}; + +/*********************************************************************** + * messages from the client + * Prefix: qst_ (question) + */ +struct msg_client { + pid_t pid; /* pid of the telling client */ + char cmd; /* which cmd is issued to us */ + char status; /* status of the service */ + char svc[PATH_MAX]; /* name of the service */ + char svc_orig[PATH_MAX]; /* the service, which wants to start us */ +}; + +/*********************************************************************** + * messages from the server + * Prefix: asw_ (answer) + */ + +/*********************************************************************** + * return short status + */ +struct asw_sstatus { + long mtype; + char status; + char msg[PATH_MAX]; +}; + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/do_change_status.c b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/do_change_status.c new file mode 100644 index 00000000..94b9be76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/do_change_status.c @@ -0,0 +1,70 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/do_reboot.c.orig b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/do_reboot.c.orig new file mode 100644 index 00000000..9c4c8331 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/do_reboot.c.orig @@ -0,0 +1,144 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" +#include "os.h" + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void do_reboot(int signal) +{ + struct listitem *tmp; + struct timespec ts; + char **cmd; + int i; + + /* Let's disappear, we don't care about clients anymore */ + close(sock); + /********* first SIGTERM the respawning processes **********/ + tmp = list->before; + do { + /* kill service watcher, which will kill processes itself */ + if( tmp->status == ST_RESPAWN) { + kill(tmp->pid,SIGTERM); + } + tmp = tmp->before; + } while( tmp != list ); + + /********* now wait for the respawn watchers to return *****/ + tmp = list->before; + do { + if( tmp->status == ST_RESPAWN) { + /* wait until the respawn watcher terminated */ + waitpid(tmp->pid,&i,0); + } + + /* execute shutdown service FIXME: parallelize that?*/ + exec_svc(tmp->abs_path,CMD_STOP_SVC); + tmp = tmp->before; + } while( tmp != list ); + + /* now: all services are down, let's kill all other processes */ + if( kill(-1,SIGTERM) == -1) { + perror(MSG_TERMKILL); + } + + ts.tv_sec = SLEEP_KILL; /* defined in conf/sleep_kill */ + nanosleep(&ts,NULL); + + if( kill(-1,SIGKILL) == -1) { + perror(MSG_KILLBILL); + } + D_PRINTF("SIGKILL GESENDET"); + +/* THIS IS FUCKING UNCLEAN AND SHOULD BE CLEANED UP VERY MUCH!!! */ +#define CMD_CNT 4 + +#define UMOUNT_CMD "/bin/umount" +#define UMOUNT_ARG1 "-arfd" + +#define MOUNT_CMD "/bin/mount" +#define MOUNT_ARG1 "-o" +#define MOUNT_ARG2 "remount,ro" +#define MOUNT_ARG3 "/" + +#define RESCUE_CMD "/bin/sh" + + /* now: we are completley alone. umount everything, go to bed */ + cmd = (char **) malloc( (CMD_CNT+1) * ( sizeof (char*) ) ); + if(cmd) { + /* /bin/umount -a */ + cmd[0] = UMOUNT_CMD; + cmd[1] = UMOUNT_ARG1; + cmd[2] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + + /* /bin/mount -o remount,ro / */ + cmd[0] = MOUNT_CMD; + cmd[1] = MOUNT_ARG1; + cmd[2] = MOUNT_ARG2; + cmd[3] = MOUNT_ARG3; + cmd[4] = NULL; + + i = fork(); + if(i == 0) { + execv(cmd[0],cmd); + _exit(1); /* if exec fails in child */ + } + } else { + _exit(1); + } + + switch(signal) { + case SIGTERM: /* power off */ + LOG(MSG_POWER_OFF); + cinit_poweroff(); + break; + case SIGHUP: /* reboot */ + LOG(MSG_REBOOT); + cinit_reboot(); + break; + case SIGUSR1: /* halt */ + LOG(MSG_HALT); + cinit_halt(); + break; + case SIGUSR2: /* rescue - destroy ourself */ + LOG(MSG_RESCUE); + cmd[0] = RESCUE_CMD; + cmd[1] = NULL; + execv(cmd[0],cmd); + panic(); + break; + case SIGCONT: /* update */ + LOG(MSG_UPDATE); + cmd[0] = CINIT_BIN; + cmd[1] = NULL; + execv(cmd[0],cmd); + panic(); + break; + } + + /* do not exit, Linux does that for us */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/do_result.c b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/do_result.c new file mode 100644 index 00000000..cb51161b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/do_result.c @@ -0,0 +1,33 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return RT_ERR_COMM; + } + + return *value; +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/do_svc_name.c b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/do_svc_name.c new file mode 100644 index 00000000..d427365f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/do_svc_name.c @@ -0,0 +1,51 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/exec_svc.c b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/exec_svc.c new file mode 100644 index 00000000..f217f9e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/exec_svc.c @@ -0,0 +1,264 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +inline pid_t exec_svc(char *abspath, int action) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + SERVICE_LOG(abspath,LOG_SVC_FAIL); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + P_EXEC_FAILED(nargv[0]); + perror(MSG_ERR_EXECVE); + /* FIXME: remove debug, remove double printing without loosing info */ + sleep(3); /* debug */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/main.c b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/main.c new file mode 100644 index 00000000..226cd4a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/main.c @@ -0,0 +1,88 @@ +/* + * (c) 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * main.c + * main part of cinit + */ + +#include /* ftok */ +#include /* msgget */ +#include /* perror */ +#include /* exit */ + +#include "cinit.h" + +/* global variables */ +struct listitem *list; +pid_t cpid; + +/*********************************************************************** + * the main procedure + */ + +int main(int argc, char **argv) +{ + char *initdir; + key_t msg_key; + int msq_id; + + initdir = CINIT_INIT; /* default init dir */ + list = NULL; /* list of services is empty currently */ + cpid = getpid(); /* no comment */ + + if(cpid != 1) { + usage(CINIT_VERSION,MSG_USAGE); + } + + /* set signal handlers */ + set_signals(ACT_SERV); + + /* read arguments, profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* tell the world we are there FIXME: do we really need three calls? */ + mini_printf(MSG_BOOTING,1); mini_printf(initdir,1); mini_printf("\n",1); + + if(chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /* create message queues */ + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* wait until we recieved the signal to create the socket */ + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/msg_change_status.c b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/msg_change_status.c new file mode 100644 index 00000000..836a0fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* FIXME: change return code validation */ + +int msg_change_status(char *svc, char status, pid_t pid) +{ + if(!begin_msg(CMD_CHG_STATUS)) { + return RT_ERR_COMM; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/msg_svc_on_off.c new file mode 100644 index 00000000..02948f2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/msg_svc_on_off.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, char action) +{ + if(!begin_msg(action)) return RT_ERR_COMM; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return RT_ERR_COMM; + return (int) do_result(sock,NULL); +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/pipes b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/pipes new file mode 100644 index 00000000..581b1274 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/pipes @@ -0,0 +1,17 @@ + /* create pipes */ + if(pipe(pfd) == -1) { + perror(MSG_ERR_PIPE); + panic(); + } + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } + diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/respawn_svc.c b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/respawn_svc.c new file mode 100644 index 00000000..5c350045 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/respawn_svc.c @@ -0,0 +1,99 @@ +/* + * (c) 2005,2006 Nico Schottelius (nico-linux at schottelius.org) + * respawn_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + D_PRINTF(abspath); + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, CMD_START_SVC) ) { + if(cpid != 0) { + D_PRINTF("sloefen"); + sleep(SLEEP_SVC); + D_PRINTF("Zuende geschlafen"); + } + } + } while(cpid); /* cpid is reset by sig_terminate() */ + + /* FIXME: put most code of sig_terminate here, look for no_kill */ + + /* start off task */ + exec_svc(abspath,CMD_STOP_SVC); + + D_PRINTF("jetzt weg"); + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/run_init_svc.c new file mode 100644 index 00000000..f41c1f4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/run_init_svc.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/run_init_svc2.c b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/run_init_svc2.c new file mode 100644 index 00000000..b613ed6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/run_init_svc2.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include /* _exit, fork */ + +#include "cinit.h" +#include "messages.h" +#include "ipc.h" + +int run_svc(char *rpath) { rpath = "test"; return 0; } /* a hack to compile cinit for now */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + if(!cinit_ipc_logon()) _exit(1); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/run_run_svcs.c b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/run_run_svcs.c new file mode 100644 index 00000000..6486c76f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/run_run_svcs.c @@ -0,0 +1,86 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/run_svc.c b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/run_svc.c new file mode 100644 index 00000000..95cc324d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/run_svc.c @@ -0,0 +1,131 @@ +/* + * (c) 2005 Nico Schottelius (nico-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +#error "needs to be cleaned up" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + print_errno(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + print_errno(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/sig_terminate.c b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/sig_terminate.c new file mode 100644 index 00000000..9b23e349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/sig_terminate.c @@ -0,0 +1,60 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + /* FIXME: only send SIGTERM, if not_kill does not exist */ + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + status = kill(cpid,SIGKILL); + if( status == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + D_PRINTF("muesste weg sein"); + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/test-signal.c b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/test-signal.c new file mode 100644 index 00000000..ae7e50b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/test-signal.c @@ -0,0 +1,54 @@ +/* test case for glibc */ + +#include +#include /* sigaction, sigemtpyset */ +#include +#include +#include +#include +#include + +void sig_child(int tmp) +{ + struct timeval tv; + pid_t pid; + + + while((pid = waitpid(-1, &tmp, WNOHANG)) > 0) { + gettimeofday(&tv,NULL); + printf("sighandler: %d\n",tv.tv_sec); + } +} + +int main() +{ + struct sigaction sa; + struct timeval tv; + struct timespec ts; + pid_t pid; + + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; + + sa.sa_handler = sig_child; + sa.sa_flags = SA_NOCLDSTOP; + + sigaction(SIGCHLD,&sa,NULL); + + while(1) { + pid = fork(); + + /* child */ + if(!pid) { + ts.tv_sec = 2; + nanosleep(&ts,NULL); + gettimeofday(&tv,NULL); + + printf("child: %d\n",tv.tv_sec); + return 0; + } + + ts.tv_nsec = 100000; + nanosleep(&ts,NULL); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ancient/unused-coded/cinit_read_from.c b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/unused-coded/cinit_read_from.c new file mode 100644 index 00000000..54499be3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ancient/unused-coded/cinit_read_from.c @@ -0,0 +1,23 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * read data from cinit to the client + */ + + +#include "ipc.h" /* IPC */ + +/* gets a bunch of bytes and returns the answer from cinit */ +int cinit_read_from(char **dest, int len) +{ + if(!cinit_ipc_logon()) return NULL; + if(!cinit_ipc_connect()) return NULL; + + /* FIXME: add length to ipc function? */ + if(!cinit_ipc_csend(data)) return NULL; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/client/cmd.c b/software/cinit/browse_source/cinit-0.3pre14/src/client/cmd.c new file mode 100644 index 00000000..a68d523f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/client/cmd.c @@ -0,0 +1,230 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * cmd - the cinit client program - sends commands to cinit + * + */ + +#include /* getopt */ +#include /* signals */ +#include /* printf() */ +#include /* free() */ +#include /* strncmp */ + +#include /* integers */ +#include /* PATH_MAX */ + +#include "cmd.h" /* own header */ +#include "signals.h" /* which signal */ +#include "svc.h" /* service related */ +#include "intern.h" /* print_errno() */ + +#include "cinit.h" /* cinit external */ + +#define C_USAGE(error) usage(USAGE_TEXT,error) +#define MSG_IPC_ERROR "An IPC error occured while connecting to cinit. " \ + "Is cinit running?\n" +#define MSG_UNKNOWN_SVC "Unknown service: %s\n" +#define MSG_UNKNOWN_RET "Unknown return code: %d\n" + +enum { + NOTHING, + ENABLE, + DISABLE, + PID, + STATUS +} whattodo; + +/*********************************************************************** + * cmd: main + */ +int main(int argc, char **argv) +{ + char buf[CINIT_DATA_LEN]; + char *flag = NULL; + int opt; + int what = NOTHING; + uint32_t ret; + + union { + uint32_t status; + pid_t pid; + } u; + + + /* + * -d w(ants) excluded) + * -e n(eeds excluded) + * -d i(nclude everything) + */ + +/* check for + * d|e: + * check for flags + * p|s: + * continue with service + * h|v|V: print and exit + */ + while((opt = getopt(argc, argv, CMD_OPTIONS)) != -1) { + switch(opt) { + /********************************************/ + /* Non-Continuing parameters */ + /********************************************/ + case 'h': /* help */ + printf(CMD_USAGE); + return 0; + break; + + /********************************************/ + case 'v': /* get version of cinit */ + ret = cinit_get_version(buf); + switch(ret) { + case CINIT_ASW_OK: + printf("Version of cinit: %s\n", buf); + return 0; + break; + case CINIT_ASW_IPC_ERROR: + fprintf(stderr, MSG_IPC_ERROR); + what = 2; + break; + + default: /* should not happen */ + printf(MSG_UNKNOWN_RET, ret); + what = 3; + break; + } + return what; + break; + + /********************************************/ + case 'V': /* version */ + printf("Version of cmd: %s\n", CMD_VERSION); + return 0; + break; + + /********************************************/ + /* Continuing parameters */ + /********************************************/ + case 'e': /* enable service */ + what = ENABLE; + flag = optarg; + break; + + case 'd': /* disable service */ + what = DISABLE; + flag = optarg; + break; + + /********************************************/ + case 'p': /* get pid */ + what = PID; + break; + + /********************************************/ + case 's': /* get status */ + what = STATUS; + break; + /********************************************/ + + default: + fprintf(stderr,"Sorry, I did not understand what you want. Try -h, please.\n"); + return 1; + break; + } + } + + if(what == NOTHING) { + fprintf(stderr, "That is not much you request from me. Try -h for help.\n"); + return 1; + } + + if(!path_absolute(argv[optind], buf, CINIT_DATA_LEN)) return 1; + + switch(what) { + case ENABLE: + case DISABLE: + /* fill flag */ + u.status |= cinit_flag_to_uint32_t(flag); + + if(!(u.status = cinit_svc_disable(buf, u.status))) { + fprintf(stderr, MSG_IPC_ERROR); + return 2; + } + + /* if(!cinit_svc_enable(buf, flag)) { + fprintf(stderr, MSG_IPC_ERROR); + return 2; + } + */ + break; + + case PID: + ret = cinit_svc_get_pid(buf, &(u.pid)); + switch(ret) { + case CINIT_ASW_OK: + printf("PID of %s: %d\n",buf, u.pid); + what = 0; + break; + + case CINIT_ASW_SVC_UNKNOWN: + printf(MSG_UNKNOWN_SVC, buf); + what = 1; + break; + + case CINIT_ASW_IPC_ERROR: + fprintf(stderr, MSG_IPC_ERROR); + what = 2; + break; + + default: /* should not happen */ + printf(MSG_UNKNOWN_RET, ret); + what = 3; + break; + } + break; + + case STATUS: + ret = cinit_get_svc_status(buf, &(u.status)); + switch(ret) { + case CINIT_ASW_OK: + printf("Status of %s is: %d\n", buf, u.status); + what = 0; + break; + + case CINIT_ASW_SVC_UNKNOWN: + printf("Unknown service: %s\n", buf); + what = 1; + break; + + case CINIT_ASW_IPC_ERROR: + fprintf(stderr, MSG_IPC_ERROR); + what = 2; + break; + + default: /* should not happen */ + printf(MSG_UNKNOWN_RET, ret); + what = 3; + break; + } + break; + } + + return what; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/client/halt.kill.c b/software/cinit/browse_source/cinit-0.3pre14/src/client/halt.kill.c new file mode 100644 index 00000000..a84cdf2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/client/halt.kill.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Halt the system through a kill call + */ + +#include /* kill() */ + +#include "messages.h" /* MSG_* */ +#include "intern.h" /* print_errno() */ +#include "signals.h" /* signals mapping */ + +int main() +{ + if(kill(1,SIG_CINIT_HALT) == -1) { + print_errno(MSG_HALT_KILL); + return 1; + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/client/poweroff.kill.c b/software/cinit/browse_source/cinit-0.3pre14/src/client/poweroff.kill.c new file mode 100644 index 00000000..801e119c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/client/poweroff.kill.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Reboot the system through a kill call + */ + +#include /* kill() */ + +#include "messages.h" /* MSG_* */ +#include "intern.h" /* print_errno() */ +#include "signals.h" /* signals mapping */ + +int main() +{ + if(kill(1,SIG_CINIT_POWEROFF) == -1) { + print_errno(MSG_POWEROFF_KILL); + return 1; + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/client/reboot.kill.c b/software/cinit/browse_source/cinit-0.3pre14/src/client/reboot.kill.c new file mode 100644 index 00000000..cd90feda --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/client/reboot.kill.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Reboot the system through a kill call + */ + +#include /* kill() */ + +#include "messages.h" /* MSG_* */ +#include "intern.h" /* print_errno() */ +#include "signals.h" /* signals mapping */ + +int main() +{ + if(kill(1,SIG_CINIT_REBOOT) == -1) { + print_errno(MSG_REBOOT_KILL); + return 1; + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/comm/README b/software/cinit/browse_source/cinit-0.3pre14/src/comm/README new file mode 100644 index 00000000..74a0b376 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/comm/README @@ -0,0 +1,20 @@ +All abstracted communication functions. Do not depend on the underlying +inter process communication mechanism. + + - send_command(): client function: sends a command to cinit + - send_service(): client function: send the service name to operate on + + - read_command(): server function: reads beginning of a command + * Extracts the command + * reads client identification (=pid) + * calls other functions, depending on the command send => switch() + - read_service(): server function: reads service + + - write_answer(): server function: answer? + * sends answers to clients => senseful? + + + TODO: + - define information function, that returns various information about + a service + diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/comm/answer_svc_disable.c b/software/cinit/browse_source/cinit-0.3pre14/src/comm/answer_svc_disable.c new file mode 100644 index 00000000..1cea237a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/comm/answer_svc_disable.c @@ -0,0 +1,41 @@ +/******************************************************************************* + * + * 2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * disables a service + * + */ + +#include "svc-intern.h" /* list_search */ +#include "cinit.h" /* structure: cinit_answer */ + +int answer_svc_disable(char *svc, struct cinit_answer *asr) +{ + struct listitem *tmp; + + tmp = list_search(svc); + if(!tmp) { + asr->ret = CINIT_ASW_SVC_UNKNOWN; + } else { + asr->ret = svc_disable(tmp); + asr->opt = 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/comm/answer_svc_pid.c b/software/cinit/browse_source/cinit-0.3pre14/src/comm/answer_svc_pid.c new file mode 100644 index 00000000..58b24bbe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/comm/answer_svc_pid.c @@ -0,0 +1,41 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * return pid of service + * + */ + +#include "svc-intern.h" /* VERSION */ +#include "cinit.h" /* structure: cinit_answer */ + +int answer_svc_pid(char *svc, struct cinit_answer *asr) +{ + struct listitem *tmp; + + tmp = list_search(svc); + if(!tmp) { + asr->ret = CINIT_ASW_SVC_UNKNOWN; + } else { + asr->ret = CINIT_ASW_OK; + asr->opt = tmp->pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/comm/answer_svc_status.c b/software/cinit/browse_source/cinit-0.3pre14/src/comm/answer_svc_status.c new file mode 100644 index 00000000..2a2648a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/comm/answer_svc_status.c @@ -0,0 +1,42 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * returns status of service + * + */ + +#include /* strncpy */ +#include "svc-intern.h" /* VERSION */ +#include "cinit.h" /* structure: cinit_answer */ + +int answer_svc_status(char *svc, struct cinit_answer *asr) +{ + struct listitem *tmp; + + tmp = list_search(svc); + if(!tmp) { + asr->ret = CINIT_ASW_SVC_UNKNOWN; + } else { + asr->ret = CINIT_ASW_OK; + asr->opt = tmp->status; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/comm/answer_svc_stop.c b/software/cinit/browse_source/cinit-0.3pre14/src/comm/answer_svc_stop.c new file mode 100644 index 00000000..539c3cb5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/comm/answer_svc_stop.c @@ -0,0 +1,40 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Return stop status + * + */ + +#include "cinit.h" /* structure: cinit_answer */ + +int answer_svc_stop(char *svc, struct cinit_answer *asr) +{ + struct listitem *tmp; + + tmp = list_search(svc); + if(!tmp) { + asr->ret = CINIT_MSG_SVC_UNKNOWN; + } else { + asr->ret = CINIT_MSG_OK; + svc_stop(tmp); + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/comm/answer_version.c b/software/cinit/browse_source/cinit-0.3pre14/src/comm/answer_version.c new file mode 100644 index 00000000..73343169 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/comm/answer_version.c @@ -0,0 +1,34 @@ +/******************************************************************************* + * + * 2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * return version of cinit + * + */ + +#include "config.h" /* VERSION */ +#include "cinit.h" /* structure: cinit_answer */ + +int answer_version(struct cinit_answer *asr) +{ + asr->ret = CINIT_ASW_OK; + cinit_cp_data(asr->data, VERSION); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/comm/cinit_append_data.c b/software/cinit/browse_source/cinit-0.3pre14/src/comm/cinit_append_data.c new file mode 100644 index 00000000..a6046f41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/comm/cinit_append_data.c @@ -0,0 +1,31 @@ +/******************************************************************************* + * + * 2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Append data to the existing field + * + */ + +#include /* strncpy */ +#include "cinit.h" /* CINIT_DATA_LEN */ + +void cinit_append_data(char data[], char *src) +{ + strncat(data, src, CINIT_DATA_LEN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/comm/cinit_cp_data.c b/software/cinit/browse_source/cinit-0.3pre14/src/comm/cinit_cp_data.c new file mode 100644 index 00000000..bcc982b5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/comm/cinit_cp_data.c @@ -0,0 +1,31 @@ +/******************************************************************************* + * + * 2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * fill the data field of qsn and asn + * + */ + +#include /* strncpy */ +#include "cinit.h" /* CINIT_DATA_LEN */ + +void cinit_cp_data(char data[], char *src) +{ + strncpy(data, src, CINIT_DATA_LEN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/comm/read_command.c b/software/cinit/browse_source/cinit-0.3pre14/src/comm/read_command.c new file mode 100644 index 00000000..ef10cd96 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/comm/read_command.c @@ -0,0 +1,59 @@ +/******************************************************************************* + * + * 2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * cinit reads a command sent by a client, called by ipc listener + * + */ + +#include "cinit.h" /* structures */ +#include "intern.h" /* answer_svc_status() */ + +int read_command(struct cinit_question qsn, struct cinit_answer *asr) +{ + switch(qsn.cmd) { + case CINIT_QSN_GET_VERSION: + if(!answer_version(asr)) return 0; + break; + + case CINIT_QSN_GET_STATUS: + if(!answer_svc_status(qsn.data, asr)) return 0; + break; + + case CINIT_QSN_GET_PID: + if(!answer_svc_pid(qsn.data, asr)) return 0; + break; + + case CINIT_QSN_SVC_DISABLE: + if(!answer_svc_disable(qsn.data, asr)) return 0; + break; + + /* FIXME: stopped here + case CINIT_MSG_SVC_ENABLE: + if(!answer_svc_enable(qsn.data, asr)) return 0; + break; */ + + /* Unknown command: should not happen :-) */ + default: + return 0; + break; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/core/build_argv.c b/software/cinit/browse_source/cinit-0.3pre14/src/core/build_argv.c new file mode 100644 index 00000000..ed26da0a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/core/build_argv.c @@ -0,0 +1,179 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * Build **argv for execution in cinit way: + * 1. check whether cmd is a valid executable + * 2. try to read cmd.params and write parameters + * 3. try to read cmd.env and setup environment + * + * Returns: + * BA_OK: Everything went well, you can use the struct + * BA_NOTFOUND: Binary executable is not available + * BA_PARAMS: Reading the parameters failed (ignoring non-existence!) + * BA_ENV: Reading the environment failed (same as above) + * BA_OTHER: Other error + */ + +#include /* open() */ +#include /* *alloc() */ +#include /* readlink */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* NULL */ +#include /* strchr */ +#include /* stat() */ + +#include "intern.h" +#include "build_argv.h" + + /* + * char *basename: something we should execute + * (*basename) + ".params" will be added as parameters + * (*basename) + ".env" will be added as environment + */ + +int cinit_build_argv(char *basename, struct ba_argv *bav) +{ + int tmp; + int argc; + char pathtmp[PATH_MAX+1]; + char *sbuf = NULL; + char *p; + + /* sane values */ + bav->argv = NULL; + bav->envp = NULL; + + /*********************************************************************** + * Try to get realname (for links) + */ + if((tmp = readlink(basename,pathtmp,PATH_MAX)) == -1) { + /* nothing there? */ + if(errno == ENOENT) { + return BA_E_NOTFOUND; + } + if (errno != EINVAL) { + return BA_E_OTHER; + } + tmp=strlen(basename); + strncpy(pathtmp,basename,tmp); + } + pathtmp[tmp] = '\0'; + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /*********************************************************************** + * prepare argv0 + */ + bav->argv = malloc(sizeof(char *)); + if(bav->argv == NULL) return BA_E_MEM; + + *bav->argv = malloc(tmp); + if(*(bav->argv) == NULL) return BA_E_MEM; + + strncpy(*(bav->argv),pathtmp,tmp); + + /********************** read params *********************/ + /* FIXME check bounds! */ + strcpy(pathtmp,basename); + strcat(pathtmp,C_PARAMS); + /* ORC_ERR_NONEXISTENT: Ok, have sbuf set to NULL + * ORC_OK: Ok, have a filled buffer (perhaps NULL, too) + * other: Error, print errno + */ + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /*********************************************************************** + * Now split the string, converting \n to \0 + */ + argc = 1; /* argv0 */ + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = sbuf; /* here begins the current argument */ + + if(p != NULL) { /* found another \n */ + *p = '\0'; + sbuf = p+1; + } else { /* end of string */ + sbuf = NULL; + } + + ++argc; + } + + /************ close argv list **************/ + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,basename); + strcat(pathtmp,C_ENV); + + tmp = argc = 0; + sbuf = NULL; + + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /************** build environment string **************/ + argc = 0; + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) return BA_E_MEM; + + bav->envp[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + sbuf = p+1; + } else { + sbuf = NULL; + } + ++argc; + } + + /************ close env list **************/ + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) { + return BA_E_MEM; + } + bav->envp[argc] = NULL; + + return BA_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/core/cinit.c b/software/cinit/browse_source/cinit-0.3pre14/src/core/cinit.c new file mode 100644 index 00000000..f2f7ab98 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/core/cinit.c @@ -0,0 +1,126 @@ +/******************************************************************************* + * + * 2005-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * The main file + * + */ + +#include /* getpid,chdir */ +#include /* str(ncmp,len,cpy,cat) */ +#include /* perror */ +#include /* malloc */ + +#include "intern.h" /* general things */ +#include "messages.h" /* messages */ +#include "ipc.h" /* general ipc methods */ +#include "svc-intern.h" /* gen_svc_tree */ + +struct listitem *svc_list = NULL; +struct dep *svc_init = NULL; +int svc_lock = 0; /* global svc-lock */ + +int main(int argc, char **argv) +{ + char *initdir = CINIT_INIT; /* default init dir */ + + + /* Is this really needed? + pid_t cpid; + + if(cpid != 1) { + mini_printf(CINIT_VERSION,2); + mini_printf(MSG_USAGE,2); + return 0; + }*/ + + /* Look whether we should start a profile */ + while(argc > 1) { + if(!strncmp(PROFILE, argv[argc-1], strlen(PROFILE) ) ) { + initdir = malloc(strlen(CINIT_SVCDIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2); + if(initdir == NULL) { + panic(); + } + strcpy(initdir, CINIT_SVCDIR); + strcat(initdir, SLASH); + strcat(initdir, &argv[argc-1][strlen(PROFILE)]); + break; + } + --argc; + } + + /* Bootup "logo" */ + mini_printf(MSG_BOOTING,1); mini_printf(initdir,1); mini_printf("\n",1); + + if(chdir(initdir) == -1) { + print_errno(initdir); + panic(); + } + + /* initialize ipc method */ + if(!cinit_ipc_init()) { + panic(); + } + + /* listen to signals */ + set_signals(ACT_SERV); + + /* pre-calculate service tree */ + if(!gen_svc_tree(initdir)) { + panic(); + } + + /* free, if we malloc()ed before */ + if(strcmp(initdir,CINIT_INIT)) { + free(initdir); + } + + /* change to /, so applications have that as cwd, too + * Is that really seneful? Does that help any application? + * If not, just for looking nice, that's not a reason to + * enable it. + if(chdir(SLASH) == -1) { + print_errno(SLASH); + panic(); + } */ + + if(!tree_exec(svc_init)) { + panic(); + } + + while(1) { + cinit_ipc_listen(); + + /* check dependency list: perhaps we need to restart something */ + /* implement in cinit-0.3pre14/5 */ + + // tree_exec(svc_init); + // reuse tree_exec()? + // if(dep) { svc_start() .. ? + } + + /* OLD: + if(!cinit_ipc_listen()) { + panic(); + } */ + + /* never reached */ + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/core/do_reboot.c b/software/cinit/browse_source/cinit-0.3pre14/src/core/do_reboot.c new file mode 100644 index 00000000..9c656995 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/core/do_reboot.c @@ -0,0 +1,111 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Reboot + */ + +#include +#include +#include +#include +#include +#include + +#include "ipc.h" + +/* cleaned up own headers */ +#include "intern.h" /* set_signals */ +#include "svc-intern.h" /* shutdown_services */ +#include "messages.h" /* messages */ +#include "reboot.h" /* cinit_poweroff&co */ + +/* cleaned headers */ +#include /* kill() */ + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void do_reboot(int signal) +{ + //struct listitem *tmp; + //char **cmd; + //int i; + + /* + * New code: + * 0. close user ipc + * - notify user! + * - do not allow user interupt anymore + * 1. shutdown services + * - notify user! + * 2. kill -TERM all processes + * - notify user! + * 3. kill -KILL all processes + * - notify user! + * 4. execute /etc/cinit/conf/{halt,reboot,poweroff} + * - notify user! + */ + + /* do not listen to client requests anymore */ + /* and tell the user what happens */ + LOG(MSG_SHUTDOWN_START); + cinit_ipc_destroy(); + set_signals(ACT_CLIENT); /* reset signal handlers */ + + /* shutdown all services: take care about the dependency tree */ + LOG(MSG_SHUTDOWN_SVC); + shutdown_services(svc_list); + + LOG(MSG_SHUTDOWN_KILL); + /* now: all services are down, let's kill all other processes */ + if(kill(-1,SIGTERM) == -1) { + print_errno(MSG_TERMKILL); + } + + sleep_before_kill(); + + if(kill(-1,SIGKILL) == -1) { + print_errno(MSG_KILLBILL); + } + + /* Execute the last command */ + LOG(MSG_SHUTDOWN_LAST); + execute_and_wait(CINIT_LAST); + + /* do what we really wanted to do */ + switch(signal) { + case SIGTERM: /* power off */ + LOG(MSG_POWER_OFF); + cinit_poweroff(); + break; + case SIGHUP: /* reboot */ + LOG(MSG_REBOOT); + cinit_reboot(); + break; + case SIGUSR1: /* halt */ + LOG(MSG_HALT); + cinit_halt(); + break; + } + /* FIXME: should we exit? */ + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/core/panic.c b/software/cinit/browse_source/cinit-0.3pre14/src/core/panic.c new file mode 100644 index 00000000..b9fff270 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/core/panic.c @@ -0,0 +1,48 @@ +/******************************************************************************* + * + * 2005-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Execute something + */ + +#include /* execv */ + +#include "intern.h" +#include "messages.h" + +void panic(void) +{ + char *nargv[2]; + + if(execute_and_wait(CINIT_PANIC)) _exit(0); + + /*********************************************************************** + * THIS SHOULD NOT HAPPEN, fallback to hardcoded sulogin + * (conf/sulogin) + */ + nargv[0] = SULOGIN; + nargv[1] = NULL; + + if(execv(SULOGIN,nargv) == -1) { + print_errno(MSG_FATAL_PANIC); + } + + /* there's nothing todo, if everything fails */ + _exit(23); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/core/set_signals.c b/software/cinit/browse_source/cinit-0.3pre14/src/core/set_signals.c new file mode 100644 index 00000000..b12fb34f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/core/set_signals.c @@ -0,0 +1,54 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Define signal handlers + */ + + +#include /* sigaction, sigemtpyset */ +#include /* NULL */ +#include "intern.h" /* defines */ +#include "reboot.h" /* reboot related */ +#include "signals.h" /* reboot related */ + +void set_signals(int action) +{ + struct sigaction sa; + + sigemptyset(&sa.sa_mask); /* no other signals should be blocked */ + sa.sa_flags = 0; + + if(action == ACT_SERV) { + sa.sa_handler = sig_child; + sa.sa_flags = SA_NOCLDSTOP; + } else { + sa.sa_handler = SIG_DFL; + } + + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + sa.sa_flags = 0; /* reset flags */ + if(action == ACT_SERV) { + sa.sa_handler = do_reboot; + } + sigaction(SIG_CINIT_HALT, &sa, NULL); /* halt */ + sigaction(SIG_CINIT_POWEROFF, &sa, NULL); /* poweroff */ + sigaction(SIG_CINIT_REBOOT, &sa, NULL); /* reboot */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/core/sig_child.c b/software/cinit/browse_source/cinit-0.3pre14/src/core/sig_child.c new file mode 100644 index 00000000..c81a43f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/core/sig_child.c @@ -0,0 +1,108 @@ +/******************************************************************************* + * + * 2005-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * The child handler + * + */ + +#include /* waitpid */ +#include /* NULL */ +#include /* gettimeofday() */ /* FIXME: CHECK POSIX */ +#include /* time(),gettime.. */ /* FIXME: CHECK POSIX */ + +#include "intern.h" /* mini_printf */ +#include "svc-intern.h" /* list_search_pid */ +#include "svc.h" /* list_search_pid */ +#include "messages.h" /* messages/D_PRINTF */ + +extern int svc_lock; + +/*********************************************************************** + * sig_child: (c)collect the children + */ +void sig_child(int tmp) +{ + /* New code: + * - search for pid in service list + * * if (respawn) -> start new + * - insert delay? if exit code is non-zero? if uptime too less? + * * if (once) -> update service status + * * else ignore, but reap away + */ + pid_t pid; + int delay; + struct listitem *svc; + + + /* wait until the lock is reset */ + if(svc_lock) return; + +// struct timeval now; + + while((pid = waitpid(-1, &tmp, WNOHANG)) > 0) { + /* check if it's a watched child */ + svc = list_search_pid((pid_t) pid); + + if(svc != NULL) { + /* Check, that we are operating on it =. that it is no normal child */ + /* Also check for ST_SH_* to catch race conditions, where + * status is not yet updated => does that make sense or is + * the status overwritten after we return out of here? + */ + printf("CHILD: %s (%u) (%d) bekannt!\n",svc->abs_path, svc->status, pid); + + if(svc->status & CINIT_ST_ONCE_RUN + || svc->status & CINIT_ST_RESPAWNING) { + if(WIFEXITED(tmp) && !WEXITSTATUS(tmp)) { + svc_success(svc); + } else { + svc_fail(svc); + } + } + //mini_printf("WHILE: Vorm respawn!\n",1); + /* respawn: restart: FIXME Delay for regular dying services */ + if(svc->status == CINIT_ST_RESPAWNING) { + svc_report_status(svc->abs_path,MSG_SVC_RESTART,NULL); + + //delay = MAX_DELAY / (time(NULL) - svc->start); + /* if(gettimeofday(&now,NULL) == -1) { + print_errno(MSG_GETTIMEOFDAY);; + delay = 0; + } else { + delay = MAX_DELAY / (now.tv_sec - svc->start); + } */ + + delay = 5; + + /* int test = time(NULL); + test++; + D_PRINTF("WHILE: IM respawn / for printf!\n"); + printf("sig_child: %d, %d, %d, %d\n", + MAX_DELAY, + (int) time(NULL), + (int) svc->start, + (int) (test - svc->start) + ); */ + + svc_start(svc,delay); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/generic/execute_and_wait.c b/software/cinit/browse_source/cinit-0.3pre14/src/generic/execute_and_wait.c new file mode 100644 index 00000000..ab808ff1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/generic/execute_and_wait.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something, but fork() before + * + */ + +#include /* pid_t */ +#include /* waitpid */ +#include /* fork */ + +#include "messages.h" /* MSG_* */ +#include "intern.h" /* print_errno, execute_sth */ + +int execute_and_wait(char *svc) +{ + pid_t pid; + int status; + + /* fork */ + pid = fork(); + + if(pid == -1) { + print_errno(MSG_ERR_FORK); + return 0; + } + + /* exec / child */ + if(pid == 0) { + execute_sth(svc); /* exits itself */ + } + + /* wait / parent */ + waitpid(pid,&status,0); + + if(WIFEXITED(status)) { + if(WEXITSTATUS(status) == 0) { + return 1; + } + } + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/generic/execute_sth.c b/software/cinit/browse_source/cinit-0.3pre14/src/generic/execute_sth.c new file mode 100644 index 00000000..02593940 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/generic/execute_sth.c @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Executes something: replaces us + */ + +#include /* _exit */ + +#include "intern.h" +#include "build_argv.h" +#include "messages.h" /* D_PRINTF */ + +void execute_sth(char *basename) +{ + int tmp; + struct ba_argv bav; + + tmp = cinit_build_argv(basename,&bav); + if((tmp = cinit_build_argv(basename,&bav)) != BA_OK) { + if(tmp != BA_E_MEM) { /* do not print something on memory errors */ + print_errno(basename); + } + _exit(1); + } + + /* tell the user what we execute */ + mini_printf(MSG_INTRO_EXEC,1); + mini_printf((bav.argv)[0],1); + mini_printf("\n",1); + + execve((bav.argv)[0], bav.argv, bav.envp); + print_errno(basename); + _exit(1); /* simply exit non-zero. That's enough for cinit to recognize + it as faulty */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/generic/file_exists.c b/software/cinit/browse_source/cinit-0.3pre14/src/generic/file_exists.c new file mode 100644 index 00000000..26d3f53c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/generic/file_exists.c @@ -0,0 +1,60 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * check whether file exists and is a file + */ + +#include /* errno */ +#include /* stat */ +#include /* NULL */ + +#include "intern.h" /* print_errno() */ +#include "svc-intern.h" /* svc_report_status() */ +#include "messages.h" /* messages.. */ + +int file_exists(char *filename) +{ + struct stat buf; + + /* check: + * - is it a link? if so, is it broken? report! + * - is it non existent? -> return non-existent + * - is it existent, but not a regular file? report! + */ + if(lstat(filename,&buf) == -1) { /* lstat fails? */ + if(errno == ENOENT) { + /* FIXME: remove later */ + printf("%s is not existing! => ok, most likely\n",filename); + return FE_NOT; + } else { + mini_printf("anderer fehler.\n",1); + print_errno(filename); + return FE_ERR; + } + } else { + if(S_ISLNK(buf.st_mode)) { /* is a link */ + /* check link destination */ + if(stat(filename,&buf) == -1) { /* do real stat(): */ + if(errno == ENOENT) { + svc_report_status(filename,MSG_BROKENLINK,NULL); + return FE_NOLINK; + } else { + /* FIXME: MSG_*, ?? */ + mini_printf("anderer fehler.\n",1); + print_errno(filename); + return FE_ERR; + } + } + } + } /* caught all stat() errors */ + + if(!S_ISREG(buf.st_mode)) { + svc_report_status(filename,MSG_NONREGULAR,NULL); + return FE_OTHER; + } + + return FE_FILE; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre14/src/generic/mini_printf.c new file mode 100644 index 00000000..627ff3f0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/generic/mini_printf.c @@ -0,0 +1,38 @@ +/******************************************************************************* + * + * 2005-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Print the world! + * + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) return; + + p = str; + while(*p) p++; + + write(fd,str,(size_t) (p - str)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/generic/openreadclose.c b/software/cinit/browse_source/cinit-0.3pre14/src/generic/openreadclose.c new file mode 100644 index 00000000..b271b410 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/generic/openreadclose.c @@ -0,0 +1,66 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * read a file + * + */ + +#include /* open, read, close */ +#include /* strncpy */ +#include /* realloc */ +#include /* errno */ +#include /* NULL */ +#include /* open */ +#include "intern.h" /* ORC_* */ + +int openreadclose(char *filename, char **where) +{ + + int tmp; + int cnt; + int fd; + char buf[512]; + + *where = NULL; + + /* what a wonderful loop */ + while((fd = open(filename,O_RDONLY)) == -1) { + if(errno == ENOENT) return ORC_ERR_NONEXISTENT; + if(errno != EINTR) return ORC_ERR_OPEN; + } + + cnt = 0; + while (1) { + tmp = read(fd,buf,512); + + if(tmp == -1) { + if(errno == EINTR) + continue; + else + return ORC_ERR_READ; + } else if(tmp == 0) { + break; + } + + cnt += tmp; + *where = realloc(*where,cnt + 1); + if(*where == NULL) return ORC_ERR_MEM; + + /* FIXME check correctness of copied buffer... + * and get some sleep..soon, very soon! */ + strncpy(&(*where)[cnt-tmp],buf,tmp); + } + + while((fd = close(fd)) == -1) { + if(errno == EINTR) continue; + return ORC_ERR_CLOSE; + } + + /* terminate string! */ + (*where)[cnt] = '\0'; + + return ORC_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/generic/path_absolute.c b/software/cinit/browse_source/cinit-0.3pre14/src/generic/path_absolute.c new file mode 100644 index 00000000..4749cc39 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/generic/path_absolute.c @@ -0,0 +1,55 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * create an absulte path + * + */ + +#include /* chdir(),getcwd */ +#include /* PATH_MAX */ +#include "intern.h" /* print_errno */ +#include "messages.h" /* messages */ + +int path_absolute(char *relpath, char *newpath, size_t size) +{ + char oldpath[PATH_MAX+1]; + + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + if(chdir(relpath) == -1) { + print_errno(relpath); + return 0; + } + + if(!getcwd(newpath, size)) { + print_errno(relpath); + return 0; + } + + if(chdir(oldpath) == -1) { + print_errno(oldpath); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/generic/path_append.c b/software/cinit/browse_source/cinit-0.3pre14/src/generic/path_append.c new file mode 100644 index 00000000..87cc49ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/generic/path_append.c @@ -0,0 +1,28 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create path to needs + */ + +#include /* strlen */ +#include /* PATH_MAX */ + +#include "intern.h" /* mini_printf, PD_ERR */ + +int path_append(char *path, char *append) +{ + size_t end = strlen(path); + + if(strcmp(&path[end-1],SLASH)) { + if((end + strlen(SLASH) + strlen(append)) > PATH_MAX) return 0; + strcat(path,SLASH); + } else { + if((end + strlen(append)) > PATH_MAX) return 0; + } + strcat(path,append); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/generic/print_errno.c b/software/cinit/browse_source/cinit-0.3pre14/src/generic/print_errno.c new file mode 100644 index 00000000..0286f550 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/generic/print_errno.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * stolen from tcpserver_blocker + * + * Author: Nico Schottelius + * Date: 2006-08-24 + * + * Print the error found in errno + */ + +#include /* strerror */ +#include /* errno */ + +#include "intern.h" /* mini_printf, PD_ERR */ + +void print_errno(char *msg) +{ + if(msg) { + mini_printf(msg, FD_ERR); + mini_printf(": ", FD_ERR); + } + mini_printf(strerror(errno), FD_ERR); + mini_printf("\n", FD_ERR); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/generic/sleep_before_kill.c b/software/cinit/browse_source/cinit-0.3pre14/src/generic/sleep_before_kill.c new file mode 100644 index 00000000..e3c92615 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/generic/sleep_before_kill.c @@ -0,0 +1,43 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Sleep: + * read configuration, + * fallback to builtin value if not possible, + * sleep. + * + */ + +#include /* nanosleep */ +#include /* strtol() */ +#include /* errno */ + +#include "intern.h" /* print_errno */ +#include "messages.h" /* messages */ + +void sleep_before_kill() +{ + char *content; + int tmp; + struct timespec ts; + + if(openreadclose(CINIT_SLEEPFILE,&content) == ORC_OK) { + errno = 0; + tmp = strtol(content, NULL, 10); + if(errno != 0) tmp = SLEEP_KILL; + free(content); + } else { + mini_printf(MSG_BUILTIN_SLEEP,1); + tmp = SLEEP_KILL; + } + + ts.tv_sec = tmp; + ts.tv_nsec = 0; + + if(nanosleep(&ts,NULL) == -1) { + print_errno(MSG_ERR_SLEEP); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/generic/strip_final_newline.c b/software/cinit/browse_source/cinit-0.3pre14/src/generic/strip_final_newline.c new file mode 100644 index 00000000..4629bb9f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/generic/strip_final_newline.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * If the last character is \n, shrink the memory and remove it + * + */ + +#include /* NULL */ +#include /* strchr */ +#include /* alloc */ + +char *strip_final_newline(char *str) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) { + return NULL; + } + + p = strrchr(str,'\n'); + if(p) { + if(*(p+1) == '\0') { + *p = '\0'; /* DO NOT FORGET TO TERMINATE STRING */ + str = realloc(str,(p-str)); + } + } + + return str; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/generic/usage.c b/software/cinit/browse_source/cinit-0.3pre14/src/generic/usage.c new file mode 100644 index 00000000..260b4ea5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/generic/usage.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * usage: tell the world what we want - seriously no capitalism + * usage: tell the user what's wrong and a help text + * + */ + +#include /* _exit() */ +#include "intern.h" /* mini_printf */ + +void usage(char *banner, char *text) +{ + /* print banner + error message */ + mini_printf(banner,1); + mini_printf(text,1); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/include/build_argv.h b/software/cinit/browse_source/cinit-0.3pre14/src/include/build_argv.h new file mode 100644 index 00000000..18b7bf5b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/include/build_argv.h @@ -0,0 +1,52 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * build **argv + */ + +#ifndef CINIT_BA_HEADER +#define CINIT_BA_HEADER + +/***************************************************************************** + * Defines: return values + */ +enum { + BA_OK, + BA_E_NOTFOUND, + BA_E_PARAMS, + BA_E_ENV, + BA_E_MEM, + BA_E_OTHER +}; + +/***************************************************************************** + * Structures + */ +struct ba_argv { + char **argv; + char **envp; +}; + +/***************************************************************************** + * Functions + */ +int cinit_build_argv(char *basename, struct ba_argv *bav); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/include/cinit.h b/software/cinit/browse_source/cinit-0.3pre14/src/include/cinit.h new file mode 100644 index 00000000..c295ff48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/include/cinit.h @@ -0,0 +1,112 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Header file for external programs (in theory) + */ + +#ifndef __CINIT_EXTERNAL_HEADER +#define __CINIT_EXTERNAL_HEADER + +/* includes */ +#include /* required for functions */ +#include /* PATH_MAX */ +#include /* pid_t */ + +/* limits */ +#define CINIT_DATA_LEN (PATH_MAX+1) + +/* + * structures: independent of the ipc code! + */ + +/* messages from the client */ +struct cinit_question { + uint32_t cmd; + uint32_t opt; + char data[CINIT_DATA_LEN]; +}; + +/* messages from cinit */ +struct cinit_answer { + uint32_t ret; + uint32_t opt; + char data[CINIT_DATA_LEN]; +}; + +/*********************************************************************** + * codes for messages + */ +enum { /* questions */ + CINIT_QSN_GET_STATUS = 0x01, /* status of a service */ + CINIT_QSN_GET_PID = 0x02, /* get pid of a service */ + CINIT_QSN_GET_VERSION = 0x04, /* version of cinit */ + CINIT_QSN_SVC_DISABLE = 0x08, /* service: stop */ + CINIT_QSN_SVC_ENABLE = 0x10, /* service: start */ + CINIT_QSN_SVC_NEEDS = 0x20, /* in/exclude needs */ + CINIT_QSN_SVC_WANTS = 0x40, /* in/exclude wants */ + CINIT_QSN_SVC_LIST = 0x80, /* list services */ + + CINIT_QSN_QUESTION_END = 0xffff /* last message */ +}; + +enum { /* answers */ + CINIT_ASW_IPC_ERROR = 0x00, /* bad error */ + CINIT_ASW_OK = 0x01, /* general ok value */ + CINIT_ASW_SVC_UNKNOWN = 0x04, /* Services is not known */ + CINIT_ASW_SVC_DISABLED = 0x08, /* service: stop */ + CINIT_ASW_SVC_ENABLED = 0x10, /* service: start */ + CINIT_ASW_SVC_ERR = 0x20, /* in/excluded needs */ + CINIT_ASW_SVC_WANTS = 0x40, /* in/excluded wants */ + CINIT_ASW_SVC_NEEDS = 0x80, /* in/excluded needs */ + CINIT_ASW_ERR_INTERN = 0x100, /* cinit internal error */ + + CINIT_ASW_ANSWER_END = 0xffff /* last message */ +}; + +enum cinit_svc_flags { + CINIT_CMD_SVC_WANTS = 'w', + CINIT_CMD_SVC_NEEDS = 'n' +}; + +struct cinit_msg_msg { + int code; + char *msg; +}; + +//struct cinit_msg_msg cinit_codes2messages[] = { + +//} + +/* functions */ +int cinit_send_to(struct cinit_question *, struct cinit_answer *); +void cinit_cp_data(char data[], char *src); + +void cinit_prepare_comm(struct cinit_question *qsn, + struct cinit_answer *asr, + uint32_t cmd); + +uint32_t cinit_flag_to_uint32_t(char *); +uint32_t cinit_get_version(char *); +uint32_t cinit_get_svc_status(char *, uint32_t *); +uint32_t cinit_svc_disable(char *svc, uint32_t flag); +uint32_t cinit_svc_enable(char *svc, uint32_t flag); +uint32_t cinit_svc_get_pid(char *, pid_t *status); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/include/cmd.h b/software/cinit/browse_source/cinit-0.3pre14/src/include/cmd.h new file mode 100644 index 00000000..eb29be93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/include/cmd.h @@ -0,0 +1,53 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Header file for the cmd (cinit management) + */ + +#ifndef CINIT_CMD_HEADER +#define CINIT_CMD_HEADER + +#define CMD_USAGE "cmd - cinit management\n\n" \ + "cmd -[de [nw]] -[ps] [service] -[hvV]\n\n" \ + " -d: disable service\n" \ + " n: without needs\n" \ + " Skip needs when en/disabling\n\n"\ + " w: without wants\n" \ + " Skip wants when en/disabling\n" \ + " -e: enable service\n" \ + " see above\n" \ + " -h: get help\n" \ + " this messages" \ + " -p: get process id (pid)\n" \ + " of specified service\n" \ + " -s: get status\n" \ + " of specified service\n" \ + " -v: get version\n" \ + " of cinit\n" \ + " -V: get version\n" \ + " of cmd\n" \ + "" + +#define CMD_OPTIONS "e::d::hpsvV" + +#define MSG_KILL "kill()" +#define CMD_VERSION "0.2" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/include/intern.h b/software/cinit/browse_source/cinit-0.3pre14/src/include/intern.h new file mode 100644 index 00000000..be41eb17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/include/intern.h @@ -0,0 +1,129 @@ +/******************************************************************************* + * + * 2005-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * internal header + */ + + +#ifndef _CINIT_INTERN_H +#define _CINIT_INTERN_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ +#include "cinit.h" /* structures: answer / question */ + +/*********************************************************************** + * Defines + */ +#define SLASH "/" +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC + +enum { /* FIXME: there are some default defines somewhere for that */ + FD_IN=0, + FD_OUT=1, + FD_ERR=2 +}; + +enum { /* returns of openreadclose */ + ORC_OK, /* everything went fine */ + ORC_ERR_NONEXISTENT, /* file does not exist */ + ORC_ERR_OPEN, /* error opening the file */ + ORC_ERR_READ, + ORC_ERR_CLOSE, + ORC_ERR_MEM +}; + +/* values for execute_sth: + * STRICT: print and error, if .../on does not exist + * NOSTRICT: no .../on is fine + */ +enum { + EXEC_STRICT, + EXEC_NOSTRICT +}; + +enum { + FE_FILE, /* file exists and is a file */ + FE_OTHER, /* file exists, but is no file */ + FE_NOT, /* file does not exist */ + FE_NOLINK, /* file is a broken symbolic link*/ + FE_ERR /* some error occured */ +}; + +/*********************************************************************** + * Paths + */ +#define CINIT_SVCDIR CINIT_DIR SLASH SVCDIR +#define CINIT_INIT CINIT_SVCDIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK +#define CINIT_BIN PREFIX SLASH "sbin" SLASH "cinit" + +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC +#define CINIT_LAST CINIT_CONFDIR SLASH C_LAST +#define CINIT_SLEEPFILE CINIT_CONFDIR SLASH SLEEP_BEFORE_KILL + +/* needed by set_signals */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* functions (used by server and client) */ +void mini_printf(char *str, int fd); +void set_signals(int action); +//void usage(char *banner, char *stext); + +/* core functions */ +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +//int msg_svc_on_off(char *svc, char action); +//int msg_change_status(char *svc, char status, pid_t pid); +//int begin_msg(char cmd); + +/* client functions */ +pid_t respawn_svc(char *abspath); +char **read_file(char *file); +void sig_terminate(int signal); + +/* communication */ +int read_command(struct cinit_question, struct cinit_answer *); +int answer_svc_status(char *, struct cinit_answer *); +int answer_svc_pid(char *, struct cinit_answer *); +int answer_version(struct cinit_answer *); +int answer_svc_disable(char *, struct cinit_answer *); + +/* generic */ +void execute_sth(char *basename); +int execute_and_wait(char *svc); +int path_append(char *path, char *append); +int path_absolute(char *relpath, char *buf, size_t size); +int openreadclose(char *filename, char **where); +char *strip_final_newline(char *str); +int file_exists(char *filename); +void sleep_before_kill(); + +/* util */ +void print_errno(char *text); + +#endif /* INTERN */ diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/include/ipc.h b/software/cinit/browse_source/cinit-0.3pre14/src/include/ipc.h new file mode 100644 index 00000000..e06bd734 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/include/ipc.h @@ -0,0 +1,55 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Prototypes for ipc handler + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +/* FIXME: change to cinit/types.h later */ +#include "cinit.h" + +/***************************************************************************** + * Functions: in server + */ +int cinit_ipc_init(void); /* init in init */ +int cinit_ipc_listen(void); /* listen in init */ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + +/***************************************************************************** + * Functions: in clients + */ +int cinit_ipc_logon(void); /* logon to init */ + +int cinit_ipc_connect(void); /* connect to init */ + +int cinit_ipc_csend(struct cinit_question *); /* ask the server */ +int cinit_ipc_cread(struct cinit_answer *); /* read answer */ + +int cinit_ipc_logoff(void); /* logoff */ + +/***************************************************************************** + * Functions: shared + */ + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/include/listing b/software/cinit/browse_source/cinit-0.3pre14/src/include/listing new file mode 100644 index 00000000..bccdad37 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/include/listing @@ -0,0 +1,8 @@ +include/intern.h +include/config.h +include/ipc.h +include/messages.h +include/os.h +include/reboot.h +include/signals.h +include/svc.h diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/include/messages.h b/software/cinit/browse_source/cinit-0.3pre14/src/include/messages.h new file mode 100644 index 00000000..6fa101e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/include/messages.h @@ -0,0 +1,168 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * All messages + */ + +#ifndef _CINIT_MSG_H +#define _CINIT_MSG_H + +/* version */ +#define CINIT_VERSION "cinit-" VERSION +#define MSG_BOOTING CINIT_VERSION ": Booting from " + +#define MSG_DP ": " + +#define MSG_USAGE_1 ": fast executing, small and simple init " +#define MSG_USAGE_2 "with support for profiles\n" +#define MSG_USAGE_3 "\nError: cinit must be started as PID 1.\n" +#define MSG_USAGE MSG_USAGE_1 MSG_USAGE_2 MSG_USAGE_3 +#define MSG_ERR_FORK "fork" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_OPEN "open" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_READ "read" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" + +//#define MSG_ERR_DEPS "Too many dependencies" +//#define MSG_ERR_ACCEPT "accept" +//#define MSG_ERR_WAITPID "waitpid" +//#define MSG_ERR_POLL "poll" +//#define MSG_ERR_MODIFY "modify list failed" +//#define MSG_ERR_COMM "Communication failed" + +//#define MSG_ERR_LESS_ARGS "Too less arguments!" +//#define MSG_ERR_BAD_ARGS "Wrong arguments / parameter" +//#define MSG_ERR_ARGS_LEN "Wrong parameter length" + +#define LOG_SVC_STOPED "Service stoped" +#define LOG_SVC_ONCE "Started once" +#define LOG_SVC_RESPAWN "Respawns now" +//#define LOG_NEED_FAIL "One or more need failed" +//#define LOG_SVC_FAILED "Service already failed, not starting." +#define LOG_SVC_NOTEXIST "Service does not exist" + +#define MSG_EXEC_FAILED "Failed to execute " + +#define MSG_RESCUE "Switching to rescue mode ..." +#define MSG_UPDATE "Updating cinit ..." +#define MSG_HOT_REBOOT "Hot reboot in progress ..." + +#define MSG_SHOULD_NOT_HAPPEN "This should not happen, I do not know what todo!" + +/* DEBUG */ +#ifdef DEBUG +# include +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) {} +#endif + +/* macros */ +#define SERVICE_LOG(svc,message) { \ + mini_printf(svc,1); \ + mini_printf(MSG_DP,1); \ + mini_printf(message,1); \ + mini_printf("\n",1); \ +} +#define LOG(s) { \ + mini_printf(s,1); \ + mini_printf("\n",1); \ +} +#define P_START_SERVICE(name) { mini_printf(MSG_START_SVC,1); mini_printf(name,1); mini_printf("\n",1); } +#define P_EXEC_FAILED(name) { mini_printf(MSG_EXEC_FAILED,1); mini_printf(name,1); mini_printf("\n",1); } + +/* NEW (clean) Service status: Messages to the outside */ + +/* services: how they should be printed + * /etc/cinit/svc/long/name: started once + * /etc/cinit/svc/long/name: is respawning + * /etc/cinit/svc/long/name: FAILED (why it happened) + */ + +#define MSG_INTRO_CINIT "cinit:" +#define MSG_INTRO_SPACE MSG_INTRO_CINIT " " +#define MSG_INTRO_SVC MSG_INTRO_CINIT +#define MSG_INTRO_STOP MSG_INTRO_CINIT "stop: " +#define MSG_INTRO_EXEC MSG_INTRO_CINIT "exec: " + +/* FIXME: remove/append, but no intro! */ +#define MSG_INTRO_FAIL "FAILED " +#define MSG_INTRO_RESPAWN MSG_INTRO_CINIT "respawn: " +#define MSG_INTRO_OK MSG_INTRO_CINIT "ok: " + +#define MSG_SVC_FORK "fork() failed" +#define MSG_SVC_NEED_FAIL MSG_INTRO_FAIL "Needs failed for service" +#define MSG_SVC_FAIL MSG_INTRO_FAIL "Service failed!" + + +#define MSG_BUILTIN_SLEEP MSG_INTRO_STOP "Using built-in sleep" + +#define MSG_TREE_EXEC MSG_INTRO_SPACE "Execution of reverse service tree\n" + +/* general errors */ +#define MSG_GETCWD "Getcwd failed! Your system is most likely broken!" +#define MSG_FATAL_PANIC MSG_INTRO_SPACE "I tried everything, but even panic() failed: " +#define MSG_ERR_SLEEP MSG_INTRO_SPACE "Sleep did not succeed" +#define MSG_GETTIMEOFDAY MSG_INTRO_SPACE "gettimeofday() failed!" + +/* execution */ +//#define MSG_EXECUTING MSG_INTRO_EXEC + +/* stat() errors */ +#define MSG_NONREGULAR "Is not a regular file." +#define MSG_BROKENLINK "Is a broken link." + +/* Service messages */ +#define MSG_SVC_START "Starting... " +#define MSG_SVC_STOP "Stoping... " +#define MSG_SVC_RESTART "Restarted." +#define MSG_SVC_SLEEP "Sleeping before restart" +#define MSG_SVC_OK_ONCE "Started once." +#define MSG_SVC_OK_RESPAWN "Is respawning." + +/* Status messages */ +#define MSG_SHUTDOWN_START MSG_INTRO_STOP "\nBeginning the shutdown process..." +#define MSG_SHUTDOWN_SVC MSG_INTRO_STOP "Shutting down services now..." +#define MSG_SHUTDOWN_KILL MSG_INTRO_STOP "Killing remaining processes..." +#define MSG_SHUTDOWN_LAST MSG_INTRO_STOP "Executing final service..." +#define MSG_POWER_OFF MSG_INTRO_STOP "Powering off..." +#define MSG_HALT MSG_INTRO_STOP "Halting system ..." +#define MSG_REBOOT MSG_INTRO_STOP "Rebooting ..." + +/* client messages */ +#define MSG_HALT_KILL "halt.kill" +#define MSG_REBOOT_KILL "reboot.kill" +#define MSG_POWEROFF_KILL "poweroff.kill" + + +/* reboot */ +#define MSG_TERMKILL MSG_INTRO_FAIL "SIGTERM" +#define MSG_KILLBILL MSG_INTRO_FAIL "SIGKILL" + +#endif /* _CINIT_MSG_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/include/os.h b/software/cinit/browse_source/cinit-0.3pre14/src/include/os.h new file mode 100644 index 00000000..d6173a83 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/include/os.h @@ -0,0 +1,34 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * os specific functions + */ + +#ifndef CINIT_OS_HEADER +#define CINIT_OS_HEADER + +/***************************************************************************** + * Functions + */ +void cinit_halt(void); +void cinit_poweroff(void); +void cinit_reboot(void); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/include/reboot.h b/software/cinit/browse_source/cinit-0.3pre14/src/include/reboot.h new file mode 100644 index 00000000..4e490bd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/include/reboot.h @@ -0,0 +1,49 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * reboot specific functions + * + */ + +#ifndef CINIT_REBOOT_HEADER +#define CINIT_REBOOT_HEADER + +/***************************************************************************** + * the main reboot function + */ +void do_reboot(int signal); + + +/***************************************************************************** + * os specific functions + */ +void cinit_reboot(void); +void cinit_halt(void); +void cinit_poweroff(void); + + +/***************************************************************************** + * Functions: abstract do_reboot + */ +#define cinit_do_reboot() do_reboot(SIGHUP) +#define cinit_do_halt() do_reboot(SIGUSR1) +#define cinit_do_poweroff() do_reboot(SIGTERM) + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/include/signals.h b/software/cinit/browse_source/cinit-0.3pre14/src/include/signals.h new file mode 100644 index 00000000..2fcac6cd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/include/signals.h @@ -0,0 +1,31 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Define signals to use: needs signal.h to be included before. + */ + +#ifndef CINIT_SIGNALS_HEADER +#define CINIT_SIGNALS_HEADER + +#define SIG_CINIT_HALT SIGUSR1 +#define SIG_CINIT_POWEROFF SIGTERM +#define SIG_CINIT_REBOOT SIGHUP + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/include/svc-intern.h b/software/cinit/browse_source/cinit-0.3pre14/src/include/svc-intern.h new file mode 100644 index 00000000..200ee7f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/include/svc-intern.h @@ -0,0 +1,102 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Internal service specifics + */ + + +#ifndef __CINIT_SVC_INTERN_H +#define __CINIT_SVC_INTERN_H + +/* includes */ +#include /* pid_t */ +#include /* int types */ +#include "config.h" /* paths, socket options, etc. */ +#include "cinit.h" /* LEN */ + +/* service list */ +struct listitem { + struct listitem *prev; /* previous item */ + struct listitem *next; /* next item */ + + char abs_path[CINIT_DATA_LEN]; /* name of service */ + uint32_t status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + time_t start; /* time the process was started last time */ + + + struct dep *wanted_by; /* list of services that want this service */ + struct dep *needed_by; /* list of services that need this service */ + + struct dep *wants; /* list of services that this service wants */ + struct dep *needs; /* list of services that this service needs */ +}; + +/* list of dependencies */ +struct dep { + struct dep *prev; + struct dep *next; + struct listitem *svc; +}; + +/* variables */ +extern struct dep *svc_init; /* the services to start */ +extern struct listitem *svc_list; /* the list of services */ + +/* list functions */ +struct listitem *list_insert(char *path, uint32_t status); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); +struct listitem *list_search(char *path); +struct listitem *list_search_pid(pid_t pid); + +/* service */ +struct listitem *svc_create(char *svc); +struct listitem *gen_svc_tree(char *svc); +int check_add_deps(struct listitem *svc, int type); +void dep_entry_add(struct dep **list, struct dep *new); +struct dep *dep_entry_del(struct dep *del); +int tree_exec(struct dep *start); +uint32_t svc_set_status(struct listitem *li, uint32_t status); +int svc_should_respawn(struct listitem *li); +int svc_needs_status(struct listitem *li); +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type); +struct dep *dep_create(struct listitem *svc); +void svc_success(struct listitem *li); +void svc_fail(struct listitem *li); +void svc_report_status(char *svc, char *msg, char *err); +void shutdown_services(struct listitem *start); + +void svc_start(struct listitem *, int); +void svc_stop(struct listitem *); +void svc_stop_deps(struct listitem *, int); +uint32_t svc_disable(struct listitem *); + + + +/*********************************************************************** + * to decide whether to operate on needs or wants + */ +enum dep_types { + DEP_WANTS, + DEP_NEEDS +}; + +#endif /* _CINIT_SVC_INTERN_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/include/svc-messages.h b/software/cinit/browse_source/cinit-0.3pre14/src/include/svc-messages.h new file mode 100644 index 00000000..14873228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/include/svc-messages.h @@ -0,0 +1,48 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Service status messages + */ + + +#ifndef __CINIT_SVC_MESSAGES_H +#define __CINIT_SVC_MESSAGES_H + +#include "svc.h" + +struct cinit_svc_msg { + int code; + char *msg; +}; + +struct cinit_svc_msg cinit_svc_msg_codes[] = { + { CINIT_ST_SH_ONCE, "Service should be started once" }, + { CINIT_ST_SH_RESPAWN, "Service should respawn" }, + { CINIT_ST_ONCE_OK, "Service successfully started once" }, + { CINIT_ST_ONCE_FAIL, "Service failed to start once" }, + { CINIT_ST_RESPAWNING, "Service is respawning" }, + { CINIT_ST_NEED_FAILD, "One ore more needs failed" }, + { CINIT_ST_IN_LIST, "Service is in starter list" }, + { CINIT_ST_BAD_ERR, "Some strange error happened" }, + { CINIT_ST_ONCE_RUN, "Service is currently running once" }, + { CINIT_ST_NOT_EXIST, "This service does not exist" } +}; + +#endif /* _CINIT_SVC_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/include/svc.h b/software/cinit/browse_source/cinit-0.3pre14/src/include/svc.h new file mode 100644 index 00000000..94c541cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/include/svc.h @@ -0,0 +1,65 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Service status (also exposed to the outside) + */ + + +#ifndef __CINIT_SVC_H +#define __CINIT_SVC_H + +/*********************************************************************** + * The real status types a service may have (ignore above) + * We have 32 Bits, we should use them ;-) + */ +enum cinit_svc_status { + /* first define basics */ + CINIT_ST_SH_ONCE = 0x1, /* service SHould be started once */ + CINIT_ST_SH_RESPAWN = 0x2, /* service SHould respawn */ + CINIT_ST_ONCE_OK = 0x4, /* service was successfully started once */ + CINIT_ST_ONCE_FAIL = 0x8, /* service failed to start */ + CINIT_ST_RESPAWNING = 0x10, /* service is respawning */ + CINIT_ST_NEED_FAILD = 0x20, /* this service is not started, need failed */ + CINIT_ST_IN_LIST = 0x40, /* this service is being started (= in list) */ + CINIT_ST_BAD_ERR = 0x80, /* some kind of error that SHOULD NOT happen */ + CINIT_ST_ONCE_RUN = 0x100, /* the once process is currently running */ + CINIT_ST_NOT_EXIST = 0x200, /* there's no such service in our database */ + CINIT_ST_STOPPING = 0x400, /* service was running, is being stopped */ + CINIT_ST_STOPPED = 0x800 /* service is stopped */ +}; + +/*********************************************************************** + * Possibilities the needs of a service may have + */ +enum cinit_svc_needs_status { + CINIT_SNS_NEEDS_STARTED = 1, /* all needs are started. We may start, too */ + CINIT_SNS_NEEDS_FAILED, /* one ore more needs failed */ + CINIT_SNS_NEEDS_UNFINISHED /* one ore more needs are not yet started */ +}; +/*********************************************************************** + * How to start/stop a service + */ +enum cinit_svc_start_stop_options { + CINIT_SSSO_COMPLETE = 0x0, /* with all dependencies */ + CINIT_SSSO_WO_NEEDS = 0x1, /* without needs */ + CINIT_SSSO_WO_WANTS = 0x2, /* without wants */ + CINIT_SSSO_WO_BOTH = 0x4 /* without both */ +}; +#endif /* _CINIT_SVC_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq-rt/README b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq-rt/README new file mode 100644 index 00000000..cc1a1b7e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq-rt/README @@ -0,0 +1,2 @@ +This implementation uses the new realtime inferface of +posix instead of the old one functions. diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq-rt/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq-rt/cinit_ipc_init.c new file mode 100644 index 00000000..ef22b6d1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq-rt/cinit_ipc_init.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include + +#include "cinit.h" +#include "config.h" +#include "msgq-rt.h" + +int cinit_ipc_init(void) +{ + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq-rt/mq_open.c b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq-rt/mq_open.c new file mode 100644 index 00000000..445e7dc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq-rt/mq_open.c @@ -0,0 +1,20 @@ +#include +#include + +int main() +{ + mqd_t readq = mq_open("/test",O_RDWR|O_CREAT|O_EXCL); + //mqd_t readq = mq_open("/bin/ls",O_RDWR|O_CREAT|O_EXCL); + + if(readq == -1) { + perror("oh nein"); + return 1; + } + mqd_t writeq = mq_open("/bin/cp",O_WRONLY|O_CREAT|O_EXCL); + if(readq == -1) { + perror("oh oh nein"); + return 1; + } +} + + diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq-rt/msgq-rt.h b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq-rt/msgq-rt.h new file mode 100644 index 00000000..d09a2808 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq-rt/msgq-rt.h @@ -0,0 +1,39 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +#define MSGQ_PATHNAME "/cinit" /* identifier */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + pid_t pid; + struct msg_client msg; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server_short { + long mtype; + struct asw_sstatus answer; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/README.text b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/README.text new file mode 100644 index 00000000..c9a1acf2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/README.text @@ -0,0 +1,20 @@ +cinit/src/ipc/msgq: About this msqg implementation +=================================================== +Nico Schottelius +0.1, Initial Version from 2006-08-04 +:Author Initials: NS + +Intro here + +Introduction +------------ + +cinit opens a + +Files +----- +- README.text: This file +- cinit_init_ipc.c: Init +msgq.h +objects + diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_cread.c b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_cread.c new file mode 100644 index 00000000..a3d443cd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_cread.c @@ -0,0 +1,28 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Client reads messages from cinit + * + */ + +#include /* msg* */ +#include /* memcpy() */ +#include /* getpid() */ +#include "intern.h" /* print_errno */ +#include "msgq.h" /* msq specific */ + +int cinit_ipc_cread(struct cinit_answer *buf) +{ + struct msgq_server asr; + + if(msgrcv(__cinit_mq_in, &asr, sizeof(asr.asr), getpid(), 0) == -1) { + print_errno(MSG_MSGQ_MSGRCV); + return 0; + } + memcpy(buf, &(asr.asr), sizeof(*buf)); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_csend.c b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_csend.c new file mode 100644 index 00000000..1b686a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_csend.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Client sends messages to cinit + * + */ + +#include /* msgget */ +#include /* memcpy() */ +#include "intern.h" /* print_errno */ +#include "msgq.h" /* structure */ + +int cinit_ipc_csend(struct cinit_question *qsn) +{ + struct msgq_client msg; + + msg.mtype = 1; /* cinit = 1 */ + + /* copy question structure into the msgq-structure */ + memcpy(&(msg.qsn), qsn, sizeof(msg.qsn)); + + if(msgsnd(__cinit_mq_out, &msg, sizeof(msg.qsn), 0) == -1) { + print_errno(MSG_MSGQ_MSGSEND); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_destroy.c b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_destroy.c new file mode 100644 index 00000000..8186cba9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_destroy.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Destory ipc mechanism, cinit is gonna die soon. + * + */ + +#include /* msgget */ +#include /* NULL */ +#include "msgq.h" /* mq_in, mq_out */ +#include "intern.h" /* print_errno */ + +void cinit_ipc_destroy(void) +{ + if(msgctl(__cinit_mq_in, IPC_RMID, NULL) == -1) { + print_errno(__CINIT_MSG_MSGQ_DESTROY); /* print warning, continue */ + } + if(msgctl(__cinit_mq_out, IPC_RMID, NULL) == -1) { + print_errno(__CINIT_MSG_MSGQ_DESTROY); /* print warning, continue */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_init.c new file mode 100644 index 00000000..d5102f13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_init.c @@ -0,0 +1,44 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include /* ftok */ +#include /* msgget */ +#include "intern.h" /* print_errno */ +#include "msgq.h" /* message queue */ + +int cinit_ipc_init(void) +{ + key_t k_tmp; + + /* to_server */ + k_tmp = ftok(__CINIT_MSGQ_PATHNAME, __CINIT_MSGQ_TO_SERVER); + if(k_tmp == -1) { + print_errno(__CINIT_MSG_MSGQ_FTOK); + return 0; + } + __cinit_mq_in = msgget(k_tmp, __CINIT_MSGQ_PERMS | IPC_CREAT); + if(__cinit_mq_in == -1) { + print_errno(__CINIT_MSG_MSGQ_MSGGET); + return 0; + } + + k_tmp = ftok(__CINIT_MSGQ_PATHNAME, __CINIT_MSGQ_TO_CLIENT); + if(k_tmp == -1) { + print_errno(__CINIT_MSG_MSGQ_FTOK); + return 0; + } + __cinit_mq_out = msgget(k_tmp, __CINIT_MSGQ_PERMS | IPC_CREAT); + if(__cinit_mq_out == -1) { + print_errno(__CINIT_MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_listen.c new file mode 100644 index 00000000..fb4aac52 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_listen.c @@ -0,0 +1,69 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * Listen to messages + * + */ + +#include /* printf() */ + +#include /* msg* */ +#include /* errno */ + +#include "intern.h" /* print_errno */ +#include "msgq.h" /* structs */ + +int cinit_ipc_listen(void) +{ + int tmp; + struct cinit_msgq_client qsn; + struct cinit_msgq_server asr; + struct msqid_ds msq; + + tmp = msgrcv(__cinit_mq_in, &qsn, sizeof (qsn.qsn), 0, 0); + + /* message system problem */ + if(tmp == -1) { + if(errno != EINTR) { + print_errno(__CINIT_MSG_MSGQ_MSGRCV); + } + return -1; + } + + /* retrieve pid */ + if(msgctl(__cinit_mq_in, IPC_STAT, &msq) == -1) { + print_errno(__CINIT_MSG_MSGQ_MSGCTL); + return -1; + } + + if(!read_command(qsn.qsn, &(asr.asr))) { + /* FIXME: mini_print */ + printf("read command failed\n"); + + asr.asr.ret = CINIT_ASW_ERR_INTERN; + } + + asr.mtype = msq.msg_lspid; + if(msgsnd(__cinit_mq_out, &asr, sizeof(asr.asr), 0) == -1) { + /* FIXME: do different things on differen errnos ... */ + print_errno("msgsend/answer"); + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_logoff.c b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_logoff.c new file mode 100644 index 00000000..ac8306d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_logoff.c @@ -0,0 +1,14 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Disconnect from cinit + * + */ + +int cinit_ipc_logoff(void) +{ + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_logon.c b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_logon.c new file mode 100644 index 00000000..e15b12f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/cinit_ipc_logon.c @@ -0,0 +1,44 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ +#include "intern.h" /* print_errno */ +#include "msgq.h" /* msgq constants */ + +int cinit_ipc_logon(void) +{ + key_t k_tmp; + + /* generiere nen schluessel: andersrum als im Server */ + k_tmp = ftok(__CINIT_MSGQ_PATHNAME, __CINIT_MSGQ_TO_CLIENT); + if(k_tmp == -1) { + print_errno(__CINIT_MSG_MSGQ_FTOK); + return 0; + } + __cinit_mq_in = msgget(k_tmp, 0); + if(__cinit_mq_in == -1) { + print_errno(__CINIT_MSG_MSGQ_MSGGET); + return 0; + } + + k_tmp = ftok(__CINIT_MSGQ_PATHNAME, __CINIT_MSGQ_TO_SERVER); + if(k_tmp == -1) { + print_errno(__CINIT_MSG_MSGQ_FTOK); + return 0; + } + __cinit_mq_out = msgget(k_tmp, 0); + if(__cinit_mq_out == -1) { + print_errno(__CINIT_MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/msgq.h b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/msgq.h new file mode 100644 index 00000000..68398764 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/msgq.h @@ -0,0 +1,58 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * header of message queuing interface + * + */ + +#ifndef __CINIT_IPC_HEADER +#define __CINIT_IPC_HEADER + +#include /* structures */ + +/*********************************************************************** + * configuration + */ + +#define __CINIT_MSGQ_PATHNAME "/bin/sh" /* should be on every *nix */ +#define __CINIT_MSGQ_TO_SERVER 'i' /* also for ftok */ +#define __CINIT_MSGQ_TO_CLIENT 'o' /* also for ftok */ +#define __CINIT_MSGQ_PERMS 0660 /* queue permissions */ + +/*********************************************************************** + * global variables: FIXME: rename, we're in client namespace! + */ +int __cinit_mq_in; /* input */ +int __cinit_mq_out; /* output */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct cinit_msgq_client { + long mtype; + struct cinit_question qsn; +}; + +/* messages _from_ the server _to_ the client */ +struct cinit_msgq_server { + long mtype; + struct cinit_answer asr; +}; + +/*********************************************************************** + * Messages + */ + +#define __CINIT_MSG_MSGQ_FTOK "ftok" +#define __CINIT_MSG_MSGQ_MSGGET "msgget" +#define __CINIT_MSG_MSGQ_MSGCTL "msgctl" +#define __CINIT_MSG_MSGQ_MSGSEND "msgsend" +#define __CINIT_MSG_MSGQ_MSGRCV "msgrcv" +#define __CINIT_MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/objects b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/objects new file mode 100644 index 00000000..7c99d09f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/msgq/objects @@ -0,0 +1,5 @@ +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/socket+linux-tmpfs/begin_msg.c b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/socket+linux-tmpfs/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/socket+linux-tmpfs/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c new file mode 100644 index 00000000..88c310f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c @@ -0,0 +1,125 @@ +/* + * (c) 2005, 2006 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * create a socket, when we recieved a signal + */ +int main(int argc, char **argv) +{ + struct sockaddr_un addr; + struct pollfd plist; + char *initdir; + + list = NULL; /* list of services is empty currently */ + initdir = CINIT_INIT; /* default init dir */ + + cpid = getpid(); + if(cpid != 1) { + usage(MSG_USAGE,MSG_NOT_ONE); + } + + set_signals(ACT_SERV); /* set signal handlers */ + + /* read args, profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* tell the world we are there FIXME: do we really need three calls? */ + mini_printf(MSG_CINIT,1); mini_printf(initdir,1); mini_printf("\n",1); + + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c new file mode 100644 index 00000000..a174d78d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c @@ -0,0 +1,141 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int socket) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + while ( (nsock = accept(socket,(struct sockaddr *) NULL, + (socklen_t *) NULL)) != -1) { + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = ST_FAIL; + } else { + status = RT_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP (RESPAWNING) *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; + list_tmp = list_search(buf); + + /* FIXME: + - handle off + - handle switching off once services + - perhaps remove old cinit code, which has respawing childs + */ + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + /* kill cinit watcher, which kills the real process */ + kill(list_tmp->pid,SIGTERM); + + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + } + + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + status = ST_FAIL; + } else { /* return status */ + status = list_tmp->status; + } + } else { /* no service there */ + status = RT_NOTEXIST; + } + do_result(nsock,&status); + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + SERVICE_LOG(buf,MSG_ERR_MODIFY); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + case CMD_UPDATE: + sig_reboot(SIGCONT); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } + + /* hier kommt man haeufiger herein, interrupted system call */ + if( errno != EAGAIN && errno != EINTR) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/ipc/socket+linux-tmpfs/connect_sock.c b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/socket+linux-tmpfs/connect_sock.c new file mode 100644 index 00000000..2c2d45de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/ipc/socket+linux-tmpfs/connect_sock.c @@ -0,0 +1,38 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include /* memset, strcpy */ + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/README b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/README new file mode 100644 index 00000000..096cc779 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/README @@ -0,0 +1,22 @@ +Build a small library that can be used by different applications, that provides: + + Constants / Macros: + for cinit_halt: + CINIT_HALT + CINIT_REBOOT + CINIT_POWEROFF + + for cinit_svc_start/stop: + CINIT_SVC_NORMAL + CINIT_SVC_NEEDS + CINIT_SVC_ONLY + CINIT_SVC_WANTS + + Functions: + void cinit_halt(int how); + int cinit_svc_start(char *svc, int how); + int cinit_svc_stop(char *svc, int how); + int cinit_svc_stop(char *svc, int how); + +This lib must then include: + - choosen ipc functions diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_flag_to_uint32_t.c b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_flag_to_uint32_t.c new file mode 100644 index 00000000..bfca5f71 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_flag_to_uint32_t.c @@ -0,0 +1,46 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Converts cher * to uint32_t for svc operations + * + */ + + +#include /* NULL */ +#include /* strchr */ +#include /* integers */ + +#include "cinit.h" /* constants */ + +uint32_t cinit_flag_to_uint32_t(char *flag) +{ + uint32_t ret = 0; /* no flags */ + + if(flag != NULL) { + if(strchr(flag, CINIT_CMD_SVC_NEEDS)) { + ret |= CINIT_QSN_SVC_NEEDS; + } + if(strchr(flag, CINIT_CMD_SVC_WANTS)) { + ret |= CINIT_QSN_SVC_WANTS; + } + } + + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_get_svc_status.c b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_get_svc_status.c new file mode 100644 index 00000000..7a6d9a1a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_get_svc_status.c @@ -0,0 +1,42 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Retrieves status of a service + * + */ + + +#include /* integers */ +#include "cinit.h" /* header for clients */ + +uint32_t cinit_get_svc_status(char *name, uint32_t *status) +{ + struct cinit_question qsn; + struct cinit_answer asr; + + cinit_prepare_comm(&qsn, &asr, CINIT_QSN_GET_STATUS); + cinit_cp_data((qsn.data), name); + + if(!cinit_send_to(&qsn, &asr)) return CINIT_ASW_IPC_ERROR; + + *status = asr.options; + + return asr.ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_get_version.c b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_get_version.c new file mode 100644 index 00000000..bf887f05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_get_version.c @@ -0,0 +1,36 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Retrieves version of cinit + */ + +#include "cinit.h" /* header for clients */ + +uint32_t cinit_get_version(char *buf) +{ + struct cinit_question qsn; + struct cinit_answer asr; + + cinit_prepare_comm(&qsn, &asr, CINIT_QSN_GET_VERSION); + if(!cinit_send_to(&qsn, &asr)) return CINIT_ASW_IPC_ERROR; + cinit_cp_data(buf, asr.data); + + return asr.ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_halt.c b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_halt.c new file mode 100644 index 00000000..c9b5838f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_halt.c @@ -0,0 +1,38 @@ +/******************************************************************************* + * + * 2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * purpose_of_this_file_is_also_there_behind_the_big_header + * + */ + +#include "" /* include global header */ +int cinit_halt(int how) +{ + switch(how) { + case 'p': /* power off */ + break; + + default: + break; + } + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_prepare_comm.c b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_prepare_comm.c new file mode 100644 index 00000000..9be95d24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_prepare_comm.c @@ -0,0 +1,35 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Prepares the communication + */ + +#include /* str*, memset */ +#include /* uint32_t */ + +#include "cinit.h" /* header for clients */ + +void cinit_prepare_comm(struct cinit_question *qsn, struct cinit_answer *asr, uint32_t cmd) +{ + memset(qsn, '\0', sizeof(struct cinit_question)); + memset(asr, '\0', sizeof(struct cinit_answer)); + + qsn->cmd = cmd; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_send_to.c b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_send_to.c new file mode 100644 index 00000000..86fddfaa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_send_to.c @@ -0,0 +1,35 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * sends data from the client to cinit + * + */ + +#include "ipc.h" /* IPC */ +#include "cinit.h" /* struct cinit_message */ + +int cinit_send_to(struct cinit_question *data, struct cinit_answer *res) +{ + if(!cinit_ipc_logon()) return 0; + if(!cinit_ipc_csend(data)) return 0; + if(!cinit_ipc_cread(res)) return 0; + if(!cinit_ipc_logoff()) return 0; + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_svc_disable.c b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_svc_disable.c new file mode 100644 index 00000000..d206666a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_svc_disable.c @@ -0,0 +1,65 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Disables a service + * + */ + + +#include /* integers */ + +#include "cinit.h" /* header for clients */ + +/* + * to cinit: + * disable + flags + * from cinit: + * status + * unknown service + * disabled the service + * + * disabled the service and needs + * disabled the service and wants + * disabled the service and needs and wants + * + * if it is one of the last three it follows + * uint32_t num: how many services stopped + * num times + * + * uint32_t len (excluding \0) + * char name[] + */ + +uint32_t cinit_svc_disable(char *svc, uint32_t flag) +{ + struct cinit_question qsn; + struct cinit_answer asr; + + cinit_prepare_comm(&qsn, &asr, CINIT_QSN_SVC_DISABLE); + cinit_cp_data((qsn.data), svc); + + qsn.opt = flag; + + if(!cinit_send_to(&qsn, &asr)) return CINIT_ASW_IPC_ERROR; + + /* FIXME: 0.3pre15: add retrieval of services */ + + return asr.ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_svc_enable.c b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_svc_enable.c new file mode 100644 index 00000000..207b69ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_svc_enable.c @@ -0,0 +1,47 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Retrieves pid of a service + * + */ + +#include /* integers */ +#include "cinit.h" /* header for clients */ + +uint32_t cinit_svc_enable(char *svc, uint32_t flag) +{ + struct cinit_question qsn; + struct cinit_answer asr; + + cinit_prepare_comm(&qsn, &asr, CINIT_QSN_SVC_START); + cinit_cp_data((qsn.data), svc); + + qsn.opt = flag; + + if(!cinit_send_to(&qsn, &asr)) return CINIT_ASW_IPC_ERROR; + + /* add logic to display started services here + * or: + * add logic to start dependend services in here: + * want to start a -> cinit returns needs b + */ + + return CINIT_ASW_IPC_ERROR; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_svc_get_pid.c b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_svc_get_pid.c new file mode 100644 index 00000000..3d24347a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/libcinit/cinit_svc_get_pid.c @@ -0,0 +1,42 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Retrieves pid of a service + * + */ + +#include /* pid_t */ +#include /* integers */ +#include "cinit.h" /* header for clients */ + +uint32_t cinit_svc_get_pid(char *name, pid_t *status) +{ + struct cinit_question qsn; + struct cinit_answer asr; + + cinit_prepare_comm(&qsn, &asr, CINIT_QSN_GET_PID); + cinit_cp_data((qsn.data), name); + + if(!cinit_send_to(&qsn, &asr)) return CINIT_ASW_IPC_ERROR; + + *status = asr.options; + + return asr.ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/object_lists/cinit b/software/cinit/browse_source/cinit-0.3pre14/src/object_lists/cinit new file mode 100644 index 00000000..be5da3d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/object_lists/cinit @@ -0,0 +1,59 @@ +core/build_argv.o +core/cinit.o +core/panic.o +core/set_signals.o +core/do_reboot.o +core/sig_child.o +generic/execute_sth.o +generic/file_exists.o +generic/mini_printf.o +generic/path_absolute.o +generic/path_append.o +generic/print_errno.o +generic/openreadclose.o +generic/strip_final_newline.o +generic/sleep_before_kill.o +generic/execute_and_wait.o +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +svc/gen_svc_tree.o +svc/gen_halt_tree.o +svc/list_delete.o +svc/list_insert.o +svc/list_search.o +svc/list_search_pid.o +svc/svc_create.o +svc/svc_disable.o +svc/check_add_deps.o +svc/dep_entry_add.o +svc/dep_entry_del.o +svc/shutdown_services.o +svc/tree_exec.o +svc/svc_set_status.o +svc/svc_should_respawn.o +svc/svc_needs_status.o +svc/dep_needs_wants_add.o +svc/dep_create.o +svc/svc_success.o +svc/svc_report_status.o +svc/svc_fail.o +svc/svc_start.o +svc/svc_stop.o +svc/svc_stop_deps.o +comm/read_command.o +comm/answer_svc_status.o +comm/answer_svc_pid.o +comm/answer_version.o +comm/cinit_cp_data.o +comm/answer_svc_disable.o diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/object_lists/cmd b/software/cinit/browse_source/cinit-0.3pre14/src/object_lists/cmd new file mode 100644 index 00000000..d7965ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/object_lists/cmd @@ -0,0 +1,17 @@ +client/cmd.o +comm/cinit_cp_data.o +generic/print_errno.o +generic/path_absolute.o +generic/mini_printf.o +libcinit/cinit_get_svc_status.o +libcinit/cinit_get_version.o +libcinit/cinit_send_to.o +ipc/current/cinit_ipc_logon.o +ipc/current/cinit_ipc_csend.o +ipc/current/cinit_ipc_cread.o +ipc/current/cinit_ipc_logoff.o +libcinit/cinit_svc_get_pid.o +libcinit/cinit_prepare_comm.o +libcinit/cinit_svc_enable.o +libcinit/cinit_svc_disable.o +libcinit/cinit_flag_to_uint32_t.o diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/object_lists/halt.kill b/software/cinit/browse_source/cinit-0.3pre14/src/object_lists/halt.kill new file mode 100644 index 00000000..e5b12a36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/object_lists/halt.kill @@ -0,0 +1,3 @@ +client/halt.kill.o +generic/print_errno.o +generic/mini_printf.o diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/object_lists/poweroff.kill b/software/cinit/browse_source/cinit-0.3pre14/src/object_lists/poweroff.kill new file mode 100644 index 00000000..306fc0bf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/object_lists/poweroff.kill @@ -0,0 +1,3 @@ +client/poweroff.kill.o +generic/print_errno.o +generic/mini_printf.o diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/object_lists/reboot.kill b/software/cinit/browse_source/cinit-0.3pre14/src/object_lists/reboot.kill new file mode 100644 index 00000000..f851badf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/object_lists/reboot.kill @@ -0,0 +1,3 @@ +client/reboot.kill.o +generic/print_errno.o +generic/mini_printf.o diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/os/freebsd/halt.c b/software/cinit/browse_source/cinit-0.3pre14/src/os/freebsd/halt.c new file mode 100644 index 00000000..37064cc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/os/freebsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/os/freebsd/objects b/software/cinit/browse_source/cinit-0.3pre14/src/os/freebsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/os/freebsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/os/freebsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre14/src/os/freebsd/poweroff.c new file mode 100644 index 00000000..c73dd079 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/os/freebsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWEROFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/os/freebsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre14/src/os/freebsd/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/os/freebsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/os/linux/halt.c b/software/cinit/browse_source/cinit-0.3pre14/src/os/linux/halt.c new file mode 100644 index 00000000..5ee3eb53 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/os/linux/halt.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * How to halt the system + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT_SYSTEM); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/os/linux/objects b/software/cinit/browse_source/cinit-0.3pre14/src/os/linux/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/os/linux/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/os/linux/poweroff.c b/software/cinit/browse_source/cinit-0.3pre14/src/os/linux/poweroff.c new file mode 100644 index 00000000..c7d2b1c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/os/linux/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff the system + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWER_OFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/os/linux/reboot.c b/software/cinit/browse_source/cinit-0.3pre14/src/os/linux/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/os/linux/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/os/netbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre14/src/os/netbsd/halt.c new file mode 100644 index 00000000..972aecf9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/os/netbsd/halt.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_halt(void) +{ + reboot(RB_HALT,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/os/netbsd/objects b/software/cinit/browse_source/cinit-0.3pre14/src/os/netbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/os/netbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/os/netbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre14/src/os/netbsd/poweroff.c new file mode 100644 index 00000000..17d7b259 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/os/netbsd/poweroff.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_poweroff(void) +{ + reboot(RB_HALT|RB_POWERDOWN,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/os/netbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre14/src/os/netbsd/reboot.c new file mode 100644 index 00000000..14313e17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/os/netbsd/reboot.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/os/openbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre14/src/os/openbsd/halt.c new file mode 100644 index 00000000..37064cc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/os/openbsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/os/openbsd/objects b/software/cinit/browse_source/cinit-0.3pre14/src/os/openbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/os/openbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/os/openbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre14/src/os/openbsd/poweroff.c new file mode 100644 index 00000000..bf4120e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/os/openbsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_HALT | RB_POWERDOWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/os/openbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre14/src/os/openbsd/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/os/openbsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/check_add_deps.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/check_add_deps.c new file mode 100644 index 00000000..db78f3f1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/check_add_deps.c @@ -0,0 +1,137 @@ +/******************************************************************************* + * + * 2005-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Pre calculate the service tree + */ + +/* FIXME: clean headers, check: + * getcwd */ +#include + +#include +#include +#include +#include +#include +#include +#include + + +#include /* PATH_MAX */ +#include /* malloc */ +#include /* strcpy */ + +#include "intern.h" /* mini_printf */ +#include "messages.h" +#include "svc-intern.h" + +int check_add_deps(struct listitem *svc, int type) +{ + char buf[PATH_MAX+1]; + char oldpath[PATH_MAX+1]; + struct dirent *tdirent; + struct dep *deps = NULL; + struct listitem *new_svc; + DIR *d_tmp; + + /* remember where we started */ + if(!getcwd(oldpath, PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + /* Create path */ + strcpy(buf,svc->abs_path); + if(type == DEP_NEEDS) { + if(!path_append(buf, C_NEEDS)) return 0; + } else { + if(!path_append(buf, C_WANTS)) return 0; + } + + d_tmp = opendir(buf); + if(d_tmp == NULL) { + if(errno != ENOENT) { + print_errno(buf); + return 0; + } + return 1; /* it's fine when there's no dependencies */ + } + + if(chdir(buf) == -1) { /* change to needs or wants */ + print_errno(buf); + return 0; + } + + while((tdirent = readdir(d_tmp)) != NULL) { + if(*(tdirent->d_name) == '.') continue; /* ignore .* */ + + /* skip non-working directories / broken links + * path_absolute reports errors on failure */ + if(!path_absolute(tdirent->d_name, buf, PATH_MAX+1)) continue; + + /* 1. create the service we depend on + * 2. initialize its dependencies + */ + if(!(new_svc = gen_svc_tree(buf))) return 0; + + /* We need ALL dependencies, as we are called only once + * per service; no need to test that first! + * + * And the other service CANNOT know anything about us yet, + * so we always add us to its list. + */ + + /* Dependencies: + * - a.needs b; add b to the list of dependencies. + * - a.needs b; add a to the list of needed by b. + * + * 1. check whether the dependency already exists + * 2. otherwise add it + * 3. do it once for needs, once for needed_by + */ + + /* create a dependency entry containing us */ + deps = dep_create(svc); + if(!deps) return 0; + + if(type == DEP_NEEDS) { + dep_entry_add(&(new_svc->needed_by), deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->needs), deps); + } else { + dep_entry_add(&(new_svc->wanted_by), deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->wants), deps); + } + } + if(chdir(oldpath) == -1) { + print_errno(buf); + return 0; + } + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/dep_create.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/dep_create.c new file mode 100644 index 00000000..6fa0474c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/dep_create.c @@ -0,0 +1,38 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Create dependency + */ + +#include /* NULL */ +#include /* malloc() */ +#include "svc-intern.h" /* structs */ + +/* search for an entry by path, reverse: from end to the beginning */ +struct dep *dep_create(struct listitem *svc) +{ + struct dep *entry; + + entry = malloc(sizeof(struct dep)); + if(!entry) return NULL; + entry->svc = svc; + + return entry; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/dep_entry_add.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/dep_entry_add.c new file mode 100644 index 00000000..32b75ff1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/dep_entry_add.c @@ -0,0 +1,45 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include "svc-intern.h" /* types */ + +/* + * list: pointer to the list + * new: pointer to data to insert (already filled up) + * + * We add the new element BEFORE the existing element! + */ +void dep_entry_add(struct dep **deplist, struct dep *new) +{ + if(*deplist == NULL) { /* new list */ + *deplist = new; + (*deplist)->prev = *deplist; + (*deplist)->next = *deplist; + } else { /* already existing */ + new->next = *deplist; /* new-> first */ + new->prev = (*deplist)->prev; /* last <- new */ + (*deplist)->prev->next = new; /* last -> new */ + (*deplist)->prev = new; /* new <- first */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/dep_entry_del.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/dep_entry_del.c new file mode 100644 index 00000000..4f94f896 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/dep_entry_del.c @@ -0,0 +1,50 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include /* free() */ +#include "svc-intern.h" /* struct *dep */ + +/* + * tmp: pointer to data to remove (must not be NULL) + * + * Returns either the next object or NULL if there's no next object + */ +struct dep *dep_entry_del(struct dep *del) +{ + struct dep *tmp; + + /* last service in the list */ + if(del->next == del && del->prev == del) { + tmp = NULL; + } else { + /* remove from list */ + del->prev->next = del->next; + del->next->prev = del->prev; + tmp = del->next; + } + + free(del); + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/dep_needs_wants_add.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/dep_needs_wants_add.c new file mode 100644 index 00000000..39e8ab8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/dep_needs_wants_add.c @@ -0,0 +1,79 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Add all wants or needs from a specific service to dep list + * -> this builds the needs and needed_by and + * -> or this builds the wants and wanted_by and + * + * This function is used to fillup the starting list with dependencies + * after a service has sucessfully been executed. + */ + +#include /* NULL */ +#include "svc-intern.h" /* struct *dep */ +#include "svc.h" /* struct *dep */ + +/* + * list: pointer to the list + * svc: pointer to data to the service + */ + +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type) +{ + struct dep *tmp, *new, *end; + + if(type == DEP_NEEDS) { + end = svc->needed_by; + } else { + end = svc->wanted_by; + } + + /* Place to the first dependency of this service */ + tmp = end; + if(tmp != NULL) { + do { + /* Add service to the starter list, which + * - should be started once + * - should be respawned (both VIRGIN services!) + * - and which are not already in the list! + */ + if(((tmp->svc->status & CINIT_ST_SH_ONCE) || + (tmp->svc->status & CINIT_ST_SH_RESPAWN)) && + !(tmp->svc->status & CINIT_ST_IN_LIST)) { + new = dep_create(tmp->svc); + if(!new) return 0; + tmp->svc->status |= CINIT_ST_IN_LIST; + dep_entry_add(list, new); + } + /* FIXME: Clearify if we should go forward or backwards? + * this decision will influence starting order + * and may thereby add a minimal mount of speed enhancement + * + * As far as I can see it is not predictable, which way is + * better, because it heavily depends on the other services. + * + * If you know better, provide me with a patch ;-) + */ + tmp = tmp->next; + } while(tmp != end); + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/gen_halt_tree.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/gen_halt_tree.c new file mode 100644 index 00000000..f3b66886 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/gen_halt_tree.c @@ -0,0 +1,58 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * This function reads the full service tree and generates + * a list of services to begin shutdown (those that are not + * wanted or needed by any other service). + */ + +#include /* NULL */ + +#include "svc-intern.h" /* structs */ +#include "intern.h" /* structs */ + +struct dep *gen_halt_list(struct listitem *svc_tree) +{ + struct dep *list = NULL, *new = NULL; + struct listitem *tmp; + + /* no tree? nothing to shutdown. */ + if(!svc_tree) { + return NULL; + } + + /* find all services that do not depend on other services: + * - empty wants? (currently ignore them) + * - empty needs! + */ + tmp = svc_tree; + do { + if(tmp->needs == NULL) { + /* create new dependency */ + new = dep_create(tmp); + if(!new) return NULL; + + dep_entry_add(&list,new); + } + tmp = tmp->next; + } while(tmp != svc_tree); + + return list; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/gen_svc_tree.c new file mode 100644 index 00000000..caa9a136 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/gen_svc_tree.c @@ -0,0 +1,56 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Pre calculate the service tree + */ + +#include + +#include "intern.h" /* functions */ +#include "svc.h" /* constants */ +#include "svc-intern.h" /* functions */ + +struct listitem *gen_svc_tree(char *svc) +{ + struct listitem *li; + struct dep *deps; + + /* only do something if the service is not already known */ + if((li=list_search(svc))) return li; + + /* create a template, so other instances won't try to recreate us */ + if(!(li=svc_create(svc))) return NULL; + + if(!check_add_deps(li, DEP_NEEDS)) return NULL; + if(!check_add_deps(li, DEP_WANTS)) return NULL; + + /* no dependencies? then you are a start service */ + if(!li->wants && !li->needs) { + deps = dep_create(li); + if(!deps) return NULL; + dep_entry_add(&svc_init,deps); + + /* Mark it as being in the startup list, so it does not + * get added again in a dep_needs_wants_add call */ + li->status |= CINIT_ST_IN_LIST; + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_delete.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_delete.c new file mode 100644 index 00000000..2f466bee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_delete.c @@ -0,0 +1,46 @@ +/******************************************************************************* + * + * 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * List handling + */ + +#include /* free */ +#include "intern.h" /* list_search */ +#include "svc-intern.h" /* listitem */ + +/* ... */ +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if(tmp == NULL) { + return 0; + } + + tmp->next->prev = tmp->prev; + tmp->prev->next = tmp->next; + + free(tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_display_all.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_display_all.c new file mode 100644 index 00000000..9d1cf018 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_display_all.c @@ -0,0 +1,48 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Show all list elements - mainly for debugging + */ + +#include /* NULL */ + +#include "messages.h" /* D_PRINTF */ +#include "svc.h" + +int list_display_all() +{ + struct listitem *tmp; + + if(svc_list == NULL) { + return 0; + } else { + tmp = svc_list; + } + + do { + D_PRINTF("Service: "); + D_PRINTF(tmp->abs_path); + D_PRINTF("\n"); + + tmp = tmp->prev; + } while(tmp != svc_list); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_insert.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_insert.c new file mode 100644 index 00000000..4d5b370a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_insert.c @@ -0,0 +1,55 @@ +/******************************************************************************* + * + * 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * List handling + */ + +#include /* uint32_t */ +#include /* malloc */ +#include /* bzero / memset */ +#include "svc-intern.h" /* the list pointer */ + +struct listitem *list_insert(char *path, uint32_t status) +{ + struct listitem *tmp; + + tmp = malloc(sizeof(struct listitem)); + if(tmp == NULL) return NULL; + memset(tmp, '\0', sizeof(struct listitem)); + + if(svc_list == NULL) { /* list is empty, we have to init it */ + svc_list = tmp; + svc_list->next = svc_list; + svc_list->prev = svc_list; + } else { /* list has members,add this one */ + tmp->next = svc_list; /* begin after the new element */ + tmp->prev = svc_list->prev; /* change to the ex-last */ + svc_list->prev->next = tmp; /* change last element */ + svc_list->prev = tmp; /* first refers to previous now */ + } + + cinit_cp_data(tmp->abs_path, path); + + tmp->status = status; + tmp->pid = 0; + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_modify.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_modify.c new file mode 100644 index 00000000..03ad7235 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_modify.c @@ -0,0 +1,54 @@ +/******************************************************************************* + * + * 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * OBSOLETED. Not in use anymore. + * + * List handling + */ + +#error "NOT IN USE" + +#include +#include +#include "cinit.h" +#include "comm.h" /* for ST_OFF */ +#include "svc.h" /* for ST_OFF */ + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + + tmp = list_search(path); + if(tmp == NULL) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_search.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_search.c new file mode 100644 index 00000000..d03fcd1f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_search.c @@ -0,0 +1,48 @@ +/******************************************************************************* + * + * 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * List handling + */ + +#include /* NULL */ +#include /* strcmp */ +#include "svc-intern.h" /* struct listitem */ + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if(svc_list == NULL) { /* think positive */ + return NULL; + } else { + tmp = svc_list; + } + + do { + if(!strcmp(path, tmp->abs_path)) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_search_pid.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_search_pid.c new file mode 100644 index 00000000..81b5d6b3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/list_search_pid.c @@ -0,0 +1,47 @@ +/******************************************************************************* + * + * 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * List handling: Search by pid + */ + +#include /* NULL */ +#include /* pid_t */ +#include "svc-intern.h" /* struct listitem */ + +struct listitem *list_search_pid(pid_t pid) +{ + struct listitem *tmp; + + if(svc_list == NULL) { + return NULL; + } else { + tmp = svc_list; + } + + do { + if(pid == tmp->pid) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/shutdown_services.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/shutdown_services.c new file mode 100644 index 00000000..79c190ab --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/shutdown_services.c @@ -0,0 +1,47 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Shutdown all services: This is more or less the negative + * version of 'tree_exec()' + */ + +#include "svc-intern.h" /* struct */ + +void shutdown_services(struct listitem *svc) +{ + while(0) { + svc++; + } + /* stop services in the correct order: + * - begin at a random process, and walk the tree up to the wanted_by and needed_by + * - switch to next service, as soon as this tree is finished + */ + +// while(we_are_wanted_or_needed) { +// shutdown_services(next_wants_or_needs_us); +// } + +// shutdown_services(svc) + + /* begin at svc, iterate until a service without dependencies is found, + * continue stopping through wanted-by / needed-by / wants / needs */ + + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_add_needs.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_add_needs.c new file mode 100644 index 00000000..da9ac7ce --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_add_needs.c @@ -0,0 +1,83 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * OBSOLETED! + * + * List handling + */ + +#error "NOT IN USE" + +#include "cinit.h" +#include "messages.h" + +int svc_add_needs(char *needs, char *is_needed) +{ + struct listitem *svc_needs, *svc_is_needed; + + + /* retrieve service entries in global service list */ + svc_needs = svc_is_needed = NULL; + svc_needs = list_search(needs); + svc_is_needed = list_search(is_needed); + + /* and exit if one is missing */ + if( !svc_needs || !svc_is_needed ) { + return 0; + } + + /* first add needs */ + + /* now add needed_by */ + + malloc... /* for adding */ + + if(svc->needs == NULL) { + svc->needs = neu; + } else { + svc->next = neu; + } + + /* write generic function for dependencies or even all lists */ + dep_entry_add(list_pointer,new_entry); + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members,add this one */ + tmp->after = list; /* begin after the new element */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_create.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_create.c new file mode 100644 index 00000000..66ae7735 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_create.c @@ -0,0 +1,57 @@ +/******************************************************************************* + * + * 2005-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* stat */ +#include /* errno */ + +#include "svc.h" /* constants */ +#include "svc-intern.h" /* listitem */ +#include "intern.h" /* path_append */ +#include "cinit.h" /* CINIT_DATA_LEN */ + +/* checking for existence is done before! */ +struct listitem *svc_create(char *svc) +{ + char buf[CINIT_DATA_LEN]; + struct stat statbuf; + struct listitem *li; + + li = list_insert(svc, -1); + if(!li) return NULL; + + cinit_cp_data(buf, svc); + if(!path_append(buf, C_RESPAWN)) return NULL; + + if(stat(buf, &statbuf) == -1) { + if(errno == ENOENT) { + svc_set_status(li, CINIT_ST_SH_ONCE); + } else { + return NULL; + } + } else { + svc_set_status(li, CINIT_ST_SH_RESPAWN); + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_disable.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_disable.c new file mode 100644 index 00000000..3afa7303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_disable.c @@ -0,0 +1,38 @@ +/******************************************************************************* + * + * 2005-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Disable a service without dependencies + */ + +#include + +#include "svc-intern.h" +#include "svc.h" +#include "cinit.h" + +/* checking for existence is done before! */ +uint32_t svc_disable(struct listitem *li) +{ + svc_set_status(li, CINIT_ST_STOPPING); + svc_stop(li); + svc_set_status(li, CINIT_ST_STOPPED); + + return CINIT_ASW_SVC_DISABLED; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_fail.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_fail.c new file mode 100644 index 00000000..e4bba714 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_fail.c @@ -0,0 +1,35 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Mark the service as being failed + */ + +#include "svc.h" +#include "svc-intern.h" + +void svc_fail(struct listitem *li) +{ + if(li->status & CINIT_ST_ONCE_RUN) + li->status = CINIT_ST_ONCE_FAIL; + else { + /* FIXME: do something senseful, record time of dead? */ + li->status = CINIT_ST_RESPAWNING; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_needs_status.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_needs_status.c new file mode 100644 index 00000000..90bde0b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_needs_status.c @@ -0,0 +1,54 @@ +/******************************************************************************* + * + * 2005-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Return status of the needs of this service + */ + +#include /* NULL */ +#include "svc.h" /* service information */ +#include "svc-intern.h" /* service information */ + +int svc_needs_status(struct listitem *svc) +{ + int retval = CINIT_SNS_NEEDS_STARTED; + struct dep *deps = svc->needs; + + if(deps == NULL) return CINIT_SNS_NEEDS_STARTED; /* no needs, everything fine */ + + do { + /* worst case: need failed */ + if((deps->svc->status & CINIT_ST_NEED_FAILD) || + (deps->svc->status & CINIT_ST_ONCE_FAIL) || + (deps->svc->status & CINIT_ST_BAD_ERR) ){ + retval = CINIT_SNS_NEEDS_FAILED; + break; + } + /* services are being started */ + if((deps->svc->status & CINIT_ST_SH_ONCE) || + (deps->svc->status & CINIT_ST_SH_RESPAWN) || + (deps->svc->status & CINIT_ST_ONCE_RUN) ){ + // printf("%s (%ld) waits for %s (%ld)\n",svc->abs_path, svc->status, deps->svc->abs_path, deps->svc->status); + retval = CINIT_SNS_NEEDS_UNFINISHED; + } + deps = deps->next; + } while(deps != svc->needs); + + return retval; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_report_status.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_report_status.c new file mode 100644 index 00000000..97cba239 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_report_status.c @@ -0,0 +1,39 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Tell the world what happened to the service + */ + +#include "intern.h" /* mini_printf */ +#include "messages.h" /* MSG_INTRO_SVC */ + +void svc_report_status(char *svc, char *msg, char *err) +{ + mini_printf(MSG_INTRO_SVC,1); + mini_printf(svc,1); + mini_printf(": ",1); + mini_printf(msg,1); + if(err) { + mini_printf(" (",1); + mini_printf(err,1); + mini_printf(")",1); + } + mini_printf("\n",1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_respawn_check.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_respawn_check.c new file mode 100644 index 00000000..ab60ce8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_respawn_check.c @@ -0,0 +1,39 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * OBSOLETED? not in use. + * + * Check whether service is existent + */ + +#error "NOT IN USE" + +#include /* NULL */ +#include /* PATH_MAX */ +#include "svc.h" + +/* checking for existence is done before! */ +int svc_respawn_check(struct listitem *svc) +{ + char buf[PATH_MAX+1]; + + strcpy(buf,svc->abs_path); + if(!path_append(buf,C_RESPAWN)) return 0 +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_set_status.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_set_status.c new file mode 100644 index 00000000..121162f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_set_status.c @@ -0,0 +1,34 @@ +/******************************************************************************* + * + * 2005-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Set the status of a service + */ + +#include + +#include "svc-intern.h" + +/* checking for existence is done before! */ +uint32_t svc_set_status(struct listitem *li, uint32_t status) +{ + /* FIXME: also set time? */ + + return (li->status = status); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_should_respawn.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_should_respawn.c new file mode 100644 index 00000000..0b72369d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_should_respawn.c @@ -0,0 +1,31 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Return whether should respawn or not + */ + +#include "svc-intern.h" +#include "svc.h" + +/* checking for existence is done before! */ +int svc_should_respawn(struct listitem *li) +{ + return (li->status & CINIT_ST_SH_RESPAWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_start.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_start.c new file mode 100644 index 00000000..b4a1d9c5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_start.c @@ -0,0 +1,120 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start a service + */ + +#include /* NULL */ +#include /* fork */ +#include /* strerror */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* nanosleep() */ +//#include /* gettimeofday() */ + +#include "svc.h" /* struct * */ +#include "svc-intern.h" /* struct * */ +#include "messages.h" /* MSG_* */ +#include "intern.h" /* execute_sth */ +#include "cinit.h" /* CINIT_DATA_LEN */ + +extern int svc_lock; + +//void svc_start(struct listitem *li, int strict) +void svc_start(struct listitem *li, int delay) +{ + char buf[CINIT_DATA_LEN]; + struct timespec ts; + + /* set global lock to avoid race condition */ + svc_lock = 1; + + /* first update status before forking ! */ + if(li->status & CINIT_ST_SH_ONCE) + li->status = CINIT_ST_ONCE_RUN; + else + li->status = CINIT_ST_RESPAWNING; + + /* set start time */ + li->start = time(NULL); + + /* FIXME: All cleanup must go here + * close(fds); + * reset signals + * reset env? + * + * FIXME: Add logging possibility to here + * open (0,1,2) to other processes, if specified */ + + /* BUG: + * the following child may return _before_ + * the fork returns in the parent. + * Thus this pid may not be registered. + * + * And that's the reason why we need the global svc_lock! + */ + li->pid = fork(); + + /********************** parent ************************/ + if(li->pid > 0) { + svc_lock = 0; + printf("%s is at %d\n", li->abs_path, li->pid); + return; + } + + /********************** Error ************************/ + if(li->pid < 0) { + svc_report_status(li->abs_path, MSG_SVC_FORK, strerror(errno)); + svc_set_status(li, CINIT_ST_BAD_ERR); + return; + } + + /********************** Client / fork() ************************/ + /* sleep, if necesseray */ + if(delay) { + ts.tv_sec = delay; + ts.tv_nsec = 0; + + /* FIXME: also report value; int2char */ + printf("Delay: %d\n", delay); + svc_report_status(li->abs_path, MSG_SVC_SLEEP, NULL); + + /* do not need to check for errors, because we can continue anyway */ + /* WRONG: FIXME: look whether to sleep again */ + nanosleep(&ts, NULL); + } + svc_report_status(li->abs_path, MSG_SVC_START, NULL); + + cinit_cp_data(buf, li->abs_path); + if(!path_append(buf, C_ON)) return; + + /* Check for existence */ + li->status = file_exists(buf); + + if(li->status == FE_NOT) { + /* FIXME: remove later */ + printf("********************\n"); + printf("WO/EXE: %s\n",li->abs_path); + printf("********************\n"); + /* probably a problem: we exit too fast, cinit does not + * yet have us in the process list. is that possible? + * => catch with sleep */ + //sleep(2); + _exit(0); /* nothing there? fine! */ + } + + if(li->status == FE_FILE) { + /* FIXME: reset signals: Is this necessary? Or does fork clean it anyway? */ + set_signals(ACT_CLIENT); + + /* and now, fire it up */ + execute_sth(buf); + } else { + /* FIXME: report? */ + /* either no file or an error */ + _exit(1); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_stop.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_stop.c new file mode 100644 index 00000000..0c77caf7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_stop.c @@ -0,0 +1,93 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Stop a service + * + * Status: Written, looks finished, but untested. + * + * respawn: + * - disable respawning: set status to ST_RESPAWN_STOP + * - send term signal? no => can be done in "off" + * => set environment CINIT_SVC_PID + * once and respawn: + * - look for 'off' binary, execute if present + * - mark service as off or delete it? + */ + + +#include /* NULL */ +#include /* fork */ +#include /* strerror */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* waitpid */ + +#include "svc.h" /* struct * */ +#include "svc-intern.h" /* struct * */ +#include "messages.h" /* MSG_* */ +#include "intern.h" /* execute_sth */ +#include "cinit.h" /* CINIT_DATA_LEN */ + + +void svc_stop(struct listitem *li) +{ + char buf[CINIT_DATA_LEN]; + int status; + + svc_set_status(li, CINIT_ST_STOPPING); + + li->pid = fork(); + + /********************** Error ************************/ + if(li->pid < 0) { + svc_report_status(li->abs_path, MSG_SVC_FORK, strerror(errno)); + svc_set_status(li, CINIT_ST_BAD_ERR); + return; + } + + /********************** Parent / fork() ************************/ + /* FIXME: 0.3pre15: look at the status / return value */ + waitpid(li->pid, &status, 0); + + /********************** Client / fork() ************************/ + svc_report_status(li->abs_path, MSG_SVC_STOP, NULL); + + cinit_cp_data(buf, li->abs_path); + if(!path_append(buf, C_OFF)) _exit(1); + + /* Check for existence */ + li->status = file_exists(buf); + + if(li->status == FE_NOT) { + _exit(0); + } + + if(li->status == FE_FILE) { + /* FIXME: reset signals: Is this necessary? Or does fork clean it anyway? */ + set_signals(ACT_CLIENT); + + /* and now, fire it up */ + execute_sth(buf); + } else { + /* FIXME: report? */ + /* either no file or an error */ + _exit(1); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_stop_deps.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_stop_deps.c new file mode 100644 index 00000000..12c64df2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_stop_deps.c @@ -0,0 +1,54 @@ +/******************************************************************************* + * + * 2007-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Stop a service, taking care about its dependencies + */ + +#include "svc.h" /* enums */ +#include "svc-intern.h" /* struct listitem */ + +/* + * how == CINIT_SSSO_COMPLETE => stop needs/wants before + * how & CINIT_SSSO_WO_NEEDS => omit needs + * how & CINIT_SSSO_WO_WANTS => omit wants + */ + +void svc_stop_deps(struct listitem *li, int how) +{ + struct dep *tmp; + + /* shutdown depending services first: needed_by */ + tmp = li->needed_by; + do { + if(how & CINIT_SSSO_WO_NEEDS) break; + svc_stop_deps(tmp->svc, how); + tmp = tmp->next; + } while(tmp != li->needed_by); + + /* shutdown depending services first: wanted_by */ + tmp = li->wanted_by; + do { + if(how & CINIT_SSSO_WO_WANTS) break; + svc_stop_deps(tmp->svc, how); + tmp = tmp->next; + } while(tmp != li->wanted_by); + + svc_stop(li); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_success.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_success.c new file mode 100644 index 00000000..fa740ce5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/svc_success.c @@ -0,0 +1,39 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Set the status of a service + */ + +#include /* NULL */ + +#include "svc.h" /* listitem, svc_report_status */ +#include "svc-intern.h" /* listitem, svc_report_status */ +#include "messages.h" /* messages */ + +void svc_success(struct listitem *li) +{ + if(li->status & CINIT_ST_ONCE_RUN) { + svc_report_status(li->abs_path,MSG_SVC_OK_ONCE,NULL); + li->status = CINIT_ST_ONCE_OK; + } else { + svc_report_status(li->abs_path,MSG_SVC_OK_RESPAWN,NULL); + li->status = CINIT_ST_RESPAWNING; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/svc/tree_exec.c b/software/cinit/browse_source/cinit-0.3pre14/src/svc/tree_exec.c new file mode 100644 index 00000000..ed913af4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/svc/tree_exec.c @@ -0,0 +1,106 @@ +/******************************************************************************* + * + * 2006-2008 Nico Schottelius (nico-cinit at schottelius.org) + * + * This file is part of cinit. + + * cinit 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. + * + * cinit 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 cinit. If not, see . + + * + * Start the service tree we created + */ + + +#include /* NULL */ + +#include /* NULL */ +#include "intern.h" /* mini_printf */ +#include "messages.h" /* messages */ +#include "svc.h" /* svc_init */ +#include "svc-intern.h" /* svc_init */ + +/* some thoughts... + * + * - we already generated the tree, now we need to start it from + * the endings + * + * - after starting the first service we have to care about SIG_CHILD + * to record changes + * + * - we execute all services in parallel without problems, because of + * SIG_CHILD notification + * + * - After successfully starting the service we start the services that + * need or want that service + */ +int tree_exec(struct dep *start) +{ + struct dep *tmp = start; + struct dep *hack; + struct timespec ts; + + mini_printf(MSG_TREE_EXEC, 1); + + /* the main starting loop: All services in this list should be + * started, but it is possible that dependent services are in the + * list. In this case simply skip the current service + */ + do { + switch(svc_needs_status(tmp->svc)) { + case CINIT_SNS_NEEDS_STARTED: + /* FIXME: MSG_* */ + svc_report_status(tmp->svc->abs_path,"Finished needs.", NULL); + /* execute service, add dependencies, remowe from list */ + svc_start(tmp->svc,0); + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_NEEDS)) return 0; + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_WANTS)) return 0; + tmp = dep_entry_del(tmp); + break; + + case CINIT_SNS_NEEDS_FAILED: + /* mark service as NEED_FAILD and delete from list */ + svc_report_status(tmp->svc->abs_path,MSG_SVC_NEED_FAIL,NULL); + svc_set_status(tmp->svc,CINIT_ST_NEED_FAILD); + tmp = dep_entry_del(tmp); + break; + + case CINIT_SNS_NEEDS_UNFINISHED: + /* FIXME: continue here! */ + + hack = tmp->svc->needs; + do { + // get needs +// printf("%s waits for %s",tmp->svc->abs_path,hack->svc->abs_path); + // display status of needs + // printf("%s: %ld\n",hack->svc->abs_path,hack->svc->status); + hack = hack->next; + } while(hack != tmp->svc->needs); + + tmp = tmp->next; /* continue with the next item */ + ts.tv_sec = 2; + ts.tv_nsec = 0; + nanosleep(&ts,NULL); + break; + } + /* This case happens, if it's the last service waiting for something */ + /* if(tmp == tmp->next) { + + nanosleep()? + printf("BUUUUUUUUUUUUUG, exit\n"); + break; + } */ + } while(tmp != NULL); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/test/data1.c b/software/cinit/browse_source/cinit-0.3pre14/src/test/data1.c new file mode 100644 index 00000000..341c6615 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/test/data1.c @@ -0,0 +1,47 @@ +#include +#include +#include + +int main() +{ + int a, b, e; + char *c = "/etc/cinit/svc/...", *data; + + int a2, b2; + char *c2; + + a2 = b2 = 0; + + a = 1001; + b = strlen(c); + c2 = malloc(b+1); + if(!c2) return 40; + + e = sizeof(a) + sizeof(b) + b; + + printf("e=%d (b=%d)\n",e,b); + + data = malloc(e); + if(!data) return 20; + + /* in */ + strcpy(data,(char *) &a); + e = sizeof(a); + strcpy(&data[e],(char *) &b); + e += sizeof(b); + strcpy(&data[e],c); + + /* out */ + strncpy((char *) &a2,data,sizeof(a2)); + printf("a2=%d\n",a2); + e = sizeof(a2); + + strncpy((char *) &b2,&data[e],sizeof(b2)); + printf("b2=%d\n",b2); + e += sizeof(b2); + + strncpy(c2,&data[e],b2); + printf("c2=%s\n",c2); + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/test/fork-latency.c b/software/cinit/browse_source/cinit-0.3pre14/src/test/fork-latency.c new file mode 100644 index 00000000..7d813479 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/test/fork-latency.c @@ -0,0 +1,104 @@ +/************* + * + * A very small program to show that the child() of a fork() + * proceess can exit before fork() returns in the parent + * + * Nico Schottelius, Copying: GPLv3, 20070925 + * + * I run it this way: ./fork-latency | grep "child exited" | sort | uniq | wc -l + * => Number of children that exited before we recorded them! + * + * Or: ./fork-latency | grep "found" | sort | uniq | wc -l + * => children, which exited after fork() returned. + * + * Some interesting facts: + * + * - Very often the children exit before fork() returns: + * + * [8:58] denkbrett:test% ./fork-latency | grep "found" | sort | uniq | wc -l + * 2 + * + * - It looks like waitpid() returns more than once the same pid (MAX=500): + * + * [9:01] denkbrett:test% ./fork-latency | grep "child exited before fork" | wc -l + * 8435 + * + * [9:02] denkbrett:test% ./fork-latency | grep "found" | wc -l + * 111 + * + * [9:02] denkbrett:test% ./fork-latency | grep "found" > TMP + * [9:03] denkbrett:test% head TMP + * (475) found + * (475) found + * (475) found + * (374) found + * (374) found + * (374) found + * (374) found + * (373) found + * (374) found + * (374) found + * + * + * Imho waitpid() should return 0, because we specified WNOHANG and + * SA_NOCLDSTOP, if no child changed status + */ + + +#include /* fork() */ +#include /* sigaction, sigemtpyset */ +#include /* waitpid */ +#include /* printf, NULL */ + +#define MAX 500 /* number of forks */ + +pid_t list[MAX]; +int i=MAX; + +void sig_child(int status) +{ + int o; + int found; + pid_t pid; + + while((pid = waitpid(-1, &status, WNOHANG)) > 0) { + if(pid == -1) return; /* ignore errors */ + + found = 0; + // no need to search the whole list, use o = i instead + //for(o = 0; o < MAX; o++) { + for(o = i; o < MAX; o++) { + if(list[o] == pid) { + found = 1; + break; + } + } + if(found) { + printf("(%d) found\n", i); + } else { + printf("(%d) child exited before fork() returned\n", i); + } + } +} + +int main() +{ + struct sigaction sa; + sigemptyset(&sa.sa_mask); + + sa.sa_flags = 0; + sa.sa_handler = sig_child; + sa.sa_flags = SA_NOCLDSTOP; + sigaction(SIGCHLD,&sa,NULL); + + for(i=MAX-1; i >= 0; i--) list[i] = 0; + + i=MAX; + + for(i = MAX-1;i >= 0; i--) { + list[i] = fork(); + + /* child exists immediately */ + if(list[i] == 0) return 0; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/test/memcpy.c b/software/cinit/browse_source/cinit-0.3pre14/src/test/memcpy.c new file mode 100644 index 00000000..b3abfcb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/test/memcpy.c @@ -0,0 +1,46 @@ +#include /* memcpy() */ +#include + +struct cinit_answer { + int options; + char data[2045]; +}; + +int f1(struct cinit_answer *buf); +int f2(struct cinit_answer *buf); + + +int f2(struct cinit_answer *buf) +{ + struct cinit_answer msg; + + printf("f2: %p\n",buf); + + msg.options = 12; + strcpy(msg.data,"stringit"); + + printf("addr= %p\n", memcpy(buf,&msg,sizeof(*buf))); + + printf("ok\n"); + + return 1; +} + +int f1(struct cinit_answer *buf) +{ + printf("f1: %p\n",buf); + printf("ret=%d\n",f2(buf)); + + return 1; +} + +int main() +{ + struct cinit_answer test; + + if(!f1(&test)) return 1; + + printf("s: %s d: %d\n",test.data, test.options); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/test/test-newline.c b/software/cinit/browse_source/cinit-0.3pre14/src/test/test-newline.c new file mode 100644 index 00000000..95e03a36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/test/test-newline.c @@ -0,0 +1,29 @@ +#include +#include +#include +#include + +char *strip_final_newline(char *test1); + +int main() +{ + //char *test1 = "zeile1\nzeile2\n"; + //char *test2 = "zeile1\nzeile2\nzeile3"; + char *test1; + char *test2; + + test1 = malloc(50); + test2 = malloc(50); + + strcpy(test1,"zeile1\nzeile2\n"); + strcpy(test2,"zeile1\nzeile2\nzeile3"); + + char *result; + result = strip_final_newline(test1); + printf("A%sA\n",result); + + result = strip_final_newline(test2); + printf("B%sB\n",result); + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/test/test_build_argv+link.c b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_build_argv+link.c new file mode 100644 index 00000000..f74b4f36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_build_argv+link.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec_link"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/test/test_build_argv.c b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_build_argv.c new file mode 100644 index 00000000..3938aa0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_build_argv.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec new file mode 100644 index 00000000..e5cf3f01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec @@ -0,0 +1,7 @@ +#!/bin/sh +# Nico Schottelius +# Test-skript for cinit + +echo '$0': "$0" +echo '$@': "$@" +echo 'cinit_is_great:' $cinit_is_great diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec.env b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec.env new file mode 100644 index 00000000..853e0663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec.env @@ -0,0 +1 @@ +cinit_is_great=yes diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec.params b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec.params new file mode 100644 index 00000000..afe0f2ef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec.params @@ -0,0 +1 @@ +Let's see if we read the arguments....YES! diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec_link b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec_link new file mode 120000 index 00000000..c2ec9306 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec_link @@ -0,0 +1 @@ +test_exec \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec_link.env b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec_link.env new file mode 120000 index 00000000..30ea4990 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec_link.env @@ -0,0 +1 @@ +test_exec.env \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec_link.params b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec_link.params new file mode 120000 index 00000000..0b77c256 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_exec_link.params @@ -0,0 +1 @@ +test_exec.params \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/test/test_gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_gen_svc_tree.c new file mode 100644 index 00000000..c13c46b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_gen_svc_tree.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test gen_svc_tree + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + gen_svc_tree("/etc/cinit/svc/init"); + list_display_all(); +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/test/test_openreadclose.c b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_openreadclose.c new file mode 100644 index 00000000..2f722da5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/test/test_openreadclose.c @@ -0,0 +1,16 @@ +#include + +int openreadclose(char *filename, char **where); + +int main() +{ + char *data; + char *file = "test_openreadclose.c"; + + openreadclose(file,&data); + + printf("%s\n",data); + + return 1; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/test/tired.c b/software/cinit/browse_source/cinit-0.3pre14/src/test/tired.c new file mode 100644 index 00000000..112424ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/test/tired.c @@ -0,0 +1,22 @@ +#include + +struct msgq_server_short { + long mtype; + int mu; +}; + +main() +{ + struct msgq_server_short t1, *t2; + + t2 = &t1; + + int a = sizeof(t1); + int b = sizeof(t2); + int c = sizeof(*t2); + + printf("a=%d,b=%d,c=%d\n",a,b,c); + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/src/test/transfer_structure.c b/software/cinit/browse_source/cinit-0.3pre14/src/test/transfer_structure.c new file mode 100644 index 00000000..5e95b997 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/src/test/transfer_structure.c @@ -0,0 +1,56 @@ +#include +#include +#include +#include + +struct test { + char buf[2048]; + int cmd; +}; + +struct badtest { + char *buf; + int cmd; +}; + +#define PATH "/etc/cinit/svc/local-tuning/udev" + +int main() +{ + struct test cmd; + struct badtest nocmd; + int pfd[2]; + int tmp; + + strcpy(cmd.buf,"/which/service/to/disable"); + cmd.cmd = 42; + + if(pipe(pfd) == -1) return 1; + nocmd.cmd = 42; + nocmd.buf = malloc(strlen(PATH)+1); + strcpy(nocmd.buf,PATH); + + + if(fork() > 1) { + tmp = write(pfd[1],&cmd,sizeof(cmd)); + printf("PA: tmp=%d\n",tmp); + + tmp = write(pfd[1],&nocmd,sizeof(nocmd)); + printf("PA: tmp2=%d\n",tmp); + } else { + strcpy(cmd.buf,""); + cmd.cmd = 0; + + tmp = read(pfd[0],&cmd,sizeof(cmd)); + printf("CH: tmp = %d, cmd = %d, buf = %s\n",tmp,cmd.cmd,cmd.buf); + + free(nocmd.buf); + nocmd.cmd = 0; + + tmp = read(pfd[0],&nocmd,sizeof(nocmd)); + printf("CH: tmp = %d, cmd = %d, buf = %s\n",tmp,nocmd.cmd,nocmd.buf); + } + + return 0; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre14/util/README b/software/cinit/browse_source/cinit-0.3pre14/util/README new file mode 100644 index 00000000..f66e0ddb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/util/README @@ -0,0 +1,4 @@ +-- OBSOLETED -- + -> This code is not in use in cinit-0.3 anymore! +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.3pre14/util/ccontrol.c b/software/cinit/browse_source/cinit-0.3pre14/util/ccontrol.c new file mode 100644 index 00000000..95bc5212 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/util/ccontrol.c @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * ccontrol: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define USAGE_TEXT "ccontrol - control cinit\n\n" \ + "Usage:\n\nccontrol -[phurs]\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-u\t- (update) Reboot (warm) and update cinit\n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n\n" \ + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * ccontrol: control cinit + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 2) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + + switch(argv[1][1]) { + case 'p': /* power off */ + LOG(MSG_POWER_OFF); + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + LOG(MSG_HALT); + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + LOG(MSG_REBOOT); + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + LOG(MSG_RESCUE); + msg_reboot(CMD_RESCUE); + break; + + case 'u': /* update */ + LOG(MSG_UPDATE); + msg_reboot(CMD_UPDATE); + break; + + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* cinit-0.2 return codes implemented - nothing changed*/ diff --git a/software/cinit/browse_source/cinit-0.3pre14/util/cservice.c b/software/cinit/browse_source/cinit-0.3pre14/util/cservice.c new file mode 100644 index 00000000..66be6563 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/util/cservice.c @@ -0,0 +1,164 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * cservice: control cinit services + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit services + */ + +#define USAGE_TEXT "cservice - start and stop cinit services\n\n" \ + "cservice -[ear] \n" \ + "\t-e\t- (ein,on ) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n" \ + "\t-r\t- (restart) stop and start a service\n" + +/*********************************************************************** + * fuzzy_path: allow other kinds of path specification .. + */ +char *fuzzy_path(char *rpath) +{ + char pathtmp[PATH_MAX]; + char *re = NULL; + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return NULL; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(rpath); + return NULL; + } + + re = malloc( strlen(pathtmp) + 1); + + if(re != NULL) { + strcpy(re,pathtmp); + } + + return re; +} + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + char *real_name = NULL; + + /* argv */ + if(argc != 3) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + if(strlen(argv[1]) != 2) C_USAGE(MSG_ERR_ARGS_LEN); + + real_name = fuzzy_path(argv[2]); + + /* fuzzy path failed, exit! */ + if(real_name == NULL) { + return 1; + } + switch(argv[1][1]) { + case 'a': /* aus */ + case 'r': /* restart */ + switch( msg_svc_on_off(real_name,CMD_STOP_SVC) ) { + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_OFF: + SERVICE_LOG(real_name,LOG_SVC_STOPED); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + /* FIX THIS AFTER cinit-0.2 */ + case RT_TMPNOW: + case RT_ERR: + case RT_SVC_FAILED: + case RT_UNSPEC: + case RT_SUCCESS: + case ST_NEED_FAIL: + case ST_TMP: + case ST_ONCE: + case RT_NOTEXIST: + case ST_RESPAWN: +// SERVICE_LOG(real_name,"Ein bekanntest ding"); + break; +/* default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; */ + } + if( argv[1][1] == 'a') break; /* only continue if restarting */ + + case 'e': /* ein */ + switch (run_svc(real_name)) { /* run_svc fuzzys itself */ + case RT_NOTEXIST: + SERVICE_LOG(real_name,LOG_SVC_NOTEXIST); + break; + case RT_SVC_FAILED: + SERVICE_LOG(real_name,LOG_SVC_FAILED); + break; + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_ONCE: + SERVICE_LOG(real_name,LOG_SVC_ONCE); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + case ST_RESPAWN: + SERVICE_LOG(real_name,LOG_SVC_RESPAWN); + break; + case ST_NEED_FAIL: + SERVICE_LOG(real_name,LOG_NEED_FAIL); + break; + default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; + } + break; + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* uses cinit-0.2 return code style */ diff --git a/software/cinit/browse_source/cinit-0.3pre14/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.3pre14/util/msg_reboot.c new file mode 100644 index 00000000..efe78ec6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre14/util/msg_reboot.c @@ -0,0 +1,21 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + if(!begin_msg(cmd)) return 0; + close(sock); + return 1; +} +/* clean for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre2/ b/software/cinit/browse_source/cinit-0.3pre2/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.3pre2/.exclude b/software/cinit/browse_source/cinit-0.3pre2/.exclude new file mode 100644 index 00000000..1a2d31e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/.exclude @@ -0,0 +1,2 @@ +tmp +.git diff --git a/software/cinit/browse_source/cinit-0.3pre2/.gitignore b/software/cinit/browse_source/cinit-0.3pre2/.gitignore new file mode 100644 index 00000000..0f53ad16 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/.gitignore @@ -0,0 +1,14 @@ +*.o +*.a +*0? +MT +ddoc +contrib+tools/cinit.graph.text +config.h +sbin +tmp +os/current +tmpbin +src/os/current +src/ipc/current +src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/CHANGES b/software/cinit/browse_source/cinit-0.3pre2/CHANGES new file mode 100644 index 00000000..080438e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/CHANGES @@ -0,0 +1,35 @@ +cinit-0.3pre2: + - Finished generation of the dependency tree. +cinit-0.3pre1: + - cinit should now compile on mostly all unices + - introduced much new code + - THIS IS A DEVELOPER RELEASE, NOT USABLE IN PRODUCTION ENVIRONMENTS. + +cinit-0.2.1: (Bugfix release) + - Fixed problem in contrib+tools/Makefile when installing + - added many new scripts to convert sys-v-init, which are still early beta + (see bin/cinit.merge.sysvinit-debian-sid) + +cinit-0.2: + - Much more verbose error reporting + - You can now also disable 'once ran' services, + - You can restart services with csevice -r + - Online speech in German is available + - C_DELAY support - variable delay for sending SIGKILL after SIGTERM + - First /etc/csys configuration example (wasserstoff) is available + - a Mailing list was created + - Added tools to analyze cinit configuration + (cinit-vis.pl, cinit.graph.text.c) + - Added tools to import and export configuration to XML + (make.cconfig.from.xml.rb,cconfig.graph.xml.rb) + - Removed unecessary signalling + - Added many helper scripts to install services (cinit.install.service*) + - Fixed many small bugs in old helper scripts (cinit.add.getty, cinit.get-conf, ...) + - Added ccontrol, which allows to control cinit + - Added update (-u) via ccontrol + - Stripped cservice, which now "only" controls services + - Removed swapoff from cinit code, should be handled by off + - Much better error and processing descriptions + - A bit more verbose reporting + - Restructured run_svc, now with better error detection + - Removed Kernel panic, when halting system diff --git a/software/cinit/browse_source/cinit-0.3pre2/COPYING b/software/cinit/browse_source/cinit-0.3pre2/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.3pre2/CREDITS b/software/cinit/browse_source/cinit-0.3pre2/CREDITS new file mode 100644 index 00000000..b009a48c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/CREDITS @@ -0,0 +1,23 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: 2005-09-25) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete + * providing cinit-vs.pl to visualize the cinit-tree +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) +Sandro Koechli + * testing, testing and testing cinit and cinit documentation +Marcus Wagner + * building and maintaining the Debian package +Peter Portmann + * testing cinit and documentation, writing cinit.graph.text in C, other coding diff --git a/software/cinit/browse_source/cinit-0.3pre2/Changelog b/software/cinit/browse_source/cinit-0.3pre2/Changelog new file mode 100644 index 00000000..0fbf76f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/Changelog @@ -0,0 +1,10 @@ +Mo Okt 3 00:19:40 CEST 2005 + *Changelog can now be found in git database (cg-log) +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.3pre2/Makefile b/software/cinit/browse_source/cinit-0.3pre2/Makefile new file mode 100644 index 00000000..9c174b63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/Makefile @@ -0,0 +1,85 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# directories and files +DDOC=ddoc +SDIRS=bin client conf comm doc generic serv util +CDIRS=contrib+tools + +# DO NOT CHANGE THIS. +SBIN=sbin +CINIT_BIN=$(SBIN)/cinit + +# targets +warn: + @cat doc/.buildwarn + +%.o: %.c + $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< + +all: sources + +sources: + $(MAKE) -C src all + +docs: $(DDOC) bin/cdoc-man.sh + ./bin/cdoc-man.sh doc/cinit-doc > $(DDOC)/cinit.8 + ./bin/cdoc-man.sh doc/cservice-doc > $(DDOC)/cservice.8 + +$(DDOC): + mkdir $(DDOC) + +$(CSVC_OBJ) $(OBJ): $(CONFIG_H) + +$(SBIN): + mkdir $(SBIN) + +sizecheck: cinit cservice + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l sbin/ > $$FILE; cat $$FILE + @echo -n "Source size (in KiB): " + @du -s $(SDIRS) | awk '{ sum+=$$1 } END { print sum }' +# @du -s bin client comm conf doc generic serv | awk '{ sum+=$1 } END { print sum }' + +clean: + $(MAKE) -C src clean + #rm -f *.o */*.o */*/*.o sbin/* $(CONFIG_H) ddoc/* + rm -f tmpbin/* + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +ccontrol: $(SBIN)/ccontrol + +$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) + $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ + $(STRIP) $@ + +install:: install-dir cinit cservice ccontrol + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + +#all install clean:: +# @for subdir in $(CDIRS); do \ +# echo "Making $@ in $$subdir"; \ +# (cd $$subdir && $(MAKE) $(MAKEFLAGS) $@) \ +# || exit 1;\ +# done; + +config: + @./bin/cinit.configure.os + @./bin/cinit.configure.tools + @./bin/cinit.configure.ipc + @touch src/.configured diff --git a/software/cinit/browse_source/cinit-0.3pre2/NEXTTODO b/software/cinit/browse_source/cinit-0.3pre2/NEXTTODO new file mode 100644 index 00000000..f8c45fe2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/NEXTTODO @@ -0,0 +1,22 @@ +- break in dep_entry_add, schauen ob die liste richtig generiert wird! + +- Check that the initial service list is generated correctly + * add (and use for that aim) tree_exec() +- Fix SIG_CHILD handler! + * Lookup other signalling things, too. +- add respawn when creating the service +- create + * svc_on() that tries to start a service + * svc_off() that tries to stop a service + +- define messages + a) human readable + b) binary data? + ? +- replace cinit_ipc_logon with cinit_ipc_init... +- cleanup run_svc +- implement do_reboot.c +- cleanup sig_child + +Finally: +- test and release cinit-0.3rc1 diff --git a/software/cinit/browse_source/cinit-0.3pre2/README b/software/cinit/browse_source/cinit-0.3pre2/README new file mode 100644 index 00000000..27f07c12 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/README @@ -0,0 +1,110 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre2/ROADMAP b/software/cinit/browse_source/cinit-0.3pre2/ROADMAP new file mode 100644 index 00000000..c1df7de8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/ROADMAP @@ -0,0 +1,116 @@ +-------------------------------------------------------------------------------- +THIS DOCUMENT SHOULD VANISH AS SOON AS EVERYTHING IS FINE +-------------------------------------------------------------------------------- + +Timeline +--------- + * ~ End of October 2006: Reunderstand the code, manifest changes + * ~ Mid of November 2006: Have a compile-able cinit + * ~ End of November 2006: Have a testsystem booting cinit + * ~ Mid of December 2006: Have production stable cinit + - Begin with migration scripts + - publish installable pre-releases + * ~ End of December 2006: Have some generic migration scripts + - Have (different) understanable documents + * ~ Mid of January 2007: Begin official release of cinit-0.3 + + + + +Versions +--------- + +0.3: +~~~ + code: Make cinit compile again :) + code: double check to remove Linux specific source from general tree + code: seperate ipc from the rest + code: fix / check signal handlers + code: cleanup makefile + code: add porting code: add support for any unix in general + code: stabilize code, remove experimenting parts + code: remove delay support, let off/off.params do that. + code: add special directory (/etc/cinit/special?) for os specific binaries + -> halt, poweroff, reboot (NOTHING MORE THEY CAN DO) + -> SHOULD NOT BE IN THE PATH + code: move production code to src/ + end user doc: add warning for special binaries and hint for r/o only + amiga alike systems + + doc: begin to merge old documents into new structure and move them + to the doc/ancient directory +0.3.1: + devel doc: how to write merging scripts + devel doc: merging framework: + - minimal (do not look at the current configuration, build minimal) + - use current system (slowly, may use old scripts) + - rebuilt current system (recommened) + + tools: general framework for merging + end user doc: merging old init to cinit + + code: add porting code: add support for freebsd + code: better readable output: + -> starting + [ started once ] + [ respawning ] + [ failed ] (+ REASON!) + [ needs failed ] (which ones) + + -> stopping + [ stopping ] (for dependencies) + [ stopped ] ? + [ not running ] ? + + code: export profile information (CINIT_PROFILE) + end user doc: using different profiles in user space + end user doc: write examples for profiles: + o switch ssh known_hosts based on profile + o different proxy settings in browsers + - environment + - mozilla settings + o start samba (for lan) + o start samba (for company lan) + o use nis and nfs (company profile) + + doc: continue to merge old documents into new structure and move them + to the doc/ancient directory +0.3.2: + end user doc: what to read to use cinit + end user doc: installing cinit + end user doc: configuring cinit + tools: writing cinit-config (graphical (dialog based?) configuration tool) + code: add porting code: add support for openbsd + + code: add reverse dependency chain (or earlier?) + code: better support for external tools + o neustarten + o mit herunterfahren + o mit herunterfahren und allen Diensten, die abhaengen + o ohne herunterfahren + o Statische Daten + o pid vom Daemon + o pid vom einmal ausgefuehrten Programm + + + doc: end to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.3: + devel doc: writing an init system + devel doc: the conf/-configuration system + + code: check conf/ and perhaps rewrite b0rken english sentences + + code / doc: add logging support for services -> use multilog? + code: add porting code: add support for netbsd + +0.4: + first stable, tested, well documented version. + + code: check for optimisation + + other: compare with other init systems + +0.4.x: + code: add porting code: add support for other unices diff --git a/software/cinit/browse_source/cinit-0.3pre2/TODO b/software/cinit/browse_source/cinit-0.3pre2/TODO new file mode 100644 index 00000000..f837f48a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/TODO @@ -0,0 +1,271 @@ +- define how it should work (doc/braindums/big-picture.text) +- define service status in one document, so repeatition stops! + + +-------------------------------------------------------------------------------- +- rename headers/ -> includes/ +- remove client/ from top level +-------------------------------------------------------------------------------- +- write about shell scripts in system startup +- write about general behaviour (covering the death) +-------------------------------------------------------------------------------- +Generate automatic asciidoc from conf/* +-------------------------------------------------------------------------------- +Add handler for ctrl+alt+delete + * document in paths +-------------------------------------------------------------------------------- +pre-compile config: conf/* + +-------------------------------------------------------------------------------- +panic: + read configuratio from defaults/panic* + -> write execute_something before! +-------------------------------------------------------------------------------- +comm: + tmpnow: search for pid in list, + save the pid in the list, so we know whether our executer died! +-------------------------------------------------------------------------------- +Logging / cinit: + fuer unsere eigenen ausgaben auch multilog? + + Logger: shared memory? +-------------------------------------------------------------------------------- +Implement full starting logic in server? +-------------------------------------------------------------------------------- +Build full dependency tree at start? And begin from the end? +-------------------------------------------------------------------------------- +comm/*: + int read + int write + --> fuer pipes + +run_init_svc + muss alle services wissen, die gestartet werden + + start_services_with_deps + gibt pointer auf struktur zurueck + -> Anzahl Services (array!) + -> Service: + Name (Pfad) + Ergebniss + -> beim fehler, die nachricht, strerror? + http://www.opengroup.org/onlinepubs/009695399/functions/strerror.html + + +Beim starten werden needs und wants als needs behandelt, weil +jeder starter _alle_ services zurueckgeben muss. + + Ein Prozess kann maximal 512 abhaengigkeiten haben. + -> open files + + +Neues cinit: + Wenn service fehlschlaegt, wird eine Struktur zurueckgegeben. + + Diese enhaelt: + + int success = + enum { SVC_SUCCESS, SVC_FAILED, SVC_NEED_FAILED, ... } + + char *reason; + + Ausgaben nach Beendigung vom Starten des Services. + + [ on ] %s + Ergebnis + [ off ] %s + + Rekursives herunter/rauffahren +-------------------------------------------------------------------------------- +- add error handling to cinit.install.binary +- remove sigio(), create new functions: + - one for cleaning up the socket + - one for doing the communication (specify two fd's) +- put some logic around exec_svc: + o put waiting code herein -> waiting code to structure! +- cleanup serv/sig_reboot.c:7: + o implement os-specific reboot function +-------------------------------------------------------------------------------- +1. Entfernung mount +2. kommunikation ueber + 1. einen fork pro service + fork(fork) +3. Socket wird erst nach einem Signal erstellt + -> Konfiguration sollte SIGWHATEVER senden +4. Vielleicht panicen, wenn init fehlschlaegt? +-------------------------------------------------------------------------------- +Als naechstes: + +- add code do implement stopping / restarting with dependency tree + o add used_by to the list of services + o used_by should be a simple (double?) linked list +-------------------------------------------------------------------------------- +Documentation: + - Installing cinit + o compiling cinit from source + o debian / gentoo + - Configuring +-------------------------------------------------------------------------------- +Add "used" by to each service, so we can track which services to shutdown. +-------------------------------------------------------------------------------- +- perhaps use dnotify? +- recheck warm reboot +- fix cservice +- print service name or cinit: before _everything_ WE print + +TESTING: + - does cinit eat zombies? + - is the reporting ok? + - does cservice and ccontrol what's expected? + +# cinit.create.empty.service: can only be started from the bin directory + +- compile cinit static and other tools dynamically per default + +- Fix Switching services off !! +- Remove RUN_RUN_SVCs, move code to run_svc so one can determine which + services failed? + --> sequentieller ablauf! + --> parallel ablauf, struct-array mit namen und ergebnis? + --> for dep in deps/*; do fork(run_svc() ); done + -----> while(any_is_running) { sleep } + -------> array durchsuchen, ergebnis nutzen. + - ueberpruefen von wo aus run_svc() aufgerufen wird + +- Fix SIGCHILD problem: + - exec_svc wants to waitpid() itself, so SIG_CHILD makes problems + - respawn_svc: does that need to act on SIGCHLD if the master process + is still running? + - kill respawn -> sigchild cleans up, we do not get waitpid perhaps? +- remove umount code? +- remove zombies, but keep away from SIGCHILD problems +- remove mount /etc/cinit/tmp code + -> how to replace? +- fix bug in Makefile: linking happens twice +- do not kill respawing service, if off exists +- ccontrol +- manpages +- Error codes when shutting down a service? +- Delay dokumentieren +- no_kill dokumentieren +- ddoc zuendefuehren + +- remove umount, swapoff? +--> to services? + +- on.out, on.err, on.in? + -> reading/writing from/to files + +--> Wenn kein ReSPAWN und der Prozess beendet sich nicht, + dann haengt init! +- implement "no_kill" until cinit-0.2 or 0.3? + +Doku!!! + +-------------------------------------------------------------------------------- +- Source Logic issues + - remove FIXME entries (and what should be fixed, too) + - memset for timespecs? + - move umount, swapoff and remount to off of init? + -> cleanup sig_reboot.c + - run_svc: + o we have many strcat()s, perhaps save length of pathbuf and strncat at + pathtmp[strlen(pathbuf)] ? + - do we really need swapoff? +-------------------------------------------------------------------------------- +- Documentation + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml +-------------------------------------------------------------------------------- +Things I did not do and I don't know whether we have to care about: + +- Porting + - add porting code to other unices? + - like openssh guys do? + +- close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? +- logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? +-------------------------------------------------------------------------------- +[OLD BUGS] +- remove cinit watcher? + -> sig_child -> cycle through list? +- DOKU: what happens when a service does not terminate.... + und er als once drin ist +- MANPAGE! +- execve() fails -> no sleep!! +- multiple zombies sometimes - problemservices + -> zombies of respawn watchers are not caught! + -> sig_chld also therein + -> problematic due to wait for child +-doubled cinit instance + - nur einmal +- free() everything before starting child +- cservice! + - prozess nur einmal -> WARTET! cinit auch! +doku: + cservice einmal starten -> wartet auf ende + cint ersetzt init bei gentoo + an error occuerd-> verbose + multuicall probleme -> busysbox --> GIBT ES NICHT!! + ---> DOKU DAZU! mit links, doppelt links, aus test + ---> erklaeren, dass es unproblematisch ist! + +11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet + werden konnte. +11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0 + zurueckgeworfen. +11:09 < folken23> telmich: oder service allready started. +-------------------------------------------------------------------------------- +possible BUGS: + +[14:44] freelsd:cinit-0.2.2% ./sbin/cservice -e ein + +ein: No such file or directory +Bad address +: Service does not exist + +cinit-0.2.2: +USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND +root 1 96.7 0.0 1580 336 ? R 18:59 5:49 /sbin/cinit +root 2 0.0 0.0 0 0 ? SN 18:59 0:00 [ksoftirqd/0] +root 3 0.0 0.0 0 0 ? S 18:59 0:00 [watchdog/0] +root 4 0.0 0.0 0 0 ? S< 18:59 0:00 [events/0] +root 5 0.0 0.0 0 0 ? S< 18:59 0:00 [khelper] +root 6 0.0 0.0 0 0 ? S< 18:59 0:00 [kthread] +root 10 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [khubd] +root 12 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [kblockd/0] +root 99 0.0 0.0 0 0 ? S 18:59 0:00 \_ [pdflush] +root 100 0.0 0.0 0 0 ? S 18:59 0:00 \_ [pdflush] +root 102 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [aio/0] +root 727 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [kseriod] +root 101 0.0 0.0 0 0 ? S 18:59 0:00 [kswapd0] +root 800 0.0 0.0 0 0 ? S 18:59 0:00 [khpsbpkt] +root 803 0.0 0.0 0 0 ? S 18:59 0:00 [pccardd] +root 838 0.0 0.0 0 0 ? S 18:59 0:00 [kjournald] +root 1923 0.0 0.0 1584 200 ? S 18:59 0:00 /sbin/cinit +root 1924 0.0 0.3 3624 1936 tty2 Rs 18:59 0:00 \_ -zsh +root 1969 0.0 0.0 1580 320 tty2 S 19:05 0:00 \_ cservice -e 3 +root 1972 0.0 0.1 2604 828 tty2 R+ 19:05 0:00 \_ ps axuwwf +root 1945 0.0 0.0 0 0 tty2 Z 19:01 0:00 [loadkeys] +cinit: [cprofile:profile] +cinit should not be started directly, but by your kernel. +umount raus +/etc/cinit/specials/... rein + +1. Doku auf asciidoc umstellen +2. den signalhandler code fixen +3. den tempmount entfernen + +--> cinit-0.3-rc1 +-------------------------------------------------------------------------------- +Check: use of perror, strerror+write? +-------------------------------------------------------------------------------- +Check: tuning of ipc-code? +local-services schlaegt fehl, ist aber nichts drin! diff --git a/software/cinit/browse_source/cinit-0.3pre2/TODO.doc b/software/cinit/browse_source/cinit-0.3pre2/TODO.doc new file mode 100644 index 00000000..71ed721d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/TODO.doc @@ -0,0 +1,12 @@ +- doc/user/paths.text + * finish + * add examples +- add cross-compilation howto +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cdoc-man.sh b/software/cinit/browse_source/cinit-0.3pre2/bin/cdoc-man.sh new file mode 100644 index 00000000..fc1adde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cdoc-man.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Nico Schottelius +# Date: 21-Aug-2005 +# Last Modified: - +# + +set -e + +[ $# -ne 1 ] && exit 23 + +SRC=$1 + +cd "$SRC" + +# +# Title heading +# +echo .TH $(cat "meta/name" "meta/man_section" "meta/date") + +# +# Name +# +echo .SH NAME +echo $(cat meta/name) - $(cat meta/short_description) + +# +# Synopsis +# +echo .SH SYNOPSIS +echo $(cat path) $(cat parameters) + +# +# description +# +echo .SH DESCRIPTION +echo $(cat long_description) + +# +# availability +# +for section in availability examples "see also" author; do + if [ -f "$section" ]; then + echo .SH $section | tr '[a-z]' '[A-Z]' + cat "$section" + fi +done + +# +# files +# +if [ -f files ]; then + echo .SH FILES + cat files | sed 's/\(.*\)/.IP "\1" /' +fi + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.add.dependency new file mode 100644 index 00000000..7bc9cc65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.add.dependency @@ -0,0 +1,51 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or wants Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +# adding 'wishes' for x-mas and requires for 'the mass' and 'tv' +case $DEP in + wishes|wants) DEP=$C_WANTS ;; + needs|requires) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could someone PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEP_DIR="${BASEDIR}/${SVC_A}/${DEP}" + +if [ ! -d "$DEP_DIR" ]; then + echo "$DEP_DIR does not exist, creating..." + mkdir "$DEP_DIR" + if [ $? -ne 0 ]; then + echo "Error occured due to creating directory. Exiting." + exit 1 + fi +fi + +DEST="${DEP_DIR}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.add.getty new file mode 100644 index 00000000..987a5bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.add.getty @@ -0,0 +1,75 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# Date: 2005-05-24 (Last changed: 2005-08-07) +# + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | sort -n | tail -n 1) + +[ ! "$LAST_NUMBER" ] && LAST_NUMBER=0 + +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +#echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + */mgetty) + mygetty=$getty + params="38400 tty${NUMBER}" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +# check input +if [ ! "$mygetty" ]; then + read -p "Getty to use [$mygetty]: " rgetty +fi +if [ ! "$params" ]; then + read -p "Parameters to pass [$params]: " rparams +fi +if [ ! "$params" -o ! "$mygetty" ]; then + echo "Sorry, either getty or parameters are not supplied." + exit 23 +fi + +echo -n "Creating $mygetty ($params) in $DDIR ... " +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DDIR" +ln -s "$mygetty" "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.configure.ipc b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.configure.ipc new file mode 100644 index 00000000..65190baa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.configure.ipc @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius, 2006-07-28 +# +# cinit: configure the ipc method to use +# + +HIER=$(dirname $0) +DDIR=$HIER/../src/ipc +DFILE=${DDIR}/current +IPC_METHOD=$(head -n 1 "$HIER/../conf/ipc_method") + +echo "Configure: IPC: Using \"$IPC_METHOD\" as IPC method" + +# always remove link before, as ln seems to be broken +# Doing ln -sf src/ipc/$method current twice, will create the file +# "current" _BELOW_ src/ipc/$method and not overwrite the link +# src/ipc/current + +rm -f "${DFILE}" +ln -sf "${IPC_METHOD}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.configure.mark b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.configure.mark new file mode 100644 index 00000000..aa648411 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.configure.mark @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: touch a file to mark everything configured +# 2006-08-27 +# + +echo "Configure: MK: Marking directory as configured" +touch .configured diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.configure.os b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.configure.os new file mode 100644 index 00000000..d5b8e6e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.configure.os @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups symlinks for the os +# + +DDIR=$(dirname $0)/../src/os +DFILE="$DDIR/current" +OSCONFIG=$(dirname $0)/../conf/os + +OS=$(head -n 1 "$OSCONFIG") + +echo "Configure: OS: Binaries are created for $OS ..." + +rm -f "${DFILE}" +ln -sf "${OS}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.configure.tools b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.configure.tools new file mode 100644 index 00000000..43242a01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.configure.tools @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups scripts for compiling and linking +# + +HIER=$(dirname $0) +DDIR=$HIER/../tmpbin/ +CC=$(head -n 1 "$HIER/../conf/cc") +CFLAGS=$(head -n 1 "$HIER/../conf/cflags") +LD=$(head -n 1 "$HIER/../conf/ld") +LDFLAGS=$(head -n 1 "$HIER/../conf/ldflags") +STRIP=$(head -n 1 "$HIER/../conf/strip") + +echo "Configure: CC: Creating cc, ld and strip ..." + +mkdir -p "$DDIR" +cd "$DDIR" + +echo "$CC $CFLAGS \"\$@\"" > cc +echo "$LD $LDFLAGS \"\$@\"" > ld +echo "$STRIP \"\$@\"" > strip + +# set correct permissions +chmod 0700 * diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.create.empty.service new file mode 100644 index 00000000..365c4bc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.create.empty.service @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.binary new file mode 100644 index 00000000..a368ac23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.binary @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: - +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice +"$INSTALL_PROG" sbin/ccontrol $DESTDIR/$PREFIX/sbin/ccontrol +"$INSTALL_PROG" bin/cinit.reboot $DESTDIR/$PREFIX/sbin/cinit.reboot +"$INSTALL_PROG" bin/cinit.shutdown $DESTDIR/$PREFIX/sbin/cinit.shutdown +"$INSTALL_PROG" bin/cinit.wait.for.daemon \ + $DESTDIR/$PREFIX/sbin/cinit.wait.for.daemon + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi + +# install as /sbin/shutdown, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/shutdown ]; then + ln -s $PREFIX/sbin/cinit.shutdown $DESTDIR/$PREFIX/sbin/shutdown +fi + +# install as /sbin/reboot, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/reboot ]; then + ln -s $PREFIX/sbin/cinit.reboot $DESTDIR/$PREFIX/sbin/reboot +fi diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.config-dir b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.config-dir new file mode 100644 index 00000000..c9adb70f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.config-dir @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.dir new file mode 100644 index 00000000..5e16f690 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.dir @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/sbin" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.fsck b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.fsck new file mode 100644 index 00000000..4508860a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.fsck @@ -0,0 +1,36 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 3 ]; then + echo "$(basename $0): name device filesystem-type" + exit 1 +fi + +NAME=$1 +DEVICE=$2 +FS_TYPE=$3 + +FSCK=/sbin/fsck.$FS_TYPE + +if [ ! -f "$FSCK" ]; then + echo "Missing $FSCK, abort." + exit 1 +fi + +if [ ! -e "$DEVICE" ]; then + echo "Missing $DEVICE abort." + exit 1 +fi + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME" +ln -sf "$FSCK" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON" +echo "$DEVICE" > "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.miniconf b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.miniconf new file mode 100644 index 00000000..45dcc632 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.miniconf @@ -0,0 +1,103 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: 2005-08-07 +# + + +. $(dirname $0)/cinit.read-conf + +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" +echo "" +echo "This will install a minimal cinit configuration." +echo "This configuration _SHOULD_ be able to run on _MOST_ systems." +echo "Still, it's highly EXPERIEMENTAL, use with CAUTION." +echo "" +echo "Please make sure, that" +echo " - you are using a journaling filesystem (fsck is not used)" +echo " - you have agetty, fgetty or mingetty installed" +echo " - you are runnig Linux 2.6 (sysfs is used)" +echo " - you have udev or static device nodes (you need /dev/tty*)" +echo " - getties will run on tty2-tty7, tty1 is used or logging" +echo "" +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" + +notosoftwarepatents="Please keep an eye on software patents, they are evil." +read -p "Do you really want to continue? [y/N] " notosoftwarepatents + +if [ "$notosoftwarepatents" = "y" -o "$notosoftwarepatents" = "Y" ]; then + echo "Let us try it ..." +else + echo 'Bye bye!' + exit 0 +fi + +set -e + +# Create basic layout +$(dirname $0)/cinit.install.standard-dirs + +# Install services: +# - mount root r/w +# - mount /proc +# - mount /sys +# - install getties on tty2-tty7 +# - add cleanup for /etc/mtab +# - add loopback device +# - init service + echo + +################################### mount ##################################### +# mount root read/write +$(dirname $0)/cinit.install.service.mount-root + +# - mount /proc +$(dirname $0)/cinit.install.service.mount-proc + +# - mount /sys +$(dirname $0)/cinit.install.service.mount-sys + +# mount needs everything below it +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/root" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/proc" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/sys" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" + +################################### getty ##################################### +# mount root read/write +# install getties +begin_getty=2 +end_getty=7 +i=$begin_getty + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" +while [ "$i" -le "$end_getty" ]; do + $(dirname $0)/cinit.add.getty + ln -sf "${DESTDIR}/${CINIT_DIR}/getty/$i" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" + i=$(($i+1)) +done + +################################### mtab ##################################### +# - add cleanup for /etc/mtab +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" +$(dirname $0)/cinit.install.service.cleanup-mtab +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" + +################################### lo ##################################### +# - add loopback device +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" +$(dirname $0)/cinit.install.service.network-lo +ln -sf "${DESTDIR}/${CINIT_DIR}/network/lo" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" + +# - init service + echo +# init depends on mount, getty -> everything from base-layout +$(dirname $0)/cinit.install.service.init +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" + +ln -sf "${DESTDIR}/${CINIT_DIR}/local-services/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/getty/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/network/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.cleanup-mtab b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.cleanup-mtab new file mode 100644 index 00000000..30a8dd48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.cleanup-mtab @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: cleanup mtab +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" +echo '#!/bin/sh' > "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'rm -f /etc/mtab' >>"${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'ln -s /proc/mounts /etc/mtab' \ + >> "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +chmod 0700 "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.hostname.generic b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.hostname.generic new file mode 100644 index 00000000..2d72f50e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.hostname.generic @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service, which sets the hostname +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): hostname" + exit 1 +fi + +HOSTNAME=$1 +HOSTNAME_BIN=${HOSTNAME_BIN:-/bin/hostname} + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/network/hostname" +ln -sf "$HOSTNAME_BIN" "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON" +echo "$HOSTNAME" > "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.init b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.init new file mode 100644 index 00000000..c3a10931 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.init @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +ln -sf /bin/echo "${DESTDIR}/${CINIT_DIR}/${C_INIT}/$C_ON" +echo '*** cinit initial service successfully started ***' \ + > "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.keymap.c_keymap b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.keymap.c_keymap new file mode 100644 index 00000000..235a329e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.keymap.c_keymap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install keymap from environment setting +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +if [ -z "$C_KEYMAP" ]; then + echo "Set C_KEPMAP to the wanted keymap." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" ]; then + echo "Service keymap already exists." + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find loadkeys) + +if [ $? -ne 0 ]; then + echo "Did not find binary loadkeys." + exit 1 +fi + +echo -n "Installing keymap to ${DESTDIR}/${CINIT_DIR}/local-tuning/keymap ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON" + +echo "$C_KEYMAP" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.mount-proc b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.mount-proc new file mode 100644 index 00000000..024847a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.mount-proc @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /proc +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/proc" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/proc/$C_ON" +echo proc > "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo /proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.mount-root b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.mount-root new file mode 100644 index 00000000..a1bd56ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.mount-root @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount root r/w +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# mount root read/write +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/root" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/root/$C_ON" +echo -n > "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo -o >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo remount,rw >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo / >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.mount-sys b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.mount-sys new file mode 100644 index 00000000..8c8191aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.mount-sys @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /sys +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /sys +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/sys" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/sys/$C_ON" +echo sys > "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo sysfs >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo /sys >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.network-lo b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.network-lo new file mode 100644 index 00000000..45bff6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.network-lo @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: loopback device +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/lo" +ln -sf /sbin/ifconfig "${DESTDIR}/${CINIT_DIR}/network/lo/$C_ON" +echo lo > "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo 127.0.0.1/8 >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo up >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.ntpdate.debian b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.ntpdate.debian new file mode 100644 index 00000000..2af2ee4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.ntpdate.debian @@ -0,0 +1,47 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install ntpdate +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +. /etc/default/ntpdate + +if [ -z "$NTPSERVERS" ]; then + echo "No ntp servers found, aborting" + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find ntpdate) + +if [ $? -ne 0 ]; then + echo "Did not find binary ntpdate." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" ]; then + echo "Service ntpdate already exists." + exit 1 +fi + +echo -n "Installing ntpdate to ${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON" + +for server in $NTPSERVERS; do + echo "$server" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON$C_PARAMS" +done + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.udev b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.udev new file mode 100644 index 00000000..d91f01cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.service.udev @@ -0,0 +1,64 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install udev +# Date: 2005-10-15 +# Comment: DO NOT RSYNC TO THE WRONG SIDE! +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BIN_UDEVSEND=$($(dirname $0)/cinit.path-find udevsend) +BIN_UDEVSTART=$($(dirname $0)/cinit.path-find udevstart) +BIN_SYSCTL=$($(dirname $0)/cinit.path-find sysctl) +BIN_MOUNT=$($(dirname $0)/cinit.path-find mount) +SERVICE="local-tuning/udev" + +if [ -z "$BIN_UDEVSEND" -o -z "$BIN_UDEVSTART" -o -z "$BIN_SYSCTL" -o -z "$BIN_MOUNT" ]; then + echo "Did not find a binary." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo "Installing ${SERVICE} to ${DESTDIR}/${CINIT_DIR}/ ..." + +# 0. general udev +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}" +# 1. udevmount +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/mount/udev" +ln -sf "$BIN_MOUNT" "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON" +echo "udev" > "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "-t" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "tmpfs" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "/dev" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" + +# 2. udevstart +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart" +ln -sf "$BIN_UDEVSTART" "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart/$C_ON" + +# dependencies +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/sys +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/udev + +# 3. udev to hotplug +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug" +ln -sf "$BIN_SYSCTL" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug/$C_ON" +echo "$BIN_UDEVSEND" > "${DESTDIR}${CINIT_DIR}/${SERVICE}/hotplug/$C_ON$C_PARAMS" + +$(dirname $0)/cinit.add.dependency ${SERVICE}/hotplug needs mount/proc + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.standard.init.deps b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.standard.init.deps new file mode 100644 index 00000000..dcc5cd07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.standard.init.deps @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add standard sub-configuration directories to init wants +# Date: 2005-10-11 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.standard.mounts b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.standard.mounts new file mode 100644 index 00000000..bb1fc0c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.standard.mounts @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create normal mounts +# Date: 2005-10-16 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.swap b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.swap new file mode 100644 index 00000000..84e6c928 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.swap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install swap +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +SERVICE=mount/swap + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BINARY=swapon +BINARY_PATH=$($(dirname $0)/cinit.path-find $BINARY) +if [ $? -ne 0 ]; then + echo "Did not find binary $BINARY." + exit 1 +fi + +HAS_SWAP=$(awk '$3 ~ /swap/ { print $3 }' /etc/fstab) +if [ -z "$HAS_SWAP" ]; then + echo "Seems you have no swap, service not installing" + exit 1 +fi +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo -n "Installing ${SERVICE} to ${DESTDIR}${CINIT_DIR}/${SERVICE} ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON" + +echo "-a" >> "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.merge.sysvinit-debian-sid b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.merge.sysvinit-debian-sid new file mode 100644 index 00000000..3ef0ce03 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.merge.sysvinit-debian-sid @@ -0,0 +1,137 @@ +#!/bin/sh +# Nico Schottelius +# Date: Sun Oct 16 16:57:03 CEST 2005 +# cLinux/cinit +# Automagically convert Debian-Sysv-Iinit +# THIS IS NOT CLEAN. +# THIS IS NOT EVEN INTENTED TO BE CLEAN. +# This is just a small hack, because my girlfriend wants her notebook back. + +echo "***> $(basename $0): converting Debian-Sys-V-Init" + +# read standard values, may be overwritten from outside +. $(dirname $0)/cinit.read-conf + +echo "***> Finding standard config ..." +# variables, which can be set from the outside +ROOT_DEV=${ROOT_DEV:-$(awk '$2 ~ /^\/$/ { print $1 }' /etc/fstab)} +ROOT_FSCK=${ROOT_FSCK:-$(awk '$2 ~ /^\/$/ { print $6 }' /etc/fstab)} +ROOT_FS=${ROOT_FS:-$(awk '$2 ~ /^\/$/ { print $3 }' /etc/fstab)} +RUNLEVEL=${RUNLEVEL:-$(runlevel | awk '{ print $2 }')} + +echo "***> Detecting keymap (this may take some time)" + +if [ -z "$C_KEYMAP" ]; then + echo "Please set the variable C_KEYMAP to your keymap." + echo "It is impossible to detect reliable your keymap in Debian." + exit 1 +fi + + +echo "***> Configuration" +echo "Hostname (\$HOSTNAME): $HOSTNAME" +echo "Keymap (\$C_KEYMAP): $C_KEYMAP" +echo "Root device (\$ROOT_DEV): $ROOT_DEV" +echo "Root fsck (\$ROOT_FSCK): $ROOT_FSCK" +echo "Root FS (\$ROOT_FS): $ROOT_FS" +echo "Runlevel (\$RUNLEVEL): $RUNLEVEL" +echo "Destdir: (\$DESTDIR): $DESTDIR" +echo "Config-Dir: (\$CINIT_DIR): $CINIT_DIR" +read -p "Is this correct (Y/n) " correct + +if [ "$correct" != "y" -a "$correct" != "Y" ]; then + echo "***> Abort." + exit 1 +fi + +if [ -d "${DESTDIR}${CINIT_DIR}" ]; then + echo "ERROR: Configuration already exists at ${DESTDIR}${CINIT_DIR}." + exit 1 +fi + +echo "***> Installing standard structure and dependencies" +set -e +$(dirname $0)/cinit.install.config-dir +$(dirname $0)/cinit.install.standard.dirs +$(dirname $0)/cinit.install.standard.init.deps + +echo "***> Adding mount / r/w" +$(dirname $0)/cinit.install.service.mount-root + +if [ "$ROOT_FSCK" = "1" ]; then + echo "***> Adding fsck for $ROOT_DEV ..." + $(dirname $0)/cinit.install.fsck root "$ROOT_DEV" "$ROOT_FS" + echo "***> Adding dependency" + $(dirname $0)/cinit.add.dependency mount/root needs fsck/root +else + echo "***> Skipping fsck for $ROOT_DEV ..." +fi + +echo "***> Setting up standard mounts ..." +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up hostname: $HOSTNAME" +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up keymap" +$(dirname $0)/cinit.install.service.keymap.c_keymap + +echo "***> Creating getties (tty1-8)" +for i in `seq 1 8`; do + $(dirname $0)/cinit.add.getty + + # each getty needs: + # - root r/w + $(dirname $0)/cinit.add.dependency getty/$i needs mount/root + # - hostname + $(dirname $0)/cinit.add.dependency getty/$i needs network/hostname +done + +echo "***> Enabling getties (tty2-8)" +for i in `seq 2 8`; do + # add getties to getty/ + $(dirname $0)/cinit.add.dependency getty wants getty/$i +done + +# +# Convert services: check /etc/rcS.d and /etc/rcX.d +# +echo "***> Converting services ..." +for script in $(cd /etc/rcS.d/; ls S*; cd /etc/rc${RUNLEVEL}.d/; ls S*); do + echo -n "$script: " + case $script in + # SCRIPTS READY + *ntpdate) + $(dirname $0)/cinit.install.service.ntpdate.debian + $(dirname $0)/cinit.add.dependency local-tuning/ntpdate needs network + ;; + *udev*) + $(dirname $0)/cinit.install.service.udev + + # SCRIPTS NEVER READY + *glibc.sh|*module-init-tools|*modutils|*procps.sh|*hotplug-net|*bootmisc.sh|*nviboot|*screen-cleanup|*x11-common|*sudo|*makedev|*rmnologin) + echo "Ignoring (useless)." + ;; + + # SCRIPTS NOT YET READY + *mountvirtfs|*checkroot.sh|*ifupdown-clean|*checkfs.sh|*mountall.sh|*ifupdown|*hostname*|*mountnfs.sh|*alsa|*rsync|*ssh|*fam|*cron|*gdm) + echo "converting planned later." + ;; + + # SCRIPTS LATER TO DO + *bootlogd|*keymap.sh|*hwclock*|*discover|*pppd-dns|*dns-clean|*networking|*portmap|*console-screen.sh|*urandom|*klogd|*apmd|*dbus-1|*exim4|*pcmcia|*nfs-common|*stop-bootlogd) + echo "unsupported currently (FIXME PLEASE)." + ;; + *sysklogd|*ppp|*inetd|*lpd|*aumix|*atd) + echo "unsupported (choose a better alternative)." + ;; + *initrd-tools.sh|*libdevmapper*|*hotplug) + echo "Ignoring (general or bloated script)." + ;; + *) + echo "Ignoring (unknown)" + ;; + esac +done + +echo "***> Finished." diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.path-find b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.path-find new file mode 100644 index 00000000..0d0f362b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.path-find @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: find binary in path +# Date: 2005-10-15 +# + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): searched binary" + exit 1 +fi + +binary=$1 + +# this is NOT really clean, paths can also contain spaces +for pfad in $(echo $PATH | sed 's/:/ /g'); do + fullname=$pfad/$binary + if [ -f "$fullname" ]; then + echo "$fullname" + exit 0 + fi +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.release b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.release new file mode 100644 index 00000000..c5e15859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.release @@ -0,0 +1,38 @@ +#!/bin/sh +# Nico Schottelius +# Build release tar +# Date: Sat Oct 15 21:38:29 CEST 2005 +# Last Changed: Fr Okt 28 01:24:58 CEST 2005 + + +if [ $# -ne 2 ]; then + echo $(basename $0): source-dir version + exit 1 +fi + +DIR=$1 +VERSION=$2 +OUT_NAME=cinit-${VERSION}.tar.bz2 +D_HOST=home.schottelius.org +D_BASE=www/org/schottelius/unix/www/cinit +D_DIR=${D_BASE}/archives/ +D_SOURCE=${D_BASE}/browse_source/ + +if [ ! -d "$DIR" ]; then + echo "$DIR is not a directory" + exit 1 +fi + +( cd "$DIR" && make clean ) || exit 1 + +echo "Creating bzip2 compressed tar" +tar cj -X $DIR/.exclude -f "$OUT_NAME" $DIR +chmod 0644 "$OUT_NAME" +echo "Transfering to $D_HOST" +scp "$OUT_NAME" "$D_HOST:$D_DIR" +echo "Extracting to $D_SOURCE" +ssh "$D_HOST" "tar xfj $D_DIR/$OUT_NAME -C $D_SOURCE" +echo "Correcting paranoid permissions" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type f -exec chmod 0644 {} \\;" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type d -exec chmod 0755 {} \\;" +echo "Please do not forget to update the website..." diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.remove.getty new file mode 100644 index 00000000..4950eeed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.remove.getty @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + +if [ ! "$NUMBER" ]; then + echo "There is no getty to remove." + exit 1 +fi + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r "$DDIR" +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.shutdown new file mode 100644 index 00000000..702c8a17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.shutdown @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# TODO: use ccontrol! +# 2005-05-24 (Last changed: 2005-06-18) + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -p|--power-off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " -s|--rescue: Rescue mode" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -p|--power-off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + -s|--rescue) kill -USR2 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.uml.test new file mode 100644 index 00000000..f6ea7fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.1 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG umid=cinit$$ init=/sbin/cinit" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..7f027455 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 (Last Changed: 2005-06-17) + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +PIDFILE=$1; shift +DAEMON=$1; shift + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.3pre2/client/README b/software/cinit/browse_source/cinit-0.3pre2/client/README new file mode 100644 index 00000000..0a5b8d0c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/client/README @@ -0,0 +1,2 @@ +client/ + These sources are used by the children which are spawned by cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre2/client/begin_msg.c b/software/cinit/browse_source/cinit-0.3pre2/client/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/client/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/client/connect_sock.c b/software/cinit/browse_source/cinit-0.3pre2/client/connect_sock.c new file mode 100644 index 00000000..2c2d45de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/client/connect_sock.c @@ -0,0 +1,38 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include /* memset, strcpy */ + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/client/exec_svc.c b/software/cinit/browse_source/cinit-0.3pre2/client/exec_svc.c new file mode 100644 index 00000000..f217f9e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/client/exec_svc.c @@ -0,0 +1,264 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +inline pid_t exec_svc(char *abspath, int action) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + SERVICE_LOG(abspath,LOG_SVC_FAIL); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + P_EXEC_FAILED(nargv[0]); + perror(MSG_ERR_EXECVE); + /* FIXME: remove debug, remove double printing without loosing info */ + sleep(3); /* debug */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/client/msg_change_status.c b/software/cinit/browse_source/cinit-0.3pre2/client/msg_change_status.c new file mode 100644 index 00000000..836a0fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/client/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* FIXME: change return code validation */ + +int msg_change_status(char *svc, char status, pid_t pid) +{ + if(!begin_msg(CMD_CHG_STATUS)) { + return RT_ERR_COMM; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/client/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.3pre2/client/msg_svc_on_off.c new file mode 100644 index 00000000..02948f2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/client/msg_svc_on_off.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, char action) +{ + if(!begin_msg(action)) return RT_ERR_COMM; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return RT_ERR_COMM; + return (int) do_result(sock,NULL); +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre2/client/respawn_svc.c b/software/cinit/browse_source/cinit-0.3pre2/client/respawn_svc.c new file mode 100644 index 00000000..5c350045 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/client/respawn_svc.c @@ -0,0 +1,99 @@ +/* + * (c) 2005,2006 Nico Schottelius (nico-linux at schottelius.org) + * respawn_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + D_PRINTF(abspath); + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, CMD_START_SVC) ) { + if(cpid != 0) { + D_PRINTF("sloefen"); + sleep(SLEEP_SVC); + D_PRINTF("Zuende geschlafen"); + } + } + } while(cpid); /* cpid is reset by sig_terminate() */ + + /* FIXME: put most code of sig_terminate here, look for no_kill */ + + /* start off task */ + exec_svc(abspath,CMD_STOP_SVC); + + D_PRINTF("jetzt weg"); + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/client/run_run_svcs.c b/software/cinit/browse_source/cinit-0.3pre2/client/run_run_svcs.c new file mode 100644 index 00000000..6486c76f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/client/run_run_svcs.c @@ -0,0 +1,86 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/client/run_svc.c b/software/cinit/browse_source/cinit-0.3pre2/client/run_svc.c new file mode 100644 index 00000000..7fea6a92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/client/run_svc.c @@ -0,0 +1,129 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre2/client/sig_terminate.c b/software/cinit/browse_source/cinit-0.3pre2/client/sig_terminate.c new file mode 100644 index 00000000..9b23e349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/client/sig_terminate.c @@ -0,0 +1,60 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + /* FIXME: only send SIGTERM, if not_kill does not exist */ + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + status = kill(cpid,SIGKILL); + if( status == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + D_PRINTF("muesste weg sein"); + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/comm/README b/software/cinit/browse_source/cinit-0.3pre2/comm/README new file mode 100644 index 00000000..840c9742 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/comm/README @@ -0,0 +1,3 @@ +comm/ + The communication part of cinit. + The functions are used in client and in server code. diff --git a/software/cinit/browse_source/cinit-0.3pre2/comm/do_change_status.c b/software/cinit/browse_source/cinit-0.3pre2/comm/do_change_status.c new file mode 100644 index 00000000..94b9be76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/comm/do_change_status.c @@ -0,0 +1,70 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/comm/do_result.c b/software/cinit/browse_source/cinit-0.3pre2/comm/do_result.c new file mode 100644 index 00000000..cb51161b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/comm/do_result.c @@ -0,0 +1,33 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return RT_ERR_COMM; + } + + return *value; +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre2/comm/do_svc_name.c b/software/cinit/browse_source/cinit-0.3pre2/comm/do_svc_name.c new file mode 100644 index 00000000..d427365f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/comm/do_svc_name.c @@ -0,0 +1,51 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/.README b/software/cinit/browse_source/cinit-0.3pre2/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_confdir b/software/cinit/browse_source/cinit-0.3pre2/conf/c_confdir new file mode 100644 index 00000000..091e6192 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_confdir @@ -0,0 +1,3 @@ +conf + +The directory below cinit_dir for cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_delay b/software/cinit/browse_source/cinit-0.3pre2/conf/c_delay new file mode 100644 index 00000000..dc30f147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGTERM for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_env b/software/cinit/browse_source/cinit-0.3pre2/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_halt b/software/cinit/browse_source/cinit-0.3pre2/conf/c_halt new file mode 100644 index 00000000..4eed340f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_halt @@ -0,0 +1,4 @@ +halt + +Name of the link belowe c_special, which links to the program +to be executed right before halting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_init b/software/cinit/browse_source/cinit-0.3pre2/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_needs b/software/cinit/browse_source/cinit-0.3pre2/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_off b/software/cinit/browse_source/cinit-0.3pre2/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_on b/software/cinit/browse_source/cinit-0.3pre2/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_panic b/software/cinit/browse_source/cinit-0.3pre2/conf/c_panic new file mode 100644 index 00000000..7fdb77b3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_panic @@ -0,0 +1,5 @@ +panic + +Name of the file below cinit_dir/c_confdir/ to execute on panic. +This name .params (normally panic.params) will be passed as parameters/ +argumunts to panic. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_params b/software/cinit/browse_source/cinit-0.3pre2/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_poweroff b/software/cinit/browse_source/cinit-0.3pre2/conf/c_poweroff new file mode 100644 index 00000000..5b5c9c9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_poweroff @@ -0,0 +1,4 @@ +poweroff + +Name of the link belowe c_special, which links to the program +to be executed right before powering off the system. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_reboot b/software/cinit/browse_source/cinit-0.3pre2/conf/c_reboot new file mode 100644 index 00000000..8702388f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_reboot @@ -0,0 +1,4 @@ +reboot + +Name of the link belowe c_special, which links to the program +to be executed right before rebooting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_respawn b/software/cinit/browse_source/cinit-0.3pre2/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_sock b/software/cinit/browse_source/cinit-0.3pre2/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_tmp b/software/cinit/browse_source/cinit-0.3pre2/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.3pre2/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.3pre2/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_umount b/software/cinit/browse_source/cinit-0.3pre2/conf/c_umount new file mode 100644 index 00000000..ab96b0a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_umount @@ -0,0 +1,6 @@ +umount + +Name of the file below cinit_dir/c_confdir/ to execute right before +reboot/halt/poweroff. + +It should normally be a shellscript with the OS-specific umount procedure. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/c_wants b/software/cinit/browse_source/cinit-0.3pre2/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/cc b/software/cinit/browse_source/cinit-0.3pre2/conf/cc new file mode 100644 index 00000000..b168ae6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/cc @@ -0,0 +1,3 @@ +gcc + +The c-compiler to use. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/cflags b/software/cinit/browse_source/cinit-0.3pre2/conf/cflags new file mode 100644 index 00000000..c0ef65ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/cflags @@ -0,0 +1,3 @@ +-pipe -W -Wall -Werror -Iheaders -g + +Standard flags to pass to (g)cc. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/cinit_dir b/software/cinit/browse_source/cinit-0.3pre2/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/confdir b/software/cinit/browse_source/cinit-0.3pre2/conf/confdir new file mode 100644 index 00000000..55fb65e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/confdir @@ -0,0 +1,3 @@ +conf + +The subdirectory below /etc/cinit to be used for general configurations. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/destdir b/software/cinit/browse_source/cinit-0.3pre2/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/getty_dir b/software/cinit/browse_source/cinit-0.3pre2/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/install_directory b/software/cinit/browse_source/cinit-0.3pre2/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/install_prog b/software/cinit/browse_source/cinit-0.3pre2/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/ipc_method b/software/cinit/browse_source/cinit-0.3pre2/conf/ipc_method new file mode 100644 index 00000000..fc75e273 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/ipc_method @@ -0,0 +1,5 @@ +msgq + +The type of IPC (inter process communication) to use. +Valid values can be optained by issuing `ls src/ipc/`. + diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/ld b/software/cinit/browse_source/cinit-0.3pre2/conf/ld new file mode 100644 index 00000000..b60e4836 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/ld @@ -0,0 +1,3 @@ +gcc + +Comment missing. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/ldflags b/software/cinit/browse_source/cinit-0.3pre2/conf/ldflags new file mode 100644 index 00000000..fc214daf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/ldflags @@ -0,0 +1,3 @@ + + +No flags specified normally. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/max_delay b/software/cinit/browse_source/cinit-0.3pre2/conf/max_delay new file mode 100644 index 00000000..149fa16c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/max_delay @@ -0,0 +1,7 @@ +4 + +Maximum number of digits which may be in the delay file. +If there are more, the string "12345678901" will be cut to the +right length "1234567890". I don't think you'll ever need +a timeout greater 4 digits (9999 seconds are 166,65~ minutes, are +2 hours, 46 minutes and 39 seconds). See doc/configuring.cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/max_deps b/software/cinit/browse_source/cinit-0.3pre2/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/msgq_pathname b/software/cinit/browse_source/cinit-0.3pre2/conf/msgq_pathname new file mode 100644 index 00000000..1bef0b6b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/msgq_pathname @@ -0,0 +1,4 @@ +/bin/sh + +Used to generate an unique identifier for the message queue. +See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/msgq_to_clients b/software/cinit/browse_source/cinit-0.3pre2/conf/msgq_to_clients new file mode 100644 index 00000000..dd15808a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/msgq_to_clients @@ -0,0 +1,4 @@ +o + +This is use in ftok to generate a key_t for the message queue use to write +to the clients. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/msgq_to_server b/software/cinit/browse_source/cinit-0.3pre2/conf/msgq_to_server new file mode 100644 index 00000000..f87ae3f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/msgq_to_server @@ -0,0 +1,4 @@ +i + +This is use in ftok to generate a key_t for the message queue use to write +to the server. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/os b/software/cinit/browse_source/cinit-0.3pre2/conf/os new file mode 100644 index 00000000..ddbf8f9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/os @@ -0,0 +1,14 @@ +linux + +Select the operating system compiling for. + +Current possibilities: + + - linux + + +Currently Planned possibilities: + + - freebsd + - openbsd + - netbsd diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/p_asciidoc b/software/cinit/browse_source/cinit-0.3pre2/conf/p_asciidoc new file mode 100644 index 00000000..52485c86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/p_asciidoc @@ -0,0 +1,6 @@ +asciidoc + +The binary on your system (with or without path) which does what I expect +asciidoc todo. + +Default: asciidoc diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/p_docbooktoman b/software/cinit/browse_source/cinit-0.3pre2/conf/p_docbooktoman new file mode 100644 index 00000000..d62c9015 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/p_docbooktoman @@ -0,0 +1,6 @@ +docbook2x-man + +The binary on your system (with or without path) which converts +docbook to manpages. + +Default: docbook2x-man diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/p_docbooktotexi b/software/cinit/browse_source/cinit-0.3pre2/conf/p_docbooktotexi new file mode 100644 index 00000000..278f6805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/p_docbooktotexi @@ -0,0 +1,6 @@ +docbook2x-texi + +The binary on your system (with or without path) which converts +docbook to texinfo. + +Default: docbook2x-texi diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/prefix b/software/cinit/browse_source/cinit-0.3pre2/conf/prefix new file mode 100644 index 00000000..6b90469f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/prefix @@ -0,0 +1,5 @@ + + +Where to install cinit. Normally this will be /, but you can put it anywhere. +The subdirectory 'sbin' under this prefix must be readable by the kernel. +This is normally either empty or "/". diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/profile b/software/cinit/browse_source/cinit-0.3pre2/conf/profile new file mode 100644 index 00000000..b9104bf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/profile @@ -0,0 +1,9 @@ +cprofile: + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile:" is the standard, as +the Linux kernel eats everything in the form 'var=parm'. +The old (pre cinit-0.1) option "cprofile=" should therefore +NOT be used. + +Under Linux you tell it the bootloader like grub or LILO. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/service_categories b/software/cinit/browse_source/cinit-0.3pre2/conf/service_categories new file mode 100644 index 00000000..d632b875 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/service_categories @@ -0,0 +1,4 @@ +getty local-tuning local-services mount network remote-services + +List of directories normally created below /etc/cinit/svc/ as +'pseudo-services'. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/sleep_kill b/software/cinit/browse_source/cinit-0.3pre2/conf/sleep_kill new file mode 100644 index 00000000..b419241a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/sleep_kill @@ -0,0 +1,8 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. + +Note: This does NOT affect terminating services, they are shutdown by +their own 'off' functions. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.3pre2/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.3pre2/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/sleep_svc b/software/cinit/browse_source/cinit-0.3pre2/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/sock_queue b/software/cinit/browse_source/cinit-0.3pre2/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/strip b/software/cinit/browse_source/cinit-0.3pre2/conf/strip new file mode 100644 index 00000000..08736418 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/strip @@ -0,0 +1,3 @@ +strip -R .comment -R .note + +Strip out unecessary parts of the binaries. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/sulogin b/software/cinit/browse_source/cinit-0.3pre2/conf/sulogin new file mode 100644 index 00000000..24859afc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/sulogin @@ -0,0 +1,6 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it, if the standard panic +action fails (as specified in cinit_dir/c_confdir/panic). + +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/svcdir b/software/cinit/browse_source/cinit-0.3pre2/conf/svcdir new file mode 100644 index 00000000..087a3848 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/svcdir @@ -0,0 +1,3 @@ +svc + +Directory below /etc/cinit that contains the services. diff --git a/software/cinit/browse_source/cinit-0.3pre2/conf/version b/software/cinit/browse_source/cinit-0.3pre2/conf/version new file mode 100644 index 00000000..33eede7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/conf/version @@ -0,0 +1,3 @@ +"0.3pre2" + +The version. diff --git a/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/Makefile b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/Makefile new file mode 100644 index 00000000..8441c90b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/Makefile @@ -0,0 +1,70 @@ +# +# (c) 2005 Peter Portmann (pp at bluewin.ch) +# cinit/contrib+tools +# +# This script is written for the clinux-System and published +# under the terms of GPL 2.0 +# +# Version: 0.2 +# clean with a single command instead of two commands. +# +# ChangeLog: +# 0.1 initial version +# +# Todo: +# +# Features: + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +DEBUG=-g -DDEBUG +#OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! +LDFLAGS= + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. -I../ +LD=gcc +STRIP=strip -R .comment -R .note + +INSTALL = install + +prefix = /usr +bindir = $(prefix)/bin + +# objects + +CLIENT=cinit.graph.text.o + +COMMUNICATION=error.o ../generic/usage.o ../generic/mini_printf.o + +OBJ=$(CLIENT) $(COMMUNICATION) + +# +PROGRAMS=cinit.graph.text +SCRIPTS=cconfig.graph.xml.rb \ + make.cconfig.from.xml.rb \ + cinit-vis.pl + +# targets +all: $(PROGRAMS) + +cinit.graph.text: $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +clean: + rm -f *.o $(PROGRAMS) + +install: all + @echo '*** Installing contrib+tools ***' + $(INSTALL) -d -m755 $(DESTDIR)$(bindir) + for bin in $(SCRIPTS) $(PROGRAMS); do \ + $(INSTALL) $$bin $(DESTDIR)/$(bindir); \ + done diff --git a/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/README b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/README new file mode 100644 index 00000000..85fa2f5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/README @@ -0,0 +1,11 @@ +contrib+tools/ + programs written by others and external tools not necessary + needed but (very) nice to have + + + cinit-vis.pl - draw an ascii graph of cinit configuration [perl] + cinit.graph.text - draw an ascii graph of cinit configuration [c] + + cconfig.graph.xml.rb - creates a xml file from a cconfig [ruby] + make.cconfig.from.xml.rb - creates a cconfig from a xml file [ruby] + diff --git a/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/README.ruby b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/README.ruby new file mode 100644 index 00000000..ed210cee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/README.ruby @@ -0,0 +1,7 @@ +The ruby tools for general cconfig [0] are written by René Nussbaumer [1]. +You can find the documentation for them at [2]. + + +[0]: http://nico.schotteli.us/papers/linux/cconfig/ +[1]: http://killerfox.forkbomb.ch/ +[2]: http://killerfox.forkbomb.ch/articles/cconfig/tools diff --git a/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/cconfig.graph.xml.rb b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/cconfig.graph.xml.rb new file mode 100644 index 00000000..d18ba422 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/cconfig.graph.xml.rb @@ -0,0 +1,117 @@ +#!/usr/bin/env ruby + +=begin + + Writes an XML-Tree for a cconfig directory + Idea by Nico Schottelius aka telmich + Implemented and (C) by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added support for binary files + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Changed checking order: symlink, directory, file. Because of + a logical bug -> directory follows symlink so, when a symlink + points to a directory no «link» element is created. + + Version 0.1 (René Nussbaumer): + * Holy hack for directory scanning (needs to be optimized) + * Hack for rexml to print out «lost» tags. This rexml sux. + + Todo: + * Optimize scanning. + * Use another xml library instead of rexml crap. + Problem: Produce dependencies -> no std-lib + + Features: + * Create a flat (no deepnes without directory) and 1:1 image + of an cconfig directory + +=end + +require 'rexml/document' +require 'base64' +require 'digest/sha1' + +require 'filemagic' + +@version = '0.3' + +def determineTarget(entry) + return 'external' if(!File.expand_path(entry).index(@initpath)) + return 'link' if(FileTest.symlink?(entry)) + return 'object' if(FileTest.directory?(entry)) + return 'attribute' if(FileTest.file?(entry)) + return 'unknown' # Should never be reached +end + +def createTree(dir, parent) + dir.each { |entry| + next if(entry =~ /^(\.|\.\.)$/) + + if(FileTest.symlink?(entry)) + e = parent.add_element('link') + + # Much fun with links + e.add_attributes( { 'name' => entry, 'target' => determineTarget(File.readlink(entry)) } ) + e.add_text(File.readlink(entry)) + elsif(FileTest.directory?(entry)) + e = parent.add_element('object') + e.add_attribute('name', entry) + + # Bad, that we need to change the directory every time. + oldPwd = Dir.pwd + Dir.chdir(entry) + createTree(Dir.new('.'), e) + Dir.chdir(oldPwd) + elsif(FileTest.file?(entry)) + e = parent.add_element('attribute') + e.add_attribute('name', entry) + if(File.stat(entry).size?) + # Yeah, we got one WITH content! W00h00, let's party. + + fm = FileMagic.new(FileMagic::MAGIC_MIME) + if(fm.file(entry) =~ /executable/) + e.add_attribute('type', 'binary') + text = File.new(entry).read + e.add_attribute('sha1', Digest::SHA1.hexdigest(text)) + e.add_text(Base64.encode64(text)) + else + e.add_text(File.new(entry).read) + end + fm.close() + end + end + } +end + + +if(!ARGV[0] || !FileTest.directory?(ARGV[0])) + puts 'You need to specify a directory' + Kernel.exit(-1) +end + +doc = REXML::Document.new + +e = doc.add_element('cconfig') +e.add_attribute('name', File.basename(ARGV[0])) +e.add_attribute('version', @version) + +@initpath = File.expand_path(ARGV[0]) +Dir.chdir(ARGV[0]) +createTree(Dir.new('.'), doc.root) + +out = '' +doc.write(out, 0, false, true) + +REXML::XMLDecl.new('1.0', 'utf-8').write($stdout) # This should automatically printed by rexml. Damn bugs. +puts '' +puts out # Workaround for a buggy rexml + diff --git a/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/cinit-vis.pl b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/cinit-vis.pl new file mode 100644 index 00000000..3956ff47 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/cinit-vis.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# (c) by Marcus Przyklink (downhill-clinux@burningchaos.org) +# written for cinit and published under GPL +# beautified a bit by Nico Schottelius +# optimized by René Nussbaumer +# Version: 0.1 + +use strict; +use warnings; + +# +# Variables for location and output +# +# cinit-directory +my $path = "/etc/cinit/"; +# started profile +my $starting_point = "init"; +# the spaces for each level (integer: amount of spaces) +my $space = 3; +# marker for need +my $need = "-->"; +# marker for want +my $want = "==>"; + +# +# main function, recursively list the components of the cinit system +# +if (@ARGV) { + if( $ARGV[0] =~ /-(h|-help)/ ) { + print "Usage: " . __FILE__ . " without parameters for standard-use (check variables in file)\n"; + print " Parameters:\n"; + print " -h for this help\n"; + print " profile-name for a profile\n"; + exit(0); + } + else { + $starting_point = $ARGV[0]; + } +} + +# +# start first instance +# +sub get_deeper { + my ($point, $tmp_counter, $need_want) = splice @_; + + print " " x ($space * $tmp_counter) . ($need_want ? $need : $want) . " " . $point . "\n"; + + opendir(DIR, "${path}${point}/needs") and + my @next_need = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + opendir(DIR, "${path}${point}/wants") and + my @next_want = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + + for(@next_need) { + get_deeper($_, $tmp_counter + 1, 1); + } + for(@next_want) { + get_deeper($_, $tmp_counter + 1, 0); + } +} + +# +# start first instance +# +get_deeper($starting_point, 0, 0); + +# +# work done, go home +# +exit(0); diff --git a/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/cinit.graph.text.c b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/cinit.graph.text.c new file mode 100644 index 00000000..bc6fb6ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/cinit.graph.text.c @@ -0,0 +1,200 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + cinit.graph.text.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.2 + + ChangeLog: + Version 0.2 (Peter Portmann): + * Not assigned link destinies are marked by (!). + * Not readable directories are marked by "directory not readable". + + Version 0.1 (Peter Portmann): + * Print of the directory structure of the contained files and links + without following the links. + + Todo: + + Features: +*/ + +//#include +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" +#include "error.h" + +#define FTW_F 1 /* file isn't a directory */ +#define FTW_D 2 /* file is a directory */ +#define FTW_DNR 3 /* not readable directory */ +#define FTW_NS 4 /* unsuccesfully stat on this file */ +#define MAX_CHAR 4096 + +/*********************************************************************** + * cinit.gaph.text - textual representation of the cinit directory + */ + +#define CSERVICE_BANNER "cinit.gaph.text - textual representatio of the cinitdirectory\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncinit.gaph.text \n" \ + "\tpath\t- cinit installationpath\n" + +typedef int EACH_ENTRY(const char *, const struct stat *, int); +typedef enum { FALSE=0, TRUE=1 } bool; + +static char dirpath[PATH_MAX]; +static int depth = 0; +static long int filecount = 0; + +static EACH_ENTRY each_entry; +static int pp_ftw(char *, EACH_ENTRY *); +static int each_getinfo(EACH_ENTRY *); + +/*********************************************************************** + * pp_ftw: file tree walk + */ +static int pp_ftw(char *filepath, EACH_ENTRY *function) +{ + int n; + + if(chdir(filepath) < 0) /* In angegebenen Pfad wechseln */ + err_msg(FATAL_SYS, "can't change to %s", filepath); + + if(getcwd(dirpath, PATH_MAX) == 0) /* Absoluten Pfadnamen ermitteln */ + err_msg(FATAL_SYS, "error using getcwd for %s", filepath); + + n = each_getinfo(function); + + return(n); +} + +/*********************************************************************** + * each_getinfo: get more info for each file. + */ +static int each_getinfo(EACH_ENTRY *function) +{ + struct stat statpuff; + struct dirent *direntz; + DIR *dirz; + int n; + char *zgr; + + if(lstat(dirpath, &statpuff) < 0) + return(function(dirpath, &statpuff, FTW_NS)); /* Error on stat */ + + if(S_ISDIR(statpuff.st_mode) == 0) + return(function(dirpath, &statpuff, FTW_F)); /* no directory */ + + /* It's a directory. + * Call function() for it. After that handel each file in the directory. */ + + if((dirz = opendir(dirpath)) == NULL) { /* Directory not readable */ + closedir(dirz); + return(function(dirpath, &statpuff, FTW_DNR)); + } + + if((n = function(dirpath, &statpuff, FTW_D)) != 0) /* return the directorydirpath */ + return(n); + + zgr = dirpath + strlen(dirpath); /* append slash to the dirpathname */ + *zgr++ = '/'; + *zgr = '\0'; + + while((direntz = readdir(dirz)) != NULL) { + /* ignor . and .. */ + if(strcmp(direntz->d_name, ".") && strcmp(direntz->d_name, "..")) { + strcpy(zgr, direntz->d_name); /* append filename after slash */ + depth++; + if(each_getinfo(function) != 0) { /* Recursion */ + depth--; + break; + } + depth--; + } + } + *(zgr-1) = '\0'; /* deleting evrything after the slash */ + + if(closedir(dirz) < 0) + err_msg(WARNING, "closedir for %s failed", dirpath); + + return(n); +} + +/*********************************************************************** + * each_entry: handling each file and build the graph step by step. + */ +static int each_entry(const char *filepath, const struct stat *statzgr, int filetype) +{ + struct stat statpuff; + static bool erstemal=TRUE; + int i; + + char link[MAX_CHAR]; + + filecount++; + if(!erstemal) { + for(i=1 ; i<=depth ; i++) + printf("%4c|", ' '); + printf("----%s", strrchr(filepath, '/')+1); + } else { + printf("%s", filepath); + erstemal = FALSE; + } + + switch(filetype) { + case FTW_F: + switch(statzgr->st_mode & S_IFMT) { + case S_IFREG: break; + case S_IFCHR: printf(" c"); break; + case S_IFBLK: printf(" b"); break; + case S_IFIFO: printf(" f"); break; + case S_IFLNK: + printf(" -> "); + if(( i=readlink(filepath, link, MAX_CHAR)) != -1) + printf("%.*s", i, link); + if(stat(filepath, &statpuff) < 0) + printf(" (!)"); + break; + case S_IFSOCK: printf(" s"); break; + default: printf(" ?"); break; + } + printf("\n"); + break; + + case FTW_D: + printf("/\n"); + break; + + case FTW_DNR: + printf("/ directory not readable\n"); + break; + + case FTW_NS: + err_msg(WARNING_SYS, "Error using 'stat' on file %s", filepath); + break; + + default: + err_msg(FATAL_SYS, "Unknown Filetype (%d) by file %s", filetype, filepath); + break; + } + + return(0); +} + +/*********************************************************************** + * main: + */ +int main(int argc, char *argv[]) +{ + if(argc != 2) + usage(CSERVICE_BANNER, USAGE_TEXT); + + exit(pp_ftw(argv[1], each_entry)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/error.c b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/error.c new file mode 100644 index 00000000..8174c702 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/error.c @@ -0,0 +1,124 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#include "error.h" +#include +#include +#include +#include +#include +#include + +#define MAX_CHAR 4096 + +int debug; /* Aufrufer von log_msg oder log_open muss debug setzen: + 0, wenn interaktiv; 1, wenn Daemon-Prozess */ + +/*---- Lokale Routinen zur Abarbeitung der Argumentliste --------------------*/ +static void msg_err(int sys_msg, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + return; +} + +static void msg_log(int sys_msg, int prio, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + if (debug) { + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + } else { + strcat(puffer, "\n"); + syslog(prio, puffer); + } + return; +} + +/*---- Global aufrufbare Fehlerroutinen -------------------------------------*/ +void err_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_err(0, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + case DUMP: + msg_err(1, fmt, az); + break; + default: + msg_err(1, "Falscher Aufruf von err_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + else if (kennung==DUMP) + abort(); /* core dump */ + exit(1); +} + +void log_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_log(0, LOG_ERR, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + msg_log(1, LOG_ERR, fmt, az); + break; + default: + msg_log(1, LOG_ERR, "Falscher Aufruf von log_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + exit(2); +} + +/*---- log_open --------------------------------------------------------------- + initialisiert syslog() bei einem Daemon-Prozess */ +void log_open(const char *kennung, int option, int facility) +{ + if (debug==0) + openlog(kennung, option, facility); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/error.h b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/error.h new file mode 100644 index 00000000..a55690fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/error.h @@ -0,0 +1,29 @@ +#ifndef ERROR_H +#define ERROR_H +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.h + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#define WARNING 0 +#define WARNING_SYS 1 +#define FATAL 2 +#define FATAL_SYS 3 +#define DUMP 4 + +void log_msg(int kennung, const char *fmt, ...); +void err_msg(int kennung, const char *fmt, ...); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/make.cconfig.from.xml.rb b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/make.cconfig.from.xml.rb new file mode 100644 index 00000000..05f35cc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/contrib+tools/make.cconfig.from.xml.rb @@ -0,0 +1,227 @@ +#!/usr/bin/env ruby + +=begin + + Create a cconfig directory based on a xml input. + (C) 2005 by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added binary file support + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Added some commandline options + * Added «level» so control the restrictivity of the program + * Added more «intelligence» to the program, to detect internal broken dependcies. + * Support «debug»-Levels. + * Print statistic at the end of the programs about warnings and errors. + + Version 0.1 (René Nussbaumer): + * Initial + + Todo: + * Use an rexml alternative + * Some cleanup + * Optimize + * Testing? + + Features: + * Create a cconfig directory based on a xml + +=end + +require 'rexml/document' +require 'getoptlong' +require 'base64' +require 'digest/sha1' + +@verbose = 0 +@level = 1 +@version = '0.3' + +@warnings = 0 +@errors = 0 +@checklist = Array.new + +def printMsg(prefix, msg) + puts '%-12s %s' % [prefix + ':', msg] +end + +def error(msg, fatal = 0) + @errors += 1 + fatal = 0 if(@level < 1) + fatal = 255 if(@level > 1 && !fatal) + printMsg(fatal != 0 ? 'PANIC' : 'ERROR', msg) + Kernel.exit(-fatal) if(fatal != 0) +end + +def warn(msg) + error(msg, 1) if(@level > 1) + @warnings += 1 + printMsg('WARNING', msg) +end + +def info(msg) + printMsg('INFO', msg) +end + +def debug(msg, verbosity = 1) + if(@verbose >= verbosity) + printMsg("DEBUG(#{verbosity})", msg) + end +end + +def createObject(name) + error("#{name} already exists.", 1) if(FileTest.exists?(name)) + begin + Dir.mkdir(name) + rescue + error("Could not create directory #{name}: #{$!}. Abort.", 7) + end + debug("Object #{File.expand_path(name)} has been created.", 4) +end + +def createAttribute(name, content = nil) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + begin + file = File.new(name, 'w') + file.print content if(content && !content.empty?) + file.close + debug("Attribute #{File.expand_path(name)} has been created", 4) + rescue + error("Could not create file #{name}: #{$!}. Skipped.") + end +end + +def createLink(name, target, type) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + error("Broken dependencies! Please take a look if #{target} exists on your system", 2) if(type == 'external' && !FileTest.exists?(target)) + if(!FileTest.exists?(target) && type != 'external') + #info("Possible break. But maybe the target #{target} does not yet exists. Checking later.") + exptarget = File.expand_path(target) + @checklist << exptarget + debug("Adding #{target} to the list of internal dependcies to check.", 2) + end + begin + error('You\'ve a system which does not support symbolic links. Abort.', 3) if(File.symlink(target, name) != 0) + rescue + error("Could not create symlink #{name} => #{target}: #{$!}.", 3) + end + debug("Link #{File.expand_path(name)} has been created", 4) +end + +def doWork(elm) + name = elm.name + attrname = elm.attributes['name'] + error("XML Tag with missing name attribute!", 5) if(!attrname) + if(name =~ /(object|cconfig)/) + if(name == 'cconfig') + if(elm.attributes['version']) + info("Found a version string: #{elm.attributes['version']}") + warn("This XML is maybe incompatible with this programm. I'm a version #{@version} script. The XML is generated with a version #{elm.attributes['version']} script. Please update.") if(elm.attributes['version'] > @version) + end + end + createObject(attrname) + if(elm.has_elements?) + pwd = Dir.pwd + Dir.chdir(attrname) + elm.each_element { |e| + doWork(e) + } + Dir.chdir(pwd) + end + elsif(name == 'attribute') + text = nil + e = nil + text = e.value if((e = elm.get_text)) + if(text && elm.attributes['type'] && elm.attributes['type'] == 'binary') + text = Base64.decode64(text) + if(Digest::SHA1.hexdigest(text) != elm.attributes['sha1']) + warn("SHA1 differs from file: #{Dir.pwd}#{attrname}") + end + end + createAttribute(attrname, text) + elsif(name == 'link') + error("link-Tag without content.", 6) if(!elm.has_text?) + error("link with missing target. Skipped.") if(!elm.attributes['target']) + createLink(attrname, elm.get_text.value, elm.attributes['target']) + end +end + +puts "This is #{File.basename(__FILE__)} v#{@version} by René Nussbaumer" +puts + +opts = GetoptLong.new( + ['--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT], + ['--level', '-l', GetoptLong::REQUIRED_ARGUMENT], + ['--version', '-V', GetoptLong::NO_ARGUMENT] +) + +opts.each { |arg,value| + case arg + when '--verbose' + @verbose += 1 + value.each_byte { |x| + if(x.chr == 'v') + @verbose += 1 + end + } + debug("Verbosity set to: #{@verbose}") + when '--level' + debug("Setting level to: #{value}", 3) + case value + when 'low' + @level = 0 + when 'normal' + @level = 1 + when 'paranoid' + @level = 2 + else + warn('Unknown level: ' + value) + end + when '--version' + Kernel.exit(0) + else + warn("Unknown option #{arg}#{value && !value.empty? ? ('with value ' + value) : ''}") + end +} + +if(!ARGV[0]) + puts 'Need at least one argument' + puts "Usage: #{__FILE__} " + Kernel.exit(1) +end + + +filedesc = $stdin + +if(ARGV[0] != '-') + filedesc = File.new(ARGV[0]) +end + +doc = REXML::Document.new filedesc + +doWork(doc.root) + +if(!@checklist.empty?) + info('Now checking all broken internal dependcies again') + broken = 0 + @checklist.each { |path| + debug("Checking #{path}.", 2) + if(!FileTest.exists?(path)) + broken += 1 + warn("Broken dependcies. #{path} does not exist. Please fix.") + end + } + info('Looks good.') if(broken == 0) + info('Bad, bad.') if(broken > 0) +end + +info("Successed. #{@warnings} warnings, #{@errors} errors") + diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/.buildwarn b/software/cinit/browse_source/cinit-0.3pre2/doc/.buildwarn new file mode 100644 index 00000000..72ebaf6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/.buildwarn @@ -0,0 +1,18 @@ +**************************************************************************** +First of all configure cinit through the configuration files found in conf/. + +The documentation can be found in doc/, read + + README and doc/configuring.cinit + +_before_ first use. + +After reading and configuring use: + + "make all" - to build cinit + "make install" - to install cinit + "make install-miniconf" - to install a minimal cinit-configuration + +After that you'll have to configure it. Some sample configurations can be +found on the cinit homepage at http://linux.schottelius.org/cinit/. +**************************************************************************** diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/Makefile b/software/cinit/browse_source/cinit-0.3pre2/doc/Makefile new file mode 100644 index 00000000..704903da --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/Makefile @@ -0,0 +1,59 @@ +# +# Makefile stolen from ccollect +# Nico Schottelius, Fri Jan 13 12:13:08 CET 2006 +# + +INSTALL=install +CCOLLECT=ccollect.sh +LN=ln -sf + +prefix=/usr/packages/ccollect-git +bindir=$(prefix)/bin +destination=$(bindir)/$(CCOLLECT) + +path_dir=/usr/local/bin +path_destination=$(path_dir)/$(CCOLLECT) + +# where to publish +host=creme.schottelius.org +dir=www/org/schottelius/linux/ccollect +docdir=$(dir)/doc + +# +# End user targets +# +all: + @echo "Creating asciidoc based documentation" + @asciidoc -n -o ccollect.html doc/ccollect.text + +%.html: %.text + echo asciidoc $< -n $> -o $^.html $^.text $@ + + +install: install-script install-link + +install-link: install-script + $(LN) $(destination) $(path_destination) + +install-script: + $(INSTALL) -D -m 0755 -s $(CCOLLECT) $(destination) + +documentation: + @echo "Generating HTML-documentation (en de) ..." + @asciidoc -n -o doc/ccollect.html doc/ccollect.text + @asciidoc -n -o doc/ccollect-DE.html doc/ccollect-DE.text + +# +# Developer targets +# +update: + @cg-update creme + +push-work: + @cg-push creme + @cg-push sygroup + +publish-doc: documentation + @echo "Transferring files to $(host)" + @chmod a+r doc/*.html doc/*.text + @scp doc/*.text doc/*.html $(host):$(docdir) diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/README b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/README new file mode 100644 index 00000000..45e193f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/README @@ -0,0 +1,16 @@ +Ancient +======= +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 + + +These files may be incorrect, outdated, totally wrong or even trying +to take over world dominance. + + +Why are they still there? +------------------------- + +Just because to document the early days of cinit. If you are +a software archaeologist in the year 2423, you'll be happy that +I saved those files. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/author b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/availability b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/availability new file mode 100644 index 00000000..cfb3f8a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/availability @@ -0,0 +1 @@ +cinit is currently Linux-specific. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/examples b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/examples new file mode 100644 index 00000000..1a7d2dcb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/examples @@ -0,0 +1 @@ +See http://linux.schottelius.org/cinit/#config diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/files b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/files new file mode 100644 index 00000000..4d6c0921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/files @@ -0,0 +1,5 @@ +/sbin/cinit - the init system +/sbin/cservice - control cinit +/sbin/cinit.reboot (/sbin/reboot if non-existent before) +/sbin/cinit.shutdown (/sbin/shutdown if non-existent before) +/etc/cinit - configuration directory diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/long_description b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/long_description new file mode 100644 index 00000000..18c3c082 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/long_description @@ -0,0 +1,5 @@ +cinit is a fast executing, small and simple init with support for profiles. It +minds dependencies (hard and soft, 'needs' and 'wants') and executes processes +in parallel. And it has a simple configuration, which makes many shell-scripts +unecessary (but you still could use them if you really want), which leads to +better performance and less memory using. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/meta/name new file mode 100644 index 00000000..b853da25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/meta/name @@ -0,0 +1 @@ +cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/parameters b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/parameters new file mode 100644 index 00000000..54df4727 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/parameters @@ -0,0 +1 @@ +cprofile: diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/path b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/path new file mode 100644 index 00000000..37edf339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/path @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/see also b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit.commands b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit.commands new file mode 100644 index 00000000..d34d13bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cinit.commands @@ -0,0 +1,73 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (using SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. +CMD_UPDATE: Update cinit, hot-reboot the system. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/author b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/long_description b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/long_description new file mode 100644 index 00000000..82818a93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/long_description @@ -0,0 +1 @@ +cservice controls cinit. Please use cservice -h for help. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/meta/name new file mode 100644 index 00000000..49c847bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/meta/name @@ -0,0 +1 @@ +cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/parameters b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/parameters new file mode 100644 index 00000000..605b08b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/parameters @@ -0,0 +1 @@ +[-eaphru] [thilo] diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/path b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/path new file mode 100644 index 00000000..85b0cb56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/path @@ -0,0 +1 @@ +/sbin/cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/see also b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/cservice-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/extern/README b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/extern/README new file mode 100644 index 00000000..e734d6d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/extern/README @@ -0,0 +1,2 @@ +doc/extern/ + Some things related to cinit from the outside world. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/extern/ipc.thoughts b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/extern/ipc.thoughts new file mode 100644 index 00000000..e2619d34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/extern/ipc.thoughts @@ -0,0 +1,83 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2 ), +1024 is the maximum opened file deskriptors, +minus 3 (stdin/stdout/stderr) already opened, divided +by two, because two fds needed per client. + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt, + - poweroff, + - update itself (hot-reboot) + - and to start a rescue mode (see using.rescue). + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + CONT: update + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/extern/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/extern/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/extern/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/extern/linux.kernel.eats.arguments b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/extern/linux.kernel.eats.arguments new file mode 100644 index 00000000..dbaf57d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/extern/linux.kernel.eats.arguments @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +Linux, the kernel, eats arguments +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +If you specify + + variable=value + +to the Linux kernel, the argument will NOT be passed to cinit. + +Here's the relevant code block from init/main.c of the Linux kernel: + +------------------------------------------------------------------------------- + +From init(void * unused) the function run_init_process(char *init_filename) +is called, which passes argv_init (char * argv_init[MAX_INIT_ARGS+2]) to init. + +First init_setup(char *str) resets all elements of the argv_init to NULL. + +The function unknown_bootoption(char *param, char *val) fills the +argv_init array, but only with parameters, which have no value +(val). + +The function parse_args calls unknown_bootoption with the unknown options. + +------------------------------------------------------------------------------- + +This way the profile support in all cinit versions below cinit-0.1 will +only work if you change conf/profile, because "cprofile=value" will +not be given to cinit, because it's not treated as a command line option. + +The original value "cprofile=" is replaced by "cprofile:" as of cinit-0.1. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/extern/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/extern/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/extern/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/fun-testing b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/fun-testing new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/fun-testing @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/how_it_works_internally b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/init-idea-first b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/init-idea-first new file mode 100644 index 00000000..2d677d8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/init-idea-first @@ -0,0 +1,38 @@ +- restarting/respawning + touch respawn +- dependencies + a needs started b +- clean multiply dependencies +- start & stop dependencies + start_depends + stop_depends +- parallel executation +- start and stop commands + start -> link + start_param -> parameters, like minit + stop -> link + stop_param -> parameters, like minit + + if no stop command is available, try to kill the pid we started at stop + +/startup/ + start_depends=gettys +/shutdown/ + stop_depends=power_off + + +gettys/ + start_depends=getty/1 + start_depends=getty/2 + start_depends=getty/3 + start_depends=getty/4 ... + +getty/1/ + start=/sbin/fgetty + respawn + +power_off/ + stop_depend=umount + +umount/ + stop_depend= diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/porting.to.other.os b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/porting.to.other.os new file mode 100644 index 00000000..65fdc07b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will perhaps become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/removing.zombies b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/removing.zombies new file mode 100644 index 00000000..9527e652 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + cinit in general will keep the behaviour of reaping the vestiges, + which broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/security b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/security new file mode 100644 index 00000000..f1dac591 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/security @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation, which will not accept connect() +by others than root. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console then! + +For extra parnoid settings you can do the following: + + ei # chmod 700 /etc/cinit/tmp/coala + ei # chown root:root /etc/cinit/tmp/coala diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/socket.poll_vs_o_async b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/socket.poll_vs_o_async new file mode 100644 index 00000000..477f2bff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/socket.poll_vs_o_async @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------------- +Socket: poll(2) vs. O_ASYNC, +Nico Schottelius 2005-06-22 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +0. General problem +1. O_ASYNC +2. poll(2) + + +0. General problem + +cinit has to react, as soon as there's data on the socket. + +1. O_ASYNC + +When you open a socket with O_ASYNC (or specify it with fcntl(2)) under +Linux, your process recieves the SIGIO signal from the kernel, as soon +as data is available. + +The problem is the handling of signals seems not to be serialised: + +The function, which is called on the SIGIO signal (called sigio() here) +calls other functions. Those functions way recieve SIGIO while working, +so the first data stream is not yet finished, though the next +stream is beeing read. + +This gives very nice race-conditions, which are very nice to debug. + +2. poll(2) + +poll(2) is a standard Unix-call (XPG4-UNIX), which waits a specific +timeout (or infinite time if you specify a value less that zero) for +the socket (or the fd in general) to be in a state where +data is available to read (in fact poll can do much more, but we are +not interested only in POLLIN and POLLPRI). + +While poll(2) seems to be a very bit slower than sigio it works reliable. + diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/thoughts.closed b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/thoughts.closed new file mode 100644 index 00000000..91a8e080 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/ancient/thoughts.closed @@ -0,0 +1,52 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c + +7. Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. As this is not needed + currently, it's not implemented. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/README.text b/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/README.text new file mode 100644 index 00000000..c4947a13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/README.text @@ -0,0 +1,2 @@ +DO NOT READ CONTENT IN THIS DIRECTORY. +(or at least do not blame me, if you get really confused after reading it) diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/big-picture.text b/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/big-picture.text new file mode 100644 index 00000000..4426c236 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/big-picture.text @@ -0,0 +1,122 @@ +Just a small hint-file for me to see how cinit works: + + - cinit starts + * cinit executes either init or a profile + - the dependency-tree begins + + - now cinit begins to try to execute the dependencies + * first the needs (if those fail, wants are never called) + - fork() for every dependency? + +-------------------------------------------------------------------------------- +another idea: + + - cinit starts + - cinit reads the full depedency tree + * it builds n-depth trees + * it begins at the set init service (profile or init!) + * init is the first entry. always. + * read full service information (like on/off/params/respawn) + * design of each tree element: see below + - add a tree for the needs + - add a tree for the wants + - the elements have links, one service is created only once + - after the tree is created, execution begins + * begin from the bottom + * save a pointer to the last level somehow before? + +Pre calculation: + - need to act on changes (some kind of file watcher) + * need to keep status (?) + * what with now missing needs / wants? + - missing needs: shutdown now missing needs? + - simply ignore them? + - shut them down if not needed (no one has a link in needs?) + * +-------------------------------------------------------------------------------- +Sample dependency tree: + + init + / \ + needs wants + / | \ / | \ + a b c d e f + / | \ / | \ + needs needs needs END needs END + / | \ \ | | | | + b c d c f a e a +-------------------------------------------------------------------------------- +How this would be sorted:: + init: + needs: a b c + wants: d e f + a: + needs: b c d + b: + needs: c f + c: + needs: a e + d: + - + e: + needs: a + f: + - +-------------------------------------------------------------------------------- +So in this case, cinit may start services the following way: + d f + -> Wouldn't be possible in pre-calculation, because of circular dependencies. +-------------------------------------------------------------------------------- + Try a 'real' dependency tree: + a needs b c d + b needs c d + c and d do not need other stuff +-------------------------------------------------------------------------------- +Now cinit would it do the following way: + start c, start d + b will be started, as soon as c and d successfully finish + as soon as b is finished, a will be started +-------------------------------------------------------------------------------- +Now let's think about how this could look like in code... +- when we built up the tree, we have some ends (n to say) +- we can / must start starting (;-) at the end +- we would have more than one line back (z may be needed by c, i, and a) + * like in "c is needed by s, c, o" + * maxdepth counter? + * asynchronous rollback? + +--> to think more about it! +-------------------------------------------------------------------------------- + +tree elements: + * name (= path) + * on, off, +params + * respawn_delay + - -1 if not respawning + - >= 0 time to wait between restart + * status + - NOT STARTED (status on initialisation) + - RESPAWNING (running, respawning) + - RESPAWN_DELAY (waiting to respawn it) + - ONCE (started once) + * errormsg + - pointer to an error message in case of failure + * needs + - List of services we need + * wants + - List of services we want + * used_by + - List of services which use this service +-------------------------------------------------------------------------------- + +Conclusions +------------ + +cinit as the main executor +~~~~~~~~~~~~~~~~~~~~~~~~~~ +If cinit should start all services directly and manage dependencies +only internally, it will need to have build a reverse dependency tree, +so it begins starting at the end. + +cinit could execute all possible parallel running services in parallel +and open pipes to the (dumb) service executors. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/circular-dependencies.text b/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/circular-dependencies.text new file mode 100644 index 00000000..dcc91ea7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/circular-dependencies.text @@ -0,0 +1,35 @@ +What todo with circular dependencies? + a needs b + b needs a + + - try to start them? + status a: is_starting + status b: not_set + a wants b, so a service starter for b starts + status a: is_starting, waiting for b + status b: is_starting + service starter for b sees that a is needed + service starter for b sees that a is already being started + service starter for b begins to execute b + status a: is_starting, waiting for b + status b: is_starting, executing "on" + service starter b finishes + status a: is_starting, waiting for b + status b: FAILED | RESPAWN | ONCE + service a continues + b successful: execute on + b failed: register / print that we do not start, because + b failed + + -> this would only catch possible deadlocks, if the dependency + tree / status check is done dynamically + -> in case of pre-building the dep-tree this situation must + be concerned: + - start both a and b? + - or stop due to circular dependency? + + - Abort on detection of a circular dependency + * possible without pre-calculating? + - perhaps only with direct communication possible? + * pre calculate + - do not start that services? diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/creating-new-configurations b/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/creating-new-configurations new file mode 100644 index 00000000..a251de5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/creating-new-configurations @@ -0,0 +1,6 @@ +scripts/create_baseconfig.sh # create base +scripts/cinit.install.standard.dirs # create common categories + +- create fsck +- set hostname +- create getty(s) diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/possible_service_pre_calculation.text b/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/possible_service_pre_calculation.text new file mode 100644 index 00000000..96ec3a73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/possible_service_pre_calculation.text @@ -0,0 +1,19 @@ +- start at + * create a new service entry (if not exists) <--- + * reads needs | + - follow dependencies ------------------------ + * only if service does not yet exist! | + * read wants | + - follow dependencies ------------------------ + * only if service does not yet exist! + * create + - needed by entry in dependencies + - needs entry in service + - wanted by entry in dependencies + - wants entry in service + + * record + - (on,off)(,.env,.params)? + - alternatively put that code into service starter + * add services without further needs into a special + "begin" structure to be reused at fireing of the services? diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/possible_service_status.text b/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/possible_service_status.text new file mode 100644 index 00000000..eb0f21e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/possible_service_status.text @@ -0,0 +1,14 @@ + + - NOT_SET: this service has not yet been initialized + - RESPAWNING: happily respawning + - RESPAWN_DELAY: waiting delay before restarting + * HINT: using alarm()? + - senseful for single process service watcher + * HINT: using nanosleep()? + - senseful for per service process watcher + - NEED_FAILED + * add a (somehow terminated) list of services that failed? + * use global status to checkout which services failed? + - WANT_FAILED? + * NOT NECESSARY, it is a simple want, we do not need it. + diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/registering_needs_wants.text b/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/registering_needs_wants.text new file mode 100644 index 00000000..ededbd41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/braindumps/registering_needs_wants.text @@ -0,0 +1,55 @@ +Each service has a list of services it + - needs + - is needed by + - wants + - is wanted by + + +Each entry is a service pointer. +The simplest list could look like this: + + service a: + needs: + b f g NULL + +So the needs pointer is NULL terminated: + needs = realloc(count_links) + -> how to get the count? + 0x02 + 0x + + Better: A double linked list (like the main service list)? + +Could look like: + service a: + needs: + *service + *next + *prev + +This design could also be used for wants. + +On the other hand, we've to register us at the needed/wanted service: + + service b: + needed_by: + *service + *next + *prev + + +So each service needs four pointers: + needs + needed_by + wants + wanted_by + +And on each request both lists have to be modified! + +Example: + + Service "a" adds "b" as needed: + + - add "a" needs "b" + - add "b" needed_by "a" + diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/devel/README.text b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/README.text new file mode 100644 index 00000000..20524651 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/README.text @@ -0,0 +1,18 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit development documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +(cinit-)developers. + +Content +------- diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/devel/cinit-0.4.text b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/cinit-0.4.text new file mode 100644 index 00000000..61b718f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/cinit-0.4.text @@ -0,0 +1,115 @@ +cinit 0.4 - Redesign of cinit +============================================ +Nico Schottelius +0.4.0, for cinit 0.4, Initial Version from 2006-03-11 +:Author Initials: NS + + +cinit 0.2 ran fine and the general project of developing a +parallel executing init system is finished. +With cinit 0.4 there are new aims to reach. + + +Introduction +------------ + +. AIMS + - portability: no Linux-dependency anymore + - cleaner signal handling + - better documentation so more people can use it + + +Current problems +---------------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The mount(2) system call is os-specific. +The temporary fs is os-specific. + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Race conditions when multiple signals arrive + + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +serv/sig_reboot.c contains umount, remount hard coded. + + +Solutions +--------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Remove +- the mount call +- do not create an initial socket + +Wait until we recieve a signal, then we create a socket +under the configured socket directory (see `conf/sockdir`). + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +Misc +~~~~ + +- Configuration + /etc/cinit/config/ + init -> link to initial service + pre_boot + pre_boot_args + post_boot + post_boot_args + /etc/cinit/services/ + /etc/cinit/profiles/ + links to the starting services + + + +cinit - Internals +================= +Nico Schottelius +0.1 for cinit-0.3, Initial version: So Feb 19 10:25:46 CET 2006 +:Author Initials: NS + + +Introduction +------------ +This document describes the internals of cinit. It is thought +to be read by developers. + + +Child handler code in cinit-0.3 +------------------------------- + +In cinit versions <= cinit-0.2.1 the respawning services where +handled by an extra child handler, which was a fork of cinit. This +had some problems: + + - We allocated more memory than necessary, unecessary parts of + cinit were copied + - The SIG_CHILD-handler was not written very clean, in some versions + it was completly missing. + + +. So in `cinit-0.3` we changed it the following way: + - no extra child handlers + - handle everything in the SIG_CHILD handling function + - when sig_child is recieved do: + - check against respawn list + - if it is a respawning service, [do the following in a seperate fork?] + check whether it successfully stoped + - if yes: restart immediatly + - if no: sleep $sleep_time and then restart diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/devel/communication.text b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/communication.text new file mode 100644 index 00000000..82f77774 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/communication.text @@ -0,0 +1,221 @@ +cinit - communication +===================== +Nico Schottelius +0.1 for cinit-0.3, Initial version: 2006-08-11 +:Author Initials: NS + +This document describes the internal communication of cinit. +It is thought to be read by developers. + + +Introduction +------------ +This document describes the messages used between cinit, cinit forks +and other programs that want to talk to cinit. It does NOT +describe the communication method, but only the messages sent +(for the communication method read "ipc.text"). + +Document status +~~~~~~~~~~~~~~~ +This document is still being written, it is not finished. + + +About Messages +-------------- + +Order +~~~~~ +The client always initiates the communication. +cinit will begin listening to messages directly after its start. + +Data +~~~~~ +A message always conists of a predefined structure (see src/headers/comm.h). +The byte order is host specific (may be little or big endian). + + +The messages +------------ +The client always uses the same structure (struct msg_client) to contact +cinit. This way cinit does not need to handle dynamic data structures. + +cinit in contrast delivers different data structures to its clients, +depending on the question. + +The questions are issued by any type of client, the internal command used is +noted in square brackets ([]). + +The answers are given by cinit. + + +Question: Start a service (and its dependencies) [CMD_START_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to start the service and its dependencies. + +The client must provide cinit with the following information: +. Name of the service to be started +. Reason why to start it +. eventually additional information (see below) + +The reason +^^^^^^^^^^ +Can be one of: +- RS_NONE (it's a manual start request) +- RS_WANTS (a currently starting service wants to start this service) +- RS_NEEDS (a currently starting service needs to start this service) + +If the reason is RS_WANTS or RS_NEEDS the client must supply the name +of the service, which wants it to be started. + + +Question: Start a service (nothing else) [CMD_START_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to start the service and which will +report the status back. + + +Question: Stop a service (and its dependencies) [CMD_STOP_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to stop the service and each service +that 'needs' it. + +This function works recursively, thus also killing those services, that +need the service that need the current service. + + +Question: Stop a service (nothing else) [CMD_STOP_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to stop this service and which will +report the status back. + + +Question: Stop a service (plus 'needs' and 'wants') [CMD_STOP_SVC_WANTS] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Same as 'Stop a service (and its dependencies)', but also stop the +services that want to have this service. + +This function works recursively, thus also killing those services, that +'need' or 'want' the service that 'need' or 'want' the current service. + + +Question: Could you change the status? [CMD_CHG_STAT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A cinit fork reports the new status of a service. + + +Question: Could you start the rescue mode? [CMD_RESCUE] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +spawn the rescue program. + + +Question: Could you halt the system? [CMD_HALT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +halt the system. + + +Question: Could you reboot the system? [CMD_REBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +reboot the system. + + +Question: Could you poweroff the system? [CMD_POWEROFF] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +poweroff the system. If poweroff is not possible, the system will +be halted. + + +Question: Could you warmboot the system? [CMD_WBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +restart itself and the bootup process. + + +Question: Could you send information about a service? [CMD_INFO] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will respond with detailled information about the service +to the client. + + +Answer: Return short status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Start a service (and its dependencies) + - Question: Start a service (nothing else) + - Question: Stop a service (and its dependencies) + - Question: Stop a service (nothing else) + - Question: Stop a service (plus 'needs' and 'wants') + - Question: Could you change the status? + +cinit only responds the status of the asked service. +The structure send is "asw_sstatus", which only include a status byte. + + +Answer: Return long status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Could you send information about a service? + + +old Messages (to be transferred into this document) +--------------------------------------------------- + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Service status: + +-------------------------------------------------------------------------------- +service status (cinit), +Nico Schottelius 2005-09-29 (Last Modified: -) +-------------------------------------------------------------------------------- + +There are service status and service returns. Service status is a status +a service can have. A service return is a value from a function that +describes what happened with the service. + +Status has ST_ prefix, return has RT_ prefix. +See cinit.h for most up to date versions. + + +ST_NEED_FAIL - this service will not be started, until the needs are started +ST_FAIL - this service failed to start +ST_UNSPEC - some unknown error. This should never happen. +ST_ERR - ??? /* tried earlier, service failed, won't retry */ + +ST_SUCCESS - service was successfully started - senseful? +ST_TMP - some instance is currently working on it +ST_ONCE - executed once sucessfully +ST_RESPAWN - service is running and respawning + +ST_TMPNOW 55 /* now you are on it - only for clients */ +#define ST_OFF 56 /* Switching service off */ + diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/devel/configuring.text b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/configuring.text new file mode 100644 index 00000000..405a4d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/configuring.text @@ -0,0 +1,18 @@ +cinit/doc/devel/using-conf.text +================================ +Nico Schottelius +0.1, Initial Version from 2006-07-28 +:Author Initials: NS + +About conf/* and how to use the configurations. + +Introduction +------------ + +Who should read those documents? +-------------------------------- + +Content +------- + + diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/devel/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/cross-compiling.text new file mode 100644 index 00000000..fdf70564 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/cross-compiling.text @@ -0,0 +1,36 @@ +TODO: + - merge into "Cross compiling" + +cinit - Problems that may arise +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Max open files + OS dependent + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/devel/ipc.text b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/ipc.text new file mode 100644 index 00000000..7013a985 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/ipc.text @@ -0,0 +1,108 @@ +IPC - in cinit and in general +============================= +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +IPC - Inter process communication + +Introduction +------------ +This document describes the IPC methods used and/or tested for +cinit. + +It does not describe in detail, how the different methods work +(this is already done many times, there's great documentation +available online), but more the advantages and disadvantages +(especially for an init system). + +What is IPC? +~~~~~~~~~~~~ +IPC describes methods to communicate between different processes +(programs). + +IPC as described by SUSV3 (The Single UNIX Specification Version 3) +aka IEEE Std 1003.1, 2004 Edition aka POSIX only defines +MSQ, SHM and Semaphores as IPC. This document also covers +Sockets and FIFOs. + + +What is not (yet) covered by this document? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Speed of different IPC methods, different behaviour on different +unices. + + +Why do you need IPC for an init system? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +cinit IPC history + analysis +---------------------------- + + +FIFOs +~~~~~ +First in - first out +File on the filesystem +Always need two files for two way communication + +Hints +^^^^^ +The first idea for IPC in cinit was to use two FIFOs, like minit does. +Wrong assumption: +runit also uses fifos, but two fifos for each services. That way +more parallel transmissions is possible. +You have to pay attention: Maximum number of opened files! +(On Linux 2.6 this is 1024, which makes a maximum of 512 services. +This limit is most likely never reached, but you have to keep it +in mind). + +Sockets +~~~~~~~ +Clean and beautiful. They allow easy two way communication. + +If you created a socket, fs is r/o, you cannot use it, although +there is SO_REUSE. + +First method: Using memory mapped part (tmpfs). +Second method: use interal communication (pipes!) and external after +/etc/cinit/ becomes writable. + + +Current IPC configuration +-------------------------- + +- switchable (conf/ipc_method) +- each ipc implementation needs: + + ipc.h -> for global variables and ipc specific things + prefix variables with ipc_ + int cinit_ipc_init(void); -> general initialization + return 1 on success, 0 on failure + int cinit_ipc_listen(void); -> begin to listen for messages + int cinit_ipc_send(void *data) -> send data to a client + +-------------------------------------------------------------------------------- +TO SORT: + +1. message queues + o clients schreiben rein + o datenpaket gross genug fuer antwort? + +2. shared memory + o client kann direkt rauslesen, was gestartet werden muss + o client kann direkt abhaengigkeiten starten, muss diese aber + eintragen + +Ausprobieren: + - Mutexe + - Message Queues + - + +Ideen: + Message queue + 1. Client geht auf die normale + als id = pid (cast!) + dann rueck via anderer queue + diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/devel/lists.text b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/lists.text new file mode 100644 index 00000000..6360acb3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/lists.text @@ -0,0 +1,22 @@ +Lists in cinit-0.3 are generalized, all have the same general layout: + + - double linked + - have 'prev' and 'next' as pointers + + Add an element to a list + + /--------------------------\ + |<->first<->middle<->last<->| + + + After insert: + + /-------------------------------\ + |<->first<->middle<->last<->new<->| + + We alway have 'first'. + Need to adjust: + - new->prev = last (= first->next) + - new->next = first + - first->prev = new + - first->prev->next (= last->next) = new diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/devel/merging.other.initsystems.text b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/merging.other.initsystems.text new file mode 100644 index 00000000..0baa4789 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/merging.other.initsystems.text @@ -0,0 +1,68 @@ +TODO: + - rewrite to asciidoc + - implement a sample merge + +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not mean that he does not accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated! + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/devel/testing.text b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/testing.text new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/devel/testing.text @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/logs/2006-10-25.config.wasserstoff b/software/cinit/browse_source/cinit-0.3pre2/doc/logs/2006-10-25.config.wasserstoff new file mode 100644 index 00000000..f28bd71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/logs/2006-10-25.config.wasserstoff @@ -0,0 +1,16 @@ +[17:12] wasserstoff:svc# pwd +/etc/cinit/svc +[17:12] wasserstoff:svc# ls +init +17:12] wasserstoff:svc# mkdir getty +[17:12] wasserstoff:svc# mkdir getty/2/ +[17:12] wasserstoff:svc# cd getty/2 +[17:12] wasserstoff:2# ln -s /sbin/getty on +17:12] wasserstoff:2# echo 38400 > on.params +[17:13] wasserstoff:2# echo tty2 >> on.params +[17:13] wasserstoff:2# cd ../../init +[17:14] wasserstoff:init# mkdir needs +[17:14] wasserstoff:init# cd needs +[17:14] wasserstoff:needs# ln -s ../../getty/2 getty-2 +[17:14] wasserstoff:needs# + diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/man/cinit.text b/software/cinit/browse_source/cinit-0.3pre2/doc/man/cinit.text new file mode 100644 index 00000000..11d56be2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/man/cinit.text @@ -0,0 +1,54 @@ +cinit(8) +======== +Nico Schottelius + + +NAME +---- +cinit - fast executing, small and simple init with support for profiles + + +SYNOPSIS +-------- +'cinit' [cprofile:name_of_profile] + + +DESCRIPTION +----------- +ccollect is a backup utility written in the sh-scripting language. +It does not depend on a specific shell, only `/bin/sh` needs to be +bourne shell compatibel (like 'dash', 'ksh', 'zsh', 'bash', ...). + +For more information refer to the texinfo or html documentation. + + +OPTIONS +------- + +cprofile:name_of_profile:: + If specified, cinit will start the named profile instead of the + standard service (which is confdir/init/) + +BUGS +---- +cinit is not tested nor documented very well currently. + +Additionally the porting to other OS is not finished yet. + +Both is work in progress. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + + +COPYING +------- +Copyright \(C) 2006 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/man/cservice b/software/cinit/browse_source/cinit-0.3pre2/doc/man/cservice new file mode 100644 index 00000000..8dae0c2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/man/cservice @@ -0,0 +1,34 @@ +-------------------------------------------------------------------------------- +cservice, +Nico Schottelius, 2005-06-10 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +cservice - control cinit + +cservice -[phearsu] + -e - (ein) start a service (including all needed dependencies) + -a - (aus) stop a respawing service, don't care about other services + + -r - reboot + -h - halt + -p - poweroff (on some systems the same as halt) + -s - reScue mode - only a shell + + -u - update: hot reboot - shutdown system and execute /sbin/cinit + +A service may be specified either as relative or as absolute path. + +-h, -p, -r, -s and -u need the "Magic Word" to do their work: "thilo" + +-------------------------------------------------------------------------------- + +Some examples: + + cservice -e /etc/cinit/getty/8 # fire up getty/8 + cd /etc/cinit/getty; cservice -a ./8 # shut down getty/8 + cservice -h thilo # halt + cservice -r thilo # reboot + cservice -s thilo # rescue + cservice -u thilo # update + +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/FAQ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/FAQ new file mode 100644 index 00000000..53494f73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile:home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/README.text b/software/cinit/browse_source/cinit-0.3pre2/doc/user/README.text new file mode 100644 index 00000000..3467ba63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/README.text @@ -0,0 +1,21 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit user documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +People using cinit. + +Content +------- + +hints.text: Some general hints +tuning.text: Some tuning hints diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/TODO b/software/cinit/browse_source/cinit-0.3pre2/doc/user/TODO new file mode 100644 index 00000000..6044e97a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/TODO @@ -0,0 +1,4 @@ +All the content in this file is unsorted. Reading may harm you. + +Confdir: /etc/cinit/conf/ +panic: /etc/cinit/conf/panic, /etc/cinit/conf/panic.params diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/caveats b/software/cinit/browse_source/cinit-0.3pre2/doc/user/caveats new file mode 100644 index 00000000..5ab123e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/caveats @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/compiles.on b/software/cinit/browse_source/cinit-0.3pre2/doc/user/compiles.on new file mode 100644 index 00000000..3fe83479 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/compiles.on @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +compiles.on, +Nico Schottelius 2005-06-09 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit is known to compile on: + +x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 + +Please report your configuration, if it's not listed here. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/config-dirs b/software/cinit/browse_source/cinit-0.3pre2/doc/user/config-dirs new file mode 100644 index 00000000..4a8fbb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/config-dirs @@ -0,0 +1,19 @@ +configuring + + /etc/cinit/defaults/panic -> link to something to execute on panic + (most likely /sbin/sulogin) + + /etc/cinit/defaults/tmp -> link to a directory where + the socket should be created, + after finishing boot + + What todo right before halting/rebooting/powering off + /etc/cinit/special/ + -> halt + -> reboot + -> poweroff + +Configuration +------------- + +Send kill signal diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/configuring.cinit b/software/cinit/browse_source/cinit-0.3pre2/doc/user/configuring.cinit new file mode 100644 index 00000000..a88ba00f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/configuring.cinit @@ -0,0 +1,189 @@ +-------------------------------------------------------------------------------- +configuring cinit, +Nico Schottelius 2005-05-28 (Last Modified: 2005-06-05) +-------------------------------------------------------------------------------- + +0. Pre-compile configuration +1. General configuration layout +2. Hints +2.0 Service executing / parameters +2.1 Daemons +2.2 Logging +2.3 Using prepared scripts +3. Profiles + + +0. Pre-compile configuration + +Have a look at conf/*. Those variable will mostly be used when +compiling cinit. Some will be read later (like destdir). + + +1. General configuration layout + +/etc/cinit (configurable via conf/cinit_dir) stores the complete +cinit configuration. + +cinit is service based. +A service consists of + - a base directory (like /etc/cinit/getty/1) + - dependency configuration: + + ./wants - services it wants to be started before (but it + will work anyway) + + ./needs/ - services it needs. If those services fail, this service + won't be started. + + - a flag indicating whether to respawn the service: + + ./respawn (simply touch it) + + - a delay: how long to wait for the service (in seconds) before + sending SIGKILL after the SIGTERM (only for respawning processes): + + ./delay (one line with only the digits) + + If delay is non-existing or not readable, the delay from + conf/sleep_kill_svc is taken. The maximum length of this + number ("9999" uses length 4, "42" needs 2 bytes) can be adjusted + at compile time in conf/max_delay. Internally this is a signed + integer, so the maximum size depends on your system. Though + I don't think anybody will want to wait for a service as long as + an integer would allow. + + - the program to run when switching the service on and off: + + ./on (a link to a program or a shell script) + ./on.params (see conf/c_params, the parameters to pass to the program) + ./on.env (see conf/c_env, the environment to pass to the program) + + ./off (call that when shutting down the service) + ./off.params (the parameters to pass to the program) + ./on.env (the environment to pass to the program) + +You should have a look at the samples/ directory for examples. + +If things are missing, cinit will continue with what's available. +This way you only need the files you use. Some examples: + + /etc/cinit/init: + ./wants -> services it wants + ./needs -> services it needs + That's everything + + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it + That's everything, as it has no dependencies + + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn on service + delay -> wait this time before sending SIGKILL after SIGTERM + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting + + +2. Hints + +2.0 Service executing / parameters + +The on and off files can and should be links to the programs you want +to execute. This way you save yourself loading the big shell (which is +on many Linux systems bash, why so ever, dash does the job as good, still +beeing small). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. The on script +could look like: + + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). + + +2.1 Daemons + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking (Please have a look at +daemons.backgrounding for a list of known daemons and their switches +to avoid backgrounding). + +The other possibility is to use a program, which will + a) start the daemon + b) look into the pidfile of the daemon + c) will then wait until that pid does not exist anymore + d) and then it exits and cinit will restart it (goto a) now) + +Such a program is included into this cinit release, +though I do not recommend using it. You should better contact the +authors and make them implement a clean non-forking mode. + +The name of the program (actually a shell script) is "cinit.wait.for.daemon". + +You will use it as the "on" part of the service and you have to add + + a) the pidfile to on.params + b) the daemon binary + +Thus the service would look like: + + svc-broken-daemon/ + on -> /sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + + +2.2 Logging + +Currently there's no special logging support. +When programs write to stdout, it will be displayed on +the same stdout cinit is connected to +(we don't even open /dev/console - we are too lazy currently). + + +2.3 Using prepared scripts + +In the bin/ directory of this tarball you'll find at least: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + + +3. Profiles + +Since cinit-0.0.6 there is profile in cinit. +Profiles are described in doc/profile.support. + +X. Examples + +Can be found in the tarballs below samples/. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre2/doc/user/cross-compiling.text new file mode 100644 index 00000000..67208534 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/cross-compiling.text @@ -0,0 +1,6 @@ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/daemons.backgrounding b/software/cinit/browse_source/cinit-0.3pre2/doc/user/daemons.backgrounding new file mode 100644 index 00000000..f7b7fdf5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/daemons.backgrounding @@ -0,0 +1,71 @@ +-------------------------------------------------------------------------------- +daemons backgrounding, +Nico Schottelius 2005-06-12 (Last Modified: 2005-10-15) +-------------------------------------------------------------------------------- + +0. Definition + +A daemon is a program which runs in the background, not having a tty +associated necesserally. Running in background does not mean it has +to background (fork()) itself, but that you cannot control it directly +from a shell. + +1. Daemons and cinit + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking + +The following daemons / servers are known to avoid backgrounding easily: + + acpid [x86 power management]: -f (undocumentated but works) + apache [webserver]: -DFOREGROUND + asterisk [pbx]: -f + bind [dns server/caching]: -f + cardmgr [pcmcia/cardbus]: -f + cron (vixie) [schedular]: -f + cupsd [printer server]: -f or -F + dhclient [dhcp client]: -d + dhcp3 (isc) [dhcp server]: -f + distccd [compile server]: normal behaviour + fam [file alteration monitor]:-f + fcron [schedular]: -f + frox [ftp proxy]: "NoDetach" in config + gdm [display manager]: -nodaemon + hybrid [irc server]: -foreground + icecast2 [sound streamer]: normal behaviour + mini-lpd [printer server]: normal behaviour + metalog [log server]: normal behaviour + monotone [vcs]: normal behaviour + mpd [music server]: --no-daemon + nessusd ["security server"]: normal behaviour + ntpd [time server]: -n + oidentd [identd server]: -i + oops [http proxy]: normal behaviour + openssh [ssh server]: -D + openvpn [vpn server]: normal behaviour + pbbuttonsd [power management]:normal behaviour + proftpd [ftp server]: -n + qmail [mta]: normal behaviour + rsync ["file server"]: --no-detach + silcd ["secure chat server"]: -F, --foreground + slapd [ldap]: -d + snmpd [snmp daemon]: -f + svnserve [vcs]: --foreground + syslogd [log server]: -n + syslog-ng [log server]: -F + tcpserver [super server]: normal behaviour + udhcpc [dhcp client]: normal behaviour + vsftpd [ftp server]: normal behaviour (or: config: background=no) + xinetd [super server]: -dontfork + +Those are the daemons that do not offer the possibility (as of release 0.2): + + atd (no switch, no configuraton option) + inetd (some variants) + nscd (no switch, no configuraton option) + portmap (only with debug mode) diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/debugging.configuration b/software/cinit/browse_source/cinit-0.3pre2/doc/user/debugging.configuration new file mode 100644 index 00000000..1289865e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/debugging.configuration @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +Debugging your init configuration, +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +As writing an init configuration is not the easiest thing, +here are some problems (P) and debugging hints (H): + +P: There's no output! +H: If you don't start a service which outputs something there won't be any, + cinit starts up silently. + +P: Service XYZ seems not to work? +H: Try the following in your shell: + cd /etc/cinit/the-service; ./on "$(on.params)" + If that succeeds it has perhaps something missing which should have been + started before. +H: Create a test-service, which contains the following: + on: link to /bin/echo + on.params: "A test string" (with or without the quotes) + Now add the test-service to the needs directory of service XYZ. + If you see output the next time, the service is started. + Otherwise you forgot to make another service dependent on service + XYZ. + +P: How can I test if a non-outputting service successfully started? +H: Create another service, which depends on your service and make + it echo something. + +P: Does that profile support really work? +H: Try that: cprofile:NONEXISTENT and you'll see. + diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/ideas b/software/cinit/browse_source/cinit-0.3pre2/doc/user/ideas new file mode 100644 index 00000000..d3f13d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/ideas @@ -0,0 +1,3 @@ +- cinit-multi-machine-daemon: + coordinating bootup with several machines + diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/installing-cinit.text b/software/cinit/browse_source/cinit-0.3pre2/doc/user/installing-cinit.text new file mode 100644 index 00000000..084a225e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/installing-cinit.text @@ -0,0 +1,25 @@ +cinit - Installing +================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 +:Author Initials: NS + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +For cross compiling see 'cross-compiling.text'. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/main.text b/software/cinit/browse_source/cinit-0.3pre2/doc/user/main.text new file mode 100644 index 00000000..6308e4c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/main.text @@ -0,0 +1,113 @@ +cinit - a modern init system +============================= +Nico Schottelius +v0.1, for cinit-0.2.2, 2005-01-18 +:Author Initials: NS + + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/meta.dependencies b/software/cinit/browse_source/cinit-0.3pre2/doc/user/meta.dependencies new file mode 100644 index 00000000..fe743c48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/meta.dependencies @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, one would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation (see profile.support). + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +why it does not even need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ + +This way you have the indirection (meta-dependencies) in the filesystem +and cinit does not need any additional code. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/optimising.cinit b/software/cinit/browse_source/cinit-0.3pre2/doc/user/optimising.cinit new file mode 100644 index 00000000..4f4b5c02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/optimising.cinit @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options +2. striping + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + +The current standard for cinit is: (see CFLAGS in the Makefile). + + +2. striping + +With strip(1) you can remove specific sections of object files. +You have to find out, which ones you can remove safely +(for instance with objdump(1)). + +The current standard for cinit is: (see STRIP in the Makefile) diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/paths.text b/software/cinit/browse_source/cinit-0.3pre2/doc/user/paths.text new file mode 100644 index 00000000..0b8c6b39 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/paths.text @@ -0,0 +1,68 @@ +cinit - Configuration +====================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Configuring cinit - the paths used + + +Introduction +------------ +The base directory under which all configurations are found +is '/etc/cinit'. + +The basic hierarchy is shown below: +---------------------------------------------------------------------- +/etc/cinit + svc -> services + conf -> general configuration +---------------------------------------------------------------------- + + +General pathnames +~~~~~~~~~~~~~~~~~~ +When you create something that cinit should execute (like on +starting a service, on stopping a service, on panic, ...), cinit +will recognize the following extensions: + +. cinit executions extensions + - 'name' - the file that should be executed + - 'name'.params - the parameter to pass to 'name' when executing + - 'name'.env - the environment to pass to 'name' when executing + + +Name.params +^^^^^^^^^^^ +The 'params' file is a simple file containing one argument on each +line. + +Name.env +^^^^^^^^ +The 'env' file contains one assignment on each line. +"testvar=testvalue". + + +The subdirectory 'conf' +~~~~~~~~~~~~~~~~~~~~~~~ +In this directory are general configurations located. + +. The executable files in this directory are: + - panic{.*} + - umount{.*} + +The subdirectory 'svc' +~~~~~~~~~~~~~~~~~~~~~~ +This directory contains the services. A service is a directory +which may contain the following files: + +. List of files + - on - What to execute when starting the service + * on.env - Environment to pass to 'on' + * on.params - Parameters to pass to 'on' + - off - What to execute when stopping the service + * off.env - Environment to pass to 'on' + * off.params - Parameters to pass to 'on' + - respawn - An empty file that tells cinit to restart the service + when it exits + diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/problems b/software/cinit/browse_source/cinit-0.3pre2/doc/user/problems new file mode 100644 index 00000000..a3440a3a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/problems @@ -0,0 +1,9 @@ +fsck: + returns non-zero if it repaired something. + You have to wrap it into a shell-script :-( + + #!/bin/sh + fsck $@ + [ $? -le 1 ] && exit 0 + exit 1 + diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/profile.support b/software/cinit/browse_source/cinit-0.3pre2/doc/user/profile.support new file mode 100644 index 00000000..7bc607b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/profile.support @@ -0,0 +1,72 @@ +-------------------------------------------------------------------------------- +Profiles, +Nico Schottelius, 2005-06-04 +-------------------------------------------------------------------------------- + +1. What are profiles? +2. How to use profiles? +3. How to configure profiles? +4. Some examples + + +1. What are profiles? + +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +2. How to use profiles? + +Simply pass 'cprofile:PROFILENAME' (like cprofile:home) to cinit. +How to pass argumenents to cinit? Under Linux the init-system +gets the kernel arguments (see linux.kernel.eats.arguments) as arguments. +So you can use + + kernel /usr/src/linux/vmlinuz cprofile:work (grub1,grub2) + append="cprofile:work" (LILO,yaboot) + +Other Unices should work like Linux, please consult your local +documentation. + + +3. How to configure profiles? + +It's very simple: Normally cinit would call /etc/cinit/init as +primary service and solve all dependencies. If you pass +cprofile=wireless to it, cinit will start /etc/cinit/wireless as +primary service instead. + + [Note: /etc/cinit/yourprofile is the service that will be started. + You need/should/must NOT create /etc/cinit/yourprofile/init!] + +So the only thing you have to do is to create a service directory +below /etc/cinit with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/init; tar c . | (mkdir ../yp; cd ../yp; tar x ) + +That's it! + + +4. Some examples + +Here are some examples we found in #cLinux: + + profile name what it does + + musibox only start mp3blaster + terminal start only minicom, which opens the serial line + net-terminal start a respawning shell script, which starts + ssh to the selected host + video start X+mplayer, which plays the dvd/cdrom + wireless What to start when beeing in an unknown wlan + home/work selected services (nfs, ip, ...) for home or work + diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/replacing.init b/software/cinit/browse_source/cinit-0.3pre2/doc/user/replacing.init new file mode 100644 index 00000000..2858c56c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/replacing.init @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and link, move or copy cinit to init (ln -s /sbin/cinit /sbin/init), reboot. + +That's everything in general, the biggest part will be to configuring cinit. + +See also doc/merging.other.initsystems. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/updating.cinit b/software/cinit/browse_source/cinit-0.3pre2/doc/user/updating.cinit new file mode 100644 index 00000000..fc0d3fef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/updating.cinit @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. call cservice -u thilo (if you have cinit-0.1 or later) + + For older versions: + + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything running and restart as if you would just + have booted. diff --git a/software/cinit/browse_source/cinit-0.3pre2/doc/user/using.rescue b/software/cinit/browse_source/cinit-0.3pre2/doc/user/using.rescue new file mode 100644 index 00000000..f58ff512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/doc/user/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user"). + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.3pre2/scripts/cinit.build-env b/software/cinit/browse_source/cinit-0.3pre2/scripts/cinit.build-env new file mode 100644 index 00000000..94e093e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/scripts/cinit.build-env @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: build environment to be used in scripts +# * Should be sourced by using scripts +# 2006-10-26 +# + +. $(dirname $0)/cinit.read-conf + +export BASEDIR=${DESTDIR}${CINIT_DIR} +export SERVICES=${BASEDIR}/${SVCDIR} +export CONFIG=${BASEDIR}/${CONFDIR} diff --git a/software/cinit/browse_source/cinit-0.3pre2/scripts/cinit.get-confdir b/software/cinit/browse_source/cinit-0.3pre2/scripts/cinit.get-confdir new file mode 100644 index 00000000..38d8572d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/scripts/cinit.get-confdir @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# Date: 2005-05-24 (Last Changed: 2005-08-08) + +# try environment first +if [ "$CINIT_CONF_DIR" ]; then + CONFDIR=$CINIT_CONF_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +else + echo 'Did not find cinit configuration!' >&2 + echo "Please set the variable CINIT_CONF_DIR" >&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.3pre2/scripts/cinit.install.standard.dirs b/software/cinit/browse_source/cinit-0.3pre2/scripts/cinit.install.standard.dirs new file mode 100644 index 00000000..22cf273d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/scripts/cinit.install.standard.dirs @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install standard sub-configuration directories +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.build-env + +for svc in $SERVICE_CATEGORIES; do + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${SERVICES}/${svc}" +done + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre2/scripts/cinit.mkheader b/software/cinit/browse_source/cinit-0.3pre2/scripts/cinit.mkheader new file mode 100644 index 00000000..80e3f7cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/scripts/cinit.mkheader @@ -0,0 +1,32 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric: no quotes needed + is_numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + is_string="$(echo $value | grep '^"')" + + # + # Check for quote type + # + if [ ! "$is_numeric" -a ! "$is_string" ]; then + one_char=$(echo -n $value | wc -c) + + if [ "$one_char" -eq 1 ]; then + value="'$value'" + else + # is a string + value="\"$value\"" + fi + fi + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.3pre2/scripts/cinit.read-conf b/software/cinit/browse_source/cinit-0.3pre2/scripts/cinit.read-conf new file mode 100644 index 00000000..4f3c1cb7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/scripts/cinit.read-conf @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# ~ 2005 +# + +CONFS=$($(dirname $0)/cinit.get-confdir)/* + +set -e + +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + if eval test -z \$$NAME; then + eval $NAME=\"$(head -n 1 $conf)\" + eval export $NAME + fi +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.3pre2/scripts/create_baseconfig.sh b/software/cinit/browse_source/cinit-0.3pre2/scripts/create_baseconfig.sh new file mode 100644 index 00000000..7c9b69e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/scripts/create_baseconfig.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# 2006-10-23 +# cLinux/cinit + +. $(dirname $0)/cinit.build-env + +set -e + +mkdir -p "${BASEDIR}" + +mkdir -p "${SERVICES}" +mkdir -p "${SERVICES}/${C_INIT}" + +mkdir -p "${CONFIG}" diff --git a/software/cinit/browse_source/cinit-0.3pre2/serv/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre2/serv/run_init_svc.c new file mode 100644 index 00000000..f41c1f4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/serv/run_init_svc.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre2/serv/sig_child.c b/software/cinit/browse_source/cinit-0.3pre2/serv/sig_child.c new file mode 100644 index 00000000..cee8042e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/serv/sig_child.c @@ -0,0 +1,35 @@ +/* cinit + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * We are called, when a child dies. Remove it. + */ + +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_child + * collect the children + * FIXME: check whether we've race conditions when reciieving multiiple + * signals + * Perhaps disable listening to sig_child in meantime? + */ + +void sig_child(int tmp) +{ + struct listitem *svc; + + do { + /* check if it's a watched child */ + tmp = waitpid(-1, &tmp, WNOHANG); + + /* restart service, if we are watching it */ + svc = list_search_pid((pid_t) tmp); + + if( svc != NULL ) { + svc->pid = exec_svc(svc->abs_path, CMD_START_SVC); + } + } while( tmp > 0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-17-19:03:48 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-17-19:03:48 new file mode 100644 index 00000000..e379e004 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-17-19:03:48 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 17 19:03 cinit +-rwx------ 1 nico users 46760 Jun 17 19:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-20-12:16:40 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-20-12:16:40 new file mode 100644 index 00000000..1f0c3325 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-20-12:16:40 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 20 12:16 cinit +-rwx------ 1 nico users 50860 Jun 20 12:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-20-15:16:31 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-20-15:16:31 new file mode 100644 index 00000000..75dc3e7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-20-15:16:31 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 15:16 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-20-16:29:28 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-20-16:29:28 new file mode 100644 index 00000000..1294bde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-20-16:29:28 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-20-16:29:50 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-20-16:29:50 new file mode 100644 index 00000000..69fe7490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-20-16:29:50 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 16:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-21-11:53:35 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-21-11:53:35 new file mode 100644 index 00000000..4a1e7b6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-21-11:53:35 @@ -0,0 +1,3 @@ +total 192 +-rwx------ 1 nico users 102039 Jun 21 11:53 cinit +-rwx------ 1 nico users 87871 Jun 21 11:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-07:33:11 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-07:33:11 new file mode 100644 index 00000000..e6c8ff14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-07:33:11 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47544 Jun 22 07:33 cinit +-rwx------ 1 nico users 46760 Jun 22 07:33 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-07:57:13 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-07:57:13 new file mode 100644 index 00000000..17161d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-07:57:13 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47536 Jun 22 07:57 cinit +-rwx------ 1 nico users 46760 Jun 22 07:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-08:08:40 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-08:08:40 new file mode 100644 index 00000000..770083f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-08:08:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47424 Jun 22 08:08 cinit +-rwx------ 1 nico users 46760 Jun 22 08:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-08:30:42 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-08:30:42 new file mode 100644 index 00000000..aa95fb3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-08:30:42 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47360 Jun 22 08:30 cinit +-rwx------ 1 nico users 46760 Jun 22 08:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-09:19:42 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-09:19:42 new file mode 100644 index 00000000..70c261bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-09:19:42 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 09:19 cinit +-rwx------ 1 nico users 50860 Jun 22 09:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-10:43:24 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-10:43:24 new file mode 100644 index 00000000..b8bc4076 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-10:43:24 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 10:43 cinit +-rwx------ 1 nico users 50860 Jun 22 10:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-12:42:57 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-12:42:57 new file mode 100644 index 00000000..c8119859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-12:42:57 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 22 12:42 cinit +-rwx------ 1 nico users 46760 Jun 22 12:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-13:52:41 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-13:52:41 new file mode 100644 index 00000000..793b92fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-13:52:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:52 cinit +-rwx------ 1 nico users 46760 Jun 22 13:52 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-13:59:40 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-13:59:40 new file mode 100644 index 00000000..d114c557 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-13:59:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:59 cinit +-rwx------ 1 nico users 46760 Jun 22 13:59 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-14:19:41 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-14:19:41 new file mode 100644 index 00000000..8d56882f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-14:19:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47640 Jun 22 14:19 cinit +-rwx------ 1 nico users 46760 Jun 22 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-14:37:18 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-14:37:18 new file mode 100644 index 00000000..b7c3e4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-22-14:37:18 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 22 14:37 cinit +-rwx------ 1 nico users 46760 Jun 22 14:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-23-06:22:23 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-23-06:22:23 new file mode 100644 index 00000000..9e38a5e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-23-06:22:23 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 23 06:22 cinit +-rwx------ 1 nico users 46760 Jun 23 06:22 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-24-17:53:55 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-24-17:53:55 new file mode 100644 index 00000000..3b750eaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-24-17:53:55 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:53 cinit +-rwx------ 1 nico users 46760 Jun 24 17:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-24-17:55:29 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-24-17:55:29 new file mode 100644 index 00000000..c30dcaf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-24-17:55:29 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:55 cinit +-rwx------ 1 nico users 46760 Jun 24 17:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-26-13:19:49 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-26-13:19:49 new file mode 100644 index 00000000..a4de830b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-06-26-13:19:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 26 13:19 cinit +-rwx------ 1 nico users 50860 Jun 26 13:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:07:13 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:07:13 new file mode 100644 index 00000000..e2c59ddf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:07:13 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:07 cinit +-rwx------ 1 nico users 50860 Jul 6 08:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:12:20 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:12:20 new file mode 100644 index 00000000..e562350c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:12:20 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:12 cinit +-rwx------ 1 nico users 50860 Jul 6 08:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:13:39 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:13:39 new file mode 100644 index 00000000..32fd8268 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:13:39 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:13 cinit +-rwx------ 1 nico users 50860 Jul 6 08:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:14:19 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:14:19 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:14:19 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:14:59 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:14:59 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:14:59 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:15:56 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:15:56 new file mode 100644 index 00000000..cf26e6f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-08:15:56 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:15 cinit +-rwx------ 1 nico users 50860 Jul 6 08:15 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-10:12:22 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-10:12:22 new file mode 100644 index 00000000..d5f0f2c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-10:12:22 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:08 cinit +-rwx------ 1 nico users 50860 Jul 6 10:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-10:12:31 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-10:12:31 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-10:12:31 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-10:12:49 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-10:12:49 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-07-06-10:12:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-08-29-21:21:34 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-08-29-21:21:34 new file mode 100644 index 00000000..e651a8ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-08-29-21:21:34 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 root root 444508 2005-08-29 21:21 cinit +-rwx------ 1 root root 440412 2005-08-29 21:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-08-29-23:50:55 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-08-29-23:50:55 new file mode 100644 index 00000000..a279aee3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-08-29-23:50:55 @@ -0,0 +1,3 @@ +insgesamt 856 +-rwx------ 1 nico nico 437564 2005-08-29 23:50 cinit +-rwx------ 1 nico nico 436316 2005-08-29 23:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-03-03:36:59 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-03-03:36:59 new file mode 100644 index 00000000..01e555f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-03-03:36:59 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 nico nico 444508 2005-09-03 03:36 cinit +-rwx------ 1 nico nico 440412 2005-09-03 03:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-03-04:34:35 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-03-04:34:35 new file mode 100644 index 00000000..1832930a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-03-04:34:35 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 04:34 cinit +-rwx------ 1 nico nico 440412 Sep 3 04:34 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-03-05:51:17 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-03-05:51:17 new file mode 100644 index 00000000..4e465d06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-03-05:51:17 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 05:51 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-03-05:54:20 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-03-05:54:20 new file mode 100644 index 00000000..9c040d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-03-05:54:20 @@ -0,0 +1,4 @@ +total 1300 +-rwx------ 1 nico nico 440412 Sep 3 05:54 ccontrol +-rwx------ 1 nico nico 444508 Sep 3 05:54 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-03-09:01:59 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-03-09:01:59 new file mode 100644 index 00000000..880422a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-03-09:01:59 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 3 09:01 cinit +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-05-19:41:12 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-05-19:41:12 new file mode 100644 index 00000000..0f07d86e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-05-19:41:12 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 root root 440412 2005-09-05 19:41 ccontrol +-rwx------ 1 root root 444508 2005-09-05 19:41 cinit +-rwx------ 1 root root 440412 2005-09-05 19:41 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-05-19:50:35 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-05-19:50:35 new file mode 100644 index 00000000..32ff19fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-05-19:50:35 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 5 19:50 cinit +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-24-01:42:38 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-24-01:42:38 new file mode 100644 index 00000000..0da6126e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-24-01:42:38 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-09-24 01:42 ccontrol +-rwx------ 1 nico nico 437628 2005-09-24 01:42 cinit +-rwx------ 1 nico nico 436316 2005-09-24 01:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-30-22:50:50 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-30-22:50:50 new file mode 100644 index 00000000..0d510174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-30-22:50:50 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 22:50 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 22:50 cinit +-rwx------ 1 nico nico 436316 2005-09-30 22:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-30-23:06:39 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-30-23:06:39 new file mode 100644 index 00000000..23450914 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-09-30-23:06:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 23:06 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 23:06 cinit +-rwx------ 1 nico nico 436316 2005-09-30 23:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-01-22:09:13 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-01-22:09:13 new file mode 100644 index 00000000..a62b9eb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-01-22:09:13 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-10-01 22:09 ccontrol +-rwx------ 1 nico nico 437308 2005-10-01 22:09 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-01-22:17:39 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-01-22:17:39 new file mode 100644 index 00000000..b1d8b11b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-01-22:17:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-01 22:17 ccontrol +-rwx------ 1 nico nico 437532 2005-10-01 22:17 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-02-11:12:29 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-02-11:12:29 new file mode 100644 index 00000000..e5f7b13d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-02-11:12:29 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:12 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-02-11:13:35 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-02-11:13:35 new file mode 100644 index 00000000..d7c14471 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-02-11:13:35 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-02-11:13:43 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-02-11:13:43 new file mode 100644 index 00000000..1711d01a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-02-11:13:43 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 11:13 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 436316 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-02-16:00:24 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-02-16:00:24 new file mode 100644 index 00000000..ab23228c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-02-16:00:24 @@ -0,0 +1,4 @@ +total 1284 +-rwx------ 1 nico nico 436316 Oct 2 16:00 ccontrol +-rwx------ 1 nico nico 437884 Oct 2 16:00 cinit +-rwx------ 1 nico nico 436316 Oct 2 16:00 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-02-23:17:11 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-02-23:17:11 new file mode 100644 index 00000000..92041cd9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-02-23:17:11 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 23:17 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 23:17 cinit +-rwx------ 1 nico nico 436316 2005-10-02 23:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-03-00:54:39 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-03-00:54:39 new file mode 100644 index 00000000..df47a057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-03-00:54:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:54 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:54 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-03-00:56:29 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-03-00:56:29 new file mode 100644 index 00000000..08db7fec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-03-00:56:29 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:56 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:56 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:56 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-13-09:55:52 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-13-09:55:52 new file mode 100644 index 00000000..d54a7ff4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-13-09:55:52 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:55 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:55 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-13-09:57:11 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-13-09:57:11 new file mode 100644 index 00000000..3b1af9ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-13-09:57:11 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:57 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:57 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-13-10:07:28 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-13-10:07:28 new file mode 100644 index 00000000..58d25315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-13-10:07:28 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 10:07 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 10:07 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 10:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-15-15:26:52 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-15-15:26:52 new file mode 100644 index 00000000..a88291e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-15-15:26:52 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 root root 436316 2005-10-15 15:26 ccontrol +-rwx------ 1 root root 437916 2005-10-15 15:26 cinit +-rwx------ 1 root root 436316 2005-10-15 15:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-15-21:23:56 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-15-21:23:56 new file mode 100644 index 00000000..43a4504d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-10-15-21:23:56 @@ -0,0 +1,4 @@ +total 36 +-rwx------ 1 nico nico 9148 Oct 15 21:23 ccontrol +-rwx------ 1 nico nico 11872 Oct 15 21:23 cinit +-rwx------ 1 nico nico 9768 Oct 15 21:23 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2005-11-17-17:03:53 b/software/cinit/browse_source/cinit-0.3pre2/size/2005-11-17-17:03:53 new file mode 100644 index 00000000..78543f15 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2005-11-17-17:03:53 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2005-11-17 17:03 ccontrol +-rwx------ 1 nico nico 11872 2005-11-17 17:03 cinit +-rwx------ 1 nico nico 9768 2005-11-17 17:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-11-23:45:54 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-11-23:45:54 new file mode 100644 index 00000000..f4852c81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-11-23:45:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-11 23:45 cinit +-rwx------ 1 nico nico 9768 2006-02-11 23:45 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-12-00:06:11 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-12-00:06:11 new file mode 100644 index 00000000..2fe41351 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-12-00:06:11 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-12-00:06:42 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-12-00:06:42 new file mode 100644 index 00000000..bf2ddc36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-12-00:06:42 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:06 ccontrol +-rwx------ 1 nico nico 11560 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-12-00:08:24 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-12-00:08:24 new file mode 100644 index 00000000..e25a49ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-12-00:08:24 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:08 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:08 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-12-00:09:33 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-12-00:09:33 new file mode 100644 index 00000000..0b64fa00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-12-00:09:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:09 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:09 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-12-00:13:32 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-12-00:13:32 new file mode 100644 index 00000000..b6c5c38e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-12-00:13:32 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:13 ccontrol +-rwx------ 1 nico nico 11500 2006-02-12 00:13 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-16-23:57:29 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-16-23:57:29 new file mode 100644 index 00000000..86b9fda9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-16-23:57:29 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11620 2006-02-16 23:57 cinit +-rwx------ 1 nico nico 9768 2006-02-16 23:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-17-00:16:18 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-17-00:16:18 new file mode 100644 index 00000000..28c853a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-17-00:16:18 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 00:16 cinit +-rwx------ 1 nico nico 9768 2006-02-17 00:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-17-22:48:35 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-17-22:48:35 new file mode 100644 index 00000000..5935acfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-17-22:48:35 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-17 22:48 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 22:48 cinit +-rwx------ 1 nico nico 9768 2006-02-17 22:48 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:03:54 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:03:54 new file mode 100644 index 00000000..9222f0b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:03:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:03 cinit +-rwx------ 1 nico nico 9768 2006-02-20 19:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:04:33 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:04:33 new file mode 100644 index 00000000..c5797edc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:04:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:04:36 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:04:36 new file mode 100644 index 00000000..fbcf9fa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:04:36 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:07:47 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:07:47 new file mode 100644 index 00000000..7e1fe18f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:07:47 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:07 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:12:33 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:12:33 new file mode 100644 index 00000000..2b4fda40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:12:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:12 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:12 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:14:56 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:14:56 new file mode 100644 index 00000000..bccb5d65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-02-20-20:14:56 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:14 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:14 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-01-23:32:43 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-01-23:32:43 new file mode 100644 index 00000000..fcbaf372 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-01-23:32:43 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-01 23:32 ccontrol +-rwx------ 1 nico nico 11640 2006-06-01 23:32 cinit +-rwx------ 1 nico nico 9768 2006-06-01 23:32 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-01:08:28 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-01:08:28 new file mode 100644 index 00000000..7683546c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-01:08:28 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:08 ccontrol +-rwx------ 1 nico nico 11688 2006-06-02 01:08 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-01:29:13 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-01:29:13 new file mode 100644 index 00000000..adbc6846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-01:29:13 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:29 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 01:29 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-11:13:39 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-11:13:39 new file mode 100644 index 00000000..46eaef4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-11:13:39 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:13 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:13 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-11:36:37 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-11:36:37 new file mode 100644 index 00000000..306402f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-11:36:37 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:36 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:36 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-15:17:17 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-15:17:17 new file mode 100644 index 00000000..7bb59095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-15:17:17 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:17 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:17 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-15:19:52 b/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-15:19:52 new file mode 100644 index 00000000..ce65256f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/size/2006-06-02-15:19:52 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:19 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:19 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/Makefile b/software/cinit/browse_source/cinit-0.3pre2/src/Makefile new file mode 100644 index 00000000..13e1a854 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/Makefile @@ -0,0 +1,135 @@ +# +# cinit +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +include Makefile.tests + +# Build tools / locations +CC=../tmpbin/cc +CFLAGS= +LD=../tmpbin/ld +LDFLAGS= +STRIP=../tmpbin/strip +SBIN=../sbin + +# directories and files +CONFIG_H=headers/config.h + +# +# objects for the cinit part +# +CINIT_HEADERS=$(shell cat headers/listing) +CINIT_CORE_OBJ=$(shell cat core/objects) +CINIT_GENERIC_OBJ=$(shell cat generic/objects) +CINIT_SVC_OBJ=$(shell cat svc/objects) + +# +# The current link may be missing in the first run +# +CINIT_IPC_OBJ=$(shell cat ipc/current/objects 2>/dev/null) +CINIT_OS_OBJ=$(shell cat os/current/objects 2>/dev/null) + +CINIT_OBJ=$(CINIT_CORE_OBJ) $(CINIT_IPC_OBJ) $(CINIT_OS_OBJ) \ + $(CINIT_GENERIC_OBJ) $(CINIT_SVC_OBJ) + +# +# Dependencies +# +$(CINIT_OBJ): $(CINIT_HEADERS) + +# +# Client modules +# +CLIENT=client/msg_svc_on_off.o client/msg_change_status.o client/run_svc.o \ + client/exec_svc.o client/respawn_svc.o client/run_run_svcs.o \ + client/connect_sock.o client/begin_msg.o client/sig_terminate.o + +COMMUNICATION=comm/do_change_status.o comm/do_result.o comm/do_svc_name.o + +BOTH=generic/set_signals.o generic/mini_printf.o generic/usage.o + +OBJ=$(SERV) $(SERV_OS) $(CLIENT) $(BOTH) $(COMMUNICATION) + +CSVC_OBJ=util/cservice.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +CCO_OBJ=util/ccontrol.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +%.o: %.c + $(CC) -c -o $@ $< + +# +# End user target +# +#all: cinit cservice ccontrol sizecheck docs +all: cinit + +# +# First do configuration, so we include the right variables +# +Makefile: .configured + +.configured: ../conf/* + @../bin/cinit.configure.os + @../bin/cinit.configure.tools + @../bin/cinit.configure.ipc + @../bin/cinit.configure.mark + +$(CINIT_OBJ): $(CONFIG_H) + +cinit: $(CINIT_OBJ) + $(LD) $^ -o $@ + + +#$(CINIT_BIN): $(SBIN) $(OBJ) +# $(LD) $(LDFLAGS) $(OBJ) -o $@ +# $(STRIP) $@ + +sizecheck: cinit cservice + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l sbin/ > $$FILE; cat $$FILE + @echo -n "Source size (in KiB): " + @du -s $(SDIRS) | awk '{ sum+=$$1 } END { print sum }' +# @du -s bin client comm conf doc generic serv | awk '{ sum+=$1 } END { print sum }' + + + +.PHONY: clean +clean: + rm -f .configured + rm -f $(CINIT_OBJ) + rm -f ../tmpbin/* + +distclean: + rm -f os/current ipc/current + +$(CONFIG_H): ../conf/* + ../scripts/cinit.mkheader > $(CONFIG_H) + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +ccontrol: $(SBIN)/ccontrol + +$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) + $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ + $(STRIP) $@ + +install: install-dir cinit cservice ccontrol + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/Makefile.tests b/software/cinit/browse_source/cinit-0.3pre2/src/Makefile.tests new file mode 100644 index 00000000..88cbb5df --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/Makefile.tests @@ -0,0 +1,25 @@ +# +# Makefile for cinit tests +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +TEST_BUILD_ARGV=test/test_build_argv.o core/build_argv.o + +PROGS=test_build_argv test_build_argv_link + +tests: $(PROGS) + +test_build_argv: test/test_build_argv.o core/build_argv.o +test_build_argv_link: test/test_build_argv+link.o core/build_argv.o + +test_gen_svc_tree: test/test_gen_svc_tree.o svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/gen_svc_tree.o \ + generic/mini_printf.o \ + svc/list_display_all.o diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/core/build_argv.c b/software/cinit/browse_source/cinit-0.3pre2/src/core/build_argv.c new file mode 100644 index 00000000..bb72a9b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/core/build_argv.c @@ -0,0 +1,220 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Build **argv for execution in cinit way: + * 1. check whether cmd is a valid executable + * 2. try to read cmd.params and write paramaters + * 3. try to read cmd.env and setup environment + * + * Returns: + * BA_OK: Everything went well, you can use the struct + * BA_NOTFOUND: Binary executable is not available + * BA_PARAMS: Reading the parameters failed (ignoring non-existence!) + * BA_ENV: Reading the environment failed (same as above) + * BA_OTHER: Other error + */ + +#include /* open() */ +#include /* *alloc() */ +#include /* readlink */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* NULL */ +#include /* strchr */ +#include /* stat() */ + +#include "cinit.h" +#include "build_argv.h" + + /* + * FIXME: we are perhaps loosing a byte, the \0 for the full + * string of argv and envp! too tired to check. + * char *basename: something we should execute + * (*basename) + ".params" will be added as parameters + * (*basename) + ".env" will be added as environment + * + */ + + +int cinit_build_argv(char *basename, struct ba_argv *bav) +{ + int tmp; + int fd; + int argc; + char pathtmp[PATH_MAX+1]; + char *p; + char *sbuf = NULL; + struct stat buf; + + /* sane values */ + bav->argv = NULL; + bav->envp = NULL; + + printf("basename %s\n",basename); + + /*********************************************************************** + * Try to get realname (for links) + */ + if ( ( tmp = readlink(basename,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? */ + if(errno == ENOENT) { + return BA_E_NOTFOUND; + } + if (errno != EINVAL) { + return BA_E_OTHER; + } + tmp=strlen(basename); + strncpy(pathtmp,basename,tmp); + } + pathtmp[tmp] = '\0'; + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /*********************************************************************** + * prepare argv0 + */ + bav->argv = malloc( sizeof(char *) ); + if(bav->argv == NULL) return BA_E_MEM; + + *bav->argv = malloc( tmp ); + if(*(bav->argv) == NULL) return BA_E_MEM; + + strncpy(*(bav->argv),pathtmp,tmp); + + /********************** read params *********************/ + strcat(pathtmp,C_PARAMS); + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + return BA_E_PARAMS; + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + return BA_E_PARAMS; + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /*********************************************************************** + * Now split the string, converting \n to \0 + */ + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + + if(bav->argv == NULL) { + return BA_E_MEM; + } + + bav->argv[argc] = sbuf; /* here begins the current argument */ + + if(p != NULL) { /* found another \n */ + *p = '\0'; + } else { /* end of string */ + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(bav->argv == NULL) { + return BA_E_MEM; + } + bav->argv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,bav->argv[0]); + strcat(pathtmp,C_ENV); + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + return BA_E_ENV; + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + return BA_E_ENV; + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) { + return BA_E_MEM; + } + bav->envp[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) { + return BA_E_MEM; + } + bav->envp[argc] = NULL; + + return BA_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/core/cinit.c b/software/cinit/browse_source/cinit-0.3pre2/src/core/cinit.c new file mode 100644 index 00000000..645a3829 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/core/cinit.c @@ -0,0 +1,92 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The main file + * + */ + +#include /* getpid,chdir */ +#include /* str(ncmp,len,cpy,cat) */ +#include /* perror */ +#include /* malloc */ + +#include "cinit.h" /* general things */ +#include "messages.h" /* messages */ +#include "ipc.h" /* general ipc methods */ +#include "svc.h" /* gen_svc_tree */ + +struct listitem *svc_list = NULL; +struct dep *svc_init = NULL; + +int main(int argc, char **argv) +{ + char *initdir; +// pid_t cpid; + + initdir = CINIT_INIT; /* default init dir */ + + /* FIXME: RE-ENABLE as SOON AS PRODUCTIVE cpid = getpid(); + if(cpid != 1) { + mini_printf(CINIT_VERSION,2); + mini_printf(MSG_USAGE,2); + return 0; + }*/ + + set_signals(ACT_SERV); + + /* Look whether we should start a profile */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_SVCDIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_SVCDIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* FIXME: do we really need three calls? */ + mini_printf(MSG_BOOTING,1); mini_printf(initdir,1); mini_printf("\n",1); + + if(chdir(initdir) == -1) { + print_errno(initdir); + panic(); + } + + /* initialize ipc method */ + if(!cinit_ipc_init()) { + panic(); + } + + /* pre-calculate service tree */ + gen_svc_tree(initdir); + + /* start tree from the bottom */ + if(!tree_exec(svc_init)) return 1; + + mini_printf("test\n",1); + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* listen for incomming messages: should never return */ + if(!cinit_ipc_listen()) { + panic(); + } + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/core/do_reboot.c b/software/cinit/browse_source/cinit-0.3pre2/src/core/do_reboot.c new file mode 100644 index 00000000..c190f634 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/core/do_reboot.c @@ -0,0 +1,74 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "ipc.h" +#include "cinit.h" +#include "os.h" +#include "messages.h" + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void do_reboot(int signal) +{ + //struct listitem *tmp; + struct timespec ts; + //char **cmd; + //int i; + + /* shutdown all services: take care about the dependency tree */ + + /* do not listen to client requests anymore + * FIXME: perhaps before shutdown? */ + cinit_ipc_destroy(); + + /* now: all services are down, let's kill all other processes */ + if( kill(-1,SIGTERM) == -1) { + print_errno(MSG_TERMKILL); + } + + /* FIXME make SLEEP_KILL an optional configuration statement */ + ts.tv_sec = SLEEP_KILL; /* defined in conf/sleep_kill */ + ts.tv_nsec = 0; + nanosleep(&ts,NULL); + + if( kill(-1,SIGKILL) == -1) { + print_errno(MSG_KILLBILL); + } + + /* execute umount, as defined in conf/umount */ + + /* execute_sth(CINIT_UMOUNT); */ + + /* do what we really wanted to do */ + switch(signal) { + case SIGTERM: /* power off */ + LOG(MSG_POWER_OFF); + cinit_poweroff(); + break; + case SIGHUP: /* reboot */ + LOG(MSG_REBOOT); + cinit_reboot(); + break; + case SIGUSR1: /* halt */ + LOG(MSG_HALT); + cinit_halt(); + break; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/core/objects b/software/cinit/browse_source/cinit-0.3pre2/src/core/objects new file mode 100644 index 00000000..fd49e8d3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/core/objects @@ -0,0 +1,6 @@ +core/build_argv.o +core/cinit.o +core/panic.o +core/run_init_svc.o +core/set_signals.o +core/do_reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/core/panic.c b/software/cinit/browse_source/cinit-0.3pre2/src/core/panic.c new file mode 100644 index 00000000..39092aef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/core/panic.c @@ -0,0 +1,30 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something + */ + +#include "cinit.h" +#include + +void panic(void) +{ + char *nargv[2]; + + execute_sth(CINIT_PANIC); + + /*********************************************************************** + * THIS SHOULD NOT HAPPEN, fallback to hardcoded sulogin + * (conf/sulogin) + */ + nargv[0] = SULOGIN; + nargv[1] = NULL; + + execv(SULOGIN,nargv); + + /* there's nothing todo, if everything fails */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/core/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre2/src/core/run_init_svc.c new file mode 100644 index 00000000..42edb167 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/core/run_init_svc.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include /* _exit, fork */ + +#include "cinit.h" +#include "messages.h" +#include "ipc.h" + +int run_svc(char *rpath) { rpath = "test"; return 0; } /* a hack to compile cinit for now */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + if(!cinit_ipc_logon()) _exit(1); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/core/run_svc.c b/software/cinit/browse_source/cinit-0.3pre2/src/core/run_svc.c new file mode 100644 index 00000000..4a7eabf1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/core/run_svc.c @@ -0,0 +1,131 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +#error "needs to be cleaned up" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + print_errno(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + print_errno(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/core/set_signals.c b/software/cinit/browse_source/cinit-0.3pre2/src/core/set_signals.c new file mode 100644 index 00000000..57dfc242 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/core/set_signals.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2006-2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Define signal handlers + */ + + +#include +#include +#include "cinit.h" + +void sig_child(int signal) { signal=2; } /* HACK */ + +void set_signals(int action) +{ + struct sigaction sa; + + if(action == ACT_SERV) { + sa.sa_handler=sig_child; + } + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + if(action == ACT_SERV) { + sa.sa_handler=do_reboot; + } + sigaction(SIGHUP,&sa,NULL); /* reboot */ + sigaction(SIGTERM,&sa,NULL); /* poweroff */ + sigaction(SIGUSR1,&sa,NULL); /* halt */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/generic/execute_sth.c b/software/cinit/browse_source/cinit-0.3pre2/src/generic/execute_sth.c new file mode 100644 index 00000000..d2700fdf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/generic/execute_sth.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Executes something: replaces us + */ + +#include /* _exit */ +#include "cinit.h" +#include "build_argv.h" + +void execute_sth(char *basename) +{ + struct ba_argv bav; + int tmp; + + if( ( tmp = cinit_build_argv(basename,&bav) ) != BA_OK) { + if(tmp != BA_E_MEM) { + print_errno(basename); + } /* do not print something on memory errors */ + _exit(1); /* FIXME: adjust exit code? */ + } + + execve((bav.argv)[0],bav.argv,bav.envp); + print_errno(basename); + _exit(1); /* FIXME: return specific error code, so cinit knows + * what happened! - sure? perhaps this gets non + * standard errors from other programs, too ... */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre2/src/generic/mini_printf.c new file mode 100644 index 00000000..e4e16678 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/generic/mini_printf.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Print to the world! + * + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) return; + + p = str; + while ( *p ) p++; + + write(fd,str,(size_t) (p - str) ); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/generic/objects b/software/cinit/browse_source/cinit-0.3pre2/src/generic/objects new file mode 100644 index 00000000..ba33ac4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/generic/objects @@ -0,0 +1,5 @@ +generic/execute_sth.o +generic/mini_printf.o +generic/path_absolute.o +generic/path_append.o +generic/print_errno.o diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/generic/path_absolute.c b/software/cinit/browse_source/cinit-0.3pre2/src/generic/path_absolute.c new file mode 100644 index 00000000..ae524326 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/generic/path_absolute.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create an absulte path + */ + +#include /* chdir(),getcwd */ +#include /* PATH_MAX */ +#include "cinit.h" /* print_errno */ +#include "messages.h" /* print_errno */ + +int path_absolute(char *relpath, char *newpath, size_t size) +{ + char oldpath[PATH_MAX+1]; + + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_CHDIR); + return 0; + } + + if(chdir(relpath) == -1) { + print_errno(relpath); + return 0; + } + + if(!getcwd(newpath,size)) { + print_errno(relpath); + return 0; + } + + if(chdir(oldpath) == -1) { + print_errno(oldpath); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/generic/path_append.c b/software/cinit/browse_source/cinit-0.3pre2/src/generic/path_append.c new file mode 100644 index 00000000..361b349e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/generic/path_append.c @@ -0,0 +1,29 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create path to needs + */ + +#include /* strlen */ +#include /* PATH_MAX */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +int path_append(char *path, char *append) +{ + size_t end = strlen(path); + + + if(strcmp(&path[end-1],SLASH)) { + if((end + strlen(SLASH) + strlen(append)) > PATH_MAX) return 0; + strcat(path,SLASH); + } else { + if((end + strlen(append)) > PATH_MAX) return 0; + } + strcat(path,append); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/generic/print_errno.c b/software/cinit/browse_source/cinit-0.3pre2/src/generic/print_errno.c new file mode 100644 index 00000000..7415d556 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/generic/print_errno.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * stolen from tcpserver_blocker + * + * Author: Nico Schottelius + * Date: 2006-08-24 + * + * Print the error found in errno + */ + +#include /* strerror */ +#include /* errno */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +void print_errno(char *msg) +{ + if(msg) { + mini_printf(msg, FD_ERR); + mini_printf(": ", FD_ERR); + } + mini_printf(strerror(errno), FD_ERR); + mini_printf("\n", FD_ERR); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/generic/usage.c b/software/cinit/browse_source/cinit-0.3pre2/src/generic/usage.c new file mode 100644 index 00000000..076cfa9b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/generic/usage.c @@ -0,0 +1,23 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * usage: tell the world what we want - seriously no capitalism + * + */ + +#include +#include "cinit.h" + +/*********************************************************************** + * usage: tell the user what's wrong and a help text + */ +void usage(char *banner, char *text) +{ + /* print banner + error message */ + mini_printf(banner,1); + mini_printf(text,1); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/headers/build_argv.h b/software/cinit/browse_source/cinit-0.3pre2/src/headers/build_argv.h new file mode 100644 index 00000000..b61b27a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/headers/build_argv.h @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * build **argv + */ + +#ifndef CINIT_BA_HEADER +#define CINIT_BA_HEADER + +/***************************************************************************** + * Defines: return values + */ +enum { + BA_OK, + BA_E_NOTFOUND, + BA_E_PARAMS, + BA_E_ENV, + BA_E_MEM, + BA_E_OTHER +}; + +/***************************************************************************** + * Structures + */ +struct ba_argv { + char **argv; + char **envp; +}; + +/***************************************************************************** + * Functions + */ +int cinit_build_argv(char *basename, struct ba_argv *bav); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/headers/cinit.h b/software/cinit/browse_source/cinit-0.3pre2/src/headers/cinit.h new file mode 100644 index 00000000..e2083803 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/headers/cinit.h @@ -0,0 +1,86 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_H +#define _CINIT_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/*********************************************************************** + * Defines + */ +#define SLASH "/" +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC + +enum { /* FIXME: there are some default defines somewhere for that */ + FD_IN=0, + FD_OUT=1, + FD_ERR=2 +}; + +/*********************************************************************** + * Paths + */ +#define CINIT_SVCDIR CINIT_DIR SLASH SVCDIR +#define CINIT_INIT CINIT_SVCDIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK +#define CINIT_BIN PREFIX SLASH "sbin" SLASH "cinit" + +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC +#define CINIT_UMOUNT CINIT_CONFDIR SLASH C_UMOUNT + +/* actions for i/o handlers (see comm/do_*) */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* functions (used by server and client) */ +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +void usage(char *banner, char *stext); + +int do_svc_name(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* server functions */ +int run_init_svc(char *cinit_svc); +void sigio(int socket); +void do_reboot(int signal); +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +int msg_svc_on_off(char *svc, char action); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +int run_run_svcs(char *abspath); +pid_t exec_svc(char *abspath, int on); +pid_t respawn_svc(char *abspath); +int connect_sock(int socke); +char **read_file(char *file); +void sig_terminate(int signal); + +/* generic */ +void execute_sth(char *basename); +int path_append(char *path, char *append); +int path_absolute(char *relpath, char *buf, size_t size); + +/* util */ +int msg_reboot(char cmd); +void print_errno(char *text); + +/* os-functions */ +void cinit_reboot(void); +void cinit_halt(void); +void cinit_poweroff(void); + +#endif /* _CINIT_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/headers/comm.h b/software/cinit/browse_source/cinit-0.3pre2/src/headers/comm.h new file mode 100644 index 00000000..88f7c4fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/headers/comm.h @@ -0,0 +1,90 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#ifndef CINIT_COMM_HEADER +#define CINIT_COMM_HEADER + +#include /* PATH_MAX */ + +/*********************************************************************** + * Commands the clients may issue to us + * maximum number of commands: 2^8 = 256 + */ +enum commands { + CMD_START_SVC=1, /* the client wants US to start a service */ + CMD_START_SVC_ONLY, /* start this service without dependencies */ + CMD_STOP_SVC, /* stop svc and all svcs that need it */ + CMD_STOP_SVC_ONLY, /* we should stop _only_ this service */ + CMD_STOP_SVC_WANTS, /* stop svc, all svcs that need or want it */ + CMD_CHG_STAT, /* the client reports a status change */ + CMD_RESCUE, /* we should start the rescue mode */ + CMD_HALT, /* halt the system */ + CMD_REBOOT, /* reboot the system */ + CMD_POWEROFF, /* poweroff the system */ + CMD_WBOOT, /* shutdown and restart everything */ + CMD_INFO /* send information about that service */ +}; + +/*********************************************************************** + * status of a service and return codes - errors and success + */ +enum svc_status { + ST_TMPNOW=1, /* the client is now starting the service NEEDED??? */ + ST_NOTEXIST, /* service does not exist */ + + ST_NEED_FAIL, /* failed to start a need for this service */ + ST_FAIL, /* failed to start service */ + + ST_OFF, /* service is off */ + ST_OFF_ALL, /* service and those that need it are off */ + ST_OFF_ALL_F, /* same, but something failed */ + ST_OFF_WANTS, /* service + those that need or want it are off */ + ST_OFF_WANTS_F, /* same, but something failed */ + + ST_TMP, /* currently working on it */ + ST_ONCE, /* executed once */ + ST_RESPAWN /* running and respawning */ +}; + +/* old + RT_ERR_COMM, * communication failed * + RT_ERR, * service starting failed * + RT_UNSPEC, * some kind of error, unspecified * + RT_SUCCESS, * successfully started: respawning or once * + RT_SVC_FAILED, * tried earlier, service failed, won't retry * + +*/ + +/*********************************************************************** + * messages from the client + * Prefix: qst_ (question) + */ +struct msg_client { + pid_t pid; /* pid of the telling client */ + char cmd; /* which cmd is issued to us */ + char status; /* status of the service */ + char svc[PATH_MAX]; /* name of the service */ + char svc_orig[PATH_MAX]; /* the service, which wants to start us */ +}; + +/*********************************************************************** + * messages from the server + * Prefix: asw_ (answer) + */ + +/*********************************************************************** + * return short status + */ +struct asw_sstatus { + long mtype; + char status; + char msg[PATH_MAX]; +}; + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/headers/ipc.h b/software/cinit/browse_source/cinit-0.3pre2/src/headers/ipc.h new file mode 100644 index 00000000..66b3bc86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/headers/ipc.h @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Prototypes for ipc handler + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +/***************************************************************************** + * Functions: in server + */ +int cinit_ipc_init(void); /* init in init */ +int cinit_ipc_listen(void); /* listen in init */ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + +/***************************************************************************** + * Functions: in clients + */ +int cinit_ipc_logon(void); /* logon to init (client init) */ +int cinit_ipc_connect(void); /* connect to init */ +int cinit_ipc_csend(void *data); /* send to the server from a client */ + +/***************************************************************************** + * Functions: shared + */ + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/headers/listing b/software/cinit/browse_source/cinit-0.3pre2/src/headers/listing new file mode 100644 index 00000000..736feba6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/headers/listing @@ -0,0 +1,5 @@ +headers/cinit.h +headers/config.h +headers/ipc.h +headers/messages.h +headers/os.h diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/headers/messages.h b/software/cinit/browse_source/cinit-0.3pre2/src/headers/messages.h new file mode 100644 index 00000000..1ae95e2c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/headers/messages.h @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_MSG_H +#define _CINIT_MSG_H + +/* version */ +#define CINIT_VERSION "cinit-" VERSION +#define MSG_BOOTING CINIT_VERSION ": Booting from " + +#define MSG_DP ": " + +/* Messages to the outside */ +#define MSG_BIND "bind" +#define MSG_CONNECT "connect" +#define MSG_FCNTL "fcntl" +#define MSG_KILLBILL "sigkill" +#define MSG_LISTEN "listen" +#define MSG_SOCKET "socket" +#define MSG_TERMKILL "sigterm" +#define MSG_USAGE_1 ": fast executing, small and simple init " +#define MSG_USAGE_2 "with support for profiles\n" +#define MSG_USAGE_3 "\nError: cinit must be started as PID 1.\n" +#define MSG_USAGE MSG_USAGE_1 MSG_USAGE_2 MSG_USAGE_3 +#define MSG_ERR_FORK "fork" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_OPEN "open" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_READ "read" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" + +#define MSG_ERR_DEPS "Too many dependencies" +#define MSG_ERR_ACCEPT "accept" +#define MSG_ERR_WAITPID "waitpid" +#define MSG_ERR_POLL "poll" +#define MSG_ERR_MODIFY "modify list failed" +#define MSG_ERR_COMM "Communication failed" + +#define MSG_ERR_LESS_ARGS "Too less arguments!" +#define MSG_ERR_BAD_ARGS "Wrong arguments / parameter" +#define MSG_ERR_ARGS_LEN "Wrong parameter length" + +#define LOG_SVC_STOPED "Service stoped" +#define LOG_SVC_ONCE "Started once" +#define LOG_SVC_RESPAWN "Respawns now" +#define LOG_SVC_FAIL "Service failed" +#define LOG_NEED_FAIL "One or more need failed" +#define LOG_SVC_FAILED "Service already failed, not starting." +#define LOG_SVC_NOTEXIST "Service does not exist" + +#define MSG_START_SVC "Starting " +#define MSG_STOP_SVC "Stoping " +#define MSG_EXEC_FAILED "Failed to execute " + +#define MSG_POWER_OFF "Powering off..." +#define MSG_HALT "Halting system ..." +#define MSG_REBOOT "Rebooting ..." +#define MSG_RESCUE "Switching to rescue mode ..." +#define MSG_UPDATE "Updating cinit ..." +#define MSG_HOT_REBOOT "Hot reboot in progress ..." + +#define MSG_SHOULD_NOT_HAPPEN "This should not happen, I do not know what todo!" + +/* DEBUG */ +#ifdef DEBUG +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) +#endif + +/* macros */ +#define SERVICE_LOG(svc,message) { \ + mini_printf(svc,1); \ + mini_printf(MSG_DP,1); \ + mini_printf(message,1); \ + mini_printf("\n",1); \ +} +#define LOG(s) { \ + mini_printf(s,1); \ + mini_printf("\n",1); \ +} +#define P_START_SERVICE(name) { mini_printf(MSG_START_SVC,1); mini_printf(name,1); mini_printf("\n",1); } +#define P_EXEC_FAILED(name) { mini_printf(MSG_EXEC_FAILED,1); mini_printf(name,1); mini_printf("\n",1); } + +#endif /* _CINIT_MSG_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/headers/os.h b/software/cinit/browse_source/cinit-0.3pre2/src/headers/os.h new file mode 100644 index 00000000..e36d5a8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/headers/os.h @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * os specific functions + */ + +#ifndef CINIT_OS_HEADER +#define CINIT_OS_HEADER + +/***************************************************************************** + * Functions + */ +void cinit_halt(void); +void cinit_poweroff(void); +void cinit_reboot(void); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/headers/svc.h b/software/cinit/browse_source/cinit-0.3pre2/src/headers/svc.h new file mode 100644 index 00000000..cb48b976 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/headers/svc.h @@ -0,0 +1,63 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_SVC_H +#define _CINIT_SVC_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* service list */ +struct listitem { + struct listitem *prev; /* previous item */ + struct listitem *next; /* next item */ + + char *abs_path; /* name of service */ + int status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + + + struct dep *wanted; /* list of services that want this service */ + struct dep *needed; /* list of services that need this service */ + + struct dep *wants; /* list of services that this service wants */ + struct dep *needs; /* list of services that this service needs */ +}; + +/* list of dependencies */ +struct dep { + struct dep *prev; + struct dep *next; + struct listitem *svc; +}; + +/* variables */ +extern struct listitem *svc_list; /* the process linked chain */ +extern struct dep *svc_init; /* the services to start */ + +/* list functions */ +struct listitem *list_insert(char *path, int status); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); +struct listitem *list_search(char *path); +inline struct listitem *list_search_pid(pid_t pid); +int list_display_all(); + + +/* service */ +int svc_known(char *svc); +struct listitem *svc_create(char *svc); +int gen_svc_tree(char *svc); +int check_add_deps(struct listitem *svc, int type); +int dep_entry_add(struct dep **list, struct dep *new); +int tree_exec(struct dep *start); + + +enum dep_types { + DEP_WANTS, + DEP_NEEDS +}; + +#endif /* _CINIT_SVC_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/README.text b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/README.text new file mode 100644 index 00000000..c9a1acf2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/README.text @@ -0,0 +1,20 @@ +cinit/src/ipc/msgq: About this msqg implementation +=================================================== +Nico Schottelius +0.1, Initial Version from 2006-08-04 +:Author Initials: NS + +Intro here + +Introduction +------------ + +cinit opens a + +Files +----- +- README.text: This file +- cinit_init_ipc.c: Init +msgq.h +objects + diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_connect.c b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_connect.c new file mode 100644 index 00000000..a744980c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_connect.c @@ -0,0 +1,70 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel */ + k_in = ftok(IPC_KEY,IPC_IN); + k_out = ftok(IPC_KEY,IPC_OUT); + + if(k_in == -1 || k_out == -1) { + perror("ftok"); + exit(1); + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + perror("msgget"); + exit(1); + } + + /* wrong tabsto ;-) */ +while (1) { + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror("msgrcv"); + exit(1); + } + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_csend.c b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_csend.c new file mode 100644 index 00000000..43a0012f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_csend.c @@ -0,0 +1,62 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_logon(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(IPC_KEY,IPC_OUT); + k_out = ftok(IPC_KEY,IPC_IN); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_destroy.c b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_destroy.c new file mode 100644 index 00000000..299885c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_destroy.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Destory ipc mechanism, cinit is gonna die soon. + * + */ + +#include /* msgget */ +#include /* NULL */ + +#include "msgq.h" /* mq_in, mq_out */ +#include "cinit.h" /* print_errno */ + +void cinit_ipc_destroy(void) +{ + if(msgctl(mq_in,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } + if(msgctl(mq_out,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_init.c new file mode 100644 index 00000000..9ae072a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_init.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include /* ftok */ +#include /* msgget */ +#include /* msgget */ + +#include "cinit.h" +#include "config.h" +#include "msgq.h" + +int cinit_ipc_init(void) +{ + key_t k_tmp; + + /* to_server */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + if(k_tmp == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + mq_in = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_in == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + /* to_client */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + if(k_tmp == -1) { + perror(MSG_MSGQ_FTOK); + return 0; + } + mq_out = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_out == -1) { + perror(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_listen.c new file mode 100644 index 00000000..d21e561e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_listen.c @@ -0,0 +1,47 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ +#include /* perror */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + + struct msg_client m_client; + + while (1) { + /* FIXME: change msg structure */ + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror(MSG_MSGQ_MSGRCV); + } + + printf("pid: %d, m_client\n",m_client.pid); + + /* use pid as the message type + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + return 0; + } */ + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_logoff.c b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_logoff.c new file mode 100644 index 00000000..a744980c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_logoff.c @@ -0,0 +1,70 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel */ + k_in = ftok(IPC_KEY,IPC_IN); + k_out = ftok(IPC_KEY,IPC_OUT); + + if(k_in == -1 || k_out == -1) { + perror("ftok"); + exit(1); + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + perror("msgget"); + exit(1); + } + + /* wrong tabsto ;-) */ +while (1) { + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror("msgrcv"); + exit(1); + } + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_logon.c b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_logon.c new file mode 100644 index 00000000..08c0e252 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_logon.c @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "cinit.h" /* print_errno */ +#include "msgq.h" + +int cinit_ipc_logon(void) +{ + key_t k_in, k_out; /* FIXME: remove one variable */ + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + k_out = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_sclose.c b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_sclose.c new file mode 100644 index 00000000..69165e4d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/cinit_ipc_sclose.c @@ -0,0 +1,14 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Close the ressources from the server, clean state for forks. + * + */ + +int cinit_ipc_sclose(void) +{ + return 1; /* nothing to do when using message queues */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/msgq.h b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/msgq.h new file mode 100644 index 00000000..01c6e769 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/msgq.h @@ -0,0 +1,52 @@ +/* + * (c) 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * part of cinit + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +#include /* structures */ + +/*********************************************************************** + * configuration + */ + +#define MSGQ_PATHNAME "/bin/sh" /* should be on every *nix */ +#define MSGQ_TO_SERVER 'i' /* also for ftok */ +#define MSGQ_TO_CLIENT 'o' /* also for ftok */ +#define MSGQ_PERMS 0660 /* queue permissions */ + +/*********************************************************************** + * global variables + */ +int mq_in; /* input */ +int mq_out; /* output */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + pid_t pid; + struct msg_client msg; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server_short { + long mtype; + struct asw_sstatus answer; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_FTOK "ftok" +#define MSG_MSGQ_MSGGET "msgget" +#define MSG_MSGQ_MSGRCV "msgrcv" +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/objects b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/objects new file mode 100644 index 00000000..7c99d09f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/msgq/objects @@ -0,0 +1,5 @@ +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c new file mode 100644 index 00000000..88c310f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c @@ -0,0 +1,125 @@ +/* + * (c) 2005, 2006 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * create a socket, when we recieved a signal + */ +int main(int argc, char **argv) +{ + struct sockaddr_un addr; + struct pollfd plist; + char *initdir; + + list = NULL; /* list of services is empty currently */ + initdir = CINIT_INIT; /* default init dir */ + + cpid = getpid(); + if(cpid != 1) { + usage(MSG_USAGE,MSG_NOT_ONE); + } + + set_signals(ACT_SERV); /* set signal handlers */ + + /* read args, profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* tell the world we are there FIXME: do we really need three calls? */ + mini_printf(MSG_CINIT,1); mini_printf(initdir,1); mini_printf("\n",1); + + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c new file mode 100644 index 00000000..a174d78d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c @@ -0,0 +1,141 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int socket) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + while ( (nsock = accept(socket,(struct sockaddr *) NULL, + (socklen_t *) NULL)) != -1) { + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = ST_FAIL; + } else { + status = RT_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP (RESPAWNING) *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; + list_tmp = list_search(buf); + + /* FIXME: + - handle off + - handle switching off once services + - perhaps remove old cinit code, which has respawing childs + */ + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + /* kill cinit watcher, which kills the real process */ + kill(list_tmp->pid,SIGTERM); + + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + } + + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + status = ST_FAIL; + } else { /* return status */ + status = list_tmp->status; + } + } else { /* no service there */ + status = RT_NOTEXIST; + } + do_result(nsock,&status); + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + SERVICE_LOG(buf,MSG_ERR_MODIFY); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + case CMD_UPDATE: + sig_reboot(SIGCONT); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } + + /* hier kommt man haeufiger herein, interrupted system call */ + if( errno != EAGAIN && errno != EINTR) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/os/freebsd/halt.c b/software/cinit/browse_source/cinit-0.3pre2/src/os/freebsd/halt.c new file mode 100644 index 00000000..cd4dda1f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/os/freebsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/os/freebsd/objects b/software/cinit/browse_source/cinit-0.3pre2/src/os/freebsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/os/freebsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/os/freebsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre2/src/os/freebsd/poweroff.c new file mode 100644 index 00000000..61e5ef5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/os/freebsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWEROFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/os/freebsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre2/src/os/freebsd/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/os/freebsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/os/linux/halt.c b/software/cinit/browse_source/cinit-0.3pre2/src/os/linux/halt.c new file mode 100644 index 00000000..0ecf8ced --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/os/linux/halt.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * How to halt the system + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT_SYSTEM); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/os/linux/objects b/software/cinit/browse_source/cinit-0.3pre2/src/os/linux/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/os/linux/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/os/linux/poweroff.c b/software/cinit/browse_source/cinit-0.3pre2/src/os/linux/poweroff.c new file mode 100644 index 00000000..5f503678 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/os/linux/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff the system + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWER_OFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/os/linux/reboot.c b/software/cinit/browse_source/cinit-0.3pre2/src/os/linux/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/os/linux/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/os/openbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre2/src/os/openbsd/halt.c new file mode 100644 index 00000000..cd4dda1f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/os/openbsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/os/openbsd/objects b/software/cinit/browse_source/cinit-0.3pre2/src/os/openbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/os/openbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/os/openbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre2/src/os/openbsd/poweroff.c new file mode 100644 index 00000000..45168122 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/os/openbsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_HALT | RB_POWERDOWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/os/openbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre2/src/os/openbsd/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/os/openbsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/svc/check_add_deps.c b/software/cinit/browse_source/cinit-0.3pre2/src/svc/check_add_deps.c new file mode 100644 index 00000000..e625685f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/svc/check_add_deps.c @@ -0,0 +1,132 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +/* FIXME: clean headers */ +#include +#include +#include /* PATH_MAX */ + +#include +#include +#include +#include +#include +#include +#include + + +#include /* PATH_MAX */ +#include /* malloc */ + +#include "cinit.h" +#include "messages.h" +#include "svc.h" + +int check_add_deps(struct listitem *svc, int type) +{ + char buf[PATH_MAX+1]; + char oldpath[PATH_MAX+1]; + struct dirent *tdirent; + struct dep *deps = NULL; + struct listitem *ltmp; + DIR *d_tmp; + + /* remember where we started */ + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_CHDIR); + return 0; + } + + /* Create path */ + strcpy(buf,svc->abs_path); + if(type == DEP_NEEDS) { + if(!path_append(buf,C_NEEDS)) return 0; + } else { + if(!path_append(buf,C_WANTS)) return 0; + } + + d_tmp = opendir(buf); + if(d_tmp == NULL) { + if(errno != ENOENT) { + print_errno(buf); + return 0; + } + return 1; /* it's fine when there's no needs */ + } + + if(chdir(buf) == -1) { /* change to needs or wants */ + print_errno(buf); + return 0; + } + + while((tdirent=readdir(d_tmp))!=NULL) { + if(*(tdirent->d_name)=='.') continue; /* ignore .* */ + + /* skip non-working directories */ + if(!path_absolute(tdirent->d_name,buf,PATH_MAX+1)) continue; + + /* FIXME: Debug */ + mini_printf("cad::",1); + mini_printf(tdirent->d_name,1); + mini_printf(" -> ",1); + mini_printf(buf,1); + mini_printf("\n",1); + + /* 1. create the service we depend on + * 2. initialize its dependencies + */ + if(!gen_svc_tree(buf)) return 0; + + /* We need ALL dependencies, as we are called only once + * per service; no need to test that first! + * + * And the other service CANNOT know anything about us yet, + * so we always add us to its list. + */ + + /* Dependencies: + * - a.needs b; add b to the list of dependencies. + * - a.needs b; add a to the list of needed by b. + * + * 1. check whether the dependency already exists + * 2. otherwise add it + * 3. do it once for needs, once for needed_by + */ + + /* find the other service */ + ltmp = list_search(buf); + if(!ltmp) return 0; + + deps = malloc(sizeof(struct dep)); + if(!deps) return 0; + deps->svc = svc; + if(type == DEP_NEEDS) { + dep_entry_add(&(ltmp->needed),deps); + + /* allocate new memory for the second dependency list */ + deps = malloc(sizeof(struct dep)); + if(!deps) return 0; + deps->svc = ltmp; + dep_entry_add(&(svc->needs),deps); + } else { + dep_entry_add(&(ltmp->wanted),deps); + deps = malloc(sizeof(struct dep)); + if(!deps) return 0; + deps->svc = ltmp; + dep_entry_add(&(svc->wants),deps); + } + } + if(chdir(oldpath) == -1) { + print_errno(buf); + return 0; + } + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/svc/dep_entry_add.c b/software/cinit/browse_source/cinit-0.3pre2/src/svc/dep_entry_add.c new file mode 100644 index 00000000..380e32e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/svc/dep_entry_add.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include "svc.h" + +/* + * list: pointer to the list + * new: pointer to data to insert (already filled up) + */ +int dep_entry_add(struct dep **list, struct dep *new) +{ + if( *list == NULL ) { /* new list */ + *list = new; + (*list)->prev = *list; + (*list)->next = *list; + } else { /* already existing */ + new->next = *list; /* new-> first */ + new->prev = (*list)->prev; /* last <- new */ + (*list)->prev->next = new; /* last -> new */ + (*list)->prev = new; /* new <- first */ + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/svc/dep_search.c b/software/cinit/browse_source/cinit-0.3pre2/src/svc/dep_search.c new file mode 100644 index 00000000..46d993bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/svc/dep_search.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Search in the list + */ + +#include /* NULL */ +#include /* strcmp */ +#include "cinit.h" +#include "svc.h" + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if( list == NULL ) { /* think positive */ + return NULL; + } else { + tmp = list; + } + + do { + if( !strcmp(path, tmp->abs_path) ) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/svc/gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre2/src/svc/gen_svc_tree.c new file mode 100644 index 00000000..3236b490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/svc/gen_svc_tree.c @@ -0,0 +1,43 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +#include +#include "cinit.h" +#include "svc.h" + +int gen_svc_tree(char *svc) +{ + struct listitem *li; + struct dep *deps; + + mini_printf("gen_svc_tree: ",1); + mini_printf(svc,1); + mini_printf("\n",1); + + /* only do something if the service is not already known */ + if(svc_known(svc)) return 1; + + /* create a template, so other instances won't try to recreate us */ + if(!(li=svc_create(svc))) return 0; + + if(!check_add_deps(li,DEP_NEEDS)) return 0; + if(!check_add_deps(li,DEP_WANTS)) return 0; + + if(!li->wants && !li->needs) { + mini_printf("NO: Service has no dependencies, end service\n",1); + deps = malloc(sizeof(struct dep)); + if(!deps) return 0; + deps->svc = li; + mini_printf(deps->svc->abs_path,1); + mini_printf("\n",1); + dep_entry_add(&svc_init,deps); + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_delete.c b/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_delete.c new file mode 100644 index 00000000..10a7e218 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_delete.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "svc.h" + +/* ... */ +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if( tmp == NULL ) { + return 0; + } + + tmp->next->prev = tmp->prev; + tmp->prev->next = tmp->next; + free(tmp->abs_path); + free(tmp); + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_display_all.c b/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_display_all.c new file mode 100644 index 00000000..65c7b3a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_display_all.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Show all list elements - mainly for debugging + */ + +#include /* NULL */ +#include "cinit.h" +#include "svc.h" + +int list_display_all() +{ + struct listitem *tmp; + + if( svc_list == NULL ) { + return 0; + } else { + tmp = svc_list; + } + + do { + mini_printf("Service: ",1); + mini_printf(tmp->abs_path,1); + mini_printf("\n",1); + tmp = tmp->prev; + } while(tmp != svc_list); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_insert.c b/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_insert.c new file mode 100644 index 00000000..6b6568c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_insert.c @@ -0,0 +1,44 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include /* bzero / memset */ +#include "cinit.h" +#include "svc.h" +#include "messages.h" + +struct listitem *list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc( sizeof( struct listitem ) ); + if( tmp == NULL ) return NULL; + memset( tmp, '\0', sizeof( struct listitem ) ); + + if( svc_list == NULL ) { /* list is empty, we have to init it */ + svc_list = tmp; + svc_list->next = svc_list; + svc_list->prev = svc_list; + } else { /* list has members,add this one */ + tmp->next = svc_list; /* begin after the new element */ + tmp->prev = svc_list->prev; /* change to the ex-last */ + svc_list->prev->next = tmp; /* change last element */ + svc_list->prev = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) return NULL; + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_modify.c b/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_modify.c new file mode 100644 index 00000000..4a93c41c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_modify.c @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "comm.h" /* for ST_OFF */ +#include "svc.h" /* for ST_OFF */ + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + +// D_PRINTF(path); + + tmp = list_search(path); + if( tmp == NULL ) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_search.c b/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_search.c new file mode 100644 index 00000000..bb8d4e1c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_search.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* NULL */ +#include /* strcmp */ +#include "cinit.h" +#include "svc.h" + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if( svc_list == NULL ) { /* think positive */ + return NULL; + } else { + tmp = svc_list; + } + + do { + if( !strcmp(path, tmp->abs_path) ) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_search_pid.c b/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_search_pid.c new file mode 100644 index 00000000..a199e734 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/svc/list_search_pid.c @@ -0,0 +1,37 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "svc.h" + +/* find service by pid, needs to be online because it is called + * by a signal handler + */ +inline struct listitem *list_search_pid(pid_t pid) +{ + struct listitem *tmp; + + if( svc_list == NULL ) { + return NULL; + } else { + tmp = svc_list; + } + + do { + if( pid == tmp->pid) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/svc/objects b/software/cinit/browse_source/cinit-0.3pre2/src/svc/objects new file mode 100644 index 00000000..0b24afa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/svc/objects @@ -0,0 +1,12 @@ +svc/gen_svc_tree.o +svc/list_delete.o +svc/list_display_all.o +svc/list_insert.o +svc/list_modify.o +svc/list_search.o +svc/list_search_pid.o +svc/svc_known.o +svc/svc_create.o +svc/check_add_deps.o +svc/dep_entry_add.o +svc/tree_exec.o diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/svc/svc_add_needs.c b/software/cinit/browse_source/cinit-0.3pre2/src/svc/svc_add_needs.c new file mode 100644 index 00000000..cc03727d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/svc/svc_add_needs.c @@ -0,0 +1,67 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +//#include +//#include +#include "cinit.h" +#include "messages.h" + +int svc_add_needs(char *needs, char *is_needed) +{ + struct listitem *svc_needs, *svc_is_needed; + + + /* retrieve service entries in global service list */ + svc_needs = svc_is_needed = NULL; + svc_needs = list_search(needs); + svc_is_needed = list_search(is_needed); + + /* and exit if one is missing */ + if( !svc_needs || !svc_is_needed ) { + return 0; + } + + /* first add needs */ + + /* now add needed_by */ + + malloc... /* for adding */ + + if(svc->needs == NULL) { + svc->needs = neu; + } else { + svc->next = neu; + } + + /* write generic function for dependencies or even all lists */ + dep_entry_add(list_pointer,new_entry); + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members,add this one */ + tmp->after = list; /* begin after the new element */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/svc/svc_create.c b/software/cinit/browse_source/cinit-0.3pre2/src/svc/svc_create.c new file mode 100644 index 00000000..249d6b16 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/svc/svc_create.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include "svc.h" + +/* checking for existence is done before! */ +struct listitem *svc_create(char *svc) +{ + return list_insert(svc,-1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/svc/svc_known.c b/software/cinit/browse_source/cinit-0.3pre2/src/svc/svc_known.c new file mode 100644 index 00000000..c2baf28e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/svc/svc_known.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include "svc.h" + +int svc_known(char *svc) +{ + return (list_search(svc) != NULL) ? 1 : 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/svc/tree_exec.c b/software/cinit/browse_source/cinit-0.3pre2/src/svc/tree_exec.c new file mode 100644 index 00000000..4ed9d20a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/svc/tree_exec.c @@ -0,0 +1,64 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + +#include /* _exit, fork */ + +#include "cinit.h" +#include "messages.h" /* D_PRINTF */ +#include "svc.h" /* svc_init */ + +/* some thoughts... + * + * - we already generated the tree, we now need to start it from + * the ends + * + * - after starting the first service we have to care about SIG_CHILD + * to record changes + * + * - we execute all services in parallel without problems, because of + * SIG_CHILD notification + * + * - After successfully starting the service we start the service that + * need or want that service + * + * + * + */ + +int tree_exec(struct dep *start) +{ + struct dep *tmp; + + if(start == NULL) return 1; + + //tmp = start->next; + tmp = start; + + mini_printf("Test 01\n",1); + do { + mini_printf(tmp->svc->abs_path,1); + mini_printf("\n",1); + +// tmp->svc->pid = fork(); + + +// if(tmp->svc->pid == -1) return 0; + + // if(tmp->svc->pid == 0) { /* child code */ + // execute_sth(tmp->svc->abs_path); +// _exit(1); + // } + + //tmp = tmp->next; + tmp = tmp->prev; + } while(tmp != start); + mini_printf("Test 02\n",1); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/test/test_build_argv+link.c b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_build_argv+link.c new file mode 100644 index 00000000..e37169fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_build_argv+link.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec_link"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/test/test_build_argv.c b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_build_argv.c new file mode 100644 index 00000000..0b2678be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_build_argv.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec new file mode 100644 index 00000000..e5cf3f01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec @@ -0,0 +1,7 @@ +#!/bin/sh +# Nico Schottelius +# Test-skript for cinit + +echo '$0': "$0" +echo '$@': "$@" +echo 'cinit_is_great:' $cinit_is_great diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec.env b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec.env new file mode 100644 index 00000000..853e0663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec.env @@ -0,0 +1 @@ +cinit_is_great=yes diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec.params b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec.params new file mode 100644 index 00000000..afe0f2ef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec.params @@ -0,0 +1 @@ +Let's see if we read the arguments....YES! diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec_link b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec_link new file mode 120000 index 00000000..c2ec9306 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec_link @@ -0,0 +1 @@ +test_exec \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec_link.env b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec_link.env new file mode 120000 index 00000000..30ea4990 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec_link.env @@ -0,0 +1 @@ +test_exec.env \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec_link.params b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec_link.params new file mode 120000 index 00000000..0b77c256 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_exec_link.params @@ -0,0 +1 @@ +test_exec.params \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre2/src/test/test_gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_gen_svc_tree.c new file mode 100644 index 00000000..93ad54ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/src/test/test_gen_svc_tree.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test gen_svc_tree + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + gen_svc_tree("/etc/cinit/svc/init"); + list_display_all(); +} diff --git a/software/cinit/browse_source/cinit-0.3pre2/util/README b/software/cinit/browse_source/cinit-0.3pre2/util/README new file mode 100644 index 00000000..782cdc8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/util/README @@ -0,0 +1,2 @@ +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.3pre2/util/ccontrol.c b/software/cinit/browse_source/cinit-0.3pre2/util/ccontrol.c new file mode 100644 index 00000000..95bc5212 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/util/ccontrol.c @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * ccontrol: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define USAGE_TEXT "ccontrol - control cinit\n\n" \ + "Usage:\n\nccontrol -[phurs]\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-u\t- (update) Reboot (warm) and update cinit\n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n\n" \ + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * ccontrol: control cinit + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 2) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + + switch(argv[1][1]) { + case 'p': /* power off */ + LOG(MSG_POWER_OFF); + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + LOG(MSG_HALT); + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + LOG(MSG_REBOOT); + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + LOG(MSG_RESCUE); + msg_reboot(CMD_RESCUE); + break; + + case 'u': /* update */ + LOG(MSG_UPDATE); + msg_reboot(CMD_UPDATE); + break; + + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* cinit-0.2 return codes implemented - nothing changed*/ diff --git a/software/cinit/browse_source/cinit-0.3pre2/util/cservice.c b/software/cinit/browse_source/cinit-0.3pre2/util/cservice.c new file mode 100644 index 00000000..66be6563 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/util/cservice.c @@ -0,0 +1,164 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * cservice: control cinit services + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit services + */ + +#define USAGE_TEXT "cservice - start and stop cinit services\n\n" \ + "cservice -[ear] \n" \ + "\t-e\t- (ein,on ) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n" \ + "\t-r\t- (restart) stop and start a service\n" + +/*********************************************************************** + * fuzzy_path: allow other kinds of path specification .. + */ +char *fuzzy_path(char *rpath) +{ + char pathtmp[PATH_MAX]; + char *re = NULL; + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return NULL; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(rpath); + return NULL; + } + + re = malloc( strlen(pathtmp) + 1); + + if(re != NULL) { + strcpy(re,pathtmp); + } + + return re; +} + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + char *real_name = NULL; + + /* argv */ + if(argc != 3) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + if(strlen(argv[1]) != 2) C_USAGE(MSG_ERR_ARGS_LEN); + + real_name = fuzzy_path(argv[2]); + + /* fuzzy path failed, exit! */ + if(real_name == NULL) { + return 1; + } + switch(argv[1][1]) { + case 'a': /* aus */ + case 'r': /* restart */ + switch( msg_svc_on_off(real_name,CMD_STOP_SVC) ) { + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_OFF: + SERVICE_LOG(real_name,LOG_SVC_STOPED); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + /* FIX THIS AFTER cinit-0.2 */ + case RT_TMPNOW: + case RT_ERR: + case RT_SVC_FAILED: + case RT_UNSPEC: + case RT_SUCCESS: + case ST_NEED_FAIL: + case ST_TMP: + case ST_ONCE: + case RT_NOTEXIST: + case ST_RESPAWN: +// SERVICE_LOG(real_name,"Ein bekanntest ding"); + break; +/* default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; */ + } + if( argv[1][1] == 'a') break; /* only continue if restarting */ + + case 'e': /* ein */ + switch (run_svc(real_name)) { /* run_svc fuzzys itself */ + case RT_NOTEXIST: + SERVICE_LOG(real_name,LOG_SVC_NOTEXIST); + break; + case RT_SVC_FAILED: + SERVICE_LOG(real_name,LOG_SVC_FAILED); + break; + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_ONCE: + SERVICE_LOG(real_name,LOG_SVC_ONCE); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + case ST_RESPAWN: + SERVICE_LOG(real_name,LOG_SVC_RESPAWN); + break; + case ST_NEED_FAIL: + SERVICE_LOG(real_name,LOG_NEED_FAIL); + break; + default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; + } + break; + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* uses cinit-0.2 return code style */ diff --git a/software/cinit/browse_source/cinit-0.3pre2/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.3pre2/util/msg_reboot.c new file mode 100644 index 00000000..efe78ec6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre2/util/msg_reboot.c @@ -0,0 +1,21 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + if(!begin_msg(cmd)) return 0; + close(sock); + return 1; +} +/* clean for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre3/ b/software/cinit/browse_source/cinit-0.3pre3/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.3pre3/.exclude b/software/cinit/browse_source/cinit-0.3pre3/.exclude new file mode 100644 index 00000000..1a2d31e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/.exclude @@ -0,0 +1,2 @@ +tmp +.git diff --git a/software/cinit/browse_source/cinit-0.3pre3/.gitignore b/software/cinit/browse_source/cinit-0.3pre3/.gitignore new file mode 100644 index 00000000..0f53ad16 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/.gitignore @@ -0,0 +1,14 @@ +*.o +*.a +*0? +MT +ddoc +contrib+tools/cinit.graph.text +config.h +sbin +tmp +os/current +tmpbin +src/os/current +src/ipc/current +src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/CHANGES b/software/cinit/browse_source/cinit-0.3pre3/CHANGES new file mode 100644 index 00000000..79e1facb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/CHANGES @@ -0,0 +1,39 @@ +cinit-0.3pre3: + - Finished execution all services via the reversed service tree. + +cinit-0.3pre2: + - Finished generation of the dependency tree. + +cinit-0.3pre1: + - cinit should now compile on mostly all unices + - introduced much new code + - THIS IS A DEVELOPER RELEASE, NOT USABLE IN PRODUCTION ENVIRONMENTS. + +cinit-0.2.1: (Bugfix release) + - Fixed problem in contrib+tools/Makefile when installing + - added many new scripts to convert sys-v-init, which are still early beta + (see bin/cinit.merge.sysvinit-debian-sid) + +cinit-0.2: + - Much more verbose error reporting + - You can now also disable 'once ran' services, + - You can restart services with csevice -r + - Online speech in German is available + - C_DELAY support - variable delay for sending SIGKILL after SIGTERM + - First /etc/csys configuration example (wasserstoff) is available + - a Mailing list was created + - Added tools to analyze cinit configuration + (cinit-vis.pl, cinit.graph.text.c) + - Added tools to import and export configuration to XML + (make.cconfig.from.xml.rb,cconfig.graph.xml.rb) + - Removed unecessary signalling + - Added many helper scripts to install services (cinit.install.service*) + - Fixed many small bugs in old helper scripts (cinit.add.getty, cinit.get-conf, ...) + - Added ccontrol, which allows to control cinit + - Added update (-u) via ccontrol + - Stripped cservice, which now "only" controls services + - Removed swapoff from cinit code, should be handled by off + - Much better error and processing descriptions + - A bit more verbose reporting + - Restructured run_svc, now with better error detection + - Removed Kernel panic, when halting system diff --git a/software/cinit/browse_source/cinit-0.3pre3/COPYING b/software/cinit/browse_source/cinit-0.3pre3/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.3pre3/CREDITS b/software/cinit/browse_source/cinit-0.3pre3/CREDITS new file mode 100644 index 00000000..b009a48c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/CREDITS @@ -0,0 +1,23 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: 2005-09-25) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete + * providing cinit-vs.pl to visualize the cinit-tree +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) +Sandro Koechli + * testing, testing and testing cinit and cinit documentation +Marcus Wagner + * building and maintaining the Debian package +Peter Portmann + * testing cinit and documentation, writing cinit.graph.text in C, other coding diff --git a/software/cinit/browse_source/cinit-0.3pre3/Changelog b/software/cinit/browse_source/cinit-0.3pre3/Changelog new file mode 100644 index 00000000..0fbf76f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/Changelog @@ -0,0 +1,10 @@ +Mo Okt 3 00:19:40 CEST 2005 + *Changelog can now be found in git database (cg-log) +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.3pre3/Makefile b/software/cinit/browse_source/cinit-0.3pre3/Makefile new file mode 100644 index 00000000..9c174b63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/Makefile @@ -0,0 +1,85 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# directories and files +DDOC=ddoc +SDIRS=bin client conf comm doc generic serv util +CDIRS=contrib+tools + +# DO NOT CHANGE THIS. +SBIN=sbin +CINIT_BIN=$(SBIN)/cinit + +# targets +warn: + @cat doc/.buildwarn + +%.o: %.c + $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< + +all: sources + +sources: + $(MAKE) -C src all + +docs: $(DDOC) bin/cdoc-man.sh + ./bin/cdoc-man.sh doc/cinit-doc > $(DDOC)/cinit.8 + ./bin/cdoc-man.sh doc/cservice-doc > $(DDOC)/cservice.8 + +$(DDOC): + mkdir $(DDOC) + +$(CSVC_OBJ) $(OBJ): $(CONFIG_H) + +$(SBIN): + mkdir $(SBIN) + +sizecheck: cinit cservice + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l sbin/ > $$FILE; cat $$FILE + @echo -n "Source size (in KiB): " + @du -s $(SDIRS) | awk '{ sum+=$$1 } END { print sum }' +# @du -s bin client comm conf doc generic serv | awk '{ sum+=$1 } END { print sum }' + +clean: + $(MAKE) -C src clean + #rm -f *.o */*.o */*/*.o sbin/* $(CONFIG_H) ddoc/* + rm -f tmpbin/* + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +ccontrol: $(SBIN)/ccontrol + +$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) + $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ + $(STRIP) $@ + +install:: install-dir cinit cservice ccontrol + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + +#all install clean:: +# @for subdir in $(CDIRS); do \ +# echo "Making $@ in $$subdir"; \ +# (cd $$subdir && $(MAKE) $(MAKEFLAGS) $@) \ +# || exit 1;\ +# done; + +config: + @./bin/cinit.configure.os + @./bin/cinit.configure.tools + @./bin/cinit.configure.ipc + @touch src/.configured diff --git a/software/cinit/browse_source/cinit-0.3pre3/NEXTTODO b/software/cinit/browse_source/cinit-0.3pre3/NEXTTODO new file mode 100644 index 00000000..36280921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/NEXTTODO @@ -0,0 +1,40 @@ +- check free on dep_del! +- dep_create into tree_exec +- check that the new wants and need elements are nserted the other way round + * we go to next, elements must be put before us! +- check when replacing the service with its needs that the services are + not inserted twice, like in: + a is wanted by c + b is wanted by c + c is entered twice, because c has still status ST_SH_ONCE! +- insert new dependencies in tree_exec! +- write svc_execute, which forks away the new process +- cleanup the sig_child handler + * disable signals in sig_child handler + * update status of service + - use list_search_pid + +- continue tree_exec() + * start first list, remove objects that have been started + * add new dependencies (wanted_by and needed_by from the service + being removed) + * so tree_exec runs as long as there are elements in the list! + - not only as long as the list is cycled! +- Fix SIG_CHILD handler! + * Lookup other signalling things, too. +- add respawn when creating the service +- create + * svc_on() that tries to start a service + * svc_off() that tries to stop a service + +- define messages + a) human readable + b) binary data? + ? +- replace cinit_ipc_logon with cinit_ipc_init... +- cleanup run_svc +- implement do_reboot.c +- cleanup sig_child + +Finally: +- test and release cinit-0.3rc1 diff --git a/software/cinit/browse_source/cinit-0.3pre3/README b/software/cinit/browse_source/cinit-0.3pre3/README new file mode 100644 index 00000000..27f07c12 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/README @@ -0,0 +1,110 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre3/ROADMAP b/software/cinit/browse_source/cinit-0.3pre3/ROADMAP new file mode 100644 index 00000000..b26ccb36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/ROADMAP @@ -0,0 +1,117 @@ +-------------------------------------------------------------------------------- +THIS DOCUMENT SHOULD VANISH AS SOON AS EVERYTHING IS FINE +-------------------------------------------------------------------------------- + +Timeline +--------- + * ~ End of October 2006: Reunderstand the code, manifest changes [DONE] + * ~ Mid of November 2006: Have a compile-able cinit [DONE] + * ~ End of November 2006: Have a testsystem booting cinit + * ~ Mid of December 2006: Have production stable cinit + - Begin with migration scripts + - publish installable pre-releases + * ~ End of December 2006: Have some generic migration scripts + - Have (different) understanable documents + * ~ Mid of January 2007: Begin official release of cinit-0.3 + + + + +Versions +--------- + +0.3: +~~~ + code: Make cinit compile again :) [DONE] + code: double check to remove Linux specific source from general tree + code: seperate ipc from the rest [DONE] + code: fix / check signal handlers + code: cleanup makefile + code: add porting code: add support for any unix in general [DONE] + code: stabilize code, remove experimenting parts + code: remove delay support, let off/off.params do that. + code: add special directory (/etc/cinit/special?) for os specific binaries + -> halt, poweroff, reboot (NOTHING MORE THEY CAN DO) + -> SHOULD NOT BE IN THE PATH + code: move production code to src/ + end user doc: add warning for special binaries and hint for r/o only + amiga alike systems + + doc: begin to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.1: + devel doc: how to write merging scripts + devel doc: merging framework: + - minimal (do not look at the current configuration, build minimal) + - use current system (slowly, may use old scripts) + - rebuilt current system (recommened) + + tools: general framework for merging + end user doc: merging old init to cinit + + code: add porting code: add support for freebsd + code: better readable output: + -> starting + [ started once ] + [ respawning ] + [ failed ] (+ REASON!) + [ needs failed ] (which ones) + + -> stopping + [ stopping ] (for dependencies) + [ stopped ] ? + [ not running ] ? + + code: export profile information (CINIT_PROFILE) + end user doc: using different profiles in user space + end user doc: write examples for profiles: + o switch ssh known_hosts based on profile + o different proxy settings in browsers + - environment + - mozilla settings + o start samba (for lan) + o start samba (for company lan) + o use nis and nfs (company profile) + + doc: continue to merge old documents into new structure and move them + to the doc/ancient directory +0.3.2: + end user doc: what to read to use cinit + end user doc: installing cinit + end user doc: configuring cinit + tools: writing cinit-config (graphical (dialog based?) configuration tool) + code: add porting code: add support for openbsd + + code: add reverse dependency chain (or earlier?) + code: better support for external tools + o neustarten + o mit herunterfahren + o mit herunterfahren und allen Diensten, die abhaengen + o ohne herunterfahren + o Statische Daten + o pid vom Daemon + o pid vom einmal ausgefuehrten Programm + + + doc: end to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.3: + devel doc: writing an init system + devel doc: the conf/-configuration system + + code: check conf/ and perhaps rewrite b0rken english sentences + + code / doc: add logging support for services -> use multilog? + code: add porting code: add support for netbsd + +0.4: + first stable, tested, well documented version. + + code: check for optimisation + + other: compare with other init systems + +0.4.x: + code: add porting code: add support for other unices diff --git a/software/cinit/browse_source/cinit-0.3pre3/TODO b/software/cinit/browse_source/cinit-0.3pre3/TODO new file mode 100644 index 00000000..e034901a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/TODO @@ -0,0 +1,276 @@ +- define how it should work (doc/braindums/big-picture.text) +- define service status in one document, so repeatition stops! + + +-------------------------------------------------------------------------------- +- rename headers/ -> includes/ +- remove client/ from top level +-------------------------------------------------------------------------------- +- write about shell scripts in system startup +- write about general behaviour (covering the death) +-------------------------------------------------------------------------------- +Generate automatic asciidoc from conf/* +-------------------------------------------------------------------------------- +Add handler for ctrl+alt+delete + * document in paths +-------------------------------------------------------------------------------- +pre-compile config: conf/* + +-------------------------------------------------------------------------------- +panic: + read configuratio from defaults/panic* + -> write execute_something before! +-------------------------------------------------------------------------------- +comm: + tmpnow: search for pid in list, + save the pid in the list, so we know whether our executer died! +-------------------------------------------------------------------------------- +Logging / cinit: + fuer unsere eigenen ausgaben auch multilog? + + Logger: shared memory? +-------------------------------------------------------------------------------- +Implement full starting logic in server? +-------------------------------------------------------------------------------- +Build full dependency tree at start? And begin from the end? +-------------------------------------------------------------------------------- +comm/*: + int read + int write + --> fuer pipes + +run_init_svc + muss alle services wissen, die gestartet werden + + start_services_with_deps + gibt pointer auf struktur zurueck + -> Anzahl Services (array!) + -> Service: + Name (Pfad) + Ergebniss + -> beim fehler, die nachricht, strerror? + http://www.opengroup.org/onlinepubs/009695399/functions/strerror.html + + +Beim starten werden needs und wants als needs behandelt, weil +jeder starter _alle_ services zurueckgeben muss. + + Ein Prozess kann maximal 512 abhaengigkeiten haben. + -> open files + + +Neues cinit: + Wenn service fehlschlaegt, wird eine Struktur zurueckgegeben. + + Diese enhaelt: + + int success = + enum { SVC_SUCCESS, SVC_FAILED, SVC_NEED_FAILED, ... } + + char *reason; + + Ausgaben nach Beendigung vom Starten des Services. + + [ on ] %s + Ergebnis + [ off ] %s + + Rekursives herunter/rauffahren +-------------------------------------------------------------------------------- +- add error handling to cinit.install.binary +- remove sigio(), create new functions: + - one for cleaning up the socket + - one for doing the communication (specify two fd's) +- put some logic around exec_svc: + o put waiting code herein -> waiting code to structure! +- cleanup serv/sig_reboot.c:7: + o implement os-specific reboot function +-------------------------------------------------------------------------------- +1. Entfernung mount +2. kommunikation ueber + 1. einen fork pro service + fork(fork) +3. Socket wird erst nach einem Signal erstellt + -> Konfiguration sollte SIGWHATEVER senden +4. Vielleicht panicen, wenn init fehlschlaegt? +-------------------------------------------------------------------------------- +Als naechstes: + +- add code do implement stopping / restarting with dependency tree + o add used_by to the list of services + o used_by should be a simple (double?) linked list +-------------------------------------------------------------------------------- +Documentation: + - Installing cinit + o compiling cinit from source + o debian / gentoo + - Configuring +-------------------------------------------------------------------------------- +Add "used" by to each service, so we can track which services to shutdown. +-------------------------------------------------------------------------------- +- perhaps use dnotify? +- recheck warm reboot +- fix cservice +- print service name or cinit: before _everything_ WE print + +TESTING: + - does cinit eat zombies? + - is the reporting ok? + - does cservice and ccontrol what's expected? + +# cinit.create.empty.service: can only be started from the bin directory + +- compile cinit static and other tools dynamically per default + +- Fix Switching services off !! +- Remove RUN_RUN_SVCs, move code to run_svc so one can determine which + services failed? + --> sequentieller ablauf! + --> parallel ablauf, struct-array mit namen und ergebnis? + --> for dep in deps/*; do fork(run_svc() ); done + -----> while(any_is_running) { sleep } + -------> array durchsuchen, ergebnis nutzen. + - ueberpruefen von wo aus run_svc() aufgerufen wird + +- Fix SIGCHILD problem: + - exec_svc wants to waitpid() itself, so SIG_CHILD makes problems + - respawn_svc: does that need to act on SIGCHLD if the master process + is still running? + - kill respawn -> sigchild cleans up, we do not get waitpid perhaps? +- remove umount code? +- remove zombies, but keep away from SIGCHILD problems +- remove mount /etc/cinit/tmp code + -> how to replace? +- fix bug in Makefile: linking happens twice +- do not kill respawing service, if off exists +- ccontrol +- manpages +- Error codes when shutting down a service? +- Delay dokumentieren +- no_kill dokumentieren +- ddoc zuendefuehren + +- remove umount, swapoff? +--> to services? + +- on.out, on.err, on.in? + -> reading/writing from/to files + +--> Wenn kein ReSPAWN und der Prozess beendet sich nicht, + dann haengt init! +- implement "no_kill" until cinit-0.2 or 0.3? + +Doku!!! + +-------------------------------------------------------------------------------- +- Source Logic issues + - remove FIXME entries (and what should be fixed, too) + - memset for timespecs? + - move umount, swapoff and remount to off of init? + -> cleanup sig_reboot.c + - run_svc: + o we have many strcat()s, perhaps save length of pathbuf and strncat at + pathtmp[strlen(pathbuf)] ? + - do we really need swapoff? +-------------------------------------------------------------------------------- +- Documentation + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml +-------------------------------------------------------------------------------- +Things I did not do and I don't know whether we have to care about: + +- Porting + - add porting code to other unices? + - like openssh guys do? + +- close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? +- logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? +-------------------------------------------------------------------------------- +[OLD BUGS] +- remove cinit watcher? + -> sig_child -> cycle through list? +- DOKU: what happens when a service does not terminate.... + und er als once drin ist +- MANPAGE! +- execve() fails -> no sleep!! +- multiple zombies sometimes - problemservices + -> zombies of respawn watchers are not caught! + -> sig_chld also therein + -> problematic due to wait for child +-doubled cinit instance + - nur einmal +- free() everything before starting child +- cservice! + - prozess nur einmal -> WARTET! cinit auch! +doku: + cservice einmal starten -> wartet auf ende + cint ersetzt init bei gentoo + an error occuerd-> verbose + multuicall probleme -> busysbox --> GIBT ES NICHT!! + ---> DOKU DAZU! mit links, doppelt links, aus test + ---> erklaeren, dass es unproblematisch ist! + +11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet + werden konnte. +11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0 + zurueckgeworfen. +11:09 < folken23> telmich: oder service allready started. +-------------------------------------------------------------------------------- +possible BUGS: + +[14:44] freelsd:cinit-0.2.2% ./sbin/cservice -e ein + +ein: No such file or directory +Bad address +: Service does not exist + +cinit-0.2.2: +USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND +root 1 96.7 0.0 1580 336 ? R 18:59 5:49 /sbin/cinit +root 2 0.0 0.0 0 0 ? SN 18:59 0:00 [ksoftirqd/0] +root 3 0.0 0.0 0 0 ? S 18:59 0:00 [watchdog/0] +root 4 0.0 0.0 0 0 ? S< 18:59 0:00 [events/0] +root 5 0.0 0.0 0 0 ? S< 18:59 0:00 [khelper] +root 6 0.0 0.0 0 0 ? S< 18:59 0:00 [kthread] +root 10 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [khubd] +root 12 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [kblockd/0] +root 99 0.0 0.0 0 0 ? S 18:59 0:00 \_ [pdflush] +root 100 0.0 0.0 0 0 ? S 18:59 0:00 \_ [pdflush] +root 102 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [aio/0] +root 727 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [kseriod] +root 101 0.0 0.0 0 0 ? S 18:59 0:00 [kswapd0] +root 800 0.0 0.0 0 0 ? S 18:59 0:00 [khpsbpkt] +root 803 0.0 0.0 0 0 ? S 18:59 0:00 [pccardd] +root 838 0.0 0.0 0 0 ? S 18:59 0:00 [kjournald] +root 1923 0.0 0.0 1584 200 ? S 18:59 0:00 /sbin/cinit +root 1924 0.0 0.3 3624 1936 tty2 Rs 18:59 0:00 \_ -zsh +root 1969 0.0 0.0 1580 320 tty2 S 19:05 0:00 \_ cservice -e 3 +root 1972 0.0 0.1 2604 828 tty2 R+ 19:05 0:00 \_ ps axuwwf +root 1945 0.0 0.0 0 0 tty2 Z 19:01 0:00 [loadkeys] +cinit: [cprofile:profile] +cinit should not be started directly, but by your kernel. +umount raus +/etc/cinit/specials/... rein + +1. Doku auf asciidoc umstellen +2. den signalhandler code fixen +3. den tempmount entfernen + +--> cinit-0.3-rc1 +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +Optimisations +------------- + +tree_exec +~~~~~~~~~ +- only check dependencies (=needs) after the basic run? diff --git a/software/cinit/browse_source/cinit-0.3pre3/TODO.doc b/software/cinit/browse_source/cinit-0.3pre3/TODO.doc new file mode 100644 index 00000000..71ed721d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/TODO.doc @@ -0,0 +1,12 @@ +- doc/user/paths.text + * finish + * add examples +- add cross-compilation howto +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cdoc-man.sh b/software/cinit/browse_source/cinit-0.3pre3/bin/cdoc-man.sh new file mode 100644 index 00000000..fc1adde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cdoc-man.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Nico Schottelius +# Date: 21-Aug-2005 +# Last Modified: - +# + +set -e + +[ $# -ne 1 ] && exit 23 + +SRC=$1 + +cd "$SRC" + +# +# Title heading +# +echo .TH $(cat "meta/name" "meta/man_section" "meta/date") + +# +# Name +# +echo .SH NAME +echo $(cat meta/name) - $(cat meta/short_description) + +# +# Synopsis +# +echo .SH SYNOPSIS +echo $(cat path) $(cat parameters) + +# +# description +# +echo .SH DESCRIPTION +echo $(cat long_description) + +# +# availability +# +for section in availability examples "see also" author; do + if [ -f "$section" ]; then + echo .SH $section | tr '[a-z]' '[A-Z]' + cat "$section" + fi +done + +# +# files +# +if [ -f files ]; then + echo .SH FILES + cat files | sed 's/\(.*\)/.IP "\1" /' +fi + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.add.dependency new file mode 100644 index 00000000..7bc9cc65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.add.dependency @@ -0,0 +1,51 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or wants Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +# adding 'wishes' for x-mas and requires for 'the mass' and 'tv' +case $DEP in + wishes|wants) DEP=$C_WANTS ;; + needs|requires) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could someone PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEP_DIR="${BASEDIR}/${SVC_A}/${DEP}" + +if [ ! -d "$DEP_DIR" ]; then + echo "$DEP_DIR does not exist, creating..." + mkdir "$DEP_DIR" + if [ $? -ne 0 ]; then + echo "Error occured due to creating directory. Exiting." + exit 1 + fi +fi + +DEST="${DEP_DIR}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.add.getty new file mode 100644 index 00000000..987a5bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.add.getty @@ -0,0 +1,75 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# Date: 2005-05-24 (Last changed: 2005-08-07) +# + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | sort -n | tail -n 1) + +[ ! "$LAST_NUMBER" ] && LAST_NUMBER=0 + +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +#echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + */mgetty) + mygetty=$getty + params="38400 tty${NUMBER}" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +# check input +if [ ! "$mygetty" ]; then + read -p "Getty to use [$mygetty]: " rgetty +fi +if [ ! "$params" ]; then + read -p "Parameters to pass [$params]: " rparams +fi +if [ ! "$params" -o ! "$mygetty" ]; then + echo "Sorry, either getty or parameters are not supplied." + exit 23 +fi + +echo -n "Creating $mygetty ($params) in $DDIR ... " +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DDIR" +ln -s "$mygetty" "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.configure.ipc b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.configure.ipc new file mode 100644 index 00000000..65190baa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.configure.ipc @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius, 2006-07-28 +# +# cinit: configure the ipc method to use +# + +HIER=$(dirname $0) +DDIR=$HIER/../src/ipc +DFILE=${DDIR}/current +IPC_METHOD=$(head -n 1 "$HIER/../conf/ipc_method") + +echo "Configure: IPC: Using \"$IPC_METHOD\" as IPC method" + +# always remove link before, as ln seems to be broken +# Doing ln -sf src/ipc/$method current twice, will create the file +# "current" _BELOW_ src/ipc/$method and not overwrite the link +# src/ipc/current + +rm -f "${DFILE}" +ln -sf "${IPC_METHOD}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.configure.mark b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.configure.mark new file mode 100644 index 00000000..aa648411 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.configure.mark @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: touch a file to mark everything configured +# 2006-08-27 +# + +echo "Configure: MK: Marking directory as configured" +touch .configured diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.configure.os b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.configure.os new file mode 100644 index 00000000..d5b8e6e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.configure.os @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups symlinks for the os +# + +DDIR=$(dirname $0)/../src/os +DFILE="$DDIR/current" +OSCONFIG=$(dirname $0)/../conf/os + +OS=$(head -n 1 "$OSCONFIG") + +echo "Configure: OS: Binaries are created for $OS ..." + +rm -f "${DFILE}" +ln -sf "${OS}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.configure.tools b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.configure.tools new file mode 100644 index 00000000..43242a01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.configure.tools @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups scripts for compiling and linking +# + +HIER=$(dirname $0) +DDIR=$HIER/../tmpbin/ +CC=$(head -n 1 "$HIER/../conf/cc") +CFLAGS=$(head -n 1 "$HIER/../conf/cflags") +LD=$(head -n 1 "$HIER/../conf/ld") +LDFLAGS=$(head -n 1 "$HIER/../conf/ldflags") +STRIP=$(head -n 1 "$HIER/../conf/strip") + +echo "Configure: CC: Creating cc, ld and strip ..." + +mkdir -p "$DDIR" +cd "$DDIR" + +echo "$CC $CFLAGS \"\$@\"" > cc +echo "$LD $LDFLAGS \"\$@\"" > ld +echo "$STRIP \"\$@\"" > strip + +# set correct permissions +chmod 0700 * diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.create.empty.service new file mode 100644 index 00000000..365c4bc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.create.empty.service @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.binary new file mode 100644 index 00000000..a368ac23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.binary @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: - +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice +"$INSTALL_PROG" sbin/ccontrol $DESTDIR/$PREFIX/sbin/ccontrol +"$INSTALL_PROG" bin/cinit.reboot $DESTDIR/$PREFIX/sbin/cinit.reboot +"$INSTALL_PROG" bin/cinit.shutdown $DESTDIR/$PREFIX/sbin/cinit.shutdown +"$INSTALL_PROG" bin/cinit.wait.for.daemon \ + $DESTDIR/$PREFIX/sbin/cinit.wait.for.daemon + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi + +# install as /sbin/shutdown, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/shutdown ]; then + ln -s $PREFIX/sbin/cinit.shutdown $DESTDIR/$PREFIX/sbin/shutdown +fi + +# install as /sbin/reboot, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/reboot ]; then + ln -s $PREFIX/sbin/cinit.reboot $DESTDIR/$PREFIX/sbin/reboot +fi diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.config-dir b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.config-dir new file mode 100644 index 00000000..c9adb70f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.config-dir @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.dir new file mode 100644 index 00000000..5e16f690 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.dir @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/sbin" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.fsck b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.fsck new file mode 100644 index 00000000..4508860a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.fsck @@ -0,0 +1,36 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 3 ]; then + echo "$(basename $0): name device filesystem-type" + exit 1 +fi + +NAME=$1 +DEVICE=$2 +FS_TYPE=$3 + +FSCK=/sbin/fsck.$FS_TYPE + +if [ ! -f "$FSCK" ]; then + echo "Missing $FSCK, abort." + exit 1 +fi + +if [ ! -e "$DEVICE" ]; then + echo "Missing $DEVICE abort." + exit 1 +fi + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME" +ln -sf "$FSCK" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON" +echo "$DEVICE" > "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.miniconf b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.miniconf new file mode 100644 index 00000000..45dcc632 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.miniconf @@ -0,0 +1,103 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: 2005-08-07 +# + + +. $(dirname $0)/cinit.read-conf + +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" +echo "" +echo "This will install a minimal cinit configuration." +echo "This configuration _SHOULD_ be able to run on _MOST_ systems." +echo "Still, it's highly EXPERIEMENTAL, use with CAUTION." +echo "" +echo "Please make sure, that" +echo " - you are using a journaling filesystem (fsck is not used)" +echo " - you have agetty, fgetty or mingetty installed" +echo " - you are runnig Linux 2.6 (sysfs is used)" +echo " - you have udev or static device nodes (you need /dev/tty*)" +echo " - getties will run on tty2-tty7, tty1 is used or logging" +echo "" +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" + +notosoftwarepatents="Please keep an eye on software patents, they are evil." +read -p "Do you really want to continue? [y/N] " notosoftwarepatents + +if [ "$notosoftwarepatents" = "y" -o "$notosoftwarepatents" = "Y" ]; then + echo "Let us try it ..." +else + echo 'Bye bye!' + exit 0 +fi + +set -e + +# Create basic layout +$(dirname $0)/cinit.install.standard-dirs + +# Install services: +# - mount root r/w +# - mount /proc +# - mount /sys +# - install getties on tty2-tty7 +# - add cleanup for /etc/mtab +# - add loopback device +# - init service + echo + +################################### mount ##################################### +# mount root read/write +$(dirname $0)/cinit.install.service.mount-root + +# - mount /proc +$(dirname $0)/cinit.install.service.mount-proc + +# - mount /sys +$(dirname $0)/cinit.install.service.mount-sys + +# mount needs everything below it +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/root" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/proc" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/sys" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" + +################################### getty ##################################### +# mount root read/write +# install getties +begin_getty=2 +end_getty=7 +i=$begin_getty + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" +while [ "$i" -le "$end_getty" ]; do + $(dirname $0)/cinit.add.getty + ln -sf "${DESTDIR}/${CINIT_DIR}/getty/$i" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" + i=$(($i+1)) +done + +################################### mtab ##################################### +# - add cleanup for /etc/mtab +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" +$(dirname $0)/cinit.install.service.cleanup-mtab +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" + +################################### lo ##################################### +# - add loopback device +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" +$(dirname $0)/cinit.install.service.network-lo +ln -sf "${DESTDIR}/${CINIT_DIR}/network/lo" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" + +# - init service + echo +# init depends on mount, getty -> everything from base-layout +$(dirname $0)/cinit.install.service.init +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" + +ln -sf "${DESTDIR}/${CINIT_DIR}/local-services/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/getty/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/network/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.cleanup-mtab b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.cleanup-mtab new file mode 100644 index 00000000..30a8dd48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.cleanup-mtab @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: cleanup mtab +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" +echo '#!/bin/sh' > "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'rm -f /etc/mtab' >>"${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'ln -s /proc/mounts /etc/mtab' \ + >> "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +chmod 0700 "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.hostname.generic b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.hostname.generic new file mode 100644 index 00000000..2d72f50e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.hostname.generic @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service, which sets the hostname +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): hostname" + exit 1 +fi + +HOSTNAME=$1 +HOSTNAME_BIN=${HOSTNAME_BIN:-/bin/hostname} + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/network/hostname" +ln -sf "$HOSTNAME_BIN" "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON" +echo "$HOSTNAME" > "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.init b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.init new file mode 100644 index 00000000..c3a10931 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.init @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +ln -sf /bin/echo "${DESTDIR}/${CINIT_DIR}/${C_INIT}/$C_ON" +echo '*** cinit initial service successfully started ***' \ + > "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.keymap.c_keymap b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.keymap.c_keymap new file mode 100644 index 00000000..235a329e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.keymap.c_keymap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install keymap from environment setting +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +if [ -z "$C_KEYMAP" ]; then + echo "Set C_KEPMAP to the wanted keymap." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" ]; then + echo "Service keymap already exists." + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find loadkeys) + +if [ $? -ne 0 ]; then + echo "Did not find binary loadkeys." + exit 1 +fi + +echo -n "Installing keymap to ${DESTDIR}/${CINIT_DIR}/local-tuning/keymap ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON" + +echo "$C_KEYMAP" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.mount-proc b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.mount-proc new file mode 100644 index 00000000..024847a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.mount-proc @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /proc +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/proc" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/proc/$C_ON" +echo proc > "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo /proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.mount-root b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.mount-root new file mode 100644 index 00000000..a1bd56ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.mount-root @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount root r/w +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# mount root read/write +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/root" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/root/$C_ON" +echo -n > "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo -o >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo remount,rw >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo / >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.mount-sys b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.mount-sys new file mode 100644 index 00000000..8c8191aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.mount-sys @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /sys +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /sys +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/sys" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/sys/$C_ON" +echo sys > "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo sysfs >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo /sys >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.network-lo b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.network-lo new file mode 100644 index 00000000..45bff6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.network-lo @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: loopback device +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/lo" +ln -sf /sbin/ifconfig "${DESTDIR}/${CINIT_DIR}/network/lo/$C_ON" +echo lo > "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo 127.0.0.1/8 >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo up >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.ntpdate.debian b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.ntpdate.debian new file mode 100644 index 00000000..2af2ee4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.ntpdate.debian @@ -0,0 +1,47 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install ntpdate +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +. /etc/default/ntpdate + +if [ -z "$NTPSERVERS" ]; then + echo "No ntp servers found, aborting" + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find ntpdate) + +if [ $? -ne 0 ]; then + echo "Did not find binary ntpdate." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" ]; then + echo "Service ntpdate already exists." + exit 1 +fi + +echo -n "Installing ntpdate to ${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON" + +for server in $NTPSERVERS; do + echo "$server" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON$C_PARAMS" +done + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.udev b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.udev new file mode 100644 index 00000000..d91f01cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.service.udev @@ -0,0 +1,64 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install udev +# Date: 2005-10-15 +# Comment: DO NOT RSYNC TO THE WRONG SIDE! +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BIN_UDEVSEND=$($(dirname $0)/cinit.path-find udevsend) +BIN_UDEVSTART=$($(dirname $0)/cinit.path-find udevstart) +BIN_SYSCTL=$($(dirname $0)/cinit.path-find sysctl) +BIN_MOUNT=$($(dirname $0)/cinit.path-find mount) +SERVICE="local-tuning/udev" + +if [ -z "$BIN_UDEVSEND" -o -z "$BIN_UDEVSTART" -o -z "$BIN_SYSCTL" -o -z "$BIN_MOUNT" ]; then + echo "Did not find a binary." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo "Installing ${SERVICE} to ${DESTDIR}/${CINIT_DIR}/ ..." + +# 0. general udev +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}" +# 1. udevmount +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/mount/udev" +ln -sf "$BIN_MOUNT" "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON" +echo "udev" > "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "-t" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "tmpfs" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "/dev" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" + +# 2. udevstart +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart" +ln -sf "$BIN_UDEVSTART" "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart/$C_ON" + +# dependencies +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/sys +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/udev + +# 3. udev to hotplug +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug" +ln -sf "$BIN_SYSCTL" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug/$C_ON" +echo "$BIN_UDEVSEND" > "${DESTDIR}${CINIT_DIR}/${SERVICE}/hotplug/$C_ON$C_PARAMS" + +$(dirname $0)/cinit.add.dependency ${SERVICE}/hotplug needs mount/proc + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.standard.init.deps b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.standard.init.deps new file mode 100644 index 00000000..dcc5cd07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.standard.init.deps @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add standard sub-configuration directories to init wants +# Date: 2005-10-11 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.standard.mounts b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.standard.mounts new file mode 100644 index 00000000..bb1fc0c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.standard.mounts @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create normal mounts +# Date: 2005-10-16 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.swap b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.swap new file mode 100644 index 00000000..84e6c928 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.swap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install swap +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +SERVICE=mount/swap + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BINARY=swapon +BINARY_PATH=$($(dirname $0)/cinit.path-find $BINARY) +if [ $? -ne 0 ]; then + echo "Did not find binary $BINARY." + exit 1 +fi + +HAS_SWAP=$(awk '$3 ~ /swap/ { print $3 }' /etc/fstab) +if [ -z "$HAS_SWAP" ]; then + echo "Seems you have no swap, service not installing" + exit 1 +fi +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo -n "Installing ${SERVICE} to ${DESTDIR}${CINIT_DIR}/${SERVICE} ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON" + +echo "-a" >> "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.merge.sysvinit-debian-sid b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.merge.sysvinit-debian-sid new file mode 100644 index 00000000..3ef0ce03 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.merge.sysvinit-debian-sid @@ -0,0 +1,137 @@ +#!/bin/sh +# Nico Schottelius +# Date: Sun Oct 16 16:57:03 CEST 2005 +# cLinux/cinit +# Automagically convert Debian-Sysv-Iinit +# THIS IS NOT CLEAN. +# THIS IS NOT EVEN INTENTED TO BE CLEAN. +# This is just a small hack, because my girlfriend wants her notebook back. + +echo "***> $(basename $0): converting Debian-Sys-V-Init" + +# read standard values, may be overwritten from outside +. $(dirname $0)/cinit.read-conf + +echo "***> Finding standard config ..." +# variables, which can be set from the outside +ROOT_DEV=${ROOT_DEV:-$(awk '$2 ~ /^\/$/ { print $1 }' /etc/fstab)} +ROOT_FSCK=${ROOT_FSCK:-$(awk '$2 ~ /^\/$/ { print $6 }' /etc/fstab)} +ROOT_FS=${ROOT_FS:-$(awk '$2 ~ /^\/$/ { print $3 }' /etc/fstab)} +RUNLEVEL=${RUNLEVEL:-$(runlevel | awk '{ print $2 }')} + +echo "***> Detecting keymap (this may take some time)" + +if [ -z "$C_KEYMAP" ]; then + echo "Please set the variable C_KEYMAP to your keymap." + echo "It is impossible to detect reliable your keymap in Debian." + exit 1 +fi + + +echo "***> Configuration" +echo "Hostname (\$HOSTNAME): $HOSTNAME" +echo "Keymap (\$C_KEYMAP): $C_KEYMAP" +echo "Root device (\$ROOT_DEV): $ROOT_DEV" +echo "Root fsck (\$ROOT_FSCK): $ROOT_FSCK" +echo "Root FS (\$ROOT_FS): $ROOT_FS" +echo "Runlevel (\$RUNLEVEL): $RUNLEVEL" +echo "Destdir: (\$DESTDIR): $DESTDIR" +echo "Config-Dir: (\$CINIT_DIR): $CINIT_DIR" +read -p "Is this correct (Y/n) " correct + +if [ "$correct" != "y" -a "$correct" != "Y" ]; then + echo "***> Abort." + exit 1 +fi + +if [ -d "${DESTDIR}${CINIT_DIR}" ]; then + echo "ERROR: Configuration already exists at ${DESTDIR}${CINIT_DIR}." + exit 1 +fi + +echo "***> Installing standard structure and dependencies" +set -e +$(dirname $0)/cinit.install.config-dir +$(dirname $0)/cinit.install.standard.dirs +$(dirname $0)/cinit.install.standard.init.deps + +echo "***> Adding mount / r/w" +$(dirname $0)/cinit.install.service.mount-root + +if [ "$ROOT_FSCK" = "1" ]; then + echo "***> Adding fsck for $ROOT_DEV ..." + $(dirname $0)/cinit.install.fsck root "$ROOT_DEV" "$ROOT_FS" + echo "***> Adding dependency" + $(dirname $0)/cinit.add.dependency mount/root needs fsck/root +else + echo "***> Skipping fsck for $ROOT_DEV ..." +fi + +echo "***> Setting up standard mounts ..." +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up hostname: $HOSTNAME" +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up keymap" +$(dirname $0)/cinit.install.service.keymap.c_keymap + +echo "***> Creating getties (tty1-8)" +for i in `seq 1 8`; do + $(dirname $0)/cinit.add.getty + + # each getty needs: + # - root r/w + $(dirname $0)/cinit.add.dependency getty/$i needs mount/root + # - hostname + $(dirname $0)/cinit.add.dependency getty/$i needs network/hostname +done + +echo "***> Enabling getties (tty2-8)" +for i in `seq 2 8`; do + # add getties to getty/ + $(dirname $0)/cinit.add.dependency getty wants getty/$i +done + +# +# Convert services: check /etc/rcS.d and /etc/rcX.d +# +echo "***> Converting services ..." +for script in $(cd /etc/rcS.d/; ls S*; cd /etc/rc${RUNLEVEL}.d/; ls S*); do + echo -n "$script: " + case $script in + # SCRIPTS READY + *ntpdate) + $(dirname $0)/cinit.install.service.ntpdate.debian + $(dirname $0)/cinit.add.dependency local-tuning/ntpdate needs network + ;; + *udev*) + $(dirname $0)/cinit.install.service.udev + + # SCRIPTS NEVER READY + *glibc.sh|*module-init-tools|*modutils|*procps.sh|*hotplug-net|*bootmisc.sh|*nviboot|*screen-cleanup|*x11-common|*sudo|*makedev|*rmnologin) + echo "Ignoring (useless)." + ;; + + # SCRIPTS NOT YET READY + *mountvirtfs|*checkroot.sh|*ifupdown-clean|*checkfs.sh|*mountall.sh|*ifupdown|*hostname*|*mountnfs.sh|*alsa|*rsync|*ssh|*fam|*cron|*gdm) + echo "converting planned later." + ;; + + # SCRIPTS LATER TO DO + *bootlogd|*keymap.sh|*hwclock*|*discover|*pppd-dns|*dns-clean|*networking|*portmap|*console-screen.sh|*urandom|*klogd|*apmd|*dbus-1|*exim4|*pcmcia|*nfs-common|*stop-bootlogd) + echo "unsupported currently (FIXME PLEASE)." + ;; + *sysklogd|*ppp|*inetd|*lpd|*aumix|*atd) + echo "unsupported (choose a better alternative)." + ;; + *initrd-tools.sh|*libdevmapper*|*hotplug) + echo "Ignoring (general or bloated script)." + ;; + *) + echo "Ignoring (unknown)" + ;; + esac +done + +echo "***> Finished." diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.path-find b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.path-find new file mode 100644 index 00000000..0d0f362b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.path-find @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: find binary in path +# Date: 2005-10-15 +# + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): searched binary" + exit 1 +fi + +binary=$1 + +# this is NOT really clean, paths can also contain spaces +for pfad in $(echo $PATH | sed 's/:/ /g'); do + fullname=$pfad/$binary + if [ -f "$fullname" ]; then + echo "$fullname" + exit 0 + fi +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.release b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.release new file mode 100644 index 00000000..c5e15859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.release @@ -0,0 +1,38 @@ +#!/bin/sh +# Nico Schottelius +# Build release tar +# Date: Sat Oct 15 21:38:29 CEST 2005 +# Last Changed: Fr Okt 28 01:24:58 CEST 2005 + + +if [ $# -ne 2 ]; then + echo $(basename $0): source-dir version + exit 1 +fi + +DIR=$1 +VERSION=$2 +OUT_NAME=cinit-${VERSION}.tar.bz2 +D_HOST=home.schottelius.org +D_BASE=www/org/schottelius/unix/www/cinit +D_DIR=${D_BASE}/archives/ +D_SOURCE=${D_BASE}/browse_source/ + +if [ ! -d "$DIR" ]; then + echo "$DIR is not a directory" + exit 1 +fi + +( cd "$DIR" && make clean ) || exit 1 + +echo "Creating bzip2 compressed tar" +tar cj -X $DIR/.exclude -f "$OUT_NAME" $DIR +chmod 0644 "$OUT_NAME" +echo "Transfering to $D_HOST" +scp "$OUT_NAME" "$D_HOST:$D_DIR" +echo "Extracting to $D_SOURCE" +ssh "$D_HOST" "tar xfj $D_DIR/$OUT_NAME -C $D_SOURCE" +echo "Correcting paranoid permissions" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type f -exec chmod 0644 {} \\;" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type d -exec chmod 0755 {} \\;" +echo "Please do not forget to update the website..." diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.remove.getty new file mode 100644 index 00000000..4950eeed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.remove.getty @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + +if [ ! "$NUMBER" ]; then + echo "There is no getty to remove." + exit 1 +fi + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r "$DDIR" +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.shutdown new file mode 100644 index 00000000..702c8a17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.shutdown @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# TODO: use ccontrol! +# 2005-05-24 (Last changed: 2005-06-18) + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -p|--power-off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " -s|--rescue: Rescue mode" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -p|--power-off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + -s|--rescue) kill -USR2 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.uml.test new file mode 100644 index 00000000..f6ea7fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.1 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG umid=cinit$$ init=/sbin/cinit" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..7f027455 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 (Last Changed: 2005-06-17) + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +PIDFILE=$1; shift +DAEMON=$1; shift + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.3pre3/client/README b/software/cinit/browse_source/cinit-0.3pre3/client/README new file mode 100644 index 00000000..0a5b8d0c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/client/README @@ -0,0 +1,2 @@ +client/ + These sources are used by the children which are spawned by cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre3/client/begin_msg.c b/software/cinit/browse_source/cinit-0.3pre3/client/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/client/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/client/connect_sock.c b/software/cinit/browse_source/cinit-0.3pre3/client/connect_sock.c new file mode 100644 index 00000000..2c2d45de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/client/connect_sock.c @@ -0,0 +1,38 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include /* memset, strcpy */ + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/client/exec_svc.c b/software/cinit/browse_source/cinit-0.3pre3/client/exec_svc.c new file mode 100644 index 00000000..f217f9e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/client/exec_svc.c @@ -0,0 +1,264 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +inline pid_t exec_svc(char *abspath, int action) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + SERVICE_LOG(abspath,LOG_SVC_FAIL); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + P_EXEC_FAILED(nargv[0]); + perror(MSG_ERR_EXECVE); + /* FIXME: remove debug, remove double printing without loosing info */ + sleep(3); /* debug */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/client/msg_change_status.c b/software/cinit/browse_source/cinit-0.3pre3/client/msg_change_status.c new file mode 100644 index 00000000..836a0fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/client/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* FIXME: change return code validation */ + +int msg_change_status(char *svc, char status, pid_t pid) +{ + if(!begin_msg(CMD_CHG_STATUS)) { + return RT_ERR_COMM; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/client/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.3pre3/client/msg_svc_on_off.c new file mode 100644 index 00000000..02948f2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/client/msg_svc_on_off.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, char action) +{ + if(!begin_msg(action)) return RT_ERR_COMM; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return RT_ERR_COMM; + return (int) do_result(sock,NULL); +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre3/client/respawn_svc.c b/software/cinit/browse_source/cinit-0.3pre3/client/respawn_svc.c new file mode 100644 index 00000000..5c350045 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/client/respawn_svc.c @@ -0,0 +1,99 @@ +/* + * (c) 2005,2006 Nico Schottelius (nico-linux at schottelius.org) + * respawn_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + D_PRINTF(abspath); + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, CMD_START_SVC) ) { + if(cpid != 0) { + D_PRINTF("sloefen"); + sleep(SLEEP_SVC); + D_PRINTF("Zuende geschlafen"); + } + } + } while(cpid); /* cpid is reset by sig_terminate() */ + + /* FIXME: put most code of sig_terminate here, look for no_kill */ + + /* start off task */ + exec_svc(abspath,CMD_STOP_SVC); + + D_PRINTF("jetzt weg"); + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/client/run_run_svcs.c b/software/cinit/browse_source/cinit-0.3pre3/client/run_run_svcs.c new file mode 100644 index 00000000..6486c76f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/client/run_run_svcs.c @@ -0,0 +1,86 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/client/run_svc.c b/software/cinit/browse_source/cinit-0.3pre3/client/run_svc.c new file mode 100644 index 00000000..7fea6a92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/client/run_svc.c @@ -0,0 +1,129 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre3/client/sig_terminate.c b/software/cinit/browse_source/cinit-0.3pre3/client/sig_terminate.c new file mode 100644 index 00000000..9b23e349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/client/sig_terminate.c @@ -0,0 +1,60 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + /* FIXME: only send SIGTERM, if not_kill does not exist */ + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + status = kill(cpid,SIGKILL); + if( status == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + D_PRINTF("muesste weg sein"); + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/comm/README b/software/cinit/browse_source/cinit-0.3pre3/comm/README new file mode 100644 index 00000000..840c9742 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/comm/README @@ -0,0 +1,3 @@ +comm/ + The communication part of cinit. + The functions are used in client and in server code. diff --git a/software/cinit/browse_source/cinit-0.3pre3/comm/do_change_status.c b/software/cinit/browse_source/cinit-0.3pre3/comm/do_change_status.c new file mode 100644 index 00000000..94b9be76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/comm/do_change_status.c @@ -0,0 +1,70 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/comm/do_result.c b/software/cinit/browse_source/cinit-0.3pre3/comm/do_result.c new file mode 100644 index 00000000..cb51161b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/comm/do_result.c @@ -0,0 +1,33 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return RT_ERR_COMM; + } + + return *value; +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre3/comm/do_svc_name.c b/software/cinit/browse_source/cinit-0.3pre3/comm/do_svc_name.c new file mode 100644 index 00000000..d427365f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/comm/do_svc_name.c @@ -0,0 +1,51 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/.README b/software/cinit/browse_source/cinit-0.3pre3/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_confdir b/software/cinit/browse_source/cinit-0.3pre3/conf/c_confdir new file mode 100644 index 00000000..091e6192 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_confdir @@ -0,0 +1,3 @@ +conf + +The directory below cinit_dir for cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_delay b/software/cinit/browse_source/cinit-0.3pre3/conf/c_delay new file mode 100644 index 00000000..dc30f147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGTERM for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_env b/software/cinit/browse_source/cinit-0.3pre3/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_halt b/software/cinit/browse_source/cinit-0.3pre3/conf/c_halt new file mode 100644 index 00000000..4eed340f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_halt @@ -0,0 +1,4 @@ +halt + +Name of the link belowe c_special, which links to the program +to be executed right before halting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_init b/software/cinit/browse_source/cinit-0.3pre3/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_needs b/software/cinit/browse_source/cinit-0.3pre3/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_off b/software/cinit/browse_source/cinit-0.3pre3/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_on b/software/cinit/browse_source/cinit-0.3pre3/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_panic b/software/cinit/browse_source/cinit-0.3pre3/conf/c_panic new file mode 100644 index 00000000..7fdb77b3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_panic @@ -0,0 +1,5 @@ +panic + +Name of the file below cinit_dir/c_confdir/ to execute on panic. +This name .params (normally panic.params) will be passed as parameters/ +argumunts to panic. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_params b/software/cinit/browse_source/cinit-0.3pre3/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_poweroff b/software/cinit/browse_source/cinit-0.3pre3/conf/c_poweroff new file mode 100644 index 00000000..5b5c9c9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_poweroff @@ -0,0 +1,4 @@ +poweroff + +Name of the link belowe c_special, which links to the program +to be executed right before powering off the system. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_reboot b/software/cinit/browse_source/cinit-0.3pre3/conf/c_reboot new file mode 100644 index 00000000..8702388f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_reboot @@ -0,0 +1,4 @@ +reboot + +Name of the link belowe c_special, which links to the program +to be executed right before rebooting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_respawn b/software/cinit/browse_source/cinit-0.3pre3/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_sock b/software/cinit/browse_source/cinit-0.3pre3/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_tmp b/software/cinit/browse_source/cinit-0.3pre3/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.3pre3/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.3pre3/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_umount b/software/cinit/browse_source/cinit-0.3pre3/conf/c_umount new file mode 100644 index 00000000..ab96b0a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_umount @@ -0,0 +1,6 @@ +umount + +Name of the file below cinit_dir/c_confdir/ to execute right before +reboot/halt/poweroff. + +It should normally be a shellscript with the OS-specific umount procedure. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/c_wants b/software/cinit/browse_source/cinit-0.3pre3/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/cc b/software/cinit/browse_source/cinit-0.3pre3/conf/cc new file mode 100644 index 00000000..b168ae6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/cc @@ -0,0 +1,3 @@ +gcc + +The c-compiler to use. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/cflags b/software/cinit/browse_source/cinit-0.3pre3/conf/cflags new file mode 100644 index 00000000..812812a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/cflags @@ -0,0 +1,3 @@ +-pipe -W -Wall -Werror -Iinclude -g + +Standard flags to pass to (g)cc. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/cinit_dir b/software/cinit/browse_source/cinit-0.3pre3/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/confdir b/software/cinit/browse_source/cinit-0.3pre3/conf/confdir new file mode 100644 index 00000000..55fb65e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/confdir @@ -0,0 +1,3 @@ +conf + +The subdirectory below /etc/cinit to be used for general configurations. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/destdir b/software/cinit/browse_source/cinit-0.3pre3/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/getty_dir b/software/cinit/browse_source/cinit-0.3pre3/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/install_directory b/software/cinit/browse_source/cinit-0.3pre3/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/install_prog b/software/cinit/browse_source/cinit-0.3pre3/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/ipc_method b/software/cinit/browse_source/cinit-0.3pre3/conf/ipc_method new file mode 100644 index 00000000..fc75e273 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/ipc_method @@ -0,0 +1,5 @@ +msgq + +The type of IPC (inter process communication) to use. +Valid values can be optained by issuing `ls src/ipc/`. + diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/ld b/software/cinit/browse_source/cinit-0.3pre3/conf/ld new file mode 100644 index 00000000..b60e4836 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/ld @@ -0,0 +1,3 @@ +gcc + +Comment missing. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/ldflags b/software/cinit/browse_source/cinit-0.3pre3/conf/ldflags new file mode 100644 index 00000000..fc214daf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/ldflags @@ -0,0 +1,3 @@ + + +No flags specified normally. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/max_delay b/software/cinit/browse_source/cinit-0.3pre3/conf/max_delay new file mode 100644 index 00000000..149fa16c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/max_delay @@ -0,0 +1,7 @@ +4 + +Maximum number of digits which may be in the delay file. +If there are more, the string "12345678901" will be cut to the +right length "1234567890". I don't think you'll ever need +a timeout greater 4 digits (9999 seconds are 166,65~ minutes, are +2 hours, 46 minutes and 39 seconds). See doc/configuring.cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/max_deps b/software/cinit/browse_source/cinit-0.3pre3/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/msgq_pathname b/software/cinit/browse_source/cinit-0.3pre3/conf/msgq_pathname new file mode 100644 index 00000000..1bef0b6b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/msgq_pathname @@ -0,0 +1,4 @@ +/bin/sh + +Used to generate an unique identifier for the message queue. +See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/msgq_to_clients b/software/cinit/browse_source/cinit-0.3pre3/conf/msgq_to_clients new file mode 100644 index 00000000..dd15808a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/msgq_to_clients @@ -0,0 +1,4 @@ +o + +This is use in ftok to generate a key_t for the message queue use to write +to the clients. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/msgq_to_server b/software/cinit/browse_source/cinit-0.3pre3/conf/msgq_to_server new file mode 100644 index 00000000..f87ae3f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/msgq_to_server @@ -0,0 +1,4 @@ +i + +This is use in ftok to generate a key_t for the message queue use to write +to the server. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/os b/software/cinit/browse_source/cinit-0.3pre3/conf/os new file mode 100644 index 00000000..ddbf8f9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/os @@ -0,0 +1,14 @@ +linux + +Select the operating system compiling for. + +Current possibilities: + + - linux + + +Currently Planned possibilities: + + - freebsd + - openbsd + - netbsd diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/p_asciidoc b/software/cinit/browse_source/cinit-0.3pre3/conf/p_asciidoc new file mode 100644 index 00000000..52485c86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/p_asciidoc @@ -0,0 +1,6 @@ +asciidoc + +The binary on your system (with or without path) which does what I expect +asciidoc todo. + +Default: asciidoc diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/p_docbooktoman b/software/cinit/browse_source/cinit-0.3pre3/conf/p_docbooktoman new file mode 100644 index 00000000..d62c9015 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/p_docbooktoman @@ -0,0 +1,6 @@ +docbook2x-man + +The binary on your system (with or without path) which converts +docbook to manpages. + +Default: docbook2x-man diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/p_docbooktotexi b/software/cinit/browse_source/cinit-0.3pre3/conf/p_docbooktotexi new file mode 100644 index 00000000..278f6805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/p_docbooktotexi @@ -0,0 +1,6 @@ +docbook2x-texi + +The binary on your system (with or without path) which converts +docbook to texinfo. + +Default: docbook2x-texi diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/prefix b/software/cinit/browse_source/cinit-0.3pre3/conf/prefix new file mode 100644 index 00000000..6b90469f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/prefix @@ -0,0 +1,5 @@ + + +Where to install cinit. Normally this will be /, but you can put it anywhere. +The subdirectory 'sbin' under this prefix must be readable by the kernel. +This is normally either empty or "/". diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/profile b/software/cinit/browse_source/cinit-0.3pre3/conf/profile new file mode 100644 index 00000000..b9104bf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/profile @@ -0,0 +1,9 @@ +cprofile: + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile:" is the standard, as +the Linux kernel eats everything in the form 'var=parm'. +The old (pre cinit-0.1) option "cprofile=" should therefore +NOT be used. + +Under Linux you tell it the bootloader like grub or LILO. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/service_categories b/software/cinit/browse_source/cinit-0.3pre3/conf/service_categories new file mode 100644 index 00000000..d632b875 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/service_categories @@ -0,0 +1,4 @@ +getty local-tuning local-services mount network remote-services + +List of directories normally created below /etc/cinit/svc/ as +'pseudo-services'. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/sleep_kill b/software/cinit/browse_source/cinit-0.3pre3/conf/sleep_kill new file mode 100644 index 00000000..b419241a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/sleep_kill @@ -0,0 +1,8 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. + +Note: This does NOT affect terminating services, they are shutdown by +their own 'off' functions. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.3pre3/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.3pre3/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/sleep_svc b/software/cinit/browse_source/cinit-0.3pre3/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/sock_queue b/software/cinit/browse_source/cinit-0.3pre3/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/strip b/software/cinit/browse_source/cinit-0.3pre3/conf/strip new file mode 100644 index 00000000..08736418 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/strip @@ -0,0 +1,3 @@ +strip -R .comment -R .note + +Strip out unecessary parts of the binaries. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/sulogin b/software/cinit/browse_source/cinit-0.3pre3/conf/sulogin new file mode 100644 index 00000000..24859afc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/sulogin @@ -0,0 +1,6 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it, if the standard panic +action fails (as specified in cinit_dir/c_confdir/panic). + +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/svcdir b/software/cinit/browse_source/cinit-0.3pre3/conf/svcdir new file mode 100644 index 00000000..087a3848 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/svcdir @@ -0,0 +1,3 @@ +svc + +Directory below /etc/cinit that contains the services. diff --git a/software/cinit/browse_source/cinit-0.3pre3/conf/version b/software/cinit/browse_source/cinit-0.3pre3/conf/version new file mode 100644 index 00000000..f1fea13b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/conf/version @@ -0,0 +1,3 @@ +"0.3pre3" + +The version. diff --git a/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/Makefile b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/Makefile new file mode 100644 index 00000000..8441c90b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/Makefile @@ -0,0 +1,70 @@ +# +# (c) 2005 Peter Portmann (pp at bluewin.ch) +# cinit/contrib+tools +# +# This script is written for the clinux-System and published +# under the terms of GPL 2.0 +# +# Version: 0.2 +# clean with a single command instead of two commands. +# +# ChangeLog: +# 0.1 initial version +# +# Todo: +# +# Features: + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +DEBUG=-g -DDEBUG +#OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! +LDFLAGS= + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. -I../ +LD=gcc +STRIP=strip -R .comment -R .note + +INSTALL = install + +prefix = /usr +bindir = $(prefix)/bin + +# objects + +CLIENT=cinit.graph.text.o + +COMMUNICATION=error.o ../generic/usage.o ../generic/mini_printf.o + +OBJ=$(CLIENT) $(COMMUNICATION) + +# +PROGRAMS=cinit.graph.text +SCRIPTS=cconfig.graph.xml.rb \ + make.cconfig.from.xml.rb \ + cinit-vis.pl + +# targets +all: $(PROGRAMS) + +cinit.graph.text: $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +clean: + rm -f *.o $(PROGRAMS) + +install: all + @echo '*** Installing contrib+tools ***' + $(INSTALL) -d -m755 $(DESTDIR)$(bindir) + for bin in $(SCRIPTS) $(PROGRAMS); do \ + $(INSTALL) $$bin $(DESTDIR)/$(bindir); \ + done diff --git a/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/README b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/README new file mode 100644 index 00000000..85fa2f5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/README @@ -0,0 +1,11 @@ +contrib+tools/ + programs written by others and external tools not necessary + needed but (very) nice to have + + + cinit-vis.pl - draw an ascii graph of cinit configuration [perl] + cinit.graph.text - draw an ascii graph of cinit configuration [c] + + cconfig.graph.xml.rb - creates a xml file from a cconfig [ruby] + make.cconfig.from.xml.rb - creates a cconfig from a xml file [ruby] + diff --git a/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/README.ruby b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/README.ruby new file mode 100644 index 00000000..ed210cee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/README.ruby @@ -0,0 +1,7 @@ +The ruby tools for general cconfig [0] are written by René Nussbaumer [1]. +You can find the documentation for them at [2]. + + +[0]: http://nico.schotteli.us/papers/linux/cconfig/ +[1]: http://killerfox.forkbomb.ch/ +[2]: http://killerfox.forkbomb.ch/articles/cconfig/tools diff --git a/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/cconfig.graph.xml.rb b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/cconfig.graph.xml.rb new file mode 100644 index 00000000..d18ba422 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/cconfig.graph.xml.rb @@ -0,0 +1,117 @@ +#!/usr/bin/env ruby + +=begin + + Writes an XML-Tree for a cconfig directory + Idea by Nico Schottelius aka telmich + Implemented and (C) by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added support for binary files + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Changed checking order: symlink, directory, file. Because of + a logical bug -> directory follows symlink so, when a symlink + points to a directory no «link» element is created. + + Version 0.1 (René Nussbaumer): + * Holy hack for directory scanning (needs to be optimized) + * Hack for rexml to print out «lost» tags. This rexml sux. + + Todo: + * Optimize scanning. + * Use another xml library instead of rexml crap. + Problem: Produce dependencies -> no std-lib + + Features: + * Create a flat (no deepnes without directory) and 1:1 image + of an cconfig directory + +=end + +require 'rexml/document' +require 'base64' +require 'digest/sha1' + +require 'filemagic' + +@version = '0.3' + +def determineTarget(entry) + return 'external' if(!File.expand_path(entry).index(@initpath)) + return 'link' if(FileTest.symlink?(entry)) + return 'object' if(FileTest.directory?(entry)) + return 'attribute' if(FileTest.file?(entry)) + return 'unknown' # Should never be reached +end + +def createTree(dir, parent) + dir.each { |entry| + next if(entry =~ /^(\.|\.\.)$/) + + if(FileTest.symlink?(entry)) + e = parent.add_element('link') + + # Much fun with links + e.add_attributes( { 'name' => entry, 'target' => determineTarget(File.readlink(entry)) } ) + e.add_text(File.readlink(entry)) + elsif(FileTest.directory?(entry)) + e = parent.add_element('object') + e.add_attribute('name', entry) + + # Bad, that we need to change the directory every time. + oldPwd = Dir.pwd + Dir.chdir(entry) + createTree(Dir.new('.'), e) + Dir.chdir(oldPwd) + elsif(FileTest.file?(entry)) + e = parent.add_element('attribute') + e.add_attribute('name', entry) + if(File.stat(entry).size?) + # Yeah, we got one WITH content! W00h00, let's party. + + fm = FileMagic.new(FileMagic::MAGIC_MIME) + if(fm.file(entry) =~ /executable/) + e.add_attribute('type', 'binary') + text = File.new(entry).read + e.add_attribute('sha1', Digest::SHA1.hexdigest(text)) + e.add_text(Base64.encode64(text)) + else + e.add_text(File.new(entry).read) + end + fm.close() + end + end + } +end + + +if(!ARGV[0] || !FileTest.directory?(ARGV[0])) + puts 'You need to specify a directory' + Kernel.exit(-1) +end + +doc = REXML::Document.new + +e = doc.add_element('cconfig') +e.add_attribute('name', File.basename(ARGV[0])) +e.add_attribute('version', @version) + +@initpath = File.expand_path(ARGV[0]) +Dir.chdir(ARGV[0]) +createTree(Dir.new('.'), doc.root) + +out = '' +doc.write(out, 0, false, true) + +REXML::XMLDecl.new('1.0', 'utf-8').write($stdout) # This should automatically printed by rexml. Damn bugs. +puts '' +puts out # Workaround for a buggy rexml + diff --git a/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/cinit-vis.pl b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/cinit-vis.pl new file mode 100644 index 00000000..3956ff47 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/cinit-vis.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# (c) by Marcus Przyklink (downhill-clinux@burningchaos.org) +# written for cinit and published under GPL +# beautified a bit by Nico Schottelius +# optimized by René Nussbaumer +# Version: 0.1 + +use strict; +use warnings; + +# +# Variables for location and output +# +# cinit-directory +my $path = "/etc/cinit/"; +# started profile +my $starting_point = "init"; +# the spaces for each level (integer: amount of spaces) +my $space = 3; +# marker for need +my $need = "-->"; +# marker for want +my $want = "==>"; + +# +# main function, recursively list the components of the cinit system +# +if (@ARGV) { + if( $ARGV[0] =~ /-(h|-help)/ ) { + print "Usage: " . __FILE__ . " without parameters for standard-use (check variables in file)\n"; + print " Parameters:\n"; + print " -h for this help\n"; + print " profile-name for a profile\n"; + exit(0); + } + else { + $starting_point = $ARGV[0]; + } +} + +# +# start first instance +# +sub get_deeper { + my ($point, $tmp_counter, $need_want) = splice @_; + + print " " x ($space * $tmp_counter) . ($need_want ? $need : $want) . " " . $point . "\n"; + + opendir(DIR, "${path}${point}/needs") and + my @next_need = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + opendir(DIR, "${path}${point}/wants") and + my @next_want = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + + for(@next_need) { + get_deeper($_, $tmp_counter + 1, 1); + } + for(@next_want) { + get_deeper($_, $tmp_counter + 1, 0); + } +} + +# +# start first instance +# +get_deeper($starting_point, 0, 0); + +# +# work done, go home +# +exit(0); diff --git a/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/cinit.graph.text.c b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/cinit.graph.text.c new file mode 100644 index 00000000..bc6fb6ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/cinit.graph.text.c @@ -0,0 +1,200 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + cinit.graph.text.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.2 + + ChangeLog: + Version 0.2 (Peter Portmann): + * Not assigned link destinies are marked by (!). + * Not readable directories are marked by "directory not readable". + + Version 0.1 (Peter Portmann): + * Print of the directory structure of the contained files and links + without following the links. + + Todo: + + Features: +*/ + +//#include +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" +#include "error.h" + +#define FTW_F 1 /* file isn't a directory */ +#define FTW_D 2 /* file is a directory */ +#define FTW_DNR 3 /* not readable directory */ +#define FTW_NS 4 /* unsuccesfully stat on this file */ +#define MAX_CHAR 4096 + +/*********************************************************************** + * cinit.gaph.text - textual representation of the cinit directory + */ + +#define CSERVICE_BANNER "cinit.gaph.text - textual representatio of the cinitdirectory\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncinit.gaph.text \n" \ + "\tpath\t- cinit installationpath\n" + +typedef int EACH_ENTRY(const char *, const struct stat *, int); +typedef enum { FALSE=0, TRUE=1 } bool; + +static char dirpath[PATH_MAX]; +static int depth = 0; +static long int filecount = 0; + +static EACH_ENTRY each_entry; +static int pp_ftw(char *, EACH_ENTRY *); +static int each_getinfo(EACH_ENTRY *); + +/*********************************************************************** + * pp_ftw: file tree walk + */ +static int pp_ftw(char *filepath, EACH_ENTRY *function) +{ + int n; + + if(chdir(filepath) < 0) /* In angegebenen Pfad wechseln */ + err_msg(FATAL_SYS, "can't change to %s", filepath); + + if(getcwd(dirpath, PATH_MAX) == 0) /* Absoluten Pfadnamen ermitteln */ + err_msg(FATAL_SYS, "error using getcwd for %s", filepath); + + n = each_getinfo(function); + + return(n); +} + +/*********************************************************************** + * each_getinfo: get more info for each file. + */ +static int each_getinfo(EACH_ENTRY *function) +{ + struct stat statpuff; + struct dirent *direntz; + DIR *dirz; + int n; + char *zgr; + + if(lstat(dirpath, &statpuff) < 0) + return(function(dirpath, &statpuff, FTW_NS)); /* Error on stat */ + + if(S_ISDIR(statpuff.st_mode) == 0) + return(function(dirpath, &statpuff, FTW_F)); /* no directory */ + + /* It's a directory. + * Call function() for it. After that handel each file in the directory. */ + + if((dirz = opendir(dirpath)) == NULL) { /* Directory not readable */ + closedir(dirz); + return(function(dirpath, &statpuff, FTW_DNR)); + } + + if((n = function(dirpath, &statpuff, FTW_D)) != 0) /* return the directorydirpath */ + return(n); + + zgr = dirpath + strlen(dirpath); /* append slash to the dirpathname */ + *zgr++ = '/'; + *zgr = '\0'; + + while((direntz = readdir(dirz)) != NULL) { + /* ignor . and .. */ + if(strcmp(direntz->d_name, ".") && strcmp(direntz->d_name, "..")) { + strcpy(zgr, direntz->d_name); /* append filename after slash */ + depth++; + if(each_getinfo(function) != 0) { /* Recursion */ + depth--; + break; + } + depth--; + } + } + *(zgr-1) = '\0'; /* deleting evrything after the slash */ + + if(closedir(dirz) < 0) + err_msg(WARNING, "closedir for %s failed", dirpath); + + return(n); +} + +/*********************************************************************** + * each_entry: handling each file and build the graph step by step. + */ +static int each_entry(const char *filepath, const struct stat *statzgr, int filetype) +{ + struct stat statpuff; + static bool erstemal=TRUE; + int i; + + char link[MAX_CHAR]; + + filecount++; + if(!erstemal) { + for(i=1 ; i<=depth ; i++) + printf("%4c|", ' '); + printf("----%s", strrchr(filepath, '/')+1); + } else { + printf("%s", filepath); + erstemal = FALSE; + } + + switch(filetype) { + case FTW_F: + switch(statzgr->st_mode & S_IFMT) { + case S_IFREG: break; + case S_IFCHR: printf(" c"); break; + case S_IFBLK: printf(" b"); break; + case S_IFIFO: printf(" f"); break; + case S_IFLNK: + printf(" -> "); + if(( i=readlink(filepath, link, MAX_CHAR)) != -1) + printf("%.*s", i, link); + if(stat(filepath, &statpuff) < 0) + printf(" (!)"); + break; + case S_IFSOCK: printf(" s"); break; + default: printf(" ?"); break; + } + printf("\n"); + break; + + case FTW_D: + printf("/\n"); + break; + + case FTW_DNR: + printf("/ directory not readable\n"); + break; + + case FTW_NS: + err_msg(WARNING_SYS, "Error using 'stat' on file %s", filepath); + break; + + default: + err_msg(FATAL_SYS, "Unknown Filetype (%d) by file %s", filetype, filepath); + break; + } + + return(0); +} + +/*********************************************************************** + * main: + */ +int main(int argc, char *argv[]) +{ + if(argc != 2) + usage(CSERVICE_BANNER, USAGE_TEXT); + + exit(pp_ftw(argv[1], each_entry)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/error.c b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/error.c new file mode 100644 index 00000000..8174c702 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/error.c @@ -0,0 +1,124 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#include "error.h" +#include +#include +#include +#include +#include +#include + +#define MAX_CHAR 4096 + +int debug; /* Aufrufer von log_msg oder log_open muss debug setzen: + 0, wenn interaktiv; 1, wenn Daemon-Prozess */ + +/*---- Lokale Routinen zur Abarbeitung der Argumentliste --------------------*/ +static void msg_err(int sys_msg, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + return; +} + +static void msg_log(int sys_msg, int prio, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + if (debug) { + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + } else { + strcat(puffer, "\n"); + syslog(prio, puffer); + } + return; +} + +/*---- Global aufrufbare Fehlerroutinen -------------------------------------*/ +void err_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_err(0, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + case DUMP: + msg_err(1, fmt, az); + break; + default: + msg_err(1, "Falscher Aufruf von err_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + else if (kennung==DUMP) + abort(); /* core dump */ + exit(1); +} + +void log_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_log(0, LOG_ERR, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + msg_log(1, LOG_ERR, fmt, az); + break; + default: + msg_log(1, LOG_ERR, "Falscher Aufruf von log_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + exit(2); +} + +/*---- log_open --------------------------------------------------------------- + initialisiert syslog() bei einem Daemon-Prozess */ +void log_open(const char *kennung, int option, int facility) +{ + if (debug==0) + openlog(kennung, option, facility); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/error.h b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/error.h new file mode 100644 index 00000000..a55690fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/error.h @@ -0,0 +1,29 @@ +#ifndef ERROR_H +#define ERROR_H +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.h + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#define WARNING 0 +#define WARNING_SYS 1 +#define FATAL 2 +#define FATAL_SYS 3 +#define DUMP 4 + +void log_msg(int kennung, const char *fmt, ...); +void err_msg(int kennung, const char *fmt, ...); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/make.cconfig.from.xml.rb b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/make.cconfig.from.xml.rb new file mode 100644 index 00000000..05f35cc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/contrib+tools/make.cconfig.from.xml.rb @@ -0,0 +1,227 @@ +#!/usr/bin/env ruby + +=begin + + Create a cconfig directory based on a xml input. + (C) 2005 by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added binary file support + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Added some commandline options + * Added «level» so control the restrictivity of the program + * Added more «intelligence» to the program, to detect internal broken dependcies. + * Support «debug»-Levels. + * Print statistic at the end of the programs about warnings and errors. + + Version 0.1 (René Nussbaumer): + * Initial + + Todo: + * Use an rexml alternative + * Some cleanup + * Optimize + * Testing? + + Features: + * Create a cconfig directory based on a xml + +=end + +require 'rexml/document' +require 'getoptlong' +require 'base64' +require 'digest/sha1' + +@verbose = 0 +@level = 1 +@version = '0.3' + +@warnings = 0 +@errors = 0 +@checklist = Array.new + +def printMsg(prefix, msg) + puts '%-12s %s' % [prefix + ':', msg] +end + +def error(msg, fatal = 0) + @errors += 1 + fatal = 0 if(@level < 1) + fatal = 255 if(@level > 1 && !fatal) + printMsg(fatal != 0 ? 'PANIC' : 'ERROR', msg) + Kernel.exit(-fatal) if(fatal != 0) +end + +def warn(msg) + error(msg, 1) if(@level > 1) + @warnings += 1 + printMsg('WARNING', msg) +end + +def info(msg) + printMsg('INFO', msg) +end + +def debug(msg, verbosity = 1) + if(@verbose >= verbosity) + printMsg("DEBUG(#{verbosity})", msg) + end +end + +def createObject(name) + error("#{name} already exists.", 1) if(FileTest.exists?(name)) + begin + Dir.mkdir(name) + rescue + error("Could not create directory #{name}: #{$!}. Abort.", 7) + end + debug("Object #{File.expand_path(name)} has been created.", 4) +end + +def createAttribute(name, content = nil) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + begin + file = File.new(name, 'w') + file.print content if(content && !content.empty?) + file.close + debug("Attribute #{File.expand_path(name)} has been created", 4) + rescue + error("Could not create file #{name}: #{$!}. Skipped.") + end +end + +def createLink(name, target, type) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + error("Broken dependencies! Please take a look if #{target} exists on your system", 2) if(type == 'external' && !FileTest.exists?(target)) + if(!FileTest.exists?(target) && type != 'external') + #info("Possible break. But maybe the target #{target} does not yet exists. Checking later.") + exptarget = File.expand_path(target) + @checklist << exptarget + debug("Adding #{target} to the list of internal dependcies to check.", 2) + end + begin + error('You\'ve a system which does not support symbolic links. Abort.', 3) if(File.symlink(target, name) != 0) + rescue + error("Could not create symlink #{name} => #{target}: #{$!}.", 3) + end + debug("Link #{File.expand_path(name)} has been created", 4) +end + +def doWork(elm) + name = elm.name + attrname = elm.attributes['name'] + error("XML Tag with missing name attribute!", 5) if(!attrname) + if(name =~ /(object|cconfig)/) + if(name == 'cconfig') + if(elm.attributes['version']) + info("Found a version string: #{elm.attributes['version']}") + warn("This XML is maybe incompatible with this programm. I'm a version #{@version} script. The XML is generated with a version #{elm.attributes['version']} script. Please update.") if(elm.attributes['version'] > @version) + end + end + createObject(attrname) + if(elm.has_elements?) + pwd = Dir.pwd + Dir.chdir(attrname) + elm.each_element { |e| + doWork(e) + } + Dir.chdir(pwd) + end + elsif(name == 'attribute') + text = nil + e = nil + text = e.value if((e = elm.get_text)) + if(text && elm.attributes['type'] && elm.attributes['type'] == 'binary') + text = Base64.decode64(text) + if(Digest::SHA1.hexdigest(text) != elm.attributes['sha1']) + warn("SHA1 differs from file: #{Dir.pwd}#{attrname}") + end + end + createAttribute(attrname, text) + elsif(name == 'link') + error("link-Tag without content.", 6) if(!elm.has_text?) + error("link with missing target. Skipped.") if(!elm.attributes['target']) + createLink(attrname, elm.get_text.value, elm.attributes['target']) + end +end + +puts "This is #{File.basename(__FILE__)} v#{@version} by René Nussbaumer" +puts + +opts = GetoptLong.new( + ['--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT], + ['--level', '-l', GetoptLong::REQUIRED_ARGUMENT], + ['--version', '-V', GetoptLong::NO_ARGUMENT] +) + +opts.each { |arg,value| + case arg + when '--verbose' + @verbose += 1 + value.each_byte { |x| + if(x.chr == 'v') + @verbose += 1 + end + } + debug("Verbosity set to: #{@verbose}") + when '--level' + debug("Setting level to: #{value}", 3) + case value + when 'low' + @level = 0 + when 'normal' + @level = 1 + when 'paranoid' + @level = 2 + else + warn('Unknown level: ' + value) + end + when '--version' + Kernel.exit(0) + else + warn("Unknown option #{arg}#{value && !value.empty? ? ('with value ' + value) : ''}") + end +} + +if(!ARGV[0]) + puts 'Need at least one argument' + puts "Usage: #{__FILE__} " + Kernel.exit(1) +end + + +filedesc = $stdin + +if(ARGV[0] != '-') + filedesc = File.new(ARGV[0]) +end + +doc = REXML::Document.new filedesc + +doWork(doc.root) + +if(!@checklist.empty?) + info('Now checking all broken internal dependcies again') + broken = 0 + @checklist.each { |path| + debug("Checking #{path}.", 2) + if(!FileTest.exists?(path)) + broken += 1 + warn("Broken dependcies. #{path} does not exist. Please fix.") + end + } + info('Looks good.') if(broken == 0) + info('Bad, bad.') if(broken > 0) +end + +info("Successed. #{@warnings} warnings, #{@errors} errors") + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/.buildwarn b/software/cinit/browse_source/cinit-0.3pre3/doc/.buildwarn new file mode 100644 index 00000000..72ebaf6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/.buildwarn @@ -0,0 +1,18 @@ +**************************************************************************** +First of all configure cinit through the configuration files found in conf/. + +The documentation can be found in doc/, read + + README and doc/configuring.cinit + +_before_ first use. + +After reading and configuring use: + + "make all" - to build cinit + "make install" - to install cinit + "make install-miniconf" - to install a minimal cinit-configuration + +After that you'll have to configure it. Some sample configurations can be +found on the cinit homepage at http://linux.schottelius.org/cinit/. +**************************************************************************** diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/Makefile b/software/cinit/browse_source/cinit-0.3pre3/doc/Makefile new file mode 100644 index 00000000..704903da --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/Makefile @@ -0,0 +1,59 @@ +# +# Makefile stolen from ccollect +# Nico Schottelius, Fri Jan 13 12:13:08 CET 2006 +# + +INSTALL=install +CCOLLECT=ccollect.sh +LN=ln -sf + +prefix=/usr/packages/ccollect-git +bindir=$(prefix)/bin +destination=$(bindir)/$(CCOLLECT) + +path_dir=/usr/local/bin +path_destination=$(path_dir)/$(CCOLLECT) + +# where to publish +host=creme.schottelius.org +dir=www/org/schottelius/linux/ccollect +docdir=$(dir)/doc + +# +# End user targets +# +all: + @echo "Creating asciidoc based documentation" + @asciidoc -n -o ccollect.html doc/ccollect.text + +%.html: %.text + echo asciidoc $< -n $> -o $^.html $^.text $@ + + +install: install-script install-link + +install-link: install-script + $(LN) $(destination) $(path_destination) + +install-script: + $(INSTALL) -D -m 0755 -s $(CCOLLECT) $(destination) + +documentation: + @echo "Generating HTML-documentation (en de) ..." + @asciidoc -n -o doc/ccollect.html doc/ccollect.text + @asciidoc -n -o doc/ccollect-DE.html doc/ccollect-DE.text + +# +# Developer targets +# +update: + @cg-update creme + +push-work: + @cg-push creme + @cg-push sygroup + +publish-doc: documentation + @echo "Transferring files to $(host)" + @chmod a+r doc/*.html doc/*.text + @scp doc/*.text doc/*.html $(host):$(docdir) diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/README b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/README new file mode 100644 index 00000000..45e193f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/README @@ -0,0 +1,16 @@ +Ancient +======= +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 + + +These files may be incorrect, outdated, totally wrong or even trying +to take over world dominance. + + +Why are they still there? +------------------------- + +Just because to document the early days of cinit. If you are +a software archaeologist in the year 2423, you'll be happy that +I saved those files. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/author b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/availability b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/availability new file mode 100644 index 00000000..cfb3f8a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/availability @@ -0,0 +1 @@ +cinit is currently Linux-specific. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/examples b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/examples new file mode 100644 index 00000000..1a7d2dcb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/examples @@ -0,0 +1 @@ +See http://linux.schottelius.org/cinit/#config diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/files b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/files new file mode 100644 index 00000000..4d6c0921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/files @@ -0,0 +1,5 @@ +/sbin/cinit - the init system +/sbin/cservice - control cinit +/sbin/cinit.reboot (/sbin/reboot if non-existent before) +/sbin/cinit.shutdown (/sbin/shutdown if non-existent before) +/etc/cinit - configuration directory diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/long_description b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/long_description new file mode 100644 index 00000000..18c3c082 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/long_description @@ -0,0 +1,5 @@ +cinit is a fast executing, small and simple init with support for profiles. It +minds dependencies (hard and soft, 'needs' and 'wants') and executes processes +in parallel. And it has a simple configuration, which makes many shell-scripts +unecessary (but you still could use them if you really want), which leads to +better performance and less memory using. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/meta/name new file mode 100644 index 00000000..b853da25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/meta/name @@ -0,0 +1 @@ +cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/parameters b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/parameters new file mode 100644 index 00000000..54df4727 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/parameters @@ -0,0 +1 @@ +cprofile: diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/path b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/path new file mode 100644 index 00000000..37edf339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/path @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/see also b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit.commands b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit.commands new file mode 100644 index 00000000..d34d13bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cinit.commands @@ -0,0 +1,73 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (using SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. +CMD_UPDATE: Update cinit, hot-reboot the system. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/author b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/long_description b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/long_description new file mode 100644 index 00000000..82818a93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/long_description @@ -0,0 +1 @@ +cservice controls cinit. Please use cservice -h for help. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/meta/name new file mode 100644 index 00000000..49c847bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/meta/name @@ -0,0 +1 @@ +cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/parameters b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/parameters new file mode 100644 index 00000000..605b08b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/parameters @@ -0,0 +1 @@ +[-eaphru] [thilo] diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/path b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/path new file mode 100644 index 00000000..85b0cb56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/path @@ -0,0 +1 @@ +/sbin/cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/see also b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/cservice-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/extern/README b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/extern/README new file mode 100644 index 00000000..e734d6d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/extern/README @@ -0,0 +1,2 @@ +doc/extern/ + Some things related to cinit from the outside world. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/extern/ipc.thoughts b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/extern/ipc.thoughts new file mode 100644 index 00000000..e2619d34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/extern/ipc.thoughts @@ -0,0 +1,83 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2 ), +1024 is the maximum opened file deskriptors, +minus 3 (stdin/stdout/stderr) already opened, divided +by two, because two fds needed per client. + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt, + - poweroff, + - update itself (hot-reboot) + - and to start a rescue mode (see using.rescue). + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + CONT: update + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/extern/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/extern/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/extern/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/extern/linux.kernel.eats.arguments b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/extern/linux.kernel.eats.arguments new file mode 100644 index 00000000..dbaf57d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/extern/linux.kernel.eats.arguments @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +Linux, the kernel, eats arguments +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +If you specify + + variable=value + +to the Linux kernel, the argument will NOT be passed to cinit. + +Here's the relevant code block from init/main.c of the Linux kernel: + +------------------------------------------------------------------------------- + +From init(void * unused) the function run_init_process(char *init_filename) +is called, which passes argv_init (char * argv_init[MAX_INIT_ARGS+2]) to init. + +First init_setup(char *str) resets all elements of the argv_init to NULL. + +The function unknown_bootoption(char *param, char *val) fills the +argv_init array, but only with parameters, which have no value +(val). + +The function parse_args calls unknown_bootoption with the unknown options. + +------------------------------------------------------------------------------- + +This way the profile support in all cinit versions below cinit-0.1 will +only work if you change conf/profile, because "cprofile=value" will +not be given to cinit, because it's not treated as a command line option. + +The original value "cprofile=" is replaced by "cprofile:" as of cinit-0.1. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/extern/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/extern/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/extern/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/fun-testing b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/fun-testing new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/fun-testing @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/how_it_works_internally b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/init-idea-first b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/init-idea-first new file mode 100644 index 00000000..2d677d8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/init-idea-first @@ -0,0 +1,38 @@ +- restarting/respawning + touch respawn +- dependencies + a needs started b +- clean multiply dependencies +- start & stop dependencies + start_depends + stop_depends +- parallel executation +- start and stop commands + start -> link + start_param -> parameters, like minit + stop -> link + stop_param -> parameters, like minit + + if no stop command is available, try to kill the pid we started at stop + +/startup/ + start_depends=gettys +/shutdown/ + stop_depends=power_off + + +gettys/ + start_depends=getty/1 + start_depends=getty/2 + start_depends=getty/3 + start_depends=getty/4 ... + +getty/1/ + start=/sbin/fgetty + respawn + +power_off/ + stop_depend=umount + +umount/ + stop_depend= diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/porting.to.other.os b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/porting.to.other.os new file mode 100644 index 00000000..65fdc07b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will perhaps become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/removing.zombies b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/removing.zombies new file mode 100644 index 00000000..9527e652 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + cinit in general will keep the behaviour of reaping the vestiges, + which broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/security b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/security new file mode 100644 index 00000000..f1dac591 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/security @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation, which will not accept connect() +by others than root. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console then! + +For extra parnoid settings you can do the following: + + ei # chmod 700 /etc/cinit/tmp/coala + ei # chown root:root /etc/cinit/tmp/coala diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/socket.poll_vs_o_async b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/socket.poll_vs_o_async new file mode 100644 index 00000000..477f2bff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/socket.poll_vs_o_async @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------------- +Socket: poll(2) vs. O_ASYNC, +Nico Schottelius 2005-06-22 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +0. General problem +1. O_ASYNC +2. poll(2) + + +0. General problem + +cinit has to react, as soon as there's data on the socket. + +1. O_ASYNC + +When you open a socket with O_ASYNC (or specify it with fcntl(2)) under +Linux, your process recieves the SIGIO signal from the kernel, as soon +as data is available. + +The problem is the handling of signals seems not to be serialised: + +The function, which is called on the SIGIO signal (called sigio() here) +calls other functions. Those functions way recieve SIGIO while working, +so the first data stream is not yet finished, though the next +stream is beeing read. + +This gives very nice race-conditions, which are very nice to debug. + +2. poll(2) + +poll(2) is a standard Unix-call (XPG4-UNIX), which waits a specific +timeout (or infinite time if you specify a value less that zero) for +the socket (or the fd in general) to be in a state where +data is available to read (in fact poll can do much more, but we are +not interested only in POLLIN and POLLPRI). + +While poll(2) seems to be a very bit slower than sigio it works reliable. + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/thoughts.closed b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/thoughts.closed new file mode 100644 index 00000000..91a8e080 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/ancient/thoughts.closed @@ -0,0 +1,52 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c + +7. Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. As this is not needed + currently, it's not implemented. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/README.text b/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/README.text new file mode 100644 index 00000000..c4947a13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/README.text @@ -0,0 +1,2 @@ +DO NOT READ CONTENT IN THIS DIRECTORY. +(or at least do not blame me, if you get really confused after reading it) diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/big-picture.text b/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/big-picture.text new file mode 100644 index 00000000..4426c236 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/big-picture.text @@ -0,0 +1,122 @@ +Just a small hint-file for me to see how cinit works: + + - cinit starts + * cinit executes either init or a profile + - the dependency-tree begins + + - now cinit begins to try to execute the dependencies + * first the needs (if those fail, wants are never called) + - fork() for every dependency? + +-------------------------------------------------------------------------------- +another idea: + + - cinit starts + - cinit reads the full depedency tree + * it builds n-depth trees + * it begins at the set init service (profile or init!) + * init is the first entry. always. + * read full service information (like on/off/params/respawn) + * design of each tree element: see below + - add a tree for the needs + - add a tree for the wants + - the elements have links, one service is created only once + - after the tree is created, execution begins + * begin from the bottom + * save a pointer to the last level somehow before? + +Pre calculation: + - need to act on changes (some kind of file watcher) + * need to keep status (?) + * what with now missing needs / wants? + - missing needs: shutdown now missing needs? + - simply ignore them? + - shut them down if not needed (no one has a link in needs?) + * +-------------------------------------------------------------------------------- +Sample dependency tree: + + init + / \ + needs wants + / | \ / | \ + a b c d e f + / | \ / | \ + needs needs needs END needs END + / | \ \ | | | | + b c d c f a e a +-------------------------------------------------------------------------------- +How this would be sorted:: + init: + needs: a b c + wants: d e f + a: + needs: b c d + b: + needs: c f + c: + needs: a e + d: + - + e: + needs: a + f: + - +-------------------------------------------------------------------------------- +So in this case, cinit may start services the following way: + d f + -> Wouldn't be possible in pre-calculation, because of circular dependencies. +-------------------------------------------------------------------------------- + Try a 'real' dependency tree: + a needs b c d + b needs c d + c and d do not need other stuff +-------------------------------------------------------------------------------- +Now cinit would it do the following way: + start c, start d + b will be started, as soon as c and d successfully finish + as soon as b is finished, a will be started +-------------------------------------------------------------------------------- +Now let's think about how this could look like in code... +- when we built up the tree, we have some ends (n to say) +- we can / must start starting (;-) at the end +- we would have more than one line back (z may be needed by c, i, and a) + * like in "c is needed by s, c, o" + * maxdepth counter? + * asynchronous rollback? + +--> to think more about it! +-------------------------------------------------------------------------------- + +tree elements: + * name (= path) + * on, off, +params + * respawn_delay + - -1 if not respawning + - >= 0 time to wait between restart + * status + - NOT STARTED (status on initialisation) + - RESPAWNING (running, respawning) + - RESPAWN_DELAY (waiting to respawn it) + - ONCE (started once) + * errormsg + - pointer to an error message in case of failure + * needs + - List of services we need + * wants + - List of services we want + * used_by + - List of services which use this service +-------------------------------------------------------------------------------- + +Conclusions +------------ + +cinit as the main executor +~~~~~~~~~~~~~~~~~~~~~~~~~~ +If cinit should start all services directly and manage dependencies +only internally, it will need to have build a reverse dependency tree, +so it begins starting at the end. + +cinit could execute all possible parallel running services in parallel +and open pipes to the (dumb) service executors. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/circular-dependencies.text b/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/circular-dependencies.text new file mode 100644 index 00000000..dcc91ea7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/circular-dependencies.text @@ -0,0 +1,35 @@ +What todo with circular dependencies? + a needs b + b needs a + + - try to start them? + status a: is_starting + status b: not_set + a wants b, so a service starter for b starts + status a: is_starting, waiting for b + status b: is_starting + service starter for b sees that a is needed + service starter for b sees that a is already being started + service starter for b begins to execute b + status a: is_starting, waiting for b + status b: is_starting, executing "on" + service starter b finishes + status a: is_starting, waiting for b + status b: FAILED | RESPAWN | ONCE + service a continues + b successful: execute on + b failed: register / print that we do not start, because + b failed + + -> this would only catch possible deadlocks, if the dependency + tree / status check is done dynamically + -> in case of pre-building the dep-tree this situation must + be concerned: + - start both a and b? + - or stop due to circular dependency? + + - Abort on detection of a circular dependency + * possible without pre-calculating? + - perhaps only with direct communication possible? + * pre calculate + - do not start that services? diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/coding-style b/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/coding-style new file mode 100644 index 00000000..1b164b9e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/coding-style @@ -0,0 +1,49 @@ +Coding style +============ +Nico Schottelius +0.1, for cinit, Initial version from 2006-11-13 +:Author Initials: NS + +This document describes the coding style used in cinit. + + +Indent +------ +Indent the code by 3 spaces for each level. + + +Unsorted +--------- +Linebreaks: + + +if(...) { + +} else { +} + + +do { +} while(); + +no spaces + - within braces and code "(!test)", + - before braces "if(code)" + +spaces + - after braces "if(test) return 0;" + - spaces before and after '=' (a = b); + +curly braces: + functions: + int func(int params) + { + body + } + +comments: + where necessery, do not state the obvious in comments: + + /* this code increments tmp */ + ++tmp; + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/creating-new-configurations b/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/creating-new-configurations new file mode 100644 index 00000000..a251de5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/creating-new-configurations @@ -0,0 +1,6 @@ +scripts/create_baseconfig.sh # create base +scripts/cinit.install.standard.dirs # create common categories + +- create fsck +- set hostname +- create getty(s) diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/possible_service_pre_calculation.text b/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/possible_service_pre_calculation.text new file mode 100644 index 00000000..96ec3a73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/possible_service_pre_calculation.text @@ -0,0 +1,19 @@ +- start at + * create a new service entry (if not exists) <--- + * reads needs | + - follow dependencies ------------------------ + * only if service does not yet exist! | + * read wants | + - follow dependencies ------------------------ + * only if service does not yet exist! + * create + - needed by entry in dependencies + - needs entry in service + - wanted by entry in dependencies + - wants entry in service + + * record + - (on,off)(,.env,.params)? + - alternatively put that code into service starter + * add services without further needs into a special + "begin" structure to be reused at fireing of the services? diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/possible_service_status.text b/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/possible_service_status.text new file mode 100644 index 00000000..eb0f21e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/possible_service_status.text @@ -0,0 +1,14 @@ + + - NOT_SET: this service has not yet been initialized + - RESPAWNING: happily respawning + - RESPAWN_DELAY: waiting delay before restarting + * HINT: using alarm()? + - senseful for single process service watcher + * HINT: using nanosleep()? + - senseful for per service process watcher + - NEED_FAILED + * add a (somehow terminated) list of services that failed? + * use global status to checkout which services failed? + - WANT_FAILED? + * NOT NECESSARY, it is a simple want, we do not need it. + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/registering_needs_wants.text b/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/registering_needs_wants.text new file mode 100644 index 00000000..ededbd41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/braindumps/registering_needs_wants.text @@ -0,0 +1,55 @@ +Each service has a list of services it + - needs + - is needed by + - wants + - is wanted by + + +Each entry is a service pointer. +The simplest list could look like this: + + service a: + needs: + b f g NULL + +So the needs pointer is NULL terminated: + needs = realloc(count_links) + -> how to get the count? + 0x02 + 0x + + Better: A double linked list (like the main service list)? + +Could look like: + service a: + needs: + *service + *next + *prev + +This design could also be used for wants. + +On the other hand, we've to register us at the needed/wanted service: + + service b: + needed_by: + *service + *next + *prev + + +So each service needs four pointers: + needs + needed_by + wants + wanted_by + +And on each request both lists have to be modified! + +Example: + + Service "a" adds "b" as needed: + + - add "a" needs "b" + - add "b" needed_by "a" + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/devel/README.text b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/README.text new file mode 100644 index 00000000..20524651 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/README.text @@ -0,0 +1,18 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit development documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +(cinit-)developers. + +Content +------- diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/devel/cinit-0.4.text b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/cinit-0.4.text new file mode 100644 index 00000000..61b718f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/cinit-0.4.text @@ -0,0 +1,115 @@ +cinit 0.4 - Redesign of cinit +============================================ +Nico Schottelius +0.4.0, for cinit 0.4, Initial Version from 2006-03-11 +:Author Initials: NS + + +cinit 0.2 ran fine and the general project of developing a +parallel executing init system is finished. +With cinit 0.4 there are new aims to reach. + + +Introduction +------------ + +. AIMS + - portability: no Linux-dependency anymore + - cleaner signal handling + - better documentation so more people can use it + + +Current problems +---------------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The mount(2) system call is os-specific. +The temporary fs is os-specific. + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Race conditions when multiple signals arrive + + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +serv/sig_reboot.c contains umount, remount hard coded. + + +Solutions +--------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Remove +- the mount call +- do not create an initial socket + +Wait until we recieve a signal, then we create a socket +under the configured socket directory (see `conf/sockdir`). + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +Misc +~~~~ + +- Configuration + /etc/cinit/config/ + init -> link to initial service + pre_boot + pre_boot_args + post_boot + post_boot_args + /etc/cinit/services/ + /etc/cinit/profiles/ + links to the starting services + + + +cinit - Internals +================= +Nico Schottelius +0.1 for cinit-0.3, Initial version: So Feb 19 10:25:46 CET 2006 +:Author Initials: NS + + +Introduction +------------ +This document describes the internals of cinit. It is thought +to be read by developers. + + +Child handler code in cinit-0.3 +------------------------------- + +In cinit versions <= cinit-0.2.1 the respawning services where +handled by an extra child handler, which was a fork of cinit. This +had some problems: + + - We allocated more memory than necessary, unecessary parts of + cinit were copied + - The SIG_CHILD-handler was not written very clean, in some versions + it was completly missing. + + +. So in `cinit-0.3` we changed it the following way: + - no extra child handlers + - handle everything in the SIG_CHILD handling function + - when sig_child is recieved do: + - check against respawn list + - if it is a respawning service, [do the following in a seperate fork?] + check whether it successfully stoped + - if yes: restart immediatly + - if no: sleep $sleep_time and then restart diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/devel/communication.text b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/communication.text new file mode 100644 index 00000000..82f77774 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/communication.text @@ -0,0 +1,221 @@ +cinit - communication +===================== +Nico Schottelius +0.1 for cinit-0.3, Initial version: 2006-08-11 +:Author Initials: NS + +This document describes the internal communication of cinit. +It is thought to be read by developers. + + +Introduction +------------ +This document describes the messages used between cinit, cinit forks +and other programs that want to talk to cinit. It does NOT +describe the communication method, but only the messages sent +(for the communication method read "ipc.text"). + +Document status +~~~~~~~~~~~~~~~ +This document is still being written, it is not finished. + + +About Messages +-------------- + +Order +~~~~~ +The client always initiates the communication. +cinit will begin listening to messages directly after its start. + +Data +~~~~~ +A message always conists of a predefined structure (see src/headers/comm.h). +The byte order is host specific (may be little or big endian). + + +The messages +------------ +The client always uses the same structure (struct msg_client) to contact +cinit. This way cinit does not need to handle dynamic data structures. + +cinit in contrast delivers different data structures to its clients, +depending on the question. + +The questions are issued by any type of client, the internal command used is +noted in square brackets ([]). + +The answers are given by cinit. + + +Question: Start a service (and its dependencies) [CMD_START_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to start the service and its dependencies. + +The client must provide cinit with the following information: +. Name of the service to be started +. Reason why to start it +. eventually additional information (see below) + +The reason +^^^^^^^^^^ +Can be one of: +- RS_NONE (it's a manual start request) +- RS_WANTS (a currently starting service wants to start this service) +- RS_NEEDS (a currently starting service needs to start this service) + +If the reason is RS_WANTS or RS_NEEDS the client must supply the name +of the service, which wants it to be started. + + +Question: Start a service (nothing else) [CMD_START_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to start the service and which will +report the status back. + + +Question: Stop a service (and its dependencies) [CMD_STOP_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to stop the service and each service +that 'needs' it. + +This function works recursively, thus also killing those services, that +need the service that need the current service. + + +Question: Stop a service (nothing else) [CMD_STOP_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to stop this service and which will +report the status back. + + +Question: Stop a service (plus 'needs' and 'wants') [CMD_STOP_SVC_WANTS] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Same as 'Stop a service (and its dependencies)', but also stop the +services that want to have this service. + +This function works recursively, thus also killing those services, that +'need' or 'want' the service that 'need' or 'want' the current service. + + +Question: Could you change the status? [CMD_CHG_STAT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A cinit fork reports the new status of a service. + + +Question: Could you start the rescue mode? [CMD_RESCUE] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +spawn the rescue program. + + +Question: Could you halt the system? [CMD_HALT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +halt the system. + + +Question: Could you reboot the system? [CMD_REBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +reboot the system. + + +Question: Could you poweroff the system? [CMD_POWEROFF] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +poweroff the system. If poweroff is not possible, the system will +be halted. + + +Question: Could you warmboot the system? [CMD_WBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +restart itself and the bootup process. + + +Question: Could you send information about a service? [CMD_INFO] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will respond with detailled information about the service +to the client. + + +Answer: Return short status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Start a service (and its dependencies) + - Question: Start a service (nothing else) + - Question: Stop a service (and its dependencies) + - Question: Stop a service (nothing else) + - Question: Stop a service (plus 'needs' and 'wants') + - Question: Could you change the status? + +cinit only responds the status of the asked service. +The structure send is "asw_sstatus", which only include a status byte. + + +Answer: Return long status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Could you send information about a service? + + +old Messages (to be transferred into this document) +--------------------------------------------------- + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Service status: + +-------------------------------------------------------------------------------- +service status (cinit), +Nico Schottelius 2005-09-29 (Last Modified: -) +-------------------------------------------------------------------------------- + +There are service status and service returns. Service status is a status +a service can have. A service return is a value from a function that +describes what happened with the service. + +Status has ST_ prefix, return has RT_ prefix. +See cinit.h for most up to date versions. + + +ST_NEED_FAIL - this service will not be started, until the needs are started +ST_FAIL - this service failed to start +ST_UNSPEC - some unknown error. This should never happen. +ST_ERR - ??? /* tried earlier, service failed, won't retry */ + +ST_SUCCESS - service was successfully started - senseful? +ST_TMP - some instance is currently working on it +ST_ONCE - executed once sucessfully +ST_RESPAWN - service is running and respawning + +ST_TMPNOW 55 /* now you are on it - only for clients */ +#define ST_OFF 56 /* Switching service off */ + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/devel/configuring.text b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/configuring.text new file mode 100644 index 00000000..405a4d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/configuring.text @@ -0,0 +1,18 @@ +cinit/doc/devel/using-conf.text +================================ +Nico Schottelius +0.1, Initial Version from 2006-07-28 +:Author Initials: NS + +About conf/* and how to use the configurations. + +Introduction +------------ + +Who should read those documents? +-------------------------------- + +Content +------- + + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/devel/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/cross-compiling.text new file mode 100644 index 00000000..fdf70564 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/cross-compiling.text @@ -0,0 +1,36 @@ +TODO: + - merge into "Cross compiling" + +cinit - Problems that may arise +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Max open files + OS dependent + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/devel/ipc.text b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/ipc.text new file mode 100644 index 00000000..7013a985 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/ipc.text @@ -0,0 +1,108 @@ +IPC - in cinit and in general +============================= +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +IPC - Inter process communication + +Introduction +------------ +This document describes the IPC methods used and/or tested for +cinit. + +It does not describe in detail, how the different methods work +(this is already done many times, there's great documentation +available online), but more the advantages and disadvantages +(especially for an init system). + +What is IPC? +~~~~~~~~~~~~ +IPC describes methods to communicate between different processes +(programs). + +IPC as described by SUSV3 (The Single UNIX Specification Version 3) +aka IEEE Std 1003.1, 2004 Edition aka POSIX only defines +MSQ, SHM and Semaphores as IPC. This document also covers +Sockets and FIFOs. + + +What is not (yet) covered by this document? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Speed of different IPC methods, different behaviour on different +unices. + + +Why do you need IPC for an init system? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +cinit IPC history + analysis +---------------------------- + + +FIFOs +~~~~~ +First in - first out +File on the filesystem +Always need two files for two way communication + +Hints +^^^^^ +The first idea for IPC in cinit was to use two FIFOs, like minit does. +Wrong assumption: +runit also uses fifos, but two fifos for each services. That way +more parallel transmissions is possible. +You have to pay attention: Maximum number of opened files! +(On Linux 2.6 this is 1024, which makes a maximum of 512 services. +This limit is most likely never reached, but you have to keep it +in mind). + +Sockets +~~~~~~~ +Clean and beautiful. They allow easy two way communication. + +If you created a socket, fs is r/o, you cannot use it, although +there is SO_REUSE. + +First method: Using memory mapped part (tmpfs). +Second method: use interal communication (pipes!) and external after +/etc/cinit/ becomes writable. + + +Current IPC configuration +-------------------------- + +- switchable (conf/ipc_method) +- each ipc implementation needs: + + ipc.h -> for global variables and ipc specific things + prefix variables with ipc_ + int cinit_ipc_init(void); -> general initialization + return 1 on success, 0 on failure + int cinit_ipc_listen(void); -> begin to listen for messages + int cinit_ipc_send(void *data) -> send data to a client + +-------------------------------------------------------------------------------- +TO SORT: + +1. message queues + o clients schreiben rein + o datenpaket gross genug fuer antwort? + +2. shared memory + o client kann direkt rauslesen, was gestartet werden muss + o client kann direkt abhaengigkeiten starten, muss diese aber + eintragen + +Ausprobieren: + - Mutexe + - Message Queues + - + +Ideen: + Message queue + 1. Client geht auf die normale + als id = pid (cast!) + dann rueck via anderer queue + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/devel/lists.text b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/lists.text new file mode 100644 index 00000000..6360acb3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/lists.text @@ -0,0 +1,22 @@ +Lists in cinit-0.3 are generalized, all have the same general layout: + + - double linked + - have 'prev' and 'next' as pointers + + Add an element to a list + + /--------------------------\ + |<->first<->middle<->last<->| + + + After insert: + + /-------------------------------\ + |<->first<->middle<->last<->new<->| + + We alway have 'first'. + Need to adjust: + - new->prev = last (= first->next) + - new->next = first + - first->prev = new + - first->prev->next (= last->next) = new diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/devel/merging.other.initsystems.text b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/merging.other.initsystems.text new file mode 100644 index 00000000..0baa4789 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/merging.other.initsystems.text @@ -0,0 +1,68 @@ +TODO: + - rewrite to asciidoc + - implement a sample merge + +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not mean that he does not accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated! + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/devel/testing.text b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/testing.text new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/devel/testing.text @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/logs/2006-10-25.config.wasserstoff b/software/cinit/browse_source/cinit-0.3pre3/doc/logs/2006-10-25.config.wasserstoff new file mode 100644 index 00000000..f28bd71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/logs/2006-10-25.config.wasserstoff @@ -0,0 +1,16 @@ +[17:12] wasserstoff:svc# pwd +/etc/cinit/svc +[17:12] wasserstoff:svc# ls +init +17:12] wasserstoff:svc# mkdir getty +[17:12] wasserstoff:svc# mkdir getty/2/ +[17:12] wasserstoff:svc# cd getty/2 +[17:12] wasserstoff:2# ln -s /sbin/getty on +17:12] wasserstoff:2# echo 38400 > on.params +[17:13] wasserstoff:2# echo tty2 >> on.params +[17:13] wasserstoff:2# cd ../../init +[17:14] wasserstoff:init# mkdir needs +[17:14] wasserstoff:init# cd needs +[17:14] wasserstoff:needs# ln -s ../../getty/2 getty-2 +[17:14] wasserstoff:needs# + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/logs/2006-11-22.startup-with-debug b/software/cinit/browse_source/cinit-0.3pre3/doc/logs/2006-11-22.startup-with-debug new file mode 100644 index 00000000..44121cf4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/logs/2006-11-22.startup-with-debug @@ -0,0 +1,55 @@ +[0:08] wasserstoff:cinit-0.3pre3% ./src/cinit +cinit-0.3pre3: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty:: +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2:: +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout:: +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3:: +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning:: +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount:: +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root:: +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network:: +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0:: +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback:: +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::/etc/cinit/svc/init +========> tree_exec() +/etc/cinit/svc/local-tuning/keyboard-layout:::abhaengigkeiten gestartet, exec; add wants, needsdep_needs_wants_add::/etc/cinit/svc/local-tuning/keyboard-layout add: (/etc/cinit/svc/getty/2) + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/man/cinit.text b/software/cinit/browse_source/cinit-0.3pre3/doc/man/cinit.text new file mode 100644 index 00000000..11d56be2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/man/cinit.text @@ -0,0 +1,54 @@ +cinit(8) +======== +Nico Schottelius + + +NAME +---- +cinit - fast executing, small and simple init with support for profiles + + +SYNOPSIS +-------- +'cinit' [cprofile:name_of_profile] + + +DESCRIPTION +----------- +ccollect is a backup utility written in the sh-scripting language. +It does not depend on a specific shell, only `/bin/sh` needs to be +bourne shell compatibel (like 'dash', 'ksh', 'zsh', 'bash', ...). + +For more information refer to the texinfo or html documentation. + + +OPTIONS +------- + +cprofile:name_of_profile:: + If specified, cinit will start the named profile instead of the + standard service (which is confdir/init/) + +BUGS +---- +cinit is not tested nor documented very well currently. + +Additionally the porting to other OS is not finished yet. + +Both is work in progress. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + + +COPYING +------- +Copyright \(C) 2006 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/man/cservice b/software/cinit/browse_source/cinit-0.3pre3/doc/man/cservice new file mode 100644 index 00000000..8dae0c2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/man/cservice @@ -0,0 +1,34 @@ +-------------------------------------------------------------------------------- +cservice, +Nico Schottelius, 2005-06-10 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +cservice - control cinit + +cservice -[phearsu] + -e - (ein) start a service (including all needed dependencies) + -a - (aus) stop a respawing service, don't care about other services + + -r - reboot + -h - halt + -p - poweroff (on some systems the same as halt) + -s - reScue mode - only a shell + + -u - update: hot reboot - shutdown system and execute /sbin/cinit + +A service may be specified either as relative or as absolute path. + +-h, -p, -r, -s and -u need the "Magic Word" to do their work: "thilo" + +-------------------------------------------------------------------------------- + +Some examples: + + cservice -e /etc/cinit/getty/8 # fire up getty/8 + cd /etc/cinit/getty; cservice -a ./8 # shut down getty/8 + cservice -h thilo # halt + cservice -r thilo # reboot + cservice -s thilo # rescue + cservice -u thilo # update + +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/FAQ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/FAQ new file mode 100644 index 00000000..53494f73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile:home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/README.text b/software/cinit/browse_source/cinit-0.3pre3/doc/user/README.text new file mode 100644 index 00000000..3467ba63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/README.text @@ -0,0 +1,21 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit user documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +People using cinit. + +Content +------- + +hints.text: Some general hints +tuning.text: Some tuning hints diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/TODO b/software/cinit/browse_source/cinit-0.3pre3/doc/user/TODO new file mode 100644 index 00000000..6044e97a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/TODO @@ -0,0 +1,4 @@ +All the content in this file is unsorted. Reading may harm you. + +Confdir: /etc/cinit/conf/ +panic: /etc/cinit/conf/panic, /etc/cinit/conf/panic.params diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/caveats b/software/cinit/browse_source/cinit-0.3pre3/doc/user/caveats new file mode 100644 index 00000000..5ab123e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/caveats @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/compiles.on b/software/cinit/browse_source/cinit-0.3pre3/doc/user/compiles.on new file mode 100644 index 00000000..3fe83479 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/compiles.on @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +compiles.on, +Nico Schottelius 2005-06-09 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit is known to compile on: + +x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 + +Please report your configuration, if it's not listed here. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/config-dirs b/software/cinit/browse_source/cinit-0.3pre3/doc/user/config-dirs new file mode 100644 index 00000000..4a8fbb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/config-dirs @@ -0,0 +1,19 @@ +configuring + + /etc/cinit/defaults/panic -> link to something to execute on panic + (most likely /sbin/sulogin) + + /etc/cinit/defaults/tmp -> link to a directory where + the socket should be created, + after finishing boot + + What todo right before halting/rebooting/powering off + /etc/cinit/special/ + -> halt + -> reboot + -> poweroff + +Configuration +------------- + +Send kill signal diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/configuring.cinit b/software/cinit/browse_source/cinit-0.3pre3/doc/user/configuring.cinit new file mode 100644 index 00000000..a88ba00f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/configuring.cinit @@ -0,0 +1,189 @@ +-------------------------------------------------------------------------------- +configuring cinit, +Nico Schottelius 2005-05-28 (Last Modified: 2005-06-05) +-------------------------------------------------------------------------------- + +0. Pre-compile configuration +1. General configuration layout +2. Hints +2.0 Service executing / parameters +2.1 Daemons +2.2 Logging +2.3 Using prepared scripts +3. Profiles + + +0. Pre-compile configuration + +Have a look at conf/*. Those variable will mostly be used when +compiling cinit. Some will be read later (like destdir). + + +1. General configuration layout + +/etc/cinit (configurable via conf/cinit_dir) stores the complete +cinit configuration. + +cinit is service based. +A service consists of + - a base directory (like /etc/cinit/getty/1) + - dependency configuration: + + ./wants - services it wants to be started before (but it + will work anyway) + + ./needs/ - services it needs. If those services fail, this service + won't be started. + + - a flag indicating whether to respawn the service: + + ./respawn (simply touch it) + + - a delay: how long to wait for the service (in seconds) before + sending SIGKILL after the SIGTERM (only for respawning processes): + + ./delay (one line with only the digits) + + If delay is non-existing or not readable, the delay from + conf/sleep_kill_svc is taken. The maximum length of this + number ("9999" uses length 4, "42" needs 2 bytes) can be adjusted + at compile time in conf/max_delay. Internally this is a signed + integer, so the maximum size depends on your system. Though + I don't think anybody will want to wait for a service as long as + an integer would allow. + + - the program to run when switching the service on and off: + + ./on (a link to a program or a shell script) + ./on.params (see conf/c_params, the parameters to pass to the program) + ./on.env (see conf/c_env, the environment to pass to the program) + + ./off (call that when shutting down the service) + ./off.params (the parameters to pass to the program) + ./on.env (the environment to pass to the program) + +You should have a look at the samples/ directory for examples. + +If things are missing, cinit will continue with what's available. +This way you only need the files you use. Some examples: + + /etc/cinit/init: + ./wants -> services it wants + ./needs -> services it needs + That's everything + + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it + That's everything, as it has no dependencies + + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn on service + delay -> wait this time before sending SIGKILL after SIGTERM + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting + + +2. Hints + +2.0 Service executing / parameters + +The on and off files can and should be links to the programs you want +to execute. This way you save yourself loading the big shell (which is +on many Linux systems bash, why so ever, dash does the job as good, still +beeing small). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. The on script +could look like: + + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). + + +2.1 Daemons + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking (Please have a look at +daemons.backgrounding for a list of known daemons and their switches +to avoid backgrounding). + +The other possibility is to use a program, which will + a) start the daemon + b) look into the pidfile of the daemon + c) will then wait until that pid does not exist anymore + d) and then it exits and cinit will restart it (goto a) now) + +Such a program is included into this cinit release, +though I do not recommend using it. You should better contact the +authors and make them implement a clean non-forking mode. + +The name of the program (actually a shell script) is "cinit.wait.for.daemon". + +You will use it as the "on" part of the service and you have to add + + a) the pidfile to on.params + b) the daemon binary + +Thus the service would look like: + + svc-broken-daemon/ + on -> /sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + + +2.2 Logging + +Currently there's no special logging support. +When programs write to stdout, it will be displayed on +the same stdout cinit is connected to +(we don't even open /dev/console - we are too lazy currently). + + +2.3 Using prepared scripts + +In the bin/ directory of this tarball you'll find at least: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + + +3. Profiles + +Since cinit-0.0.6 there is profile in cinit. +Profiles are described in doc/profile.support. + +X. Examples + +Can be found in the tarballs below samples/. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre3/doc/user/cross-compiling.text new file mode 100644 index 00000000..67208534 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/cross-compiling.text @@ -0,0 +1,6 @@ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/daemons.backgrounding b/software/cinit/browse_source/cinit-0.3pre3/doc/user/daemons.backgrounding new file mode 100644 index 00000000..f7b7fdf5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/daemons.backgrounding @@ -0,0 +1,71 @@ +-------------------------------------------------------------------------------- +daemons backgrounding, +Nico Schottelius 2005-06-12 (Last Modified: 2005-10-15) +-------------------------------------------------------------------------------- + +0. Definition + +A daemon is a program which runs in the background, not having a tty +associated necesserally. Running in background does not mean it has +to background (fork()) itself, but that you cannot control it directly +from a shell. + +1. Daemons and cinit + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking + +The following daemons / servers are known to avoid backgrounding easily: + + acpid [x86 power management]: -f (undocumentated but works) + apache [webserver]: -DFOREGROUND + asterisk [pbx]: -f + bind [dns server/caching]: -f + cardmgr [pcmcia/cardbus]: -f + cron (vixie) [schedular]: -f + cupsd [printer server]: -f or -F + dhclient [dhcp client]: -d + dhcp3 (isc) [dhcp server]: -f + distccd [compile server]: normal behaviour + fam [file alteration monitor]:-f + fcron [schedular]: -f + frox [ftp proxy]: "NoDetach" in config + gdm [display manager]: -nodaemon + hybrid [irc server]: -foreground + icecast2 [sound streamer]: normal behaviour + mini-lpd [printer server]: normal behaviour + metalog [log server]: normal behaviour + monotone [vcs]: normal behaviour + mpd [music server]: --no-daemon + nessusd ["security server"]: normal behaviour + ntpd [time server]: -n + oidentd [identd server]: -i + oops [http proxy]: normal behaviour + openssh [ssh server]: -D + openvpn [vpn server]: normal behaviour + pbbuttonsd [power management]:normal behaviour + proftpd [ftp server]: -n + qmail [mta]: normal behaviour + rsync ["file server"]: --no-detach + silcd ["secure chat server"]: -F, --foreground + slapd [ldap]: -d + snmpd [snmp daemon]: -f + svnserve [vcs]: --foreground + syslogd [log server]: -n + syslog-ng [log server]: -F + tcpserver [super server]: normal behaviour + udhcpc [dhcp client]: normal behaviour + vsftpd [ftp server]: normal behaviour (or: config: background=no) + xinetd [super server]: -dontfork + +Those are the daemons that do not offer the possibility (as of release 0.2): + + atd (no switch, no configuraton option) + inetd (some variants) + nscd (no switch, no configuraton option) + portmap (only with debug mode) diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/debugging.configuration b/software/cinit/browse_source/cinit-0.3pre3/doc/user/debugging.configuration new file mode 100644 index 00000000..1289865e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/debugging.configuration @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +Debugging your init configuration, +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +As writing an init configuration is not the easiest thing, +here are some problems (P) and debugging hints (H): + +P: There's no output! +H: If you don't start a service which outputs something there won't be any, + cinit starts up silently. + +P: Service XYZ seems not to work? +H: Try the following in your shell: + cd /etc/cinit/the-service; ./on "$(on.params)" + If that succeeds it has perhaps something missing which should have been + started before. +H: Create a test-service, which contains the following: + on: link to /bin/echo + on.params: "A test string" (with or without the quotes) + Now add the test-service to the needs directory of service XYZ. + If you see output the next time, the service is started. + Otherwise you forgot to make another service dependent on service + XYZ. + +P: How can I test if a non-outputting service successfully started? +H: Create another service, which depends on your service and make + it echo something. + +P: Does that profile support really work? +H: Try that: cprofile:NONEXISTENT and you'll see. + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/ideas b/software/cinit/browse_source/cinit-0.3pre3/doc/user/ideas new file mode 100644 index 00000000..d3f13d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/ideas @@ -0,0 +1,3 @@ +- cinit-multi-machine-daemon: + coordinating bootup with several machines + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/installing-cinit.text b/software/cinit/browse_source/cinit-0.3pre3/doc/user/installing-cinit.text new file mode 100644 index 00000000..084a225e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/installing-cinit.text @@ -0,0 +1,25 @@ +cinit - Installing +================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 +:Author Initials: NS + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +For cross compiling see 'cross-compiling.text'. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/main.text b/software/cinit/browse_source/cinit-0.3pre3/doc/user/main.text new file mode 100644 index 00000000..6308e4c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/main.text @@ -0,0 +1,113 @@ +cinit - a modern init system +============================= +Nico Schottelius +v0.1, for cinit-0.2.2, 2005-01-18 +:Author Initials: NS + + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/meta.dependencies b/software/cinit/browse_source/cinit-0.3pre3/doc/user/meta.dependencies new file mode 100644 index 00000000..fe743c48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/meta.dependencies @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, one would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation (see profile.support). + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +why it does not even need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ + +This way you have the indirection (meta-dependencies) in the filesystem +and cinit does not need any additional code. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/optimising.cinit b/software/cinit/browse_source/cinit-0.3pre3/doc/user/optimising.cinit new file mode 100644 index 00000000..4f4b5c02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/optimising.cinit @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options +2. striping + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + +The current standard for cinit is: (see CFLAGS in the Makefile). + + +2. striping + +With strip(1) you can remove specific sections of object files. +You have to find out, which ones you can remove safely +(for instance with objdump(1)). + +The current standard for cinit is: (see STRIP in the Makefile) diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/paths.text b/software/cinit/browse_source/cinit-0.3pre3/doc/user/paths.text new file mode 100644 index 00000000..0b8c6b39 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/paths.text @@ -0,0 +1,68 @@ +cinit - Configuration +====================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Configuring cinit - the paths used + + +Introduction +------------ +The base directory under which all configurations are found +is '/etc/cinit'. + +The basic hierarchy is shown below: +---------------------------------------------------------------------- +/etc/cinit + svc -> services + conf -> general configuration +---------------------------------------------------------------------- + + +General pathnames +~~~~~~~~~~~~~~~~~~ +When you create something that cinit should execute (like on +starting a service, on stopping a service, on panic, ...), cinit +will recognize the following extensions: + +. cinit executions extensions + - 'name' - the file that should be executed + - 'name'.params - the parameter to pass to 'name' when executing + - 'name'.env - the environment to pass to 'name' when executing + + +Name.params +^^^^^^^^^^^ +The 'params' file is a simple file containing one argument on each +line. + +Name.env +^^^^^^^^ +The 'env' file contains one assignment on each line. +"testvar=testvalue". + + +The subdirectory 'conf' +~~~~~~~~~~~~~~~~~~~~~~~ +In this directory are general configurations located. + +. The executable files in this directory are: + - panic{.*} + - umount{.*} + +The subdirectory 'svc' +~~~~~~~~~~~~~~~~~~~~~~ +This directory contains the services. A service is a directory +which may contain the following files: + +. List of files + - on - What to execute when starting the service + * on.env - Environment to pass to 'on' + * on.params - Parameters to pass to 'on' + - off - What to execute when stopping the service + * off.env - Environment to pass to 'on' + * off.params - Parameters to pass to 'on' + - respawn - An empty file that tells cinit to restart the service + when it exits + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/problems b/software/cinit/browse_source/cinit-0.3pre3/doc/user/problems new file mode 100644 index 00000000..a3440a3a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/problems @@ -0,0 +1,9 @@ +fsck: + returns non-zero if it repaired something. + You have to wrap it into a shell-script :-( + + #!/bin/sh + fsck $@ + [ $? -le 1 ] && exit 0 + exit 1 + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/profile.support b/software/cinit/browse_source/cinit-0.3pre3/doc/user/profile.support new file mode 100644 index 00000000..7bc607b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/profile.support @@ -0,0 +1,72 @@ +-------------------------------------------------------------------------------- +Profiles, +Nico Schottelius, 2005-06-04 +-------------------------------------------------------------------------------- + +1. What are profiles? +2. How to use profiles? +3. How to configure profiles? +4. Some examples + + +1. What are profiles? + +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +2. How to use profiles? + +Simply pass 'cprofile:PROFILENAME' (like cprofile:home) to cinit. +How to pass argumenents to cinit? Under Linux the init-system +gets the kernel arguments (see linux.kernel.eats.arguments) as arguments. +So you can use + + kernel /usr/src/linux/vmlinuz cprofile:work (grub1,grub2) + append="cprofile:work" (LILO,yaboot) + +Other Unices should work like Linux, please consult your local +documentation. + + +3. How to configure profiles? + +It's very simple: Normally cinit would call /etc/cinit/init as +primary service and solve all dependencies. If you pass +cprofile=wireless to it, cinit will start /etc/cinit/wireless as +primary service instead. + + [Note: /etc/cinit/yourprofile is the service that will be started. + You need/should/must NOT create /etc/cinit/yourprofile/init!] + +So the only thing you have to do is to create a service directory +below /etc/cinit with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/init; tar c . | (mkdir ../yp; cd ../yp; tar x ) + +That's it! + + +4. Some examples + +Here are some examples we found in #cLinux: + + profile name what it does + + musibox only start mp3blaster + terminal start only minicom, which opens the serial line + net-terminal start a respawning shell script, which starts + ssh to the selected host + video start X+mplayer, which plays the dvd/cdrom + wireless What to start when beeing in an unknown wlan + home/work selected services (nfs, ip, ...) for home or work + diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/replacing.init b/software/cinit/browse_source/cinit-0.3pre3/doc/user/replacing.init new file mode 100644 index 00000000..2858c56c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/replacing.init @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and link, move or copy cinit to init (ln -s /sbin/cinit /sbin/init), reboot. + +That's everything in general, the biggest part will be to configuring cinit. + +See also doc/merging.other.initsystems. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/updating.cinit b/software/cinit/browse_source/cinit-0.3pre3/doc/user/updating.cinit new file mode 100644 index 00000000..fc0d3fef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/updating.cinit @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. call cservice -u thilo (if you have cinit-0.1 or later) + + For older versions: + + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything running and restart as if you would just + have booted. diff --git a/software/cinit/browse_source/cinit-0.3pre3/doc/user/using.rescue b/software/cinit/browse_source/cinit-0.3pre3/doc/user/using.rescue new file mode 100644 index 00000000..f58ff512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/doc/user/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user"). + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.3pre3/scripts/cinit.build-env b/software/cinit/browse_source/cinit-0.3pre3/scripts/cinit.build-env new file mode 100644 index 00000000..94e093e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/scripts/cinit.build-env @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: build environment to be used in scripts +# * Should be sourced by using scripts +# 2006-10-26 +# + +. $(dirname $0)/cinit.read-conf + +export BASEDIR=${DESTDIR}${CINIT_DIR} +export SERVICES=${BASEDIR}/${SVCDIR} +export CONFIG=${BASEDIR}/${CONFDIR} diff --git a/software/cinit/browse_source/cinit-0.3pre3/scripts/cinit.get-confdir b/software/cinit/browse_source/cinit-0.3pre3/scripts/cinit.get-confdir new file mode 100644 index 00000000..38d8572d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/scripts/cinit.get-confdir @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# Date: 2005-05-24 (Last Changed: 2005-08-08) + +# try environment first +if [ "$CINIT_CONF_DIR" ]; then + CONFDIR=$CINIT_CONF_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +else + echo 'Did not find cinit configuration!' >&2 + echo "Please set the variable CINIT_CONF_DIR" >&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.3pre3/scripts/cinit.install.standard.dirs b/software/cinit/browse_source/cinit-0.3pre3/scripts/cinit.install.standard.dirs new file mode 100644 index 00000000..22cf273d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/scripts/cinit.install.standard.dirs @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install standard sub-configuration directories +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.build-env + +for svc in $SERVICE_CATEGORIES; do + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${SERVICES}/${svc}" +done + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre3/scripts/cinit.mkheader b/software/cinit/browse_source/cinit-0.3pre3/scripts/cinit.mkheader new file mode 100644 index 00000000..80e3f7cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/scripts/cinit.mkheader @@ -0,0 +1,32 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric: no quotes needed + is_numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + is_string="$(echo $value | grep '^"')" + + # + # Check for quote type + # + if [ ! "$is_numeric" -a ! "$is_string" ]; then + one_char=$(echo -n $value | wc -c) + + if [ "$one_char" -eq 1 ]; then + value="'$value'" + else + # is a string + value="\"$value\"" + fi + fi + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.3pre3/scripts/cinit.read-conf b/software/cinit/browse_source/cinit-0.3pre3/scripts/cinit.read-conf new file mode 100644 index 00000000..4f3c1cb7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/scripts/cinit.read-conf @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# ~ 2005 +# + +CONFS=$($(dirname $0)/cinit.get-confdir)/* + +set -e + +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + if eval test -z \$$NAME; then + eval $NAME=\"$(head -n 1 $conf)\" + eval export $NAME + fi +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.3pre3/scripts/create_baseconfig.sh b/software/cinit/browse_source/cinit-0.3pre3/scripts/create_baseconfig.sh new file mode 100644 index 00000000..7c9b69e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/scripts/create_baseconfig.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# 2006-10-23 +# cLinux/cinit + +. $(dirname $0)/cinit.build-env + +set -e + +mkdir -p "${BASEDIR}" + +mkdir -p "${SERVICES}" +mkdir -p "${SERVICES}/${C_INIT}" + +mkdir -p "${CONFIG}" diff --git a/software/cinit/browse_source/cinit-0.3pre3/serv/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre3/serv/run_init_svc.c new file mode 100644 index 00000000..f41c1f4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/serv/run_init_svc.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre3/serv/sig_child.c b/software/cinit/browse_source/cinit-0.3pre3/serv/sig_child.c new file mode 100644 index 00000000..cee8042e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/serv/sig_child.c @@ -0,0 +1,35 @@ +/* cinit + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * We are called, when a child dies. Remove it. + */ + +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_child + * collect the children + * FIXME: check whether we've race conditions when reciieving multiiple + * signals + * Perhaps disable listening to sig_child in meantime? + */ + +void sig_child(int tmp) +{ + struct listitem *svc; + + do { + /* check if it's a watched child */ + tmp = waitpid(-1, &tmp, WNOHANG); + + /* restart service, if we are watching it */ + svc = list_search_pid((pid_t) tmp); + + if( svc != NULL ) { + svc->pid = exec_svc(svc->abs_path, CMD_START_SVC); + } + } while( tmp > 0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-17-19:03:48 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-17-19:03:48 new file mode 100644 index 00000000..e379e004 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-17-19:03:48 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 17 19:03 cinit +-rwx------ 1 nico users 46760 Jun 17 19:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-20-12:16:40 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-20-12:16:40 new file mode 100644 index 00000000..1f0c3325 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-20-12:16:40 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 20 12:16 cinit +-rwx------ 1 nico users 50860 Jun 20 12:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-20-15:16:31 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-20-15:16:31 new file mode 100644 index 00000000..75dc3e7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-20-15:16:31 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 15:16 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-20-16:29:28 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-20-16:29:28 new file mode 100644 index 00000000..1294bde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-20-16:29:28 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-20-16:29:50 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-20-16:29:50 new file mode 100644 index 00000000..69fe7490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-20-16:29:50 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 16:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-21-11:53:35 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-21-11:53:35 new file mode 100644 index 00000000..4a1e7b6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-21-11:53:35 @@ -0,0 +1,3 @@ +total 192 +-rwx------ 1 nico users 102039 Jun 21 11:53 cinit +-rwx------ 1 nico users 87871 Jun 21 11:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-07:33:11 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-07:33:11 new file mode 100644 index 00000000..e6c8ff14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-07:33:11 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47544 Jun 22 07:33 cinit +-rwx------ 1 nico users 46760 Jun 22 07:33 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-07:57:13 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-07:57:13 new file mode 100644 index 00000000..17161d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-07:57:13 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47536 Jun 22 07:57 cinit +-rwx------ 1 nico users 46760 Jun 22 07:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-08:08:40 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-08:08:40 new file mode 100644 index 00000000..770083f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-08:08:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47424 Jun 22 08:08 cinit +-rwx------ 1 nico users 46760 Jun 22 08:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-08:30:42 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-08:30:42 new file mode 100644 index 00000000..aa95fb3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-08:30:42 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47360 Jun 22 08:30 cinit +-rwx------ 1 nico users 46760 Jun 22 08:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-09:19:42 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-09:19:42 new file mode 100644 index 00000000..70c261bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-09:19:42 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 09:19 cinit +-rwx------ 1 nico users 50860 Jun 22 09:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-10:43:24 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-10:43:24 new file mode 100644 index 00000000..b8bc4076 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-10:43:24 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 10:43 cinit +-rwx------ 1 nico users 50860 Jun 22 10:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-12:42:57 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-12:42:57 new file mode 100644 index 00000000..c8119859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-12:42:57 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 22 12:42 cinit +-rwx------ 1 nico users 46760 Jun 22 12:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-13:52:41 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-13:52:41 new file mode 100644 index 00000000..793b92fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-13:52:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:52 cinit +-rwx------ 1 nico users 46760 Jun 22 13:52 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-13:59:40 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-13:59:40 new file mode 100644 index 00000000..d114c557 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-13:59:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:59 cinit +-rwx------ 1 nico users 46760 Jun 22 13:59 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-14:19:41 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-14:19:41 new file mode 100644 index 00000000..8d56882f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-14:19:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47640 Jun 22 14:19 cinit +-rwx------ 1 nico users 46760 Jun 22 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-14:37:18 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-14:37:18 new file mode 100644 index 00000000..b7c3e4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-22-14:37:18 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 22 14:37 cinit +-rwx------ 1 nico users 46760 Jun 22 14:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-23-06:22:23 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-23-06:22:23 new file mode 100644 index 00000000..9e38a5e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-23-06:22:23 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 23 06:22 cinit +-rwx------ 1 nico users 46760 Jun 23 06:22 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-24-17:53:55 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-24-17:53:55 new file mode 100644 index 00000000..3b750eaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-24-17:53:55 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:53 cinit +-rwx------ 1 nico users 46760 Jun 24 17:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-24-17:55:29 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-24-17:55:29 new file mode 100644 index 00000000..c30dcaf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-24-17:55:29 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:55 cinit +-rwx------ 1 nico users 46760 Jun 24 17:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-26-13:19:49 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-26-13:19:49 new file mode 100644 index 00000000..a4de830b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-06-26-13:19:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 26 13:19 cinit +-rwx------ 1 nico users 50860 Jun 26 13:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:07:13 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:07:13 new file mode 100644 index 00000000..e2c59ddf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:07:13 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:07 cinit +-rwx------ 1 nico users 50860 Jul 6 08:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:12:20 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:12:20 new file mode 100644 index 00000000..e562350c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:12:20 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:12 cinit +-rwx------ 1 nico users 50860 Jul 6 08:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:13:39 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:13:39 new file mode 100644 index 00000000..32fd8268 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:13:39 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:13 cinit +-rwx------ 1 nico users 50860 Jul 6 08:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:14:19 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:14:19 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:14:19 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:14:59 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:14:59 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:14:59 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:15:56 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:15:56 new file mode 100644 index 00000000..cf26e6f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-08:15:56 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:15 cinit +-rwx------ 1 nico users 50860 Jul 6 08:15 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-10:12:22 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-10:12:22 new file mode 100644 index 00000000..d5f0f2c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-10:12:22 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:08 cinit +-rwx------ 1 nico users 50860 Jul 6 10:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-10:12:31 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-10:12:31 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-10:12:31 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-10:12:49 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-10:12:49 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-07-06-10:12:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-08-29-21:21:34 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-08-29-21:21:34 new file mode 100644 index 00000000..e651a8ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-08-29-21:21:34 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 root root 444508 2005-08-29 21:21 cinit +-rwx------ 1 root root 440412 2005-08-29 21:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-08-29-23:50:55 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-08-29-23:50:55 new file mode 100644 index 00000000..a279aee3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-08-29-23:50:55 @@ -0,0 +1,3 @@ +insgesamt 856 +-rwx------ 1 nico nico 437564 2005-08-29 23:50 cinit +-rwx------ 1 nico nico 436316 2005-08-29 23:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-03-03:36:59 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-03-03:36:59 new file mode 100644 index 00000000..01e555f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-03-03:36:59 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 nico nico 444508 2005-09-03 03:36 cinit +-rwx------ 1 nico nico 440412 2005-09-03 03:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-03-04:34:35 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-03-04:34:35 new file mode 100644 index 00000000..1832930a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-03-04:34:35 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 04:34 cinit +-rwx------ 1 nico nico 440412 Sep 3 04:34 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-03-05:51:17 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-03-05:51:17 new file mode 100644 index 00000000..4e465d06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-03-05:51:17 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 05:51 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-03-05:54:20 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-03-05:54:20 new file mode 100644 index 00000000..9c040d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-03-05:54:20 @@ -0,0 +1,4 @@ +total 1300 +-rwx------ 1 nico nico 440412 Sep 3 05:54 ccontrol +-rwx------ 1 nico nico 444508 Sep 3 05:54 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-03-09:01:59 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-03-09:01:59 new file mode 100644 index 00000000..880422a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-03-09:01:59 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 3 09:01 cinit +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-05-19:41:12 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-05-19:41:12 new file mode 100644 index 00000000..0f07d86e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-05-19:41:12 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 root root 440412 2005-09-05 19:41 ccontrol +-rwx------ 1 root root 444508 2005-09-05 19:41 cinit +-rwx------ 1 root root 440412 2005-09-05 19:41 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-05-19:50:35 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-05-19:50:35 new file mode 100644 index 00000000..32ff19fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-05-19:50:35 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 5 19:50 cinit +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-24-01:42:38 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-24-01:42:38 new file mode 100644 index 00000000..0da6126e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-24-01:42:38 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-09-24 01:42 ccontrol +-rwx------ 1 nico nico 437628 2005-09-24 01:42 cinit +-rwx------ 1 nico nico 436316 2005-09-24 01:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-30-22:50:50 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-30-22:50:50 new file mode 100644 index 00000000..0d510174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-30-22:50:50 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 22:50 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 22:50 cinit +-rwx------ 1 nico nico 436316 2005-09-30 22:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-30-23:06:39 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-30-23:06:39 new file mode 100644 index 00000000..23450914 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-09-30-23:06:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 23:06 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 23:06 cinit +-rwx------ 1 nico nico 436316 2005-09-30 23:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-01-22:09:13 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-01-22:09:13 new file mode 100644 index 00000000..a62b9eb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-01-22:09:13 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-10-01 22:09 ccontrol +-rwx------ 1 nico nico 437308 2005-10-01 22:09 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-01-22:17:39 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-01-22:17:39 new file mode 100644 index 00000000..b1d8b11b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-01-22:17:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-01 22:17 ccontrol +-rwx------ 1 nico nico 437532 2005-10-01 22:17 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-02-11:12:29 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-02-11:12:29 new file mode 100644 index 00000000..e5f7b13d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-02-11:12:29 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:12 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-02-11:13:35 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-02-11:13:35 new file mode 100644 index 00000000..d7c14471 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-02-11:13:35 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-02-11:13:43 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-02-11:13:43 new file mode 100644 index 00000000..1711d01a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-02-11:13:43 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 11:13 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 436316 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-02-16:00:24 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-02-16:00:24 new file mode 100644 index 00000000..ab23228c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-02-16:00:24 @@ -0,0 +1,4 @@ +total 1284 +-rwx------ 1 nico nico 436316 Oct 2 16:00 ccontrol +-rwx------ 1 nico nico 437884 Oct 2 16:00 cinit +-rwx------ 1 nico nico 436316 Oct 2 16:00 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-02-23:17:11 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-02-23:17:11 new file mode 100644 index 00000000..92041cd9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-02-23:17:11 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 23:17 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 23:17 cinit +-rwx------ 1 nico nico 436316 2005-10-02 23:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-03-00:54:39 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-03-00:54:39 new file mode 100644 index 00000000..df47a057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-03-00:54:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:54 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:54 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-03-00:56:29 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-03-00:56:29 new file mode 100644 index 00000000..08db7fec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-03-00:56:29 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:56 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:56 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:56 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-13-09:55:52 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-13-09:55:52 new file mode 100644 index 00000000..d54a7ff4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-13-09:55:52 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:55 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:55 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-13-09:57:11 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-13-09:57:11 new file mode 100644 index 00000000..3b1af9ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-13-09:57:11 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:57 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:57 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-13-10:07:28 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-13-10:07:28 new file mode 100644 index 00000000..58d25315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-13-10:07:28 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 10:07 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 10:07 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 10:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-15-15:26:52 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-15-15:26:52 new file mode 100644 index 00000000..a88291e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-15-15:26:52 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 root root 436316 2005-10-15 15:26 ccontrol +-rwx------ 1 root root 437916 2005-10-15 15:26 cinit +-rwx------ 1 root root 436316 2005-10-15 15:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-15-21:23:56 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-15-21:23:56 new file mode 100644 index 00000000..43a4504d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-10-15-21:23:56 @@ -0,0 +1,4 @@ +total 36 +-rwx------ 1 nico nico 9148 Oct 15 21:23 ccontrol +-rwx------ 1 nico nico 11872 Oct 15 21:23 cinit +-rwx------ 1 nico nico 9768 Oct 15 21:23 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2005-11-17-17:03:53 b/software/cinit/browse_source/cinit-0.3pre3/size/2005-11-17-17:03:53 new file mode 100644 index 00000000..78543f15 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2005-11-17-17:03:53 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2005-11-17 17:03 ccontrol +-rwx------ 1 nico nico 11872 2005-11-17 17:03 cinit +-rwx------ 1 nico nico 9768 2005-11-17 17:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-11-23:45:54 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-11-23:45:54 new file mode 100644 index 00000000..f4852c81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-11-23:45:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-11 23:45 cinit +-rwx------ 1 nico nico 9768 2006-02-11 23:45 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-12-00:06:11 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-12-00:06:11 new file mode 100644 index 00000000..2fe41351 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-12-00:06:11 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-12-00:06:42 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-12-00:06:42 new file mode 100644 index 00000000..bf2ddc36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-12-00:06:42 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:06 ccontrol +-rwx------ 1 nico nico 11560 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-12-00:08:24 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-12-00:08:24 new file mode 100644 index 00000000..e25a49ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-12-00:08:24 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:08 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:08 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-12-00:09:33 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-12-00:09:33 new file mode 100644 index 00000000..0b64fa00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-12-00:09:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:09 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:09 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-12-00:13:32 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-12-00:13:32 new file mode 100644 index 00000000..b6c5c38e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-12-00:13:32 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:13 ccontrol +-rwx------ 1 nico nico 11500 2006-02-12 00:13 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-16-23:57:29 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-16-23:57:29 new file mode 100644 index 00000000..86b9fda9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-16-23:57:29 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11620 2006-02-16 23:57 cinit +-rwx------ 1 nico nico 9768 2006-02-16 23:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-17-00:16:18 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-17-00:16:18 new file mode 100644 index 00000000..28c853a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-17-00:16:18 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 00:16 cinit +-rwx------ 1 nico nico 9768 2006-02-17 00:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-17-22:48:35 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-17-22:48:35 new file mode 100644 index 00000000..5935acfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-17-22:48:35 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-17 22:48 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 22:48 cinit +-rwx------ 1 nico nico 9768 2006-02-17 22:48 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:03:54 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:03:54 new file mode 100644 index 00000000..9222f0b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:03:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:03 cinit +-rwx------ 1 nico nico 9768 2006-02-20 19:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:04:33 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:04:33 new file mode 100644 index 00000000..c5797edc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:04:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:04:36 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:04:36 new file mode 100644 index 00000000..fbcf9fa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:04:36 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:07:47 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:07:47 new file mode 100644 index 00000000..7e1fe18f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:07:47 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:07 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:12:33 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:12:33 new file mode 100644 index 00000000..2b4fda40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:12:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:12 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:12 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:14:56 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:14:56 new file mode 100644 index 00000000..bccb5d65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-02-20-20:14:56 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:14 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:14 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-01-23:32:43 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-01-23:32:43 new file mode 100644 index 00000000..fcbaf372 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-01-23:32:43 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-01 23:32 ccontrol +-rwx------ 1 nico nico 11640 2006-06-01 23:32 cinit +-rwx------ 1 nico nico 9768 2006-06-01 23:32 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-01:08:28 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-01:08:28 new file mode 100644 index 00000000..7683546c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-01:08:28 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:08 ccontrol +-rwx------ 1 nico nico 11688 2006-06-02 01:08 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-01:29:13 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-01:29:13 new file mode 100644 index 00000000..adbc6846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-01:29:13 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:29 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 01:29 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-11:13:39 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-11:13:39 new file mode 100644 index 00000000..46eaef4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-11:13:39 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:13 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:13 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-11:36:37 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-11:36:37 new file mode 100644 index 00000000..306402f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-11:36:37 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:36 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:36 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-15:17:17 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-15:17:17 new file mode 100644 index 00000000..7bb59095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-15:17:17 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:17 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:17 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-15:19:52 b/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-15:19:52 new file mode 100644 index 00000000..ce65256f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/size/2006-06-02-15:19:52 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:19 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:19 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/Makefile b/software/cinit/browse_source/cinit-0.3pre3/src/Makefile new file mode 100644 index 00000000..2100b7d1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/Makefile @@ -0,0 +1,135 @@ +# +# cinit +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +include Makefile.tests + +# Build tools / locations +CC=../tmpbin/cc +CFLAGS= +LD=../tmpbin/ld +LDFLAGS= +STRIP=../tmpbin/strip +SBIN=../sbin + +# directories and files +CONFIG_H=include/config.h + +# +# objects for the cinit part +# +CINIT_HEADERS=$(shell cat include/listing) +CINIT_CORE_OBJ=$(shell cat core/objects) +CINIT_GENERIC_OBJ=$(shell cat generic/objects) +CINIT_SVC_OBJ=$(shell cat svc/objects) + +# +# The current link may be missing in the first run +# +CINIT_IPC_OBJ=$(shell cat ipc/current/objects 2>/dev/null) +CINIT_OS_OBJ=$(shell cat os/current/objects 2>/dev/null) + +CINIT_OBJ=$(CINIT_CORE_OBJ) $(CINIT_IPC_OBJ) $(CINIT_OS_OBJ) \ + $(CINIT_GENERIC_OBJ) $(CINIT_SVC_OBJ) + +# +# Dependencies +# +$(CINIT_OBJ): $(CINIT_HEADERS) + +# +# Client modules +# +CLIENT=client/msg_svc_on_off.o client/msg_change_status.o client/run_svc.o \ + client/exec_svc.o client/respawn_svc.o client/run_run_svcs.o \ + client/connect_sock.o client/begin_msg.o client/sig_terminate.o + +COMMUNICATION=comm/do_change_status.o comm/do_result.o comm/do_svc_name.o + +BOTH=generic/set_signals.o generic/mini_printf.o generic/usage.o + +OBJ=$(SERV) $(SERV_OS) $(CLIENT) $(BOTH) $(COMMUNICATION) + +CSVC_OBJ=util/cservice.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +CCO_OBJ=util/ccontrol.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +%.o: %.c + $(CC) -c -o $@ $< + +# +# End user target +# +#all: cinit cservice ccontrol sizecheck docs +all: cinit + +# +# First do configuration, so we include the right variables +# +Makefile: .configured + +.configured: ../conf/* + @../bin/cinit.configure.os + @../bin/cinit.configure.tools + @../bin/cinit.configure.ipc + @../bin/cinit.configure.mark + +$(CINIT_OBJ): $(CONFIG_H) + +cinit: $(CINIT_OBJ) + $(LD) $^ -o $@ + + +#$(CINIT_BIN): $(SBIN) $(OBJ) +# $(LD) $(LDFLAGS) $(OBJ) -o $@ +# $(STRIP) $@ + +sizecheck: cinit cservice + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l sbin/ > $$FILE; cat $$FILE + @echo -n "Source size (in KiB): " + @du -s $(SDIRS) | awk '{ sum+=$$1 } END { print sum }' +# @du -s bin client comm conf doc generic serv | awk '{ sum+=$1 } END { print sum }' + + + +.PHONY: clean +clean: + rm -f .configured + rm -f $(CINIT_OBJ) + rm -f ../tmpbin/* + +distclean: + rm -f os/current ipc/current + +$(CONFIG_H): ../conf/* + ../scripts/cinit.mkheader > $(CONFIG_H) + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +ccontrol: $(SBIN)/ccontrol + +$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) + $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ + $(STRIP) $@ + +install: install-dir cinit cservice ccontrol + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/Makefile.tests b/software/cinit/browse_source/cinit-0.3pre3/src/Makefile.tests new file mode 100644 index 00000000..88cbb5df --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/Makefile.tests @@ -0,0 +1,25 @@ +# +# Makefile for cinit tests +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +TEST_BUILD_ARGV=test/test_build_argv.o core/build_argv.o + +PROGS=test_build_argv test_build_argv_link + +tests: $(PROGS) + +test_build_argv: test/test_build_argv.o core/build_argv.o +test_build_argv_link: test/test_build_argv+link.o core/build_argv.o + +test_gen_svc_tree: test/test_gen_svc_tree.o svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/gen_svc_tree.o \ + generic/mini_printf.o \ + svc/list_display_all.o diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/core/build_argv.c b/software/cinit/browse_source/cinit-0.3pre3/src/core/build_argv.c new file mode 100644 index 00000000..bb72a9b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/core/build_argv.c @@ -0,0 +1,220 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Build **argv for execution in cinit way: + * 1. check whether cmd is a valid executable + * 2. try to read cmd.params and write paramaters + * 3. try to read cmd.env and setup environment + * + * Returns: + * BA_OK: Everything went well, you can use the struct + * BA_NOTFOUND: Binary executable is not available + * BA_PARAMS: Reading the parameters failed (ignoring non-existence!) + * BA_ENV: Reading the environment failed (same as above) + * BA_OTHER: Other error + */ + +#include /* open() */ +#include /* *alloc() */ +#include /* readlink */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* NULL */ +#include /* strchr */ +#include /* stat() */ + +#include "cinit.h" +#include "build_argv.h" + + /* + * FIXME: we are perhaps loosing a byte, the \0 for the full + * string of argv and envp! too tired to check. + * char *basename: something we should execute + * (*basename) + ".params" will be added as parameters + * (*basename) + ".env" will be added as environment + * + */ + + +int cinit_build_argv(char *basename, struct ba_argv *bav) +{ + int tmp; + int fd; + int argc; + char pathtmp[PATH_MAX+1]; + char *p; + char *sbuf = NULL; + struct stat buf; + + /* sane values */ + bav->argv = NULL; + bav->envp = NULL; + + printf("basename %s\n",basename); + + /*********************************************************************** + * Try to get realname (for links) + */ + if ( ( tmp = readlink(basename,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? */ + if(errno == ENOENT) { + return BA_E_NOTFOUND; + } + if (errno != EINVAL) { + return BA_E_OTHER; + } + tmp=strlen(basename); + strncpy(pathtmp,basename,tmp); + } + pathtmp[tmp] = '\0'; + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /*********************************************************************** + * prepare argv0 + */ + bav->argv = malloc( sizeof(char *) ); + if(bav->argv == NULL) return BA_E_MEM; + + *bav->argv = malloc( tmp ); + if(*(bav->argv) == NULL) return BA_E_MEM; + + strncpy(*(bav->argv),pathtmp,tmp); + + /********************** read params *********************/ + strcat(pathtmp,C_PARAMS); + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + return BA_E_PARAMS; + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + return BA_E_PARAMS; + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /*********************************************************************** + * Now split the string, converting \n to \0 + */ + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + + if(bav->argv == NULL) { + return BA_E_MEM; + } + + bav->argv[argc] = sbuf; /* here begins the current argument */ + + if(p != NULL) { /* found another \n */ + *p = '\0'; + } else { /* end of string */ + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(bav->argv == NULL) { + return BA_E_MEM; + } + bav->argv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,bav->argv[0]); + strcat(pathtmp,C_ENV); + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + return BA_E_ENV; + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + return BA_E_ENV; + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) { + return BA_E_MEM; + } + bav->envp[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) { + return BA_E_MEM; + } + bav->envp[argc] = NULL; + + return BA_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/core/cinit.c b/software/cinit/browse_source/cinit-0.3pre3/src/core/cinit.c new file mode 100644 index 00000000..645a3829 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/core/cinit.c @@ -0,0 +1,92 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The main file + * + */ + +#include /* getpid,chdir */ +#include /* str(ncmp,len,cpy,cat) */ +#include /* perror */ +#include /* malloc */ + +#include "cinit.h" /* general things */ +#include "messages.h" /* messages */ +#include "ipc.h" /* general ipc methods */ +#include "svc.h" /* gen_svc_tree */ + +struct listitem *svc_list = NULL; +struct dep *svc_init = NULL; + +int main(int argc, char **argv) +{ + char *initdir; +// pid_t cpid; + + initdir = CINIT_INIT; /* default init dir */ + + /* FIXME: RE-ENABLE as SOON AS PRODUCTIVE cpid = getpid(); + if(cpid != 1) { + mini_printf(CINIT_VERSION,2); + mini_printf(MSG_USAGE,2); + return 0; + }*/ + + set_signals(ACT_SERV); + + /* Look whether we should start a profile */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_SVCDIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_SVCDIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* FIXME: do we really need three calls? */ + mini_printf(MSG_BOOTING,1); mini_printf(initdir,1); mini_printf("\n",1); + + if(chdir(initdir) == -1) { + print_errno(initdir); + panic(); + } + + /* initialize ipc method */ + if(!cinit_ipc_init()) { + panic(); + } + + /* pre-calculate service tree */ + gen_svc_tree(initdir); + + /* start tree from the bottom */ + if(!tree_exec(svc_init)) return 1; + + mini_printf("test\n",1); + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* listen for incomming messages: should never return */ + if(!cinit_ipc_listen()) { + panic(); + } + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/core/do_reboot.c b/software/cinit/browse_source/cinit-0.3pre3/src/core/do_reboot.c new file mode 100644 index 00000000..c190f634 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/core/do_reboot.c @@ -0,0 +1,74 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "ipc.h" +#include "cinit.h" +#include "os.h" +#include "messages.h" + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void do_reboot(int signal) +{ + //struct listitem *tmp; + struct timespec ts; + //char **cmd; + //int i; + + /* shutdown all services: take care about the dependency tree */ + + /* do not listen to client requests anymore + * FIXME: perhaps before shutdown? */ + cinit_ipc_destroy(); + + /* now: all services are down, let's kill all other processes */ + if( kill(-1,SIGTERM) == -1) { + print_errno(MSG_TERMKILL); + } + + /* FIXME make SLEEP_KILL an optional configuration statement */ + ts.tv_sec = SLEEP_KILL; /* defined in conf/sleep_kill */ + ts.tv_nsec = 0; + nanosleep(&ts,NULL); + + if( kill(-1,SIGKILL) == -1) { + print_errno(MSG_KILLBILL); + } + + /* execute umount, as defined in conf/umount */ + + /* execute_sth(CINIT_UMOUNT); */ + + /* do what we really wanted to do */ + switch(signal) { + case SIGTERM: /* power off */ + LOG(MSG_POWER_OFF); + cinit_poweroff(); + break; + case SIGHUP: /* reboot */ + LOG(MSG_REBOOT); + cinit_reboot(); + break; + case SIGUSR1: /* halt */ + LOG(MSG_HALT); + cinit_halt(); + break; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/core/objects b/software/cinit/browse_source/cinit-0.3pre3/src/core/objects new file mode 100644 index 00000000..fd49e8d3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/core/objects @@ -0,0 +1,6 @@ +core/build_argv.o +core/cinit.o +core/panic.o +core/run_init_svc.o +core/set_signals.o +core/do_reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/core/panic.c b/software/cinit/browse_source/cinit-0.3pre3/src/core/panic.c new file mode 100644 index 00000000..39092aef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/core/panic.c @@ -0,0 +1,30 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something + */ + +#include "cinit.h" +#include + +void panic(void) +{ + char *nargv[2]; + + execute_sth(CINIT_PANIC); + + /*********************************************************************** + * THIS SHOULD NOT HAPPEN, fallback to hardcoded sulogin + * (conf/sulogin) + */ + nargv[0] = SULOGIN; + nargv[1] = NULL; + + execv(SULOGIN,nargv); + + /* there's nothing todo, if everything fails */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/core/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre3/src/core/run_init_svc.c new file mode 100644 index 00000000..42edb167 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/core/run_init_svc.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include /* _exit, fork */ + +#include "cinit.h" +#include "messages.h" +#include "ipc.h" + +int run_svc(char *rpath) { rpath = "test"; return 0; } /* a hack to compile cinit for now */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + if(!cinit_ipc_logon()) _exit(1); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/core/run_svc.c b/software/cinit/browse_source/cinit-0.3pre3/src/core/run_svc.c new file mode 100644 index 00000000..4a7eabf1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/core/run_svc.c @@ -0,0 +1,131 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +#error "needs to be cleaned up" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + print_errno(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + print_errno(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/core/set_signals.c b/software/cinit/browse_source/cinit-0.3pre3/src/core/set_signals.c new file mode 100644 index 00000000..57dfc242 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/core/set_signals.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2006-2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Define signal handlers + */ + + +#include +#include +#include "cinit.h" + +void sig_child(int signal) { signal=2; } /* HACK */ + +void set_signals(int action) +{ + struct sigaction sa; + + if(action == ACT_SERV) { + sa.sa_handler=sig_child; + } + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + if(action == ACT_SERV) { + sa.sa_handler=do_reboot; + } + sigaction(SIGHUP,&sa,NULL); /* reboot */ + sigaction(SIGTERM,&sa,NULL); /* poweroff */ + sigaction(SIGUSR1,&sa,NULL); /* halt */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/generic/execute_sth.c b/software/cinit/browse_source/cinit-0.3pre3/src/generic/execute_sth.c new file mode 100644 index 00000000..f596bbbf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/generic/execute_sth.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Executes something: replaces us + */ + +#include /* _exit */ +#include "cinit.h" +#include "build_argv.h" + +void execute_sth(char *basename) +{ + struct ba_argv bav; + int tmp; + + if((tmp = cinit_build_argv(basename,&bav)) != BA_OK) { + if(tmp != BA_E_MEM) { + print_errno(basename); + } /* do not print something on memory errors */ + _exit(1); /* FIXME: adjust exit code? */ + } + + execve((bav.argv)[0],bav.argv,bav.envp); + print_errno(basename); + _exit(1); /* FIXME: return specific error code, so cinit knows + * what happened! - sure? perhaps this gets non + * standard errors from other programs, too ... */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre3/src/generic/mini_printf.c new file mode 100644 index 00000000..e4e16678 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/generic/mini_printf.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Print to the world! + * + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) return; + + p = str; + while ( *p ) p++; + + write(fd,str,(size_t) (p - str) ); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/generic/objects b/software/cinit/browse_source/cinit-0.3pre3/src/generic/objects new file mode 100644 index 00000000..ba33ac4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/generic/objects @@ -0,0 +1,5 @@ +generic/execute_sth.o +generic/mini_printf.o +generic/path_absolute.o +generic/path_append.o +generic/print_errno.o diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/generic/path_absolute.c b/software/cinit/browse_source/cinit-0.3pre3/src/generic/path_absolute.c new file mode 100644 index 00000000..ae524326 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/generic/path_absolute.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create an absulte path + */ + +#include /* chdir(),getcwd */ +#include /* PATH_MAX */ +#include "cinit.h" /* print_errno */ +#include "messages.h" /* print_errno */ + +int path_absolute(char *relpath, char *newpath, size_t size) +{ + char oldpath[PATH_MAX+1]; + + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_CHDIR); + return 0; + } + + if(chdir(relpath) == -1) { + print_errno(relpath); + return 0; + } + + if(!getcwd(newpath,size)) { + print_errno(relpath); + return 0; + } + + if(chdir(oldpath) == -1) { + print_errno(oldpath); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/generic/path_append.c b/software/cinit/browse_source/cinit-0.3pre3/src/generic/path_append.c new file mode 100644 index 00000000..361b349e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/generic/path_append.c @@ -0,0 +1,29 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create path to needs + */ + +#include /* strlen */ +#include /* PATH_MAX */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +int path_append(char *path, char *append) +{ + size_t end = strlen(path); + + + if(strcmp(&path[end-1],SLASH)) { + if((end + strlen(SLASH) + strlen(append)) > PATH_MAX) return 0; + strcat(path,SLASH); + } else { + if((end + strlen(append)) > PATH_MAX) return 0; + } + strcat(path,append); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/generic/print_errno.c b/software/cinit/browse_source/cinit-0.3pre3/src/generic/print_errno.c new file mode 100644 index 00000000..7415d556 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/generic/print_errno.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * stolen from tcpserver_blocker + * + * Author: Nico Schottelius + * Date: 2006-08-24 + * + * Print the error found in errno + */ + +#include /* strerror */ +#include /* errno */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +void print_errno(char *msg) +{ + if(msg) { + mini_printf(msg, FD_ERR); + mini_printf(": ", FD_ERR); + } + mini_printf(strerror(errno), FD_ERR); + mini_printf("\n", FD_ERR); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/generic/usage.c b/software/cinit/browse_source/cinit-0.3pre3/src/generic/usage.c new file mode 100644 index 00000000..076cfa9b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/generic/usage.c @@ -0,0 +1,23 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * usage: tell the world what we want - seriously no capitalism + * + */ + +#include +#include "cinit.h" + +/*********************************************************************** + * usage: tell the user what's wrong and a help text + */ +void usage(char *banner, char *text) +{ + /* print banner + error message */ + mini_printf(banner,1); + mini_printf(text,1); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/include/build_argv.h b/software/cinit/browse_source/cinit-0.3pre3/src/include/build_argv.h new file mode 100644 index 00000000..b61b27a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/include/build_argv.h @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * build **argv + */ + +#ifndef CINIT_BA_HEADER +#define CINIT_BA_HEADER + +/***************************************************************************** + * Defines: return values + */ +enum { + BA_OK, + BA_E_NOTFOUND, + BA_E_PARAMS, + BA_E_ENV, + BA_E_MEM, + BA_E_OTHER +}; + +/***************************************************************************** + * Structures + */ +struct ba_argv { + char **argv; + char **envp; +}; + +/***************************************************************************** + * Functions + */ +int cinit_build_argv(char *basename, struct ba_argv *bav); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/include/cinit.h b/software/cinit/browse_source/cinit-0.3pre3/src/include/cinit.h new file mode 100644 index 00000000..e2083803 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/include/cinit.h @@ -0,0 +1,86 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_H +#define _CINIT_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/*********************************************************************** + * Defines + */ +#define SLASH "/" +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC + +enum { /* FIXME: there are some default defines somewhere for that */ + FD_IN=0, + FD_OUT=1, + FD_ERR=2 +}; + +/*********************************************************************** + * Paths + */ +#define CINIT_SVCDIR CINIT_DIR SLASH SVCDIR +#define CINIT_INIT CINIT_SVCDIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK +#define CINIT_BIN PREFIX SLASH "sbin" SLASH "cinit" + +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC +#define CINIT_UMOUNT CINIT_CONFDIR SLASH C_UMOUNT + +/* actions for i/o handlers (see comm/do_*) */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* functions (used by server and client) */ +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +void usage(char *banner, char *stext); + +int do_svc_name(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* server functions */ +int run_init_svc(char *cinit_svc); +void sigio(int socket); +void do_reboot(int signal); +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +int msg_svc_on_off(char *svc, char action); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +int run_run_svcs(char *abspath); +pid_t exec_svc(char *abspath, int on); +pid_t respawn_svc(char *abspath); +int connect_sock(int socke); +char **read_file(char *file); +void sig_terminate(int signal); + +/* generic */ +void execute_sth(char *basename); +int path_append(char *path, char *append); +int path_absolute(char *relpath, char *buf, size_t size); + +/* util */ +int msg_reboot(char cmd); +void print_errno(char *text); + +/* os-functions */ +void cinit_reboot(void); +void cinit_halt(void); +void cinit_poweroff(void); + +#endif /* _CINIT_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/include/comm.h b/software/cinit/browse_source/cinit-0.3pre3/src/include/comm.h new file mode 100644 index 00000000..b9aaf60f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/include/comm.h @@ -0,0 +1,69 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#ifndef CINIT_COMM_HEADER +#define CINIT_COMM_HEADER + +#include /* PATH_MAX */ + +/*********************************************************************** + * Commands the clients may issue to us + * maximum number of commands: 2^8 = 256 + */ +enum commands { + CMD_START_SVC=1, /* the client wants US to start a service */ + CMD_START_SVC_ONLY, /* start this service without dependencies */ + CMD_STOP_SVC, /* stop svc and all svcs that need it */ + CMD_STOP_SVC_ONLY, /* we should stop _only_ this service */ + CMD_STOP_SVC_WANTS, /* stop svc, all svcs that need or want it */ + CMD_CHG_STAT, /* the client reports a status change */ + CMD_RESCUE, /* we should start the rescue mode */ + CMD_HALT, /* halt the system */ + CMD_REBOOT, /* reboot the system */ + CMD_POWEROFF, /* poweroff the system */ + CMD_WBOOT, /* shutdown and restart everything */ + CMD_INFO /* send information about that service */ +}; + +/* old + RT_ERR_COMM, * communication failed * + RT_ERR, * service starting failed * + RT_UNSPEC, * some kind of error, unspecified * + RT_SUCCESS, * successfully started: respawning or once * + RT_SVC_FAILED, * tried earlier, service failed, won't retry * + +*/ + +/*********************************************************************** + * messages from the client + * Prefix: qst_ (question) + */ +struct msg_client { + pid_t pid; /* pid of the telling client */ + char cmd; /* which cmd is issued to us */ + char status; /* status of the service */ + char svc[PATH_MAX]; /* name of the service */ + char svc_orig[PATH_MAX]; /* the service, which wants to start us */ +}; + +/*********************************************************************** + * messages from the server + * Prefix: asw_ (answer) + */ + +/*********************************************************************** + * return short status + */ +struct asw_sstatus { + long mtype; + char status; + char msg[PATH_MAX]; +}; + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/include/ipc.h b/software/cinit/browse_source/cinit-0.3pre3/src/include/ipc.h new file mode 100644 index 00000000..66b3bc86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/include/ipc.h @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Prototypes for ipc handler + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +/***************************************************************************** + * Functions: in server + */ +int cinit_ipc_init(void); /* init in init */ +int cinit_ipc_listen(void); /* listen in init */ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + +/***************************************************************************** + * Functions: in clients + */ +int cinit_ipc_logon(void); /* logon to init (client init) */ +int cinit_ipc_connect(void); /* connect to init */ +int cinit_ipc_csend(void *data); /* send to the server from a client */ + +/***************************************************************************** + * Functions: shared + */ + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/include/listing b/software/cinit/browse_source/cinit-0.3pre3/src/include/listing new file mode 100644 index 00000000..df30f408 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/include/listing @@ -0,0 +1,5 @@ +include/cinit.h +include/config.h +include/ipc.h +include/messages.h +include/os.h diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/include/messages.h b/software/cinit/browse_source/cinit-0.3pre3/src/include/messages.h new file mode 100644 index 00000000..1ae95e2c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/include/messages.h @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_MSG_H +#define _CINIT_MSG_H + +/* version */ +#define CINIT_VERSION "cinit-" VERSION +#define MSG_BOOTING CINIT_VERSION ": Booting from " + +#define MSG_DP ": " + +/* Messages to the outside */ +#define MSG_BIND "bind" +#define MSG_CONNECT "connect" +#define MSG_FCNTL "fcntl" +#define MSG_KILLBILL "sigkill" +#define MSG_LISTEN "listen" +#define MSG_SOCKET "socket" +#define MSG_TERMKILL "sigterm" +#define MSG_USAGE_1 ": fast executing, small and simple init " +#define MSG_USAGE_2 "with support for profiles\n" +#define MSG_USAGE_3 "\nError: cinit must be started as PID 1.\n" +#define MSG_USAGE MSG_USAGE_1 MSG_USAGE_2 MSG_USAGE_3 +#define MSG_ERR_FORK "fork" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_OPEN "open" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_READ "read" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" + +#define MSG_ERR_DEPS "Too many dependencies" +#define MSG_ERR_ACCEPT "accept" +#define MSG_ERR_WAITPID "waitpid" +#define MSG_ERR_POLL "poll" +#define MSG_ERR_MODIFY "modify list failed" +#define MSG_ERR_COMM "Communication failed" + +#define MSG_ERR_LESS_ARGS "Too less arguments!" +#define MSG_ERR_BAD_ARGS "Wrong arguments / parameter" +#define MSG_ERR_ARGS_LEN "Wrong parameter length" + +#define LOG_SVC_STOPED "Service stoped" +#define LOG_SVC_ONCE "Started once" +#define LOG_SVC_RESPAWN "Respawns now" +#define LOG_SVC_FAIL "Service failed" +#define LOG_NEED_FAIL "One or more need failed" +#define LOG_SVC_FAILED "Service already failed, not starting." +#define LOG_SVC_NOTEXIST "Service does not exist" + +#define MSG_START_SVC "Starting " +#define MSG_STOP_SVC "Stoping " +#define MSG_EXEC_FAILED "Failed to execute " + +#define MSG_POWER_OFF "Powering off..." +#define MSG_HALT "Halting system ..." +#define MSG_REBOOT "Rebooting ..." +#define MSG_RESCUE "Switching to rescue mode ..." +#define MSG_UPDATE "Updating cinit ..." +#define MSG_HOT_REBOOT "Hot reboot in progress ..." + +#define MSG_SHOULD_NOT_HAPPEN "This should not happen, I do not know what todo!" + +/* DEBUG */ +#ifdef DEBUG +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) +#endif + +/* macros */ +#define SERVICE_LOG(svc,message) { \ + mini_printf(svc,1); \ + mini_printf(MSG_DP,1); \ + mini_printf(message,1); \ + mini_printf("\n",1); \ +} +#define LOG(s) { \ + mini_printf(s,1); \ + mini_printf("\n",1); \ +} +#define P_START_SERVICE(name) { mini_printf(MSG_START_SVC,1); mini_printf(name,1); mini_printf("\n",1); } +#define P_EXEC_FAILED(name) { mini_printf(MSG_EXEC_FAILED,1); mini_printf(name,1); mini_printf("\n",1); } + +#endif /* _CINIT_MSG_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/include/os.h b/software/cinit/browse_source/cinit-0.3pre3/src/include/os.h new file mode 100644 index 00000000..e36d5a8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/include/os.h @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * os specific functions + */ + +#ifndef CINIT_OS_HEADER +#define CINIT_OS_HEADER + +/***************************************************************************** + * Functions + */ +void cinit_halt(void); +void cinit_poweroff(void); +void cinit_reboot(void); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/include/svc.h b/software/cinit/browse_source/cinit-0.3pre3/src/include/svc.h new file mode 100644 index 00000000..2849e7ab --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/include/svc.h @@ -0,0 +1,122 @@ +/*********************************************************************** + * + * 2006,2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + + +#ifndef _CINIT_SVC_H +#define _CINIT_SVC_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* service list */ +struct listitem { + struct listitem *prev; /* previous item */ + struct listitem *next; /* next item */ + + char *abs_path; /* name of service */ + int status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + + + struct dep *wanted; /* list of services that want this service */ + struct dep *needed; /* list of services that need this service */ + + struct dep *wants; /* list of services that this service wants */ + struct dep *needs; /* list of services that this service needs */ +}; + +/* list of dependencies */ +struct dep { + struct dep *prev; + struct dep *next; + struct listitem *svc; +}; + +/* variables */ +extern struct dep *svc_init; /* the services to start */ +extern struct listitem *svc_list; /* the list of services */ + +/* list functions */ +struct listitem *list_insert(char *path, int status); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); +struct listitem *list_search(char *path); +inline struct listitem *list_search_pid(pid_t pid); +int list_display_all(); + + +/* service */ +struct listitem *svc_create(char *svc); +struct listitem *gen_svc_tree(char *svc); +int check_add_deps(struct listitem *svc, int type); +int dep_entry_add(struct dep **list, struct dep *new); +struct dep *dep_entry_del(struct dep *del); +int tree_exec(struct dep *start); +int svc_set_status(struct listitem *li, int status); +int svc_should_respawn(struct listitem *li); +int svc_needs_status(struct listitem *li); +int dep_needs_wants_add(struct dep **list, struct listitem *svc); +struct dep *dep_create(struct listitem *svc); +void svc_success(struct listitem *li); + + +/*********************************************************************** + * to decide whether to operate on needs or wants + */ +enum dep_types { + DEP_WANTS, + DEP_NEEDS +}; + +/*********************************************************************** + * status of a service and return codes - errors and success + */ +enum svc_status_old { + ST_TMPNOW=1, /* the client is now starting the service NEEDED??? */ + ST_NOTEXIST, /* service does not exist */ + + ST_NEED_FAIL, /* failed to start a need for this service */ + ST_FAIL, /* failed to start service */ + + ST_OFF, /* service is off */ + ST_OFF_ALL, /* service and those that need it are off */ + ST_OFF_ALL_F, /* same, but something failed */ + ST_OFF_WANTS, /* service + those that need or want it are off */ + ST_OFF_WANTS_F, /* same, but something failed */ + + ST_TMP, /* currently working on it */ + ST_ONCE, /* executed once */ + ST_RESPAWN /* running and respawning */ +}; + +/*********************************************************************** + * The real status types a service may have (ignore above) + * We have 32 Bits, we should use them ;-) + */ +enum svc_status { + /* first define basics */ + ST_SH_ONCE = 1, /* service SHould be started once */ + ST_SH_RESPAWN = 2, /* service SHould respawn */ + ST_ONCE_OK = 4, /* service was successfully started once */ + ST_ONCE_FAIL = 8, /* service failed to start */ + ST_RESPAWNING = 16, /* service is respawning */ + ST_NEED_FAILD = 32, /* this service is not started, need failed */ + ST_IN_LIST = 64 /* this service is being started (= in list) */ +}; + +/*********************************************************************** + * Possibilities the needs of a service may have + */ +enum svc_needs_status { + SNS_NEEDS_STARTED = 1, /* all needs are started. We may start, too */ + SNS_NEEDS_FAILED, /* one ore more needs failed */ + SNS_NEEDS_UNFINISHED /* one ore more needs are not yet started */ +}; +#endif /* _CINIT_SVC_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/README.text b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/README.text new file mode 100644 index 00000000..c9a1acf2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/README.text @@ -0,0 +1,20 @@ +cinit/src/ipc/msgq: About this msqg implementation +=================================================== +Nico Schottelius +0.1, Initial Version from 2006-08-04 +:Author Initials: NS + +Intro here + +Introduction +------------ + +cinit opens a + +Files +----- +- README.text: This file +- cinit_init_ipc.c: Init +msgq.h +objects + diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_connect.c b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_connect.c new file mode 100644 index 00000000..a744980c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_connect.c @@ -0,0 +1,70 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel */ + k_in = ftok(IPC_KEY,IPC_IN); + k_out = ftok(IPC_KEY,IPC_OUT); + + if(k_in == -1 || k_out == -1) { + perror("ftok"); + exit(1); + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + perror("msgget"); + exit(1); + } + + /* wrong tabsto ;-) */ +while (1) { + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror("msgrcv"); + exit(1); + } + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_csend.c b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_csend.c new file mode 100644 index 00000000..43a0012f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_csend.c @@ -0,0 +1,62 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_logon(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(IPC_KEY,IPC_OUT); + k_out = ftok(IPC_KEY,IPC_IN); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_destroy.c b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_destroy.c new file mode 100644 index 00000000..299885c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_destroy.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Destory ipc mechanism, cinit is gonna die soon. + * + */ + +#include /* msgget */ +#include /* NULL */ + +#include "msgq.h" /* mq_in, mq_out */ +#include "cinit.h" /* print_errno */ + +void cinit_ipc_destroy(void) +{ + if(msgctl(mq_in,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } + if(msgctl(mq_out,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_init.c new file mode 100644 index 00000000..9ae072a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_init.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include /* ftok */ +#include /* msgget */ +#include /* msgget */ + +#include "cinit.h" +#include "config.h" +#include "msgq.h" + +int cinit_ipc_init(void) +{ + key_t k_tmp; + + /* to_server */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + if(k_tmp == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + mq_in = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_in == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + /* to_client */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + if(k_tmp == -1) { + perror(MSG_MSGQ_FTOK); + return 0; + } + mq_out = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_out == -1) { + perror(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_listen.c new file mode 100644 index 00000000..d21e561e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_listen.c @@ -0,0 +1,47 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ +#include /* perror */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + + struct msg_client m_client; + + while (1) { + /* FIXME: change msg structure */ + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror(MSG_MSGQ_MSGRCV); + } + + printf("pid: %d, m_client\n",m_client.pid); + + /* use pid as the message type + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + return 0; + } */ + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_logoff.c b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_logoff.c new file mode 100644 index 00000000..a744980c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_logoff.c @@ -0,0 +1,70 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel */ + k_in = ftok(IPC_KEY,IPC_IN); + k_out = ftok(IPC_KEY,IPC_OUT); + + if(k_in == -1 || k_out == -1) { + perror("ftok"); + exit(1); + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + perror("msgget"); + exit(1); + } + + /* wrong tabsto ;-) */ +while (1) { + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror("msgrcv"); + exit(1); + } + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_logon.c b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_logon.c new file mode 100644 index 00000000..08c0e252 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_logon.c @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "cinit.h" /* print_errno */ +#include "msgq.h" + +int cinit_ipc_logon(void) +{ + key_t k_in, k_out; /* FIXME: remove one variable */ + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + k_out = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_sclose.c b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_sclose.c new file mode 100644 index 00000000..69165e4d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/cinit_ipc_sclose.c @@ -0,0 +1,14 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Close the ressources from the server, clean state for forks. + * + */ + +int cinit_ipc_sclose(void) +{ + return 1; /* nothing to do when using message queues */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/msgq.h b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/msgq.h new file mode 100644 index 00000000..01c6e769 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/msgq.h @@ -0,0 +1,52 @@ +/* + * (c) 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * part of cinit + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +#include /* structures */ + +/*********************************************************************** + * configuration + */ + +#define MSGQ_PATHNAME "/bin/sh" /* should be on every *nix */ +#define MSGQ_TO_SERVER 'i' /* also for ftok */ +#define MSGQ_TO_CLIENT 'o' /* also for ftok */ +#define MSGQ_PERMS 0660 /* queue permissions */ + +/*********************************************************************** + * global variables + */ +int mq_in; /* input */ +int mq_out; /* output */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + pid_t pid; + struct msg_client msg; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server_short { + long mtype; + struct asw_sstatus answer; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_FTOK "ftok" +#define MSG_MSGQ_MSGGET "msgget" +#define MSG_MSGQ_MSGRCV "msgrcv" +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/objects b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/objects new file mode 100644 index 00000000..7c99d09f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/msgq/objects @@ -0,0 +1,5 @@ +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c new file mode 100644 index 00000000..88c310f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c @@ -0,0 +1,125 @@ +/* + * (c) 2005, 2006 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * create a socket, when we recieved a signal + */ +int main(int argc, char **argv) +{ + struct sockaddr_un addr; + struct pollfd plist; + char *initdir; + + list = NULL; /* list of services is empty currently */ + initdir = CINIT_INIT; /* default init dir */ + + cpid = getpid(); + if(cpid != 1) { + usage(MSG_USAGE,MSG_NOT_ONE); + } + + set_signals(ACT_SERV); /* set signal handlers */ + + /* read args, profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* tell the world we are there FIXME: do we really need three calls? */ + mini_printf(MSG_CINIT,1); mini_printf(initdir,1); mini_printf("\n",1); + + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c new file mode 100644 index 00000000..a174d78d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c @@ -0,0 +1,141 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int socket) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + while ( (nsock = accept(socket,(struct sockaddr *) NULL, + (socklen_t *) NULL)) != -1) { + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = ST_FAIL; + } else { + status = RT_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP (RESPAWNING) *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; + list_tmp = list_search(buf); + + /* FIXME: + - handle off + - handle switching off once services + - perhaps remove old cinit code, which has respawing childs + */ + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + /* kill cinit watcher, which kills the real process */ + kill(list_tmp->pid,SIGTERM); + + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + } + + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + status = ST_FAIL; + } else { /* return status */ + status = list_tmp->status; + } + } else { /* no service there */ + status = RT_NOTEXIST; + } + do_result(nsock,&status); + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + SERVICE_LOG(buf,MSG_ERR_MODIFY); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + case CMD_UPDATE: + sig_reboot(SIGCONT); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } + + /* hier kommt man haeufiger herein, interrupted system call */ + if( errno != EAGAIN && errno != EINTR) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/os/freebsd/halt.c b/software/cinit/browse_source/cinit-0.3pre3/src/os/freebsd/halt.c new file mode 100644 index 00000000..cd4dda1f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/os/freebsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/os/freebsd/objects b/software/cinit/browse_source/cinit-0.3pre3/src/os/freebsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/os/freebsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/os/freebsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre3/src/os/freebsd/poweroff.c new file mode 100644 index 00000000..61e5ef5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/os/freebsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWEROFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/os/freebsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre3/src/os/freebsd/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/os/freebsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/os/linux/halt.c b/software/cinit/browse_source/cinit-0.3pre3/src/os/linux/halt.c new file mode 100644 index 00000000..0ecf8ced --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/os/linux/halt.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * How to halt the system + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT_SYSTEM); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/os/linux/objects b/software/cinit/browse_source/cinit-0.3pre3/src/os/linux/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/os/linux/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/os/linux/poweroff.c b/software/cinit/browse_source/cinit-0.3pre3/src/os/linux/poweroff.c new file mode 100644 index 00000000..5f503678 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/os/linux/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff the system + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWER_OFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/os/linux/reboot.c b/software/cinit/browse_source/cinit-0.3pre3/src/os/linux/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/os/linux/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/os/openbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre3/src/os/openbsd/halt.c new file mode 100644 index 00000000..cd4dda1f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/os/openbsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/os/openbsd/objects b/software/cinit/browse_source/cinit-0.3pre3/src/os/openbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/os/openbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/os/openbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre3/src/os/openbsd/poweroff.c new file mode 100644 index 00000000..45168122 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/os/openbsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_HALT | RB_POWERDOWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/os/openbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre3/src/os/openbsd/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/os/openbsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/check_add_deps.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/check_add_deps.c new file mode 100644 index 00000000..c0568628 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/check_add_deps.c @@ -0,0 +1,133 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +/* FIXME: clean headers */ +#include +#include +#include /* PATH_MAX */ + +#include +#include +#include +#include +#include +#include +#include + + +#include /* PATH_MAX */ +#include /* malloc */ + +#include "cinit.h" +#include "messages.h" +#include "svc.h" + +int check_add_deps(struct listitem *svc, int type) +{ + char buf[PATH_MAX+1]; + char oldpath[PATH_MAX+1]; + struct dirent *tdirent; + struct dep *deps = NULL; + struct listitem *new_svc; + DIR *d_tmp; + + /* remember where we started */ + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_CHDIR); + return 0; + } + + mini_printf("CAD::",1); + mini_printf(svc->abs_path,1); + mini_printf("\n",1); + + /* Create path */ + strcpy(buf,svc->abs_path); + if(type == DEP_NEEDS) { + if(!path_append(buf,C_NEEDS)) return 0; + } else { + if(!path_append(buf,C_WANTS)) return 0; + } + + d_tmp = opendir(buf); + if(d_tmp == NULL) { + if(errno != ENOENT) { + print_errno(buf); + return 0; + } + return 1; /* it's fine when there's no needs */ + } + + if(chdir(buf) == -1) { /* change to needs or wants */ + print_errno(buf); + return 0; + } + + while((tdirent=readdir(d_tmp))!=NULL) { + if(*(tdirent->d_name)=='.') continue; /* ignore .* */ + + /* skip non-working directories */ + if(!path_absolute(tdirent->d_name,buf,PATH_MAX+1)) continue; + + /* FIXME: remove debug */ + mini_printf("CAD::NEW::",1); + mini_printf(svc->abs_path,1); + mini_printf("::",1); + mini_printf(buf,1); + mini_printf("\n",1); + + /* 1. create the service we depend on + * 2. initialize its dependencies + */ + if(!(new_svc = gen_svc_tree(buf))) return 0; + + /* We need ALL dependencies, as we are called only once + * per service; no need to test that first! + * + * And the other service CANNOT know anything about us yet, + * so we always add us to its list. + */ + + /* Dependencies: + * - a.needs b; add b to the list of dependencies. + * - a.needs b; add a to the list of needed by b. + * + * 1. check whether the dependency already exists + * 2. otherwise add it + * 3. do it once for needs, once for needed_by + */ + + /* create a dependency entry containing us */ + deps = dep_create(svc); + if(!deps) return 0; + + if(type == DEP_NEEDS) { + dep_entry_add(&(new_svc->needed),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->needs),deps); + } else { + dep_entry_add(&(new_svc->wanted),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->wants),deps); + } + } + if(chdir(oldpath) == -1) { + print_errno(buf); + return 0; + } + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/dep_create.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/dep_create.c new file mode 100644 index 00000000..691d66b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/dep_create.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Create dependency + */ + +#include /* NULL */ +#include /* malloc() */ +#include "svc.h" /* structs */ + +/* search for an entry by path, reverse: from end to the beginning */ +struct dep *dep_create(struct listitem *svc) +{ + struct dep *entry; + + entry = malloc(sizeof(struct dep)); + if(!entry) return NULL; + entry->svc = svc; + + return entry; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/dep_entry_add.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/dep_entry_add.c new file mode 100644 index 00000000..8bac1c1d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/dep_entry_add.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include "svc.h" + +/* + * list: pointer to the list + * new: pointer to data to insert (already filled up) + */ +int dep_entry_add(struct dep **deplist, struct dep *new) +{ + if( *deplist == NULL ) { /* new list */ + *deplist = new; + (*deplist)->prev = *deplist; + (*deplist)->next = *deplist; + } else { /* already existing */ + new->next = *deplist; /* new-> first */ + new->prev = (*deplist)->prev; /* last <- new */ + (*deplist)->prev->next = new; /* last -> new */ + (*deplist)->prev = new; /* new <- first */ + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/dep_entry_del.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/dep_entry_del.c new file mode 100644 index 00000000..ed2a627d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/dep_entry_del.c @@ -0,0 +1,37 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include /* free() */ +#include "svc.h" + +/* + * tmp: pointer to data to remove (must not be NULL) + * -> perhaps work on the pointer to the pointer? + * + * Returns either the next object or NULL if there's no next object + */ +struct dep *dep_entry_del(struct dep *del) +{ + struct dep *tmp; + + /* last service in the list */ + if(del->next == del && del->prev == del) { + tmp=NULL; + free(del); + } else { + /* remove from list */ + del->prev->next = del->next; + del->next->prev = del->prev; + tmp = del->next; + free(del); + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/dep_needs_wants_add.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/dep_needs_wants_add.c new file mode 100644 index 00000000..50c813e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/dep_needs_wants_add.c @@ -0,0 +1,59 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Add all wants and needs from a specific service to dep list + */ + +#include /* NULL */ +#include "svc.h" +#include "cinit.h" /* FIXME: debug */ + +/* + * list: pointer to the list + * svc: pointer to data to the service + */ + +/* FIXME unfinished (wants) and possibly not adding all? */ +int dep_needs_wants_add(struct dep **list, struct listitem *svc) +{ + + struct dep *tmp, *new; + + /* first add needs, then add wants + * but only add the services, if they are still a virgin + */ + /* check status */ + + mini_printf("DNWA::",1); + mini_printf(svc->abs_path,1); + + /* check needs */ + tmp = svc->needed; + if(tmp != NULL) { + do { + mini_printf("::",1); + mini_printf(tmp->svc->abs_path,1); + if(((tmp->svc->status & ST_SH_ONCE) || + (tmp->svc->status & ST_SH_RESPAWN)) && + !(tmp->svc->status & ST_IN_LIST)) { + mini_printf("::(A)::",1); + new = dep_create(tmp->svc); + if(!new) return 0; + tmp->svc->status |= ST_IN_LIST; + dep_entry_add(list,new); + } + /* FIXME: go forward or backwards? + * this decision will influence starting order + * and may thereby add a minimal mount of speed enhancement */ + tmp = tmp->next; + } while(tmp != svc->needed); + } + mini_printf("\n",1); + + /* check wants */ + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/gen_svc_tree.c new file mode 100644 index 00000000..17be88dd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/gen_svc_tree.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +#include +#include "cinit.h" +#include "svc.h" + +struct listitem *gen_svc_tree(char *svc) +{ + struct listitem *li; + struct dep *deps; + + /* only do something if the service is not already known */ + if((li=list_search(svc))) return li; + + /* create a template, so other instances won't try to recreate us */ + if(!(li=svc_create(svc))) return NULL; + + /* FIXME: remove debug */ + mini_printf("gen_tree::",1); + mini_printf(svc,1); + mini_printf("\n",1); + + if(!check_add_deps(li,DEP_NEEDS)) return NULL; + if(!check_add_deps(li,DEP_WANTS)) return NULL; + + if(!li->wants && !li->needs) { + /* FIXME: remove debug */ + mini_printf("START::",1); + mini_printf(li->abs_path,1); + mini_printf("\n",1); + + deps = dep_create(li); + if(!deps) return NULL; + dep_entry_add(&svc_init,deps); + + /* mark it as being in _THE_ list */ + li->status |= ST_IN_LIST; + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_delete.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_delete.c new file mode 100644 index 00000000..10a7e218 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_delete.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "svc.h" + +/* ... */ +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if( tmp == NULL ) { + return 0; + } + + tmp->next->prev = tmp->prev; + tmp->prev->next = tmp->next; + free(tmp->abs_path); + free(tmp); + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_display_all.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_display_all.c new file mode 100644 index 00000000..65c7b3a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_display_all.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Show all list elements - mainly for debugging + */ + +#include /* NULL */ +#include "cinit.h" +#include "svc.h" + +int list_display_all() +{ + struct listitem *tmp; + + if( svc_list == NULL ) { + return 0; + } else { + tmp = svc_list; + } + + do { + mini_printf("Service: ",1); + mini_printf(tmp->abs_path,1); + mini_printf("\n",1); + tmp = tmp->prev; + } while(tmp != svc_list); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_insert.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_insert.c new file mode 100644 index 00000000..f31d4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_insert.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* malloc */ +#include /* bzero / memset */ +#include "svc.h" /* the list pointer */ + +struct listitem *list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc(sizeof(struct listitem)); + if(tmp == NULL) return NULL; + memset( tmp, '\0', sizeof(struct listitem)); + + if(svc_list == NULL) { /* list is empty, we have to init it */ + svc_list = tmp; + svc_list->next = svc_list; + svc_list->prev = svc_list; + } else { /* list has members,add this one */ + tmp->next = svc_list; /* begin after the new element */ + tmp->prev = svc_list->prev; /* change to the ex-last */ + svc_list->prev->next = tmp; /* change last element */ + svc_list->prev = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc(strlen(path) + 1); + if(tmp->abs_path == NULL) return NULL; + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_modify.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_modify.c new file mode 100644 index 00000000..4a93c41c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_modify.c @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "comm.h" /* for ST_OFF */ +#include "svc.h" /* for ST_OFF */ + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + +// D_PRINTF(path); + + tmp = list_search(path); + if( tmp == NULL ) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_search.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_search.c new file mode 100644 index 00000000..b40fae23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_search.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* NULL */ +#include /* strcmp */ +#include "cinit.h" +#include "svc.h" + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if(svc_list == NULL) { /* think positive */ + return NULL; + } else { + tmp = svc_list; + } + + do { + if(!strcmp(path, tmp->abs_path)) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_search_pid.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_search_pid.c new file mode 100644 index 00000000..a199e734 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/list_search_pid.c @@ -0,0 +1,37 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "svc.h" + +/* find service by pid, needs to be online because it is called + * by a signal handler + */ +inline struct listitem *list_search_pid(pid_t pid) +{ + struct listitem *tmp; + + if( svc_list == NULL ) { + return NULL; + } else { + tmp = svc_list; + } + + do { + if( pid == tmp->pid) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/objects b/software/cinit/browse_source/cinit-0.3pre3/src/svc/objects new file mode 100644 index 00000000..32c3dc0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/objects @@ -0,0 +1,18 @@ +svc/gen_svc_tree.o +svc/list_delete.o +svc/list_display_all.o +svc/list_insert.o +svc/list_modify.o +svc/list_search.o +svc/list_search_pid.o +svc/svc_create.o +svc/check_add_deps.o +svc/dep_entry_add.o +svc/dep_entry_del.o +svc/tree_exec.o +svc/svc_set_status.o +svc/svc_should_respawn.o +svc/svc_needs_status.o +svc/dep_needs_wants_add.o +svc/dep_create.o +svc/svc_success.o diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_add_needs.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_add_needs.c new file mode 100644 index 00000000..cc03727d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_add_needs.c @@ -0,0 +1,67 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +//#include +//#include +#include "cinit.h" +#include "messages.h" + +int svc_add_needs(char *needs, char *is_needed) +{ + struct listitem *svc_needs, *svc_is_needed; + + + /* retrieve service entries in global service list */ + svc_needs = svc_is_needed = NULL; + svc_needs = list_search(needs); + svc_is_needed = list_search(is_needed); + + /* and exit if one is missing */ + if( !svc_needs || !svc_is_needed ) { + return 0; + } + + /* first add needs */ + + /* now add needed_by */ + + malloc... /* for adding */ + + if(svc->needs == NULL) { + svc->needs = neu; + } else { + svc->next = neu; + } + + /* write generic function for dependencies or even all lists */ + dep_entry_add(list_pointer,new_entry); + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members,add this one */ + tmp->after = list; /* begin after the new element */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_create.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_create.c new file mode 100644 index 00000000..85f3d940 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_create.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* strcpy */ +#include /* stat */ +#include /* stat */ +#include /* PATH_MAX */ +#include /* errno */ +#include "svc.h" /* listitem */ +#include "cinit.h" /* path_append */ + +/* checking for existence is done before! */ +/* FIXME: check heedars for conformance with POSIX */ +struct listitem *svc_create(char *svc) +{ + char buf[PATH_MAX+1]; + struct stat statbuf; + struct listitem *li; + + li = list_insert(svc,-1); + if(!li) return NULL; + + /* FIXME: add two path length checks? svc and svc+strlen(C_RESPAWN)? */ + strcpy(buf,svc); + if(!path_append(buf,C_RESPAWN)) return NULL; + + if(stat(buf,&statbuf) == -1) { + if(errno == ENOENT) { + svc_set_status(li,ST_SH_ONCE); + } else { + return NULL; + } + } else { + mini_printf("respawn: ",1); + mini_printf(li->abs_path,1); + mini_printf("\n",1); + svc_set_status(li,ST_SH_RESPAWN); + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_needs_status.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_needs_status.c new file mode 100644 index 00000000..d9d54a81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_needs_status.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return status of the needs of this service + */ + +#include /* NULL */ +#include "svc.h" /* service information */ + +// DEBUG #include "cinit.h" /* service information */ + +int svc_needs_status(struct listitem *svc) +{ + int retval = SNS_NEEDS_STARTED; + struct dep *deps = svc->needs; + +/* DEBUG mini_printf("sns: ",1); + mini_printf(svc->abs_path,1); + mini_printf("\n",1); */ + + if(deps == NULL) return SNS_NEEDS_STARTED; /* no needs, everything fine */ + + do { + /* worst case: need failed */ + if((deps->svc->status & ST_NEED_FAILD) || + (deps->svc->status & ST_ONCE_FAIL)) { + retval = SNS_NEEDS_FAILED; + break; + } + /* services are being started */ + if((deps->svc->status & ST_SH_ONCE) || + (deps->svc->status & ST_SH_RESPAWN)) { + retval = SNS_NEEDS_UNFINISHED; + } + deps = deps->next; + } while(deps != svc->needs); + + return retval; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_respawn_check.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_respawn_check.c new file mode 100644 index 00000000..2ed44de8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_respawn_check.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* PATH_MAX */ +#include "svc.h" + +/* checking for existence is done before! */ +int svc_respawn_check(struct listitem *svc) +{ + char buf[PATH_MAX+1]; + + strcpy(buf,svc->abs_path); + if(!path_append(buf,C_RESPAWN)) return 0 +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_set_status.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_set_status.c new file mode 100644 index 00000000..36b61795 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_set_status.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_set_status(struct listitem *li, int status) +{ + return (li->status = status); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_should_respawn.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_should_respawn.c new file mode 100644 index 00000000..1c401024 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_should_respawn.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return whether should respawn or not + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_should_respawn(struct listitem *li) +{ + return (li->status & ST_SH_RESPAWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_success.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_success.c new file mode 100644 index 00000000..f2f96244 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/svc_success.c @@ -0,0 +1,18 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include "svc.h" + +void svc_success(struct listitem *li) +{ + if(li->status & ST_SH_ONCE) + li->status = ST_ONCE_OK; + else + li->status = ST_RESPAWNING; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/svc/tree_exec.c b/software/cinit/browse_source/cinit-0.3pre3/src/svc/tree_exec.c new file mode 100644 index 00000000..0d46afe7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/svc/tree_exec.c @@ -0,0 +1,130 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + +#include /* DEBUG */ + +#include /* _exit, fork */ + +#include "cinit.h" +#include "messages.h" /* D_PRINTF */ +#include "svc.h" /* svc_init */ + +/* some thoughts... + * + * - we already generated the tree, we now need to start it from + * the ends + * + * - after starting the first service we have to care about SIG_CHILD + * to record changes + * + * - we execute all services in parallel without problems, because of + * SIG_CHILD notification + * + * - After successfully starting the service we start the service that + * need or want that service + * + * + * + */ + +int tree_exec(struct dep *start) +{ + struct dep *tmp; + + tmp = start; + + mini_printf("========> tree_exec() \n",1); + /* the main starting loop: All services in this list should be + * started, but it is possible that dependent services are in the + * list. In this case simply skip the current service + */ + do { + /* FIXME debug */ + mini_printf("TEX::",1); + mini_printf(tmp->svc->abs_path,1); + mini_printf("\n",1); + { + struct dep *tmp2; + tmp2=tmp->svc->needs; + if(tmp2) { + do { + mini_printf("::",1); + mini_printf(tmp2->svc->abs_path,1); + mini_printf("\n",1); + fprintf(stderr,"%s: <<%d>>\n",tmp2->svc->abs_path,tmp2->svc->status); + tmp2 = tmp2->next; + } while (tmp2 != tmp->svc->needs); + } + } + + switch(svc_needs_status(tmp->svc)) { + case SNS_NEEDS_STARTED: + mini_printf("abhaengigkeiten gestartet, exec; add wants, needs\n",1); + /* FIXME: execute service */ + + /* update status */ + /* FIXME: check return code of execute_sth */ + svc_success(tmp->svc); + + /* execute service, remowe from list */ + /* FIXME check return code? */ + dep_needs_wants_add(&tmp,tmp->svc); + + /* delete service from list */ + tmp = dep_entry_del(tmp); + break; + case SNS_NEEDS_FAILED: + mini_printf("wer fehlgeschlagen\n",1); + /* mark service as NEED_FAILD and delete from list */ + svc_set_status(tmp->svc,ST_NEED_FAILD); + tmp = dep_entry_del(tmp); + break; + case SNS_NEEDS_UNFINISHED: + mini_printf("noch warten\n",1); + /* continue with the next item */ + tmp = tmp->next; + break; + } + +// tmp->svc->pid = fork(); + + +// if(tmp->svc->pid == -1) return 0; + + // if(tmp->svc->pid == 0) { /* child code */ + // execute_sth(tmp->svc->abs_path); +// _exit(1); + // } + + /* add the services that want or need this service to the list + * of services to be executed the next time + * + * We should add the new services at the beginning, so we + * clean the original onse first + * + * And we need to check, whether the dependencies are already + * solved. + * + * A service may be in status: + * + * - Unset (never touched) + * - Being started (passed our loop, but did not yet finish) + * - Respawning (means was started and we take care + * about it + * - failed (with reason copied, so one can reprint it later?) + * - once - started once successfully + * - need failed - not started, because need failed. perhaps + * registert which dependenc(y|ies) failed? + */ + /* FIXME: debug delay */ + sleep(1); + } while(tmp != NULL); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/test/test_build_argv+link.c b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_build_argv+link.c new file mode 100644 index 00000000..e37169fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_build_argv+link.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec_link"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/test/test_build_argv.c b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_build_argv.c new file mode 100644 index 00000000..0b2678be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_build_argv.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec new file mode 100644 index 00000000..e5cf3f01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec @@ -0,0 +1,7 @@ +#!/bin/sh +# Nico Schottelius +# Test-skript for cinit + +echo '$0': "$0" +echo '$@': "$@" +echo 'cinit_is_great:' $cinit_is_great diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec.env b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec.env new file mode 100644 index 00000000..853e0663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec.env @@ -0,0 +1 @@ +cinit_is_great=yes diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec.params b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec.params new file mode 100644 index 00000000..afe0f2ef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec.params @@ -0,0 +1 @@ +Let's see if we read the arguments....YES! diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec_link b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec_link new file mode 120000 index 00000000..c2ec9306 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec_link @@ -0,0 +1 @@ +test_exec \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec_link.env b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec_link.env new file mode 120000 index 00000000..30ea4990 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec_link.env @@ -0,0 +1 @@ +test_exec.env \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec_link.params b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec_link.params new file mode 120000 index 00000000..0b77c256 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_exec_link.params @@ -0,0 +1 @@ +test_exec.params \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre3/src/test/test_gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_gen_svc_tree.c new file mode 100644 index 00000000..93ad54ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/src/test/test_gen_svc_tree.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test gen_svc_tree + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + gen_svc_tree("/etc/cinit/svc/init"); + list_display_all(); +} diff --git a/software/cinit/browse_source/cinit-0.3pre3/util/README b/software/cinit/browse_source/cinit-0.3pre3/util/README new file mode 100644 index 00000000..782cdc8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/util/README @@ -0,0 +1,2 @@ +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.3pre3/util/ccontrol.c b/software/cinit/browse_source/cinit-0.3pre3/util/ccontrol.c new file mode 100644 index 00000000..95bc5212 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/util/ccontrol.c @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * ccontrol: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define USAGE_TEXT "ccontrol - control cinit\n\n" \ + "Usage:\n\nccontrol -[phurs]\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-u\t- (update) Reboot (warm) and update cinit\n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n\n" \ + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * ccontrol: control cinit + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 2) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + + switch(argv[1][1]) { + case 'p': /* power off */ + LOG(MSG_POWER_OFF); + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + LOG(MSG_HALT); + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + LOG(MSG_REBOOT); + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + LOG(MSG_RESCUE); + msg_reboot(CMD_RESCUE); + break; + + case 'u': /* update */ + LOG(MSG_UPDATE); + msg_reboot(CMD_UPDATE); + break; + + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* cinit-0.2 return codes implemented - nothing changed*/ diff --git a/software/cinit/browse_source/cinit-0.3pre3/util/cservice.c b/software/cinit/browse_source/cinit-0.3pre3/util/cservice.c new file mode 100644 index 00000000..66be6563 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/util/cservice.c @@ -0,0 +1,164 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * cservice: control cinit services + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit services + */ + +#define USAGE_TEXT "cservice - start and stop cinit services\n\n" \ + "cservice -[ear] \n" \ + "\t-e\t- (ein,on ) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n" \ + "\t-r\t- (restart) stop and start a service\n" + +/*********************************************************************** + * fuzzy_path: allow other kinds of path specification .. + */ +char *fuzzy_path(char *rpath) +{ + char pathtmp[PATH_MAX]; + char *re = NULL; + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return NULL; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(rpath); + return NULL; + } + + re = malloc( strlen(pathtmp) + 1); + + if(re != NULL) { + strcpy(re,pathtmp); + } + + return re; +} + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + char *real_name = NULL; + + /* argv */ + if(argc != 3) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + if(strlen(argv[1]) != 2) C_USAGE(MSG_ERR_ARGS_LEN); + + real_name = fuzzy_path(argv[2]); + + /* fuzzy path failed, exit! */ + if(real_name == NULL) { + return 1; + } + switch(argv[1][1]) { + case 'a': /* aus */ + case 'r': /* restart */ + switch( msg_svc_on_off(real_name,CMD_STOP_SVC) ) { + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_OFF: + SERVICE_LOG(real_name,LOG_SVC_STOPED); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + /* FIX THIS AFTER cinit-0.2 */ + case RT_TMPNOW: + case RT_ERR: + case RT_SVC_FAILED: + case RT_UNSPEC: + case RT_SUCCESS: + case ST_NEED_FAIL: + case ST_TMP: + case ST_ONCE: + case RT_NOTEXIST: + case ST_RESPAWN: +// SERVICE_LOG(real_name,"Ein bekanntest ding"); + break; +/* default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; */ + } + if( argv[1][1] == 'a') break; /* only continue if restarting */ + + case 'e': /* ein */ + switch (run_svc(real_name)) { /* run_svc fuzzys itself */ + case RT_NOTEXIST: + SERVICE_LOG(real_name,LOG_SVC_NOTEXIST); + break; + case RT_SVC_FAILED: + SERVICE_LOG(real_name,LOG_SVC_FAILED); + break; + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_ONCE: + SERVICE_LOG(real_name,LOG_SVC_ONCE); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + case ST_RESPAWN: + SERVICE_LOG(real_name,LOG_SVC_RESPAWN); + break; + case ST_NEED_FAIL: + SERVICE_LOG(real_name,LOG_NEED_FAIL); + break; + default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; + } + break; + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* uses cinit-0.2 return code style */ diff --git a/software/cinit/browse_source/cinit-0.3pre3/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.3pre3/util/msg_reboot.c new file mode 100644 index 00000000..efe78ec6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre3/util/msg_reboot.c @@ -0,0 +1,21 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + if(!begin_msg(cmd)) return 0; + close(sock); + return 1; +} +/* clean for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre4/ b/software/cinit/browse_source/cinit-0.3pre4/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.3pre4/.exclude b/software/cinit/browse_source/cinit-0.3pre4/.exclude new file mode 100644 index 00000000..1a2d31e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/.exclude @@ -0,0 +1,2 @@ +tmp +.git diff --git a/software/cinit/browse_source/cinit-0.3pre4/.gitignore b/software/cinit/browse_source/cinit-0.3pre4/.gitignore new file mode 100644 index 00000000..0f53ad16 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/.gitignore @@ -0,0 +1,14 @@ +*.o +*.a +*0? +MT +ddoc +contrib+tools/cinit.graph.text +config.h +sbin +tmp +os/current +tmpbin +src/os/current +src/ipc/current +src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/CHANGES b/software/cinit/browse_source/cinit-0.3pre4/CHANGES new file mode 100644 index 00000000..c995229d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/CHANGES @@ -0,0 +1,43 @@ +cinit-0.3pre4: + - Re-implemented execution of services. + - This version is the first 0.3pre version that COULD bootup your system! + +cinit-0.3pre3: + - Finished execution all services via the reversed service tree. + +cinit-0.3pre2: + - Finished generation of the dependency tree. + +cinit-0.3pre1: + - cinit should now compile on mostly all unices + - introduced much new code + - THIS IS A DEVELOPER RELEASE, NOT USABLE IN PRODUCTION ENVIRONMENTS. + +cinit-0.2.1: (Bugfix release) + - Fixed problem in contrib+tools/Makefile when installing + - added many new scripts to convert sys-v-init, which are still early beta + (see bin/cinit.merge.sysvinit-debian-sid) + +cinit-0.2: + - Much more verbose error reporting + - You can now also disable 'once ran' services, + - You can restart services with csevice -r + - Online speech in German is available + - C_DELAY support - variable delay for sending SIGKILL after SIGTERM + - First /etc/csys configuration example (wasserstoff) is available + - a Mailing list was created + - Added tools to analyze cinit configuration + (cinit-vis.pl, cinit.graph.text.c) + - Added tools to import and export configuration to XML + (make.cconfig.from.xml.rb,cconfig.graph.xml.rb) + - Removed unecessary signalling + - Added many helper scripts to install services (cinit.install.service*) + - Fixed many small bugs in old helper scripts (cinit.add.getty, cinit.get-conf, ...) + - Added ccontrol, which allows to control cinit + - Added update (-u) via ccontrol + - Stripped cservice, which now "only" controls services + - Removed swapoff from cinit code, should be handled by off + - Much better error and processing descriptions + - A bit more verbose reporting + - Restructured run_svc, now with better error detection + - Removed Kernel panic, when halting system diff --git a/software/cinit/browse_source/cinit-0.3pre4/COPYING b/software/cinit/browse_source/cinit-0.3pre4/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.3pre4/CREDITS b/software/cinit/browse_source/cinit-0.3pre4/CREDITS new file mode 100644 index 00000000..b009a48c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/CREDITS @@ -0,0 +1,23 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: 2005-09-25) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete + * providing cinit-vs.pl to visualize the cinit-tree +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) +Sandro Koechli + * testing, testing and testing cinit and cinit documentation +Marcus Wagner + * building and maintaining the Debian package +Peter Portmann + * testing cinit and documentation, writing cinit.graph.text in C, other coding diff --git a/software/cinit/browse_source/cinit-0.3pre4/Changelog b/software/cinit/browse_source/cinit-0.3pre4/Changelog new file mode 100644 index 00000000..0fbf76f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/Changelog @@ -0,0 +1,10 @@ +Mo Okt 3 00:19:40 CEST 2005 + *Changelog can now be found in git database (cg-log) +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.3pre4/Makefile b/software/cinit/browse_source/cinit-0.3pre4/Makefile new file mode 100644 index 00000000..9c174b63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/Makefile @@ -0,0 +1,85 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# directories and files +DDOC=ddoc +SDIRS=bin client conf comm doc generic serv util +CDIRS=contrib+tools + +# DO NOT CHANGE THIS. +SBIN=sbin +CINIT_BIN=$(SBIN)/cinit + +# targets +warn: + @cat doc/.buildwarn + +%.o: %.c + $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< + +all: sources + +sources: + $(MAKE) -C src all + +docs: $(DDOC) bin/cdoc-man.sh + ./bin/cdoc-man.sh doc/cinit-doc > $(DDOC)/cinit.8 + ./bin/cdoc-man.sh doc/cservice-doc > $(DDOC)/cservice.8 + +$(DDOC): + mkdir $(DDOC) + +$(CSVC_OBJ) $(OBJ): $(CONFIG_H) + +$(SBIN): + mkdir $(SBIN) + +sizecheck: cinit cservice + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l sbin/ > $$FILE; cat $$FILE + @echo -n "Source size (in KiB): " + @du -s $(SDIRS) | awk '{ sum+=$$1 } END { print sum }' +# @du -s bin client comm conf doc generic serv | awk '{ sum+=$1 } END { print sum }' + +clean: + $(MAKE) -C src clean + #rm -f *.o */*.o */*/*.o sbin/* $(CONFIG_H) ddoc/* + rm -f tmpbin/* + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +ccontrol: $(SBIN)/ccontrol + +$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) + $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ + $(STRIP) $@ + +install:: install-dir cinit cservice ccontrol + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + +#all install clean:: +# @for subdir in $(CDIRS); do \ +# echo "Making $@ in $$subdir"; \ +# (cd $$subdir && $(MAKE) $(MAKEFLAGS) $@) \ +# || exit 1;\ +# done; + +config: + @./bin/cinit.configure.os + @./bin/cinit.configure.tools + @./bin/cinit.configure.ipc + @touch src/.configured diff --git a/software/cinit/browse_source/cinit-0.3pre4/NEXTTODO b/software/cinit/browse_source/cinit-0.3pre4/NEXTTODO new file mode 100644 index 00000000..1f0d1689 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/NEXTTODO @@ -0,0 +1,23 @@ +- check execute_sth +- do not reports errors, when on or off do not exist! +- FIX the child handler! +- check free on dep_del! +- check that the new wants and need elements are nserted the other way round + * we go to next, elements must be put before us! +- cleanup the sig_child handler + * disable signals in sig_child handler + * update status of service + * Lookup other signalling things, too. + - use list_search_pid + +- define messages + a) human readable + b) binary data? + ? +- replace cinit_ipc_logon with cinit_ipc_init... +- cleanup run_svc + * NOT NECESSARY ANYMORE! +- implement do_reboot.c + +Finally: +- test and release cinit-0.3rc1 diff --git a/software/cinit/browse_source/cinit-0.3pre4/README b/software/cinit/browse_source/cinit-0.3pre4/README new file mode 100644 index 00000000..27f07c12 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/README @@ -0,0 +1,110 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre4/ROADMAP b/software/cinit/browse_source/cinit-0.3pre4/ROADMAP new file mode 100644 index 00000000..b26ccb36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/ROADMAP @@ -0,0 +1,117 @@ +-------------------------------------------------------------------------------- +THIS DOCUMENT SHOULD VANISH AS SOON AS EVERYTHING IS FINE +-------------------------------------------------------------------------------- + +Timeline +--------- + * ~ End of October 2006: Reunderstand the code, manifest changes [DONE] + * ~ Mid of November 2006: Have a compile-able cinit [DONE] + * ~ End of November 2006: Have a testsystem booting cinit + * ~ Mid of December 2006: Have production stable cinit + - Begin with migration scripts + - publish installable pre-releases + * ~ End of December 2006: Have some generic migration scripts + - Have (different) understanable documents + * ~ Mid of January 2007: Begin official release of cinit-0.3 + + + + +Versions +--------- + +0.3: +~~~ + code: Make cinit compile again :) [DONE] + code: double check to remove Linux specific source from general tree + code: seperate ipc from the rest [DONE] + code: fix / check signal handlers + code: cleanup makefile + code: add porting code: add support for any unix in general [DONE] + code: stabilize code, remove experimenting parts + code: remove delay support, let off/off.params do that. + code: add special directory (/etc/cinit/special?) for os specific binaries + -> halt, poweroff, reboot (NOTHING MORE THEY CAN DO) + -> SHOULD NOT BE IN THE PATH + code: move production code to src/ + end user doc: add warning for special binaries and hint for r/o only + amiga alike systems + + doc: begin to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.1: + devel doc: how to write merging scripts + devel doc: merging framework: + - minimal (do not look at the current configuration, build minimal) + - use current system (slowly, may use old scripts) + - rebuilt current system (recommened) + + tools: general framework for merging + end user doc: merging old init to cinit + + code: add porting code: add support for freebsd + code: better readable output: + -> starting + [ started once ] + [ respawning ] + [ failed ] (+ REASON!) + [ needs failed ] (which ones) + + -> stopping + [ stopping ] (for dependencies) + [ stopped ] ? + [ not running ] ? + + code: export profile information (CINIT_PROFILE) + end user doc: using different profiles in user space + end user doc: write examples for profiles: + o switch ssh known_hosts based on profile + o different proxy settings in browsers + - environment + - mozilla settings + o start samba (for lan) + o start samba (for company lan) + o use nis and nfs (company profile) + + doc: continue to merge old documents into new structure and move them + to the doc/ancient directory +0.3.2: + end user doc: what to read to use cinit + end user doc: installing cinit + end user doc: configuring cinit + tools: writing cinit-config (graphical (dialog based?) configuration tool) + code: add porting code: add support for openbsd + + code: add reverse dependency chain (or earlier?) + code: better support for external tools + o neustarten + o mit herunterfahren + o mit herunterfahren und allen Diensten, die abhaengen + o ohne herunterfahren + o Statische Daten + o pid vom Daemon + o pid vom einmal ausgefuehrten Programm + + + doc: end to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.3: + devel doc: writing an init system + devel doc: the conf/-configuration system + + code: check conf/ and perhaps rewrite b0rken english sentences + + code / doc: add logging support for services -> use multilog? + code: add porting code: add support for netbsd + +0.4: + first stable, tested, well documented version. + + code: check for optimisation + + other: compare with other init systems + +0.4.x: + code: add porting code: add support for other unices diff --git a/software/cinit/browse_source/cinit-0.3pre4/TODO b/software/cinit/browse_source/cinit-0.3pre4/TODO new file mode 100644 index 00000000..e034901a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/TODO @@ -0,0 +1,276 @@ +- define how it should work (doc/braindums/big-picture.text) +- define service status in one document, so repeatition stops! + + +-------------------------------------------------------------------------------- +- rename headers/ -> includes/ +- remove client/ from top level +-------------------------------------------------------------------------------- +- write about shell scripts in system startup +- write about general behaviour (covering the death) +-------------------------------------------------------------------------------- +Generate automatic asciidoc from conf/* +-------------------------------------------------------------------------------- +Add handler for ctrl+alt+delete + * document in paths +-------------------------------------------------------------------------------- +pre-compile config: conf/* + +-------------------------------------------------------------------------------- +panic: + read configuratio from defaults/panic* + -> write execute_something before! +-------------------------------------------------------------------------------- +comm: + tmpnow: search for pid in list, + save the pid in the list, so we know whether our executer died! +-------------------------------------------------------------------------------- +Logging / cinit: + fuer unsere eigenen ausgaben auch multilog? + + Logger: shared memory? +-------------------------------------------------------------------------------- +Implement full starting logic in server? +-------------------------------------------------------------------------------- +Build full dependency tree at start? And begin from the end? +-------------------------------------------------------------------------------- +comm/*: + int read + int write + --> fuer pipes + +run_init_svc + muss alle services wissen, die gestartet werden + + start_services_with_deps + gibt pointer auf struktur zurueck + -> Anzahl Services (array!) + -> Service: + Name (Pfad) + Ergebniss + -> beim fehler, die nachricht, strerror? + http://www.opengroup.org/onlinepubs/009695399/functions/strerror.html + + +Beim starten werden needs und wants als needs behandelt, weil +jeder starter _alle_ services zurueckgeben muss. + + Ein Prozess kann maximal 512 abhaengigkeiten haben. + -> open files + + +Neues cinit: + Wenn service fehlschlaegt, wird eine Struktur zurueckgegeben. + + Diese enhaelt: + + int success = + enum { SVC_SUCCESS, SVC_FAILED, SVC_NEED_FAILED, ... } + + char *reason; + + Ausgaben nach Beendigung vom Starten des Services. + + [ on ] %s + Ergebnis + [ off ] %s + + Rekursives herunter/rauffahren +-------------------------------------------------------------------------------- +- add error handling to cinit.install.binary +- remove sigio(), create new functions: + - one for cleaning up the socket + - one for doing the communication (specify two fd's) +- put some logic around exec_svc: + o put waiting code herein -> waiting code to structure! +- cleanup serv/sig_reboot.c:7: + o implement os-specific reboot function +-------------------------------------------------------------------------------- +1. Entfernung mount +2. kommunikation ueber + 1. einen fork pro service + fork(fork) +3. Socket wird erst nach einem Signal erstellt + -> Konfiguration sollte SIGWHATEVER senden +4. Vielleicht panicen, wenn init fehlschlaegt? +-------------------------------------------------------------------------------- +Als naechstes: + +- add code do implement stopping / restarting with dependency tree + o add used_by to the list of services + o used_by should be a simple (double?) linked list +-------------------------------------------------------------------------------- +Documentation: + - Installing cinit + o compiling cinit from source + o debian / gentoo + - Configuring +-------------------------------------------------------------------------------- +Add "used" by to each service, so we can track which services to shutdown. +-------------------------------------------------------------------------------- +- perhaps use dnotify? +- recheck warm reboot +- fix cservice +- print service name or cinit: before _everything_ WE print + +TESTING: + - does cinit eat zombies? + - is the reporting ok? + - does cservice and ccontrol what's expected? + +# cinit.create.empty.service: can only be started from the bin directory + +- compile cinit static and other tools dynamically per default + +- Fix Switching services off !! +- Remove RUN_RUN_SVCs, move code to run_svc so one can determine which + services failed? + --> sequentieller ablauf! + --> parallel ablauf, struct-array mit namen und ergebnis? + --> for dep in deps/*; do fork(run_svc() ); done + -----> while(any_is_running) { sleep } + -------> array durchsuchen, ergebnis nutzen. + - ueberpruefen von wo aus run_svc() aufgerufen wird + +- Fix SIGCHILD problem: + - exec_svc wants to waitpid() itself, so SIG_CHILD makes problems + - respawn_svc: does that need to act on SIGCHLD if the master process + is still running? + - kill respawn -> sigchild cleans up, we do not get waitpid perhaps? +- remove umount code? +- remove zombies, but keep away from SIGCHILD problems +- remove mount /etc/cinit/tmp code + -> how to replace? +- fix bug in Makefile: linking happens twice +- do not kill respawing service, if off exists +- ccontrol +- manpages +- Error codes when shutting down a service? +- Delay dokumentieren +- no_kill dokumentieren +- ddoc zuendefuehren + +- remove umount, swapoff? +--> to services? + +- on.out, on.err, on.in? + -> reading/writing from/to files + +--> Wenn kein ReSPAWN und der Prozess beendet sich nicht, + dann haengt init! +- implement "no_kill" until cinit-0.2 or 0.3? + +Doku!!! + +-------------------------------------------------------------------------------- +- Source Logic issues + - remove FIXME entries (and what should be fixed, too) + - memset for timespecs? + - move umount, swapoff and remount to off of init? + -> cleanup sig_reboot.c + - run_svc: + o we have many strcat()s, perhaps save length of pathbuf and strncat at + pathtmp[strlen(pathbuf)] ? + - do we really need swapoff? +-------------------------------------------------------------------------------- +- Documentation + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml +-------------------------------------------------------------------------------- +Things I did not do and I don't know whether we have to care about: + +- Porting + - add porting code to other unices? + - like openssh guys do? + +- close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? +- logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? +-------------------------------------------------------------------------------- +[OLD BUGS] +- remove cinit watcher? + -> sig_child -> cycle through list? +- DOKU: what happens when a service does not terminate.... + und er als once drin ist +- MANPAGE! +- execve() fails -> no sleep!! +- multiple zombies sometimes - problemservices + -> zombies of respawn watchers are not caught! + -> sig_chld also therein + -> problematic due to wait for child +-doubled cinit instance + - nur einmal +- free() everything before starting child +- cservice! + - prozess nur einmal -> WARTET! cinit auch! +doku: + cservice einmal starten -> wartet auf ende + cint ersetzt init bei gentoo + an error occuerd-> verbose + multuicall probleme -> busysbox --> GIBT ES NICHT!! + ---> DOKU DAZU! mit links, doppelt links, aus test + ---> erklaeren, dass es unproblematisch ist! + +11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet + werden konnte. +11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0 + zurueckgeworfen. +11:09 < folken23> telmich: oder service allready started. +-------------------------------------------------------------------------------- +possible BUGS: + +[14:44] freelsd:cinit-0.2.2% ./sbin/cservice -e ein + +ein: No such file or directory +Bad address +: Service does not exist + +cinit-0.2.2: +USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND +root 1 96.7 0.0 1580 336 ? R 18:59 5:49 /sbin/cinit +root 2 0.0 0.0 0 0 ? SN 18:59 0:00 [ksoftirqd/0] +root 3 0.0 0.0 0 0 ? S 18:59 0:00 [watchdog/0] +root 4 0.0 0.0 0 0 ? S< 18:59 0:00 [events/0] +root 5 0.0 0.0 0 0 ? S< 18:59 0:00 [khelper] +root 6 0.0 0.0 0 0 ? S< 18:59 0:00 [kthread] +root 10 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [khubd] +root 12 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [kblockd/0] +root 99 0.0 0.0 0 0 ? S 18:59 0:00 \_ [pdflush] +root 100 0.0 0.0 0 0 ? S 18:59 0:00 \_ [pdflush] +root 102 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [aio/0] +root 727 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [kseriod] +root 101 0.0 0.0 0 0 ? S 18:59 0:00 [kswapd0] +root 800 0.0 0.0 0 0 ? S 18:59 0:00 [khpsbpkt] +root 803 0.0 0.0 0 0 ? S 18:59 0:00 [pccardd] +root 838 0.0 0.0 0 0 ? S 18:59 0:00 [kjournald] +root 1923 0.0 0.0 1584 200 ? S 18:59 0:00 /sbin/cinit +root 1924 0.0 0.3 3624 1936 tty2 Rs 18:59 0:00 \_ -zsh +root 1969 0.0 0.0 1580 320 tty2 S 19:05 0:00 \_ cservice -e 3 +root 1972 0.0 0.1 2604 828 tty2 R+ 19:05 0:00 \_ ps axuwwf +root 1945 0.0 0.0 0 0 tty2 Z 19:01 0:00 [loadkeys] +cinit: [cprofile:profile] +cinit should not be started directly, but by your kernel. +umount raus +/etc/cinit/specials/... rein + +1. Doku auf asciidoc umstellen +2. den signalhandler code fixen +3. den tempmount entfernen + +--> cinit-0.3-rc1 +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +Optimisations +------------- + +tree_exec +~~~~~~~~~ +- only check dependencies (=needs) after the basic run? diff --git a/software/cinit/browse_source/cinit-0.3pre4/TODO.doc b/software/cinit/browse_source/cinit-0.3pre4/TODO.doc new file mode 100644 index 00000000..71ed721d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/TODO.doc @@ -0,0 +1,12 @@ +- doc/user/paths.text + * finish + * add examples +- add cross-compilation howto +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cdoc-man.sh b/software/cinit/browse_source/cinit-0.3pre4/bin/cdoc-man.sh new file mode 100644 index 00000000..fc1adde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cdoc-man.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Nico Schottelius +# Date: 21-Aug-2005 +# Last Modified: - +# + +set -e + +[ $# -ne 1 ] && exit 23 + +SRC=$1 + +cd "$SRC" + +# +# Title heading +# +echo .TH $(cat "meta/name" "meta/man_section" "meta/date") + +# +# Name +# +echo .SH NAME +echo $(cat meta/name) - $(cat meta/short_description) + +# +# Synopsis +# +echo .SH SYNOPSIS +echo $(cat path) $(cat parameters) + +# +# description +# +echo .SH DESCRIPTION +echo $(cat long_description) + +# +# availability +# +for section in availability examples "see also" author; do + if [ -f "$section" ]; then + echo .SH $section | tr '[a-z]' '[A-Z]' + cat "$section" + fi +done + +# +# files +# +if [ -f files ]; then + echo .SH FILES + cat files | sed 's/\(.*\)/.IP "\1" /' +fi + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.add.dependency new file mode 100644 index 00000000..7bc9cc65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.add.dependency @@ -0,0 +1,51 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or wants Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +# adding 'wishes' for x-mas and requires for 'the mass' and 'tv' +case $DEP in + wishes|wants) DEP=$C_WANTS ;; + needs|requires) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could someone PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEP_DIR="${BASEDIR}/${SVC_A}/${DEP}" + +if [ ! -d "$DEP_DIR" ]; then + echo "$DEP_DIR does not exist, creating..." + mkdir "$DEP_DIR" + if [ $? -ne 0 ]; then + echo "Error occured due to creating directory. Exiting." + exit 1 + fi +fi + +DEST="${DEP_DIR}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.add.getty new file mode 100644 index 00000000..987a5bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.add.getty @@ -0,0 +1,75 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# Date: 2005-05-24 (Last changed: 2005-08-07) +# + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | sort -n | tail -n 1) + +[ ! "$LAST_NUMBER" ] && LAST_NUMBER=0 + +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +#echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + */mgetty) + mygetty=$getty + params="38400 tty${NUMBER}" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +# check input +if [ ! "$mygetty" ]; then + read -p "Getty to use [$mygetty]: " rgetty +fi +if [ ! "$params" ]; then + read -p "Parameters to pass [$params]: " rparams +fi +if [ ! "$params" -o ! "$mygetty" ]; then + echo "Sorry, either getty or parameters are not supplied." + exit 23 +fi + +echo -n "Creating $mygetty ($params) in $DDIR ... " +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DDIR" +ln -s "$mygetty" "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.configure.ipc b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.configure.ipc new file mode 100644 index 00000000..65190baa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.configure.ipc @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius, 2006-07-28 +# +# cinit: configure the ipc method to use +# + +HIER=$(dirname $0) +DDIR=$HIER/../src/ipc +DFILE=${DDIR}/current +IPC_METHOD=$(head -n 1 "$HIER/../conf/ipc_method") + +echo "Configure: IPC: Using \"$IPC_METHOD\" as IPC method" + +# always remove link before, as ln seems to be broken +# Doing ln -sf src/ipc/$method current twice, will create the file +# "current" _BELOW_ src/ipc/$method and not overwrite the link +# src/ipc/current + +rm -f "${DFILE}" +ln -sf "${IPC_METHOD}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.configure.mark b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.configure.mark new file mode 100644 index 00000000..aa648411 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.configure.mark @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: touch a file to mark everything configured +# 2006-08-27 +# + +echo "Configure: MK: Marking directory as configured" +touch .configured diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.configure.os b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.configure.os new file mode 100644 index 00000000..d5b8e6e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.configure.os @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups symlinks for the os +# + +DDIR=$(dirname $0)/../src/os +DFILE="$DDIR/current" +OSCONFIG=$(dirname $0)/../conf/os + +OS=$(head -n 1 "$OSCONFIG") + +echo "Configure: OS: Binaries are created for $OS ..." + +rm -f "${DFILE}" +ln -sf "${OS}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.configure.tools b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.configure.tools new file mode 100644 index 00000000..43242a01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.configure.tools @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups scripts for compiling and linking +# + +HIER=$(dirname $0) +DDIR=$HIER/../tmpbin/ +CC=$(head -n 1 "$HIER/../conf/cc") +CFLAGS=$(head -n 1 "$HIER/../conf/cflags") +LD=$(head -n 1 "$HIER/../conf/ld") +LDFLAGS=$(head -n 1 "$HIER/../conf/ldflags") +STRIP=$(head -n 1 "$HIER/../conf/strip") + +echo "Configure: CC: Creating cc, ld and strip ..." + +mkdir -p "$DDIR" +cd "$DDIR" + +echo "$CC $CFLAGS \"\$@\"" > cc +echo "$LD $LDFLAGS \"\$@\"" > ld +echo "$STRIP \"\$@\"" > strip + +# set correct permissions +chmod 0700 * diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.create.empty.service new file mode 100644 index 00000000..365c4bc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.create.empty.service @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.binary new file mode 100644 index 00000000..a368ac23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.binary @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: - +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice +"$INSTALL_PROG" sbin/ccontrol $DESTDIR/$PREFIX/sbin/ccontrol +"$INSTALL_PROG" bin/cinit.reboot $DESTDIR/$PREFIX/sbin/cinit.reboot +"$INSTALL_PROG" bin/cinit.shutdown $DESTDIR/$PREFIX/sbin/cinit.shutdown +"$INSTALL_PROG" bin/cinit.wait.for.daemon \ + $DESTDIR/$PREFIX/sbin/cinit.wait.for.daemon + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi + +# install as /sbin/shutdown, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/shutdown ]; then + ln -s $PREFIX/sbin/cinit.shutdown $DESTDIR/$PREFIX/sbin/shutdown +fi + +# install as /sbin/reboot, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/reboot ]; then + ln -s $PREFIX/sbin/cinit.reboot $DESTDIR/$PREFIX/sbin/reboot +fi diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.config-dir b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.config-dir new file mode 100644 index 00000000..c9adb70f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.config-dir @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.dir new file mode 100644 index 00000000..5e16f690 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.dir @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/sbin" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.fsck b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.fsck new file mode 100644 index 00000000..4508860a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.fsck @@ -0,0 +1,36 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 3 ]; then + echo "$(basename $0): name device filesystem-type" + exit 1 +fi + +NAME=$1 +DEVICE=$2 +FS_TYPE=$3 + +FSCK=/sbin/fsck.$FS_TYPE + +if [ ! -f "$FSCK" ]; then + echo "Missing $FSCK, abort." + exit 1 +fi + +if [ ! -e "$DEVICE" ]; then + echo "Missing $DEVICE abort." + exit 1 +fi + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME" +ln -sf "$FSCK" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON" +echo "$DEVICE" > "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.miniconf b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.miniconf new file mode 100644 index 00000000..45dcc632 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.miniconf @@ -0,0 +1,103 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: 2005-08-07 +# + + +. $(dirname $0)/cinit.read-conf + +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" +echo "" +echo "This will install a minimal cinit configuration." +echo "This configuration _SHOULD_ be able to run on _MOST_ systems." +echo "Still, it's highly EXPERIEMENTAL, use with CAUTION." +echo "" +echo "Please make sure, that" +echo " - you are using a journaling filesystem (fsck is not used)" +echo " - you have agetty, fgetty or mingetty installed" +echo " - you are runnig Linux 2.6 (sysfs is used)" +echo " - you have udev or static device nodes (you need /dev/tty*)" +echo " - getties will run on tty2-tty7, tty1 is used or logging" +echo "" +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" + +notosoftwarepatents="Please keep an eye on software patents, they are evil." +read -p "Do you really want to continue? [y/N] " notosoftwarepatents + +if [ "$notosoftwarepatents" = "y" -o "$notosoftwarepatents" = "Y" ]; then + echo "Let us try it ..." +else + echo 'Bye bye!' + exit 0 +fi + +set -e + +# Create basic layout +$(dirname $0)/cinit.install.standard-dirs + +# Install services: +# - mount root r/w +# - mount /proc +# - mount /sys +# - install getties on tty2-tty7 +# - add cleanup for /etc/mtab +# - add loopback device +# - init service + echo + +################################### mount ##################################### +# mount root read/write +$(dirname $0)/cinit.install.service.mount-root + +# - mount /proc +$(dirname $0)/cinit.install.service.mount-proc + +# - mount /sys +$(dirname $0)/cinit.install.service.mount-sys + +# mount needs everything below it +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/root" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/proc" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/sys" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" + +################################### getty ##################################### +# mount root read/write +# install getties +begin_getty=2 +end_getty=7 +i=$begin_getty + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" +while [ "$i" -le "$end_getty" ]; do + $(dirname $0)/cinit.add.getty + ln -sf "${DESTDIR}/${CINIT_DIR}/getty/$i" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" + i=$(($i+1)) +done + +################################### mtab ##################################### +# - add cleanup for /etc/mtab +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" +$(dirname $0)/cinit.install.service.cleanup-mtab +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" + +################################### lo ##################################### +# - add loopback device +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" +$(dirname $0)/cinit.install.service.network-lo +ln -sf "${DESTDIR}/${CINIT_DIR}/network/lo" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" + +# - init service + echo +# init depends on mount, getty -> everything from base-layout +$(dirname $0)/cinit.install.service.init +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" + +ln -sf "${DESTDIR}/${CINIT_DIR}/local-services/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/getty/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/network/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.cleanup-mtab b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.cleanup-mtab new file mode 100644 index 00000000..30a8dd48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.cleanup-mtab @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: cleanup mtab +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" +echo '#!/bin/sh' > "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'rm -f /etc/mtab' >>"${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'ln -s /proc/mounts /etc/mtab' \ + >> "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +chmod 0700 "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.hostname.generic b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.hostname.generic new file mode 100644 index 00000000..2d72f50e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.hostname.generic @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service, which sets the hostname +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): hostname" + exit 1 +fi + +HOSTNAME=$1 +HOSTNAME_BIN=${HOSTNAME_BIN:-/bin/hostname} + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/network/hostname" +ln -sf "$HOSTNAME_BIN" "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON" +echo "$HOSTNAME" > "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.init b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.init new file mode 100644 index 00000000..c3a10931 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.init @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +ln -sf /bin/echo "${DESTDIR}/${CINIT_DIR}/${C_INIT}/$C_ON" +echo '*** cinit initial service successfully started ***' \ + > "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.keymap.c_keymap b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.keymap.c_keymap new file mode 100644 index 00000000..235a329e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.keymap.c_keymap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install keymap from environment setting +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +if [ -z "$C_KEYMAP" ]; then + echo "Set C_KEPMAP to the wanted keymap." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" ]; then + echo "Service keymap already exists." + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find loadkeys) + +if [ $? -ne 0 ]; then + echo "Did not find binary loadkeys." + exit 1 +fi + +echo -n "Installing keymap to ${DESTDIR}/${CINIT_DIR}/local-tuning/keymap ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON" + +echo "$C_KEYMAP" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.mount-proc b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.mount-proc new file mode 100644 index 00000000..024847a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.mount-proc @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /proc +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/proc" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/proc/$C_ON" +echo proc > "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo /proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.mount-root b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.mount-root new file mode 100644 index 00000000..a1bd56ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.mount-root @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount root r/w +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# mount root read/write +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/root" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/root/$C_ON" +echo -n > "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo -o >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo remount,rw >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo / >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.mount-sys b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.mount-sys new file mode 100644 index 00000000..8c8191aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.mount-sys @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /sys +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /sys +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/sys" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/sys/$C_ON" +echo sys > "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo sysfs >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo /sys >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.network-lo b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.network-lo new file mode 100644 index 00000000..45bff6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.network-lo @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: loopback device +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/lo" +ln -sf /sbin/ifconfig "${DESTDIR}/${CINIT_DIR}/network/lo/$C_ON" +echo lo > "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo 127.0.0.1/8 >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo up >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.ntpdate.debian b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.ntpdate.debian new file mode 100644 index 00000000..2af2ee4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.ntpdate.debian @@ -0,0 +1,47 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install ntpdate +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +. /etc/default/ntpdate + +if [ -z "$NTPSERVERS" ]; then + echo "No ntp servers found, aborting" + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find ntpdate) + +if [ $? -ne 0 ]; then + echo "Did not find binary ntpdate." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" ]; then + echo "Service ntpdate already exists." + exit 1 +fi + +echo -n "Installing ntpdate to ${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON" + +for server in $NTPSERVERS; do + echo "$server" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON$C_PARAMS" +done + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.udev b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.udev new file mode 100644 index 00000000..d91f01cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.service.udev @@ -0,0 +1,64 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install udev +# Date: 2005-10-15 +# Comment: DO NOT RSYNC TO THE WRONG SIDE! +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BIN_UDEVSEND=$($(dirname $0)/cinit.path-find udevsend) +BIN_UDEVSTART=$($(dirname $0)/cinit.path-find udevstart) +BIN_SYSCTL=$($(dirname $0)/cinit.path-find sysctl) +BIN_MOUNT=$($(dirname $0)/cinit.path-find mount) +SERVICE="local-tuning/udev" + +if [ -z "$BIN_UDEVSEND" -o -z "$BIN_UDEVSTART" -o -z "$BIN_SYSCTL" -o -z "$BIN_MOUNT" ]; then + echo "Did not find a binary." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo "Installing ${SERVICE} to ${DESTDIR}/${CINIT_DIR}/ ..." + +# 0. general udev +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}" +# 1. udevmount +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/mount/udev" +ln -sf "$BIN_MOUNT" "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON" +echo "udev" > "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "-t" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "tmpfs" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "/dev" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" + +# 2. udevstart +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart" +ln -sf "$BIN_UDEVSTART" "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart/$C_ON" + +# dependencies +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/sys +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/udev + +# 3. udev to hotplug +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug" +ln -sf "$BIN_SYSCTL" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug/$C_ON" +echo "$BIN_UDEVSEND" > "${DESTDIR}${CINIT_DIR}/${SERVICE}/hotplug/$C_ON$C_PARAMS" + +$(dirname $0)/cinit.add.dependency ${SERVICE}/hotplug needs mount/proc + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.standard.init.deps b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.standard.init.deps new file mode 100644 index 00000000..dcc5cd07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.standard.init.deps @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add standard sub-configuration directories to init wants +# Date: 2005-10-11 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.standard.mounts b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.standard.mounts new file mode 100644 index 00000000..bb1fc0c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.standard.mounts @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create normal mounts +# Date: 2005-10-16 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.swap b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.swap new file mode 100644 index 00000000..84e6c928 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.swap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install swap +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +SERVICE=mount/swap + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BINARY=swapon +BINARY_PATH=$($(dirname $0)/cinit.path-find $BINARY) +if [ $? -ne 0 ]; then + echo "Did not find binary $BINARY." + exit 1 +fi + +HAS_SWAP=$(awk '$3 ~ /swap/ { print $3 }' /etc/fstab) +if [ -z "$HAS_SWAP" ]; then + echo "Seems you have no swap, service not installing" + exit 1 +fi +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo -n "Installing ${SERVICE} to ${DESTDIR}${CINIT_DIR}/${SERVICE} ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON" + +echo "-a" >> "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.merge.sysvinit-debian-sid b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.merge.sysvinit-debian-sid new file mode 100644 index 00000000..3ef0ce03 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.merge.sysvinit-debian-sid @@ -0,0 +1,137 @@ +#!/bin/sh +# Nico Schottelius +# Date: Sun Oct 16 16:57:03 CEST 2005 +# cLinux/cinit +# Automagically convert Debian-Sysv-Iinit +# THIS IS NOT CLEAN. +# THIS IS NOT EVEN INTENTED TO BE CLEAN. +# This is just a small hack, because my girlfriend wants her notebook back. + +echo "***> $(basename $0): converting Debian-Sys-V-Init" + +# read standard values, may be overwritten from outside +. $(dirname $0)/cinit.read-conf + +echo "***> Finding standard config ..." +# variables, which can be set from the outside +ROOT_DEV=${ROOT_DEV:-$(awk '$2 ~ /^\/$/ { print $1 }' /etc/fstab)} +ROOT_FSCK=${ROOT_FSCK:-$(awk '$2 ~ /^\/$/ { print $6 }' /etc/fstab)} +ROOT_FS=${ROOT_FS:-$(awk '$2 ~ /^\/$/ { print $3 }' /etc/fstab)} +RUNLEVEL=${RUNLEVEL:-$(runlevel | awk '{ print $2 }')} + +echo "***> Detecting keymap (this may take some time)" + +if [ -z "$C_KEYMAP" ]; then + echo "Please set the variable C_KEYMAP to your keymap." + echo "It is impossible to detect reliable your keymap in Debian." + exit 1 +fi + + +echo "***> Configuration" +echo "Hostname (\$HOSTNAME): $HOSTNAME" +echo "Keymap (\$C_KEYMAP): $C_KEYMAP" +echo "Root device (\$ROOT_DEV): $ROOT_DEV" +echo "Root fsck (\$ROOT_FSCK): $ROOT_FSCK" +echo "Root FS (\$ROOT_FS): $ROOT_FS" +echo "Runlevel (\$RUNLEVEL): $RUNLEVEL" +echo "Destdir: (\$DESTDIR): $DESTDIR" +echo "Config-Dir: (\$CINIT_DIR): $CINIT_DIR" +read -p "Is this correct (Y/n) " correct + +if [ "$correct" != "y" -a "$correct" != "Y" ]; then + echo "***> Abort." + exit 1 +fi + +if [ -d "${DESTDIR}${CINIT_DIR}" ]; then + echo "ERROR: Configuration already exists at ${DESTDIR}${CINIT_DIR}." + exit 1 +fi + +echo "***> Installing standard structure and dependencies" +set -e +$(dirname $0)/cinit.install.config-dir +$(dirname $0)/cinit.install.standard.dirs +$(dirname $0)/cinit.install.standard.init.deps + +echo "***> Adding mount / r/w" +$(dirname $0)/cinit.install.service.mount-root + +if [ "$ROOT_FSCK" = "1" ]; then + echo "***> Adding fsck for $ROOT_DEV ..." + $(dirname $0)/cinit.install.fsck root "$ROOT_DEV" "$ROOT_FS" + echo "***> Adding dependency" + $(dirname $0)/cinit.add.dependency mount/root needs fsck/root +else + echo "***> Skipping fsck for $ROOT_DEV ..." +fi + +echo "***> Setting up standard mounts ..." +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up hostname: $HOSTNAME" +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up keymap" +$(dirname $0)/cinit.install.service.keymap.c_keymap + +echo "***> Creating getties (tty1-8)" +for i in `seq 1 8`; do + $(dirname $0)/cinit.add.getty + + # each getty needs: + # - root r/w + $(dirname $0)/cinit.add.dependency getty/$i needs mount/root + # - hostname + $(dirname $0)/cinit.add.dependency getty/$i needs network/hostname +done + +echo "***> Enabling getties (tty2-8)" +for i in `seq 2 8`; do + # add getties to getty/ + $(dirname $0)/cinit.add.dependency getty wants getty/$i +done + +# +# Convert services: check /etc/rcS.d and /etc/rcX.d +# +echo "***> Converting services ..." +for script in $(cd /etc/rcS.d/; ls S*; cd /etc/rc${RUNLEVEL}.d/; ls S*); do + echo -n "$script: " + case $script in + # SCRIPTS READY + *ntpdate) + $(dirname $0)/cinit.install.service.ntpdate.debian + $(dirname $0)/cinit.add.dependency local-tuning/ntpdate needs network + ;; + *udev*) + $(dirname $0)/cinit.install.service.udev + + # SCRIPTS NEVER READY + *glibc.sh|*module-init-tools|*modutils|*procps.sh|*hotplug-net|*bootmisc.sh|*nviboot|*screen-cleanup|*x11-common|*sudo|*makedev|*rmnologin) + echo "Ignoring (useless)." + ;; + + # SCRIPTS NOT YET READY + *mountvirtfs|*checkroot.sh|*ifupdown-clean|*checkfs.sh|*mountall.sh|*ifupdown|*hostname*|*mountnfs.sh|*alsa|*rsync|*ssh|*fam|*cron|*gdm) + echo "converting planned later." + ;; + + # SCRIPTS LATER TO DO + *bootlogd|*keymap.sh|*hwclock*|*discover|*pppd-dns|*dns-clean|*networking|*portmap|*console-screen.sh|*urandom|*klogd|*apmd|*dbus-1|*exim4|*pcmcia|*nfs-common|*stop-bootlogd) + echo "unsupported currently (FIXME PLEASE)." + ;; + *sysklogd|*ppp|*inetd|*lpd|*aumix|*atd) + echo "unsupported (choose a better alternative)." + ;; + *initrd-tools.sh|*libdevmapper*|*hotplug) + echo "Ignoring (general or bloated script)." + ;; + *) + echo "Ignoring (unknown)" + ;; + esac +done + +echo "***> Finished." diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.path-find b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.path-find new file mode 100644 index 00000000..0d0f362b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.path-find @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: find binary in path +# Date: 2005-10-15 +# + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): searched binary" + exit 1 +fi + +binary=$1 + +# this is NOT really clean, paths can also contain spaces +for pfad in $(echo $PATH | sed 's/:/ /g'); do + fullname=$pfad/$binary + if [ -f "$fullname" ]; then + echo "$fullname" + exit 0 + fi +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.release b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.release new file mode 100644 index 00000000..c5e15859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.release @@ -0,0 +1,38 @@ +#!/bin/sh +# Nico Schottelius +# Build release tar +# Date: Sat Oct 15 21:38:29 CEST 2005 +# Last Changed: Fr Okt 28 01:24:58 CEST 2005 + + +if [ $# -ne 2 ]; then + echo $(basename $0): source-dir version + exit 1 +fi + +DIR=$1 +VERSION=$2 +OUT_NAME=cinit-${VERSION}.tar.bz2 +D_HOST=home.schottelius.org +D_BASE=www/org/schottelius/unix/www/cinit +D_DIR=${D_BASE}/archives/ +D_SOURCE=${D_BASE}/browse_source/ + +if [ ! -d "$DIR" ]; then + echo "$DIR is not a directory" + exit 1 +fi + +( cd "$DIR" && make clean ) || exit 1 + +echo "Creating bzip2 compressed tar" +tar cj -X $DIR/.exclude -f "$OUT_NAME" $DIR +chmod 0644 "$OUT_NAME" +echo "Transfering to $D_HOST" +scp "$OUT_NAME" "$D_HOST:$D_DIR" +echo "Extracting to $D_SOURCE" +ssh "$D_HOST" "tar xfj $D_DIR/$OUT_NAME -C $D_SOURCE" +echo "Correcting paranoid permissions" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type f -exec chmod 0644 {} \\;" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type d -exec chmod 0755 {} \\;" +echo "Please do not forget to update the website..." diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.remove.getty new file mode 100644 index 00000000..4950eeed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.remove.getty @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + +if [ ! "$NUMBER" ]; then + echo "There is no getty to remove." + exit 1 +fi + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r "$DDIR" +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.shutdown new file mode 100644 index 00000000..702c8a17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.shutdown @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# TODO: use ccontrol! +# 2005-05-24 (Last changed: 2005-06-18) + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -p|--power-off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " -s|--rescue: Rescue mode" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -p|--power-off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + -s|--rescue) kill -USR2 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.uml.test new file mode 100644 index 00000000..f6ea7fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.1 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG umid=cinit$$ init=/sbin/cinit" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..7f027455 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 (Last Changed: 2005-06-17) + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +PIDFILE=$1; shift +DAEMON=$1; shift + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.3pre4/client/README b/software/cinit/browse_source/cinit-0.3pre4/client/README new file mode 100644 index 00000000..0a5b8d0c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/client/README @@ -0,0 +1,2 @@ +client/ + These sources are used by the children which are spawned by cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre4/client/begin_msg.c b/software/cinit/browse_source/cinit-0.3pre4/client/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/client/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/client/connect_sock.c b/software/cinit/browse_source/cinit-0.3pre4/client/connect_sock.c new file mode 100644 index 00000000..2c2d45de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/client/connect_sock.c @@ -0,0 +1,38 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include /* memset, strcpy */ + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/client/exec_svc.c b/software/cinit/browse_source/cinit-0.3pre4/client/exec_svc.c new file mode 100644 index 00000000..f217f9e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/client/exec_svc.c @@ -0,0 +1,264 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +inline pid_t exec_svc(char *abspath, int action) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + SERVICE_LOG(abspath,LOG_SVC_FAIL); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + P_EXEC_FAILED(nargv[0]); + perror(MSG_ERR_EXECVE); + /* FIXME: remove debug, remove double printing without loosing info */ + sleep(3); /* debug */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/client/msg_change_status.c b/software/cinit/browse_source/cinit-0.3pre4/client/msg_change_status.c new file mode 100644 index 00000000..836a0fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/client/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* FIXME: change return code validation */ + +int msg_change_status(char *svc, char status, pid_t pid) +{ + if(!begin_msg(CMD_CHG_STATUS)) { + return RT_ERR_COMM; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/client/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.3pre4/client/msg_svc_on_off.c new file mode 100644 index 00000000..02948f2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/client/msg_svc_on_off.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, char action) +{ + if(!begin_msg(action)) return RT_ERR_COMM; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return RT_ERR_COMM; + return (int) do_result(sock,NULL); +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre4/client/respawn_svc.c b/software/cinit/browse_source/cinit-0.3pre4/client/respawn_svc.c new file mode 100644 index 00000000..5c350045 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/client/respawn_svc.c @@ -0,0 +1,99 @@ +/* + * (c) 2005,2006 Nico Schottelius (nico-linux at schottelius.org) + * respawn_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + D_PRINTF(abspath); + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, CMD_START_SVC) ) { + if(cpid != 0) { + D_PRINTF("sloefen"); + sleep(SLEEP_SVC); + D_PRINTF("Zuende geschlafen"); + } + } + } while(cpid); /* cpid is reset by sig_terminate() */ + + /* FIXME: put most code of sig_terminate here, look for no_kill */ + + /* start off task */ + exec_svc(abspath,CMD_STOP_SVC); + + D_PRINTF("jetzt weg"); + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/client/run_run_svcs.c b/software/cinit/browse_source/cinit-0.3pre4/client/run_run_svcs.c new file mode 100644 index 00000000..6486c76f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/client/run_run_svcs.c @@ -0,0 +1,86 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/client/run_svc.c b/software/cinit/browse_source/cinit-0.3pre4/client/run_svc.c new file mode 100644 index 00000000..7fea6a92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/client/run_svc.c @@ -0,0 +1,129 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre4/client/sig_terminate.c b/software/cinit/browse_source/cinit-0.3pre4/client/sig_terminate.c new file mode 100644 index 00000000..9b23e349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/client/sig_terminate.c @@ -0,0 +1,60 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + /* FIXME: only send SIGTERM, if not_kill does not exist */ + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + status = kill(cpid,SIGKILL); + if( status == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + D_PRINTF("muesste weg sein"); + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/comm/README b/software/cinit/browse_source/cinit-0.3pre4/comm/README new file mode 100644 index 00000000..840c9742 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/comm/README @@ -0,0 +1,3 @@ +comm/ + The communication part of cinit. + The functions are used in client and in server code. diff --git a/software/cinit/browse_source/cinit-0.3pre4/comm/do_change_status.c b/software/cinit/browse_source/cinit-0.3pre4/comm/do_change_status.c new file mode 100644 index 00000000..94b9be76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/comm/do_change_status.c @@ -0,0 +1,70 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/comm/do_result.c b/software/cinit/browse_source/cinit-0.3pre4/comm/do_result.c new file mode 100644 index 00000000..cb51161b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/comm/do_result.c @@ -0,0 +1,33 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return RT_ERR_COMM; + } + + return *value; +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre4/comm/do_svc_name.c b/software/cinit/browse_source/cinit-0.3pre4/comm/do_svc_name.c new file mode 100644 index 00000000..d427365f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/comm/do_svc_name.c @@ -0,0 +1,51 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/.README b/software/cinit/browse_source/cinit-0.3pre4/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_confdir b/software/cinit/browse_source/cinit-0.3pre4/conf/c_confdir new file mode 100644 index 00000000..091e6192 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_confdir @@ -0,0 +1,3 @@ +conf + +The directory below cinit_dir for cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_delay b/software/cinit/browse_source/cinit-0.3pre4/conf/c_delay new file mode 100644 index 00000000..dc30f147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGTERM for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_env b/software/cinit/browse_source/cinit-0.3pre4/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_halt b/software/cinit/browse_source/cinit-0.3pre4/conf/c_halt new file mode 100644 index 00000000..4eed340f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_halt @@ -0,0 +1,4 @@ +halt + +Name of the link belowe c_special, which links to the program +to be executed right before halting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_init b/software/cinit/browse_source/cinit-0.3pre4/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_needs b/software/cinit/browse_source/cinit-0.3pre4/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_off b/software/cinit/browse_source/cinit-0.3pre4/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_on b/software/cinit/browse_source/cinit-0.3pre4/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_panic b/software/cinit/browse_source/cinit-0.3pre4/conf/c_panic new file mode 100644 index 00000000..7fdb77b3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_panic @@ -0,0 +1,5 @@ +panic + +Name of the file below cinit_dir/c_confdir/ to execute on panic. +This name .params (normally panic.params) will be passed as parameters/ +argumunts to panic. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_params b/software/cinit/browse_source/cinit-0.3pre4/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_poweroff b/software/cinit/browse_source/cinit-0.3pre4/conf/c_poweroff new file mode 100644 index 00000000..5b5c9c9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_poweroff @@ -0,0 +1,4 @@ +poweroff + +Name of the link belowe c_special, which links to the program +to be executed right before powering off the system. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_reboot b/software/cinit/browse_source/cinit-0.3pre4/conf/c_reboot new file mode 100644 index 00000000..8702388f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_reboot @@ -0,0 +1,4 @@ +reboot + +Name of the link belowe c_special, which links to the program +to be executed right before rebooting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_respawn b/software/cinit/browse_source/cinit-0.3pre4/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_sock b/software/cinit/browse_source/cinit-0.3pre4/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_tmp b/software/cinit/browse_source/cinit-0.3pre4/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.3pre4/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.3pre4/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_umount b/software/cinit/browse_source/cinit-0.3pre4/conf/c_umount new file mode 100644 index 00000000..ab96b0a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_umount @@ -0,0 +1,6 @@ +umount + +Name of the file below cinit_dir/c_confdir/ to execute right before +reboot/halt/poweroff. + +It should normally be a shellscript with the OS-specific umount procedure. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/c_wants b/software/cinit/browse_source/cinit-0.3pre4/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/cc b/software/cinit/browse_source/cinit-0.3pre4/conf/cc new file mode 100644 index 00000000..b168ae6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/cc @@ -0,0 +1,3 @@ +gcc + +The c-compiler to use. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/cflags b/software/cinit/browse_source/cinit-0.3pre4/conf/cflags new file mode 100644 index 00000000..812812a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/cflags @@ -0,0 +1,3 @@ +-pipe -W -Wall -Werror -Iinclude -g + +Standard flags to pass to (g)cc. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/cinit_dir b/software/cinit/browse_source/cinit-0.3pre4/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/confdir b/software/cinit/browse_source/cinit-0.3pre4/conf/confdir new file mode 100644 index 00000000..55fb65e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/confdir @@ -0,0 +1,3 @@ +conf + +The subdirectory below /etc/cinit to be used for general configurations. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/destdir b/software/cinit/browse_source/cinit-0.3pre4/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/getty_dir b/software/cinit/browse_source/cinit-0.3pre4/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/install_directory b/software/cinit/browse_source/cinit-0.3pre4/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/install_prog b/software/cinit/browse_source/cinit-0.3pre4/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/ipc_method b/software/cinit/browse_source/cinit-0.3pre4/conf/ipc_method new file mode 100644 index 00000000..fc75e273 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/ipc_method @@ -0,0 +1,5 @@ +msgq + +The type of IPC (inter process communication) to use. +Valid values can be optained by issuing `ls src/ipc/`. + diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/ld b/software/cinit/browse_source/cinit-0.3pre4/conf/ld new file mode 100644 index 00000000..b60e4836 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/ld @@ -0,0 +1,3 @@ +gcc + +Comment missing. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/ldflags b/software/cinit/browse_source/cinit-0.3pre4/conf/ldflags new file mode 100644 index 00000000..fc214daf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/ldflags @@ -0,0 +1,3 @@ + + +No flags specified normally. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/max_delay b/software/cinit/browse_source/cinit-0.3pre4/conf/max_delay new file mode 100644 index 00000000..149fa16c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/max_delay @@ -0,0 +1,7 @@ +4 + +Maximum number of digits which may be in the delay file. +If there are more, the string "12345678901" will be cut to the +right length "1234567890". I don't think you'll ever need +a timeout greater 4 digits (9999 seconds are 166,65~ minutes, are +2 hours, 46 minutes and 39 seconds). See doc/configuring.cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/max_deps b/software/cinit/browse_source/cinit-0.3pre4/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/msgq_pathname b/software/cinit/browse_source/cinit-0.3pre4/conf/msgq_pathname new file mode 100644 index 00000000..1bef0b6b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/msgq_pathname @@ -0,0 +1,4 @@ +/bin/sh + +Used to generate an unique identifier for the message queue. +See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/msgq_to_clients b/software/cinit/browse_source/cinit-0.3pre4/conf/msgq_to_clients new file mode 100644 index 00000000..dd15808a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/msgq_to_clients @@ -0,0 +1,4 @@ +o + +This is use in ftok to generate a key_t for the message queue use to write +to the clients. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/msgq_to_server b/software/cinit/browse_source/cinit-0.3pre4/conf/msgq_to_server new file mode 100644 index 00000000..f87ae3f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/msgq_to_server @@ -0,0 +1,4 @@ +i + +This is use in ftok to generate a key_t for the message queue use to write +to the server. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/os b/software/cinit/browse_source/cinit-0.3pre4/conf/os new file mode 100644 index 00000000..ddbf8f9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/os @@ -0,0 +1,14 @@ +linux + +Select the operating system compiling for. + +Current possibilities: + + - linux + + +Currently Planned possibilities: + + - freebsd + - openbsd + - netbsd diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/p_asciidoc b/software/cinit/browse_source/cinit-0.3pre4/conf/p_asciidoc new file mode 100644 index 00000000..52485c86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/p_asciidoc @@ -0,0 +1,6 @@ +asciidoc + +The binary on your system (with or without path) which does what I expect +asciidoc todo. + +Default: asciidoc diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/p_docbooktoman b/software/cinit/browse_source/cinit-0.3pre4/conf/p_docbooktoman new file mode 100644 index 00000000..d62c9015 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/p_docbooktoman @@ -0,0 +1,6 @@ +docbook2x-man + +The binary on your system (with or without path) which converts +docbook to manpages. + +Default: docbook2x-man diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/p_docbooktotexi b/software/cinit/browse_source/cinit-0.3pre4/conf/p_docbooktotexi new file mode 100644 index 00000000..278f6805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/p_docbooktotexi @@ -0,0 +1,6 @@ +docbook2x-texi + +The binary on your system (with or without path) which converts +docbook to texinfo. + +Default: docbook2x-texi diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/prefix b/software/cinit/browse_source/cinit-0.3pre4/conf/prefix new file mode 100644 index 00000000..6b90469f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/prefix @@ -0,0 +1,5 @@ + + +Where to install cinit. Normally this will be /, but you can put it anywhere. +The subdirectory 'sbin' under this prefix must be readable by the kernel. +This is normally either empty or "/". diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/profile b/software/cinit/browse_source/cinit-0.3pre4/conf/profile new file mode 100644 index 00000000..b9104bf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/profile @@ -0,0 +1,9 @@ +cprofile: + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile:" is the standard, as +the Linux kernel eats everything in the form 'var=parm'. +The old (pre cinit-0.1) option "cprofile=" should therefore +NOT be used. + +Under Linux you tell it the bootloader like grub or LILO. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/service_categories b/software/cinit/browse_source/cinit-0.3pre4/conf/service_categories new file mode 100644 index 00000000..d632b875 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/service_categories @@ -0,0 +1,4 @@ +getty local-tuning local-services mount network remote-services + +List of directories normally created below /etc/cinit/svc/ as +'pseudo-services'. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/sleep_kill b/software/cinit/browse_source/cinit-0.3pre4/conf/sleep_kill new file mode 100644 index 00000000..b419241a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/sleep_kill @@ -0,0 +1,8 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. + +Note: This does NOT affect terminating services, they are shutdown by +their own 'off' functions. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.3pre4/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.3pre4/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/sleep_svc b/software/cinit/browse_source/cinit-0.3pre4/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/sock_queue b/software/cinit/browse_source/cinit-0.3pre4/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/strip b/software/cinit/browse_source/cinit-0.3pre4/conf/strip new file mode 100644 index 00000000..08736418 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/strip @@ -0,0 +1,3 @@ +strip -R .comment -R .note + +Strip out unecessary parts of the binaries. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/sulogin b/software/cinit/browse_source/cinit-0.3pre4/conf/sulogin new file mode 100644 index 00000000..24859afc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/sulogin @@ -0,0 +1,6 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it, if the standard panic +action fails (as specified in cinit_dir/c_confdir/panic). + +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/svcdir b/software/cinit/browse_source/cinit-0.3pre4/conf/svcdir new file mode 100644 index 00000000..087a3848 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/svcdir @@ -0,0 +1,3 @@ +svc + +Directory below /etc/cinit that contains the services. diff --git a/software/cinit/browse_source/cinit-0.3pre4/conf/version b/software/cinit/browse_source/cinit-0.3pre4/conf/version new file mode 100644 index 00000000..9f45daee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/conf/version @@ -0,0 +1,3 @@ +"0.3pre4" + +The version. diff --git a/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/Makefile b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/Makefile new file mode 100644 index 00000000..8441c90b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/Makefile @@ -0,0 +1,70 @@ +# +# (c) 2005 Peter Portmann (pp at bluewin.ch) +# cinit/contrib+tools +# +# This script is written for the clinux-System and published +# under the terms of GPL 2.0 +# +# Version: 0.2 +# clean with a single command instead of two commands. +# +# ChangeLog: +# 0.1 initial version +# +# Todo: +# +# Features: + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +DEBUG=-g -DDEBUG +#OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! +LDFLAGS= + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. -I../ +LD=gcc +STRIP=strip -R .comment -R .note + +INSTALL = install + +prefix = /usr +bindir = $(prefix)/bin + +# objects + +CLIENT=cinit.graph.text.o + +COMMUNICATION=error.o ../generic/usage.o ../generic/mini_printf.o + +OBJ=$(CLIENT) $(COMMUNICATION) + +# +PROGRAMS=cinit.graph.text +SCRIPTS=cconfig.graph.xml.rb \ + make.cconfig.from.xml.rb \ + cinit-vis.pl + +# targets +all: $(PROGRAMS) + +cinit.graph.text: $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +clean: + rm -f *.o $(PROGRAMS) + +install: all + @echo '*** Installing contrib+tools ***' + $(INSTALL) -d -m755 $(DESTDIR)$(bindir) + for bin in $(SCRIPTS) $(PROGRAMS); do \ + $(INSTALL) $$bin $(DESTDIR)/$(bindir); \ + done diff --git a/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/README b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/README new file mode 100644 index 00000000..85fa2f5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/README @@ -0,0 +1,11 @@ +contrib+tools/ + programs written by others and external tools not necessary + needed but (very) nice to have + + + cinit-vis.pl - draw an ascii graph of cinit configuration [perl] + cinit.graph.text - draw an ascii graph of cinit configuration [c] + + cconfig.graph.xml.rb - creates a xml file from a cconfig [ruby] + make.cconfig.from.xml.rb - creates a cconfig from a xml file [ruby] + diff --git a/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/README.ruby b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/README.ruby new file mode 100644 index 00000000..ed210cee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/README.ruby @@ -0,0 +1,7 @@ +The ruby tools for general cconfig [0] are written by René Nussbaumer [1]. +You can find the documentation for them at [2]. + + +[0]: http://nico.schotteli.us/papers/linux/cconfig/ +[1]: http://killerfox.forkbomb.ch/ +[2]: http://killerfox.forkbomb.ch/articles/cconfig/tools diff --git a/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/cconfig.graph.xml.rb b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/cconfig.graph.xml.rb new file mode 100644 index 00000000..d18ba422 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/cconfig.graph.xml.rb @@ -0,0 +1,117 @@ +#!/usr/bin/env ruby + +=begin + + Writes an XML-Tree for a cconfig directory + Idea by Nico Schottelius aka telmich + Implemented and (C) by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added support for binary files + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Changed checking order: symlink, directory, file. Because of + a logical bug -> directory follows symlink so, when a symlink + points to a directory no «link» element is created. + + Version 0.1 (René Nussbaumer): + * Holy hack for directory scanning (needs to be optimized) + * Hack for rexml to print out «lost» tags. This rexml sux. + + Todo: + * Optimize scanning. + * Use another xml library instead of rexml crap. + Problem: Produce dependencies -> no std-lib + + Features: + * Create a flat (no deepnes without directory) and 1:1 image + of an cconfig directory + +=end + +require 'rexml/document' +require 'base64' +require 'digest/sha1' + +require 'filemagic' + +@version = '0.3' + +def determineTarget(entry) + return 'external' if(!File.expand_path(entry).index(@initpath)) + return 'link' if(FileTest.symlink?(entry)) + return 'object' if(FileTest.directory?(entry)) + return 'attribute' if(FileTest.file?(entry)) + return 'unknown' # Should never be reached +end + +def createTree(dir, parent) + dir.each { |entry| + next if(entry =~ /^(\.|\.\.)$/) + + if(FileTest.symlink?(entry)) + e = parent.add_element('link') + + # Much fun with links + e.add_attributes( { 'name' => entry, 'target' => determineTarget(File.readlink(entry)) } ) + e.add_text(File.readlink(entry)) + elsif(FileTest.directory?(entry)) + e = parent.add_element('object') + e.add_attribute('name', entry) + + # Bad, that we need to change the directory every time. + oldPwd = Dir.pwd + Dir.chdir(entry) + createTree(Dir.new('.'), e) + Dir.chdir(oldPwd) + elsif(FileTest.file?(entry)) + e = parent.add_element('attribute') + e.add_attribute('name', entry) + if(File.stat(entry).size?) + # Yeah, we got one WITH content! W00h00, let's party. + + fm = FileMagic.new(FileMagic::MAGIC_MIME) + if(fm.file(entry) =~ /executable/) + e.add_attribute('type', 'binary') + text = File.new(entry).read + e.add_attribute('sha1', Digest::SHA1.hexdigest(text)) + e.add_text(Base64.encode64(text)) + else + e.add_text(File.new(entry).read) + end + fm.close() + end + end + } +end + + +if(!ARGV[0] || !FileTest.directory?(ARGV[0])) + puts 'You need to specify a directory' + Kernel.exit(-1) +end + +doc = REXML::Document.new + +e = doc.add_element('cconfig') +e.add_attribute('name', File.basename(ARGV[0])) +e.add_attribute('version', @version) + +@initpath = File.expand_path(ARGV[0]) +Dir.chdir(ARGV[0]) +createTree(Dir.new('.'), doc.root) + +out = '' +doc.write(out, 0, false, true) + +REXML::XMLDecl.new('1.0', 'utf-8').write($stdout) # This should automatically printed by rexml. Damn bugs. +puts '' +puts out # Workaround for a buggy rexml + diff --git a/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/cinit-vis.pl b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/cinit-vis.pl new file mode 100644 index 00000000..3956ff47 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/cinit-vis.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# (c) by Marcus Przyklink (downhill-clinux@burningchaos.org) +# written for cinit and published under GPL +# beautified a bit by Nico Schottelius +# optimized by René Nussbaumer +# Version: 0.1 + +use strict; +use warnings; + +# +# Variables for location and output +# +# cinit-directory +my $path = "/etc/cinit/"; +# started profile +my $starting_point = "init"; +# the spaces for each level (integer: amount of spaces) +my $space = 3; +# marker for need +my $need = "-->"; +# marker for want +my $want = "==>"; + +# +# main function, recursively list the components of the cinit system +# +if (@ARGV) { + if( $ARGV[0] =~ /-(h|-help)/ ) { + print "Usage: " . __FILE__ . " without parameters for standard-use (check variables in file)\n"; + print " Parameters:\n"; + print " -h for this help\n"; + print " profile-name for a profile\n"; + exit(0); + } + else { + $starting_point = $ARGV[0]; + } +} + +# +# start first instance +# +sub get_deeper { + my ($point, $tmp_counter, $need_want) = splice @_; + + print " " x ($space * $tmp_counter) . ($need_want ? $need : $want) . " " . $point . "\n"; + + opendir(DIR, "${path}${point}/needs") and + my @next_need = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + opendir(DIR, "${path}${point}/wants") and + my @next_want = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + + for(@next_need) { + get_deeper($_, $tmp_counter + 1, 1); + } + for(@next_want) { + get_deeper($_, $tmp_counter + 1, 0); + } +} + +# +# start first instance +# +get_deeper($starting_point, 0, 0); + +# +# work done, go home +# +exit(0); diff --git a/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/cinit.graph.text.c b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/cinit.graph.text.c new file mode 100644 index 00000000..bc6fb6ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/cinit.graph.text.c @@ -0,0 +1,200 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + cinit.graph.text.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.2 + + ChangeLog: + Version 0.2 (Peter Portmann): + * Not assigned link destinies are marked by (!). + * Not readable directories are marked by "directory not readable". + + Version 0.1 (Peter Portmann): + * Print of the directory structure of the contained files and links + without following the links. + + Todo: + + Features: +*/ + +//#include +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" +#include "error.h" + +#define FTW_F 1 /* file isn't a directory */ +#define FTW_D 2 /* file is a directory */ +#define FTW_DNR 3 /* not readable directory */ +#define FTW_NS 4 /* unsuccesfully stat on this file */ +#define MAX_CHAR 4096 + +/*********************************************************************** + * cinit.gaph.text - textual representation of the cinit directory + */ + +#define CSERVICE_BANNER "cinit.gaph.text - textual representatio of the cinitdirectory\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncinit.gaph.text \n" \ + "\tpath\t- cinit installationpath\n" + +typedef int EACH_ENTRY(const char *, const struct stat *, int); +typedef enum { FALSE=0, TRUE=1 } bool; + +static char dirpath[PATH_MAX]; +static int depth = 0; +static long int filecount = 0; + +static EACH_ENTRY each_entry; +static int pp_ftw(char *, EACH_ENTRY *); +static int each_getinfo(EACH_ENTRY *); + +/*********************************************************************** + * pp_ftw: file tree walk + */ +static int pp_ftw(char *filepath, EACH_ENTRY *function) +{ + int n; + + if(chdir(filepath) < 0) /* In angegebenen Pfad wechseln */ + err_msg(FATAL_SYS, "can't change to %s", filepath); + + if(getcwd(dirpath, PATH_MAX) == 0) /* Absoluten Pfadnamen ermitteln */ + err_msg(FATAL_SYS, "error using getcwd for %s", filepath); + + n = each_getinfo(function); + + return(n); +} + +/*********************************************************************** + * each_getinfo: get more info for each file. + */ +static int each_getinfo(EACH_ENTRY *function) +{ + struct stat statpuff; + struct dirent *direntz; + DIR *dirz; + int n; + char *zgr; + + if(lstat(dirpath, &statpuff) < 0) + return(function(dirpath, &statpuff, FTW_NS)); /* Error on stat */ + + if(S_ISDIR(statpuff.st_mode) == 0) + return(function(dirpath, &statpuff, FTW_F)); /* no directory */ + + /* It's a directory. + * Call function() for it. After that handel each file in the directory. */ + + if((dirz = opendir(dirpath)) == NULL) { /* Directory not readable */ + closedir(dirz); + return(function(dirpath, &statpuff, FTW_DNR)); + } + + if((n = function(dirpath, &statpuff, FTW_D)) != 0) /* return the directorydirpath */ + return(n); + + zgr = dirpath + strlen(dirpath); /* append slash to the dirpathname */ + *zgr++ = '/'; + *zgr = '\0'; + + while((direntz = readdir(dirz)) != NULL) { + /* ignor . and .. */ + if(strcmp(direntz->d_name, ".") && strcmp(direntz->d_name, "..")) { + strcpy(zgr, direntz->d_name); /* append filename after slash */ + depth++; + if(each_getinfo(function) != 0) { /* Recursion */ + depth--; + break; + } + depth--; + } + } + *(zgr-1) = '\0'; /* deleting evrything after the slash */ + + if(closedir(dirz) < 0) + err_msg(WARNING, "closedir for %s failed", dirpath); + + return(n); +} + +/*********************************************************************** + * each_entry: handling each file and build the graph step by step. + */ +static int each_entry(const char *filepath, const struct stat *statzgr, int filetype) +{ + struct stat statpuff; + static bool erstemal=TRUE; + int i; + + char link[MAX_CHAR]; + + filecount++; + if(!erstemal) { + for(i=1 ; i<=depth ; i++) + printf("%4c|", ' '); + printf("----%s", strrchr(filepath, '/')+1); + } else { + printf("%s", filepath); + erstemal = FALSE; + } + + switch(filetype) { + case FTW_F: + switch(statzgr->st_mode & S_IFMT) { + case S_IFREG: break; + case S_IFCHR: printf(" c"); break; + case S_IFBLK: printf(" b"); break; + case S_IFIFO: printf(" f"); break; + case S_IFLNK: + printf(" -> "); + if(( i=readlink(filepath, link, MAX_CHAR)) != -1) + printf("%.*s", i, link); + if(stat(filepath, &statpuff) < 0) + printf(" (!)"); + break; + case S_IFSOCK: printf(" s"); break; + default: printf(" ?"); break; + } + printf("\n"); + break; + + case FTW_D: + printf("/\n"); + break; + + case FTW_DNR: + printf("/ directory not readable\n"); + break; + + case FTW_NS: + err_msg(WARNING_SYS, "Error using 'stat' on file %s", filepath); + break; + + default: + err_msg(FATAL_SYS, "Unknown Filetype (%d) by file %s", filetype, filepath); + break; + } + + return(0); +} + +/*********************************************************************** + * main: + */ +int main(int argc, char *argv[]) +{ + if(argc != 2) + usage(CSERVICE_BANNER, USAGE_TEXT); + + exit(pp_ftw(argv[1], each_entry)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/error.c b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/error.c new file mode 100644 index 00000000..8174c702 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/error.c @@ -0,0 +1,124 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#include "error.h" +#include +#include +#include +#include +#include +#include + +#define MAX_CHAR 4096 + +int debug; /* Aufrufer von log_msg oder log_open muss debug setzen: + 0, wenn interaktiv; 1, wenn Daemon-Prozess */ + +/*---- Lokale Routinen zur Abarbeitung der Argumentliste --------------------*/ +static void msg_err(int sys_msg, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + return; +} + +static void msg_log(int sys_msg, int prio, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + if (debug) { + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + } else { + strcat(puffer, "\n"); + syslog(prio, puffer); + } + return; +} + +/*---- Global aufrufbare Fehlerroutinen -------------------------------------*/ +void err_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_err(0, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + case DUMP: + msg_err(1, fmt, az); + break; + default: + msg_err(1, "Falscher Aufruf von err_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + else if (kennung==DUMP) + abort(); /* core dump */ + exit(1); +} + +void log_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_log(0, LOG_ERR, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + msg_log(1, LOG_ERR, fmt, az); + break; + default: + msg_log(1, LOG_ERR, "Falscher Aufruf von log_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + exit(2); +} + +/*---- log_open --------------------------------------------------------------- + initialisiert syslog() bei einem Daemon-Prozess */ +void log_open(const char *kennung, int option, int facility) +{ + if (debug==0) + openlog(kennung, option, facility); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/error.h b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/error.h new file mode 100644 index 00000000..a55690fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/error.h @@ -0,0 +1,29 @@ +#ifndef ERROR_H +#define ERROR_H +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.h + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#define WARNING 0 +#define WARNING_SYS 1 +#define FATAL 2 +#define FATAL_SYS 3 +#define DUMP 4 + +void log_msg(int kennung, const char *fmt, ...); +void err_msg(int kennung, const char *fmt, ...); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/make.cconfig.from.xml.rb b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/make.cconfig.from.xml.rb new file mode 100644 index 00000000..05f35cc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/contrib+tools/make.cconfig.from.xml.rb @@ -0,0 +1,227 @@ +#!/usr/bin/env ruby + +=begin + + Create a cconfig directory based on a xml input. + (C) 2005 by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added binary file support + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Added some commandline options + * Added «level» so control the restrictivity of the program + * Added more «intelligence» to the program, to detect internal broken dependcies. + * Support «debug»-Levels. + * Print statistic at the end of the programs about warnings and errors. + + Version 0.1 (René Nussbaumer): + * Initial + + Todo: + * Use an rexml alternative + * Some cleanup + * Optimize + * Testing? + + Features: + * Create a cconfig directory based on a xml + +=end + +require 'rexml/document' +require 'getoptlong' +require 'base64' +require 'digest/sha1' + +@verbose = 0 +@level = 1 +@version = '0.3' + +@warnings = 0 +@errors = 0 +@checklist = Array.new + +def printMsg(prefix, msg) + puts '%-12s %s' % [prefix + ':', msg] +end + +def error(msg, fatal = 0) + @errors += 1 + fatal = 0 if(@level < 1) + fatal = 255 if(@level > 1 && !fatal) + printMsg(fatal != 0 ? 'PANIC' : 'ERROR', msg) + Kernel.exit(-fatal) if(fatal != 0) +end + +def warn(msg) + error(msg, 1) if(@level > 1) + @warnings += 1 + printMsg('WARNING', msg) +end + +def info(msg) + printMsg('INFO', msg) +end + +def debug(msg, verbosity = 1) + if(@verbose >= verbosity) + printMsg("DEBUG(#{verbosity})", msg) + end +end + +def createObject(name) + error("#{name} already exists.", 1) if(FileTest.exists?(name)) + begin + Dir.mkdir(name) + rescue + error("Could not create directory #{name}: #{$!}. Abort.", 7) + end + debug("Object #{File.expand_path(name)} has been created.", 4) +end + +def createAttribute(name, content = nil) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + begin + file = File.new(name, 'w') + file.print content if(content && !content.empty?) + file.close + debug("Attribute #{File.expand_path(name)} has been created", 4) + rescue + error("Could not create file #{name}: #{$!}. Skipped.") + end +end + +def createLink(name, target, type) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + error("Broken dependencies! Please take a look if #{target} exists on your system", 2) if(type == 'external' && !FileTest.exists?(target)) + if(!FileTest.exists?(target) && type != 'external') + #info("Possible break. But maybe the target #{target} does not yet exists. Checking later.") + exptarget = File.expand_path(target) + @checklist << exptarget + debug("Adding #{target} to the list of internal dependcies to check.", 2) + end + begin + error('You\'ve a system which does not support symbolic links. Abort.', 3) if(File.symlink(target, name) != 0) + rescue + error("Could not create symlink #{name} => #{target}: #{$!}.", 3) + end + debug("Link #{File.expand_path(name)} has been created", 4) +end + +def doWork(elm) + name = elm.name + attrname = elm.attributes['name'] + error("XML Tag with missing name attribute!", 5) if(!attrname) + if(name =~ /(object|cconfig)/) + if(name == 'cconfig') + if(elm.attributes['version']) + info("Found a version string: #{elm.attributes['version']}") + warn("This XML is maybe incompatible with this programm. I'm a version #{@version} script. The XML is generated with a version #{elm.attributes['version']} script. Please update.") if(elm.attributes['version'] > @version) + end + end + createObject(attrname) + if(elm.has_elements?) + pwd = Dir.pwd + Dir.chdir(attrname) + elm.each_element { |e| + doWork(e) + } + Dir.chdir(pwd) + end + elsif(name == 'attribute') + text = nil + e = nil + text = e.value if((e = elm.get_text)) + if(text && elm.attributes['type'] && elm.attributes['type'] == 'binary') + text = Base64.decode64(text) + if(Digest::SHA1.hexdigest(text) != elm.attributes['sha1']) + warn("SHA1 differs from file: #{Dir.pwd}#{attrname}") + end + end + createAttribute(attrname, text) + elsif(name == 'link') + error("link-Tag without content.", 6) if(!elm.has_text?) + error("link with missing target. Skipped.") if(!elm.attributes['target']) + createLink(attrname, elm.get_text.value, elm.attributes['target']) + end +end + +puts "This is #{File.basename(__FILE__)} v#{@version} by René Nussbaumer" +puts + +opts = GetoptLong.new( + ['--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT], + ['--level', '-l', GetoptLong::REQUIRED_ARGUMENT], + ['--version', '-V', GetoptLong::NO_ARGUMENT] +) + +opts.each { |arg,value| + case arg + when '--verbose' + @verbose += 1 + value.each_byte { |x| + if(x.chr == 'v') + @verbose += 1 + end + } + debug("Verbosity set to: #{@verbose}") + when '--level' + debug("Setting level to: #{value}", 3) + case value + when 'low' + @level = 0 + when 'normal' + @level = 1 + when 'paranoid' + @level = 2 + else + warn('Unknown level: ' + value) + end + when '--version' + Kernel.exit(0) + else + warn("Unknown option #{arg}#{value && !value.empty? ? ('with value ' + value) : ''}") + end +} + +if(!ARGV[0]) + puts 'Need at least one argument' + puts "Usage: #{__FILE__} " + Kernel.exit(1) +end + + +filedesc = $stdin + +if(ARGV[0] != '-') + filedesc = File.new(ARGV[0]) +end + +doc = REXML::Document.new filedesc + +doWork(doc.root) + +if(!@checklist.empty?) + info('Now checking all broken internal dependcies again') + broken = 0 + @checklist.each { |path| + debug("Checking #{path}.", 2) + if(!FileTest.exists?(path)) + broken += 1 + warn("Broken dependcies. #{path} does not exist. Please fix.") + end + } + info('Looks good.') if(broken == 0) + info('Bad, bad.') if(broken > 0) +end + +info("Successed. #{@warnings} warnings, #{@errors} errors") + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/.buildwarn b/software/cinit/browse_source/cinit-0.3pre4/doc/.buildwarn new file mode 100644 index 00000000..72ebaf6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/.buildwarn @@ -0,0 +1,18 @@ +**************************************************************************** +First of all configure cinit through the configuration files found in conf/. + +The documentation can be found in doc/, read + + README and doc/configuring.cinit + +_before_ first use. + +After reading and configuring use: + + "make all" - to build cinit + "make install" - to install cinit + "make install-miniconf" - to install a minimal cinit-configuration + +After that you'll have to configure it. Some sample configurations can be +found on the cinit homepage at http://linux.schottelius.org/cinit/. +**************************************************************************** diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/Makefile b/software/cinit/browse_source/cinit-0.3pre4/doc/Makefile new file mode 100644 index 00000000..704903da --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/Makefile @@ -0,0 +1,59 @@ +# +# Makefile stolen from ccollect +# Nico Schottelius, Fri Jan 13 12:13:08 CET 2006 +# + +INSTALL=install +CCOLLECT=ccollect.sh +LN=ln -sf + +prefix=/usr/packages/ccollect-git +bindir=$(prefix)/bin +destination=$(bindir)/$(CCOLLECT) + +path_dir=/usr/local/bin +path_destination=$(path_dir)/$(CCOLLECT) + +# where to publish +host=creme.schottelius.org +dir=www/org/schottelius/linux/ccollect +docdir=$(dir)/doc + +# +# End user targets +# +all: + @echo "Creating asciidoc based documentation" + @asciidoc -n -o ccollect.html doc/ccollect.text + +%.html: %.text + echo asciidoc $< -n $> -o $^.html $^.text $@ + + +install: install-script install-link + +install-link: install-script + $(LN) $(destination) $(path_destination) + +install-script: + $(INSTALL) -D -m 0755 -s $(CCOLLECT) $(destination) + +documentation: + @echo "Generating HTML-documentation (en de) ..." + @asciidoc -n -o doc/ccollect.html doc/ccollect.text + @asciidoc -n -o doc/ccollect-DE.html doc/ccollect-DE.text + +# +# Developer targets +# +update: + @cg-update creme + +push-work: + @cg-push creme + @cg-push sygroup + +publish-doc: documentation + @echo "Transferring files to $(host)" + @chmod a+r doc/*.html doc/*.text + @scp doc/*.text doc/*.html $(host):$(docdir) diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/README b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/README new file mode 100644 index 00000000..45e193f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/README @@ -0,0 +1,16 @@ +Ancient +======= +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 + + +These files may be incorrect, outdated, totally wrong or even trying +to take over world dominance. + + +Why are they still there? +------------------------- + +Just because to document the early days of cinit. If you are +a software archaeologist in the year 2423, you'll be happy that +I saved those files. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/author b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/availability b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/availability new file mode 100644 index 00000000..cfb3f8a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/availability @@ -0,0 +1 @@ +cinit is currently Linux-specific. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/examples b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/examples new file mode 100644 index 00000000..1a7d2dcb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/examples @@ -0,0 +1 @@ +See http://linux.schottelius.org/cinit/#config diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/files b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/files new file mode 100644 index 00000000..4d6c0921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/files @@ -0,0 +1,5 @@ +/sbin/cinit - the init system +/sbin/cservice - control cinit +/sbin/cinit.reboot (/sbin/reboot if non-existent before) +/sbin/cinit.shutdown (/sbin/shutdown if non-existent before) +/etc/cinit - configuration directory diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/long_description b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/long_description new file mode 100644 index 00000000..18c3c082 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/long_description @@ -0,0 +1,5 @@ +cinit is a fast executing, small and simple init with support for profiles. It +minds dependencies (hard and soft, 'needs' and 'wants') and executes processes +in parallel. And it has a simple configuration, which makes many shell-scripts +unecessary (but you still could use them if you really want), which leads to +better performance and less memory using. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/meta/name new file mode 100644 index 00000000..b853da25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/meta/name @@ -0,0 +1 @@ +cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/parameters b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/parameters new file mode 100644 index 00000000..54df4727 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/parameters @@ -0,0 +1 @@ +cprofile: diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/path b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/path new file mode 100644 index 00000000..37edf339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/path @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/see also b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit.commands b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit.commands new file mode 100644 index 00000000..d34d13bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cinit.commands @@ -0,0 +1,73 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (using SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. +CMD_UPDATE: Update cinit, hot-reboot the system. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/author b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/long_description b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/long_description new file mode 100644 index 00000000..82818a93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/long_description @@ -0,0 +1 @@ +cservice controls cinit. Please use cservice -h for help. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/meta/name new file mode 100644 index 00000000..49c847bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/meta/name @@ -0,0 +1 @@ +cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/parameters b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/parameters new file mode 100644 index 00000000..605b08b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/parameters @@ -0,0 +1 @@ +[-eaphru] [thilo] diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/path b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/path new file mode 100644 index 00000000..85b0cb56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/path @@ -0,0 +1 @@ +/sbin/cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/see also b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/cservice-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/extern/README b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/extern/README new file mode 100644 index 00000000..e734d6d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/extern/README @@ -0,0 +1,2 @@ +doc/extern/ + Some things related to cinit from the outside world. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/extern/ipc.thoughts b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/extern/ipc.thoughts new file mode 100644 index 00000000..e2619d34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/extern/ipc.thoughts @@ -0,0 +1,83 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2 ), +1024 is the maximum opened file deskriptors, +minus 3 (stdin/stdout/stderr) already opened, divided +by two, because two fds needed per client. + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt, + - poweroff, + - update itself (hot-reboot) + - and to start a rescue mode (see using.rescue). + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + CONT: update + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/extern/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/extern/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/extern/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/extern/linux.kernel.eats.arguments b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/extern/linux.kernel.eats.arguments new file mode 100644 index 00000000..dbaf57d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/extern/linux.kernel.eats.arguments @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +Linux, the kernel, eats arguments +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +If you specify + + variable=value + +to the Linux kernel, the argument will NOT be passed to cinit. + +Here's the relevant code block from init/main.c of the Linux kernel: + +------------------------------------------------------------------------------- + +From init(void * unused) the function run_init_process(char *init_filename) +is called, which passes argv_init (char * argv_init[MAX_INIT_ARGS+2]) to init. + +First init_setup(char *str) resets all elements of the argv_init to NULL. + +The function unknown_bootoption(char *param, char *val) fills the +argv_init array, but only with parameters, which have no value +(val). + +The function parse_args calls unknown_bootoption with the unknown options. + +------------------------------------------------------------------------------- + +This way the profile support in all cinit versions below cinit-0.1 will +only work if you change conf/profile, because "cprofile=value" will +not be given to cinit, because it's not treated as a command line option. + +The original value "cprofile=" is replaced by "cprofile:" as of cinit-0.1. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/extern/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/extern/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/extern/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/fun-testing b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/fun-testing new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/fun-testing @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/how_it_works_internally b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/init-idea-first b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/init-idea-first new file mode 100644 index 00000000..2d677d8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/init-idea-first @@ -0,0 +1,38 @@ +- restarting/respawning + touch respawn +- dependencies + a needs started b +- clean multiply dependencies +- start & stop dependencies + start_depends + stop_depends +- parallel executation +- start and stop commands + start -> link + start_param -> parameters, like minit + stop -> link + stop_param -> parameters, like minit + + if no stop command is available, try to kill the pid we started at stop + +/startup/ + start_depends=gettys +/shutdown/ + stop_depends=power_off + + +gettys/ + start_depends=getty/1 + start_depends=getty/2 + start_depends=getty/3 + start_depends=getty/4 ... + +getty/1/ + start=/sbin/fgetty + respawn + +power_off/ + stop_depend=umount + +umount/ + stop_depend= diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/porting.to.other.os b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/porting.to.other.os new file mode 100644 index 00000000..65fdc07b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will perhaps become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/removing.zombies b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/removing.zombies new file mode 100644 index 00000000..9527e652 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + cinit in general will keep the behaviour of reaping the vestiges, + which broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/security b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/security new file mode 100644 index 00000000..f1dac591 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/security @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation, which will not accept connect() +by others than root. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console then! + +For extra parnoid settings you can do the following: + + ei # chmod 700 /etc/cinit/tmp/coala + ei # chown root:root /etc/cinit/tmp/coala diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/socket.poll_vs_o_async b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/socket.poll_vs_o_async new file mode 100644 index 00000000..477f2bff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/socket.poll_vs_o_async @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------------- +Socket: poll(2) vs. O_ASYNC, +Nico Schottelius 2005-06-22 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +0. General problem +1. O_ASYNC +2. poll(2) + + +0. General problem + +cinit has to react, as soon as there's data on the socket. + +1. O_ASYNC + +When you open a socket with O_ASYNC (or specify it with fcntl(2)) under +Linux, your process recieves the SIGIO signal from the kernel, as soon +as data is available. + +The problem is the handling of signals seems not to be serialised: + +The function, which is called on the SIGIO signal (called sigio() here) +calls other functions. Those functions way recieve SIGIO while working, +so the first data stream is not yet finished, though the next +stream is beeing read. + +This gives very nice race-conditions, which are very nice to debug. + +2. poll(2) + +poll(2) is a standard Unix-call (XPG4-UNIX), which waits a specific +timeout (or infinite time if you specify a value less that zero) for +the socket (or the fd in general) to be in a state where +data is available to read (in fact poll can do much more, but we are +not interested only in POLLIN and POLLPRI). + +While poll(2) seems to be a very bit slower than sigio it works reliable. + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/thoughts.closed b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/thoughts.closed new file mode 100644 index 00000000..91a8e080 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/ancient/thoughts.closed @@ -0,0 +1,52 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c + +7. Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. As this is not needed + currently, it's not implemented. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/README.text b/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/README.text new file mode 100644 index 00000000..c4947a13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/README.text @@ -0,0 +1,2 @@ +DO NOT READ CONTENT IN THIS DIRECTORY. +(or at least do not blame me, if you get really confused after reading it) diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/big-picture.text b/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/big-picture.text new file mode 100644 index 00000000..4426c236 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/big-picture.text @@ -0,0 +1,122 @@ +Just a small hint-file for me to see how cinit works: + + - cinit starts + * cinit executes either init or a profile + - the dependency-tree begins + + - now cinit begins to try to execute the dependencies + * first the needs (if those fail, wants are never called) + - fork() for every dependency? + +-------------------------------------------------------------------------------- +another idea: + + - cinit starts + - cinit reads the full depedency tree + * it builds n-depth trees + * it begins at the set init service (profile or init!) + * init is the first entry. always. + * read full service information (like on/off/params/respawn) + * design of each tree element: see below + - add a tree for the needs + - add a tree for the wants + - the elements have links, one service is created only once + - after the tree is created, execution begins + * begin from the bottom + * save a pointer to the last level somehow before? + +Pre calculation: + - need to act on changes (some kind of file watcher) + * need to keep status (?) + * what with now missing needs / wants? + - missing needs: shutdown now missing needs? + - simply ignore them? + - shut them down if not needed (no one has a link in needs?) + * +-------------------------------------------------------------------------------- +Sample dependency tree: + + init + / \ + needs wants + / | \ / | \ + a b c d e f + / | \ / | \ + needs needs needs END needs END + / | \ \ | | | | + b c d c f a e a +-------------------------------------------------------------------------------- +How this would be sorted:: + init: + needs: a b c + wants: d e f + a: + needs: b c d + b: + needs: c f + c: + needs: a e + d: + - + e: + needs: a + f: + - +-------------------------------------------------------------------------------- +So in this case, cinit may start services the following way: + d f + -> Wouldn't be possible in pre-calculation, because of circular dependencies. +-------------------------------------------------------------------------------- + Try a 'real' dependency tree: + a needs b c d + b needs c d + c and d do not need other stuff +-------------------------------------------------------------------------------- +Now cinit would it do the following way: + start c, start d + b will be started, as soon as c and d successfully finish + as soon as b is finished, a will be started +-------------------------------------------------------------------------------- +Now let's think about how this could look like in code... +- when we built up the tree, we have some ends (n to say) +- we can / must start starting (;-) at the end +- we would have more than one line back (z may be needed by c, i, and a) + * like in "c is needed by s, c, o" + * maxdepth counter? + * asynchronous rollback? + +--> to think more about it! +-------------------------------------------------------------------------------- + +tree elements: + * name (= path) + * on, off, +params + * respawn_delay + - -1 if not respawning + - >= 0 time to wait between restart + * status + - NOT STARTED (status on initialisation) + - RESPAWNING (running, respawning) + - RESPAWN_DELAY (waiting to respawn it) + - ONCE (started once) + * errormsg + - pointer to an error message in case of failure + * needs + - List of services we need + * wants + - List of services we want + * used_by + - List of services which use this service +-------------------------------------------------------------------------------- + +Conclusions +------------ + +cinit as the main executor +~~~~~~~~~~~~~~~~~~~~~~~~~~ +If cinit should start all services directly and manage dependencies +only internally, it will need to have build a reverse dependency tree, +so it begins starting at the end. + +cinit could execute all possible parallel running services in parallel +and open pipes to the (dumb) service executors. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/circular-dependencies.text b/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/circular-dependencies.text new file mode 100644 index 00000000..dcc91ea7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/circular-dependencies.text @@ -0,0 +1,35 @@ +What todo with circular dependencies? + a needs b + b needs a + + - try to start them? + status a: is_starting + status b: not_set + a wants b, so a service starter for b starts + status a: is_starting, waiting for b + status b: is_starting + service starter for b sees that a is needed + service starter for b sees that a is already being started + service starter for b begins to execute b + status a: is_starting, waiting for b + status b: is_starting, executing "on" + service starter b finishes + status a: is_starting, waiting for b + status b: FAILED | RESPAWN | ONCE + service a continues + b successful: execute on + b failed: register / print that we do not start, because + b failed + + -> this would only catch possible deadlocks, if the dependency + tree / status check is done dynamically + -> in case of pre-building the dep-tree this situation must + be concerned: + - start both a and b? + - or stop due to circular dependency? + + - Abort on detection of a circular dependency + * possible without pre-calculating? + - perhaps only with direct communication possible? + * pre calculate + - do not start that services? diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/coding-style b/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/coding-style new file mode 100644 index 00000000..1b164b9e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/coding-style @@ -0,0 +1,49 @@ +Coding style +============ +Nico Schottelius +0.1, for cinit, Initial version from 2006-11-13 +:Author Initials: NS + +This document describes the coding style used in cinit. + + +Indent +------ +Indent the code by 3 spaces for each level. + + +Unsorted +--------- +Linebreaks: + + +if(...) { + +} else { +} + + +do { +} while(); + +no spaces + - within braces and code "(!test)", + - before braces "if(code)" + +spaces + - after braces "if(test) return 0;" + - spaces before and after '=' (a = b); + +curly braces: + functions: + int func(int params) + { + body + } + +comments: + where necessery, do not state the obvious in comments: + + /* this code increments tmp */ + ++tmp; + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/creating-new-configurations b/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/creating-new-configurations new file mode 100644 index 00000000..a251de5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/creating-new-configurations @@ -0,0 +1,6 @@ +scripts/create_baseconfig.sh # create base +scripts/cinit.install.standard.dirs # create common categories + +- create fsck +- set hostname +- create getty(s) diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/possible_service_pre_calculation.text b/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/possible_service_pre_calculation.text new file mode 100644 index 00000000..96ec3a73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/possible_service_pre_calculation.text @@ -0,0 +1,19 @@ +- start at + * create a new service entry (if not exists) <--- + * reads needs | + - follow dependencies ------------------------ + * only if service does not yet exist! | + * read wants | + - follow dependencies ------------------------ + * only if service does not yet exist! + * create + - needed by entry in dependencies + - needs entry in service + - wanted by entry in dependencies + - wants entry in service + + * record + - (on,off)(,.env,.params)? + - alternatively put that code into service starter + * add services without further needs into a special + "begin" structure to be reused at fireing of the services? diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/possible_service_status.text b/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/possible_service_status.text new file mode 100644 index 00000000..eb0f21e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/possible_service_status.text @@ -0,0 +1,14 @@ + + - NOT_SET: this service has not yet been initialized + - RESPAWNING: happily respawning + - RESPAWN_DELAY: waiting delay before restarting + * HINT: using alarm()? + - senseful for single process service watcher + * HINT: using nanosleep()? + - senseful for per service process watcher + - NEED_FAILED + * add a (somehow terminated) list of services that failed? + * use global status to checkout which services failed? + - WANT_FAILED? + * NOT NECESSARY, it is a simple want, we do not need it. + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/registering_needs_wants.text b/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/registering_needs_wants.text new file mode 100644 index 00000000..ededbd41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/braindumps/registering_needs_wants.text @@ -0,0 +1,55 @@ +Each service has a list of services it + - needs + - is needed by + - wants + - is wanted by + + +Each entry is a service pointer. +The simplest list could look like this: + + service a: + needs: + b f g NULL + +So the needs pointer is NULL terminated: + needs = realloc(count_links) + -> how to get the count? + 0x02 + 0x + + Better: A double linked list (like the main service list)? + +Could look like: + service a: + needs: + *service + *next + *prev + +This design could also be used for wants. + +On the other hand, we've to register us at the needed/wanted service: + + service b: + needed_by: + *service + *next + *prev + + +So each service needs four pointers: + needs + needed_by + wants + wanted_by + +And on each request both lists have to be modified! + +Example: + + Service "a" adds "b" as needed: + + - add "a" needs "b" + - add "b" needed_by "a" + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/devel/README.text b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/README.text new file mode 100644 index 00000000..20524651 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/README.text @@ -0,0 +1,18 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit development documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +(cinit-)developers. + +Content +------- diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/devel/cinit-0.4.text b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/cinit-0.4.text new file mode 100644 index 00000000..61b718f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/cinit-0.4.text @@ -0,0 +1,115 @@ +cinit 0.4 - Redesign of cinit +============================================ +Nico Schottelius +0.4.0, for cinit 0.4, Initial Version from 2006-03-11 +:Author Initials: NS + + +cinit 0.2 ran fine and the general project of developing a +parallel executing init system is finished. +With cinit 0.4 there are new aims to reach. + + +Introduction +------------ + +. AIMS + - portability: no Linux-dependency anymore + - cleaner signal handling + - better documentation so more people can use it + + +Current problems +---------------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The mount(2) system call is os-specific. +The temporary fs is os-specific. + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Race conditions when multiple signals arrive + + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +serv/sig_reboot.c contains umount, remount hard coded. + + +Solutions +--------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Remove +- the mount call +- do not create an initial socket + +Wait until we recieve a signal, then we create a socket +under the configured socket directory (see `conf/sockdir`). + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +Misc +~~~~ + +- Configuration + /etc/cinit/config/ + init -> link to initial service + pre_boot + pre_boot_args + post_boot + post_boot_args + /etc/cinit/services/ + /etc/cinit/profiles/ + links to the starting services + + + +cinit - Internals +================= +Nico Schottelius +0.1 for cinit-0.3, Initial version: So Feb 19 10:25:46 CET 2006 +:Author Initials: NS + + +Introduction +------------ +This document describes the internals of cinit. It is thought +to be read by developers. + + +Child handler code in cinit-0.3 +------------------------------- + +In cinit versions <= cinit-0.2.1 the respawning services where +handled by an extra child handler, which was a fork of cinit. This +had some problems: + + - We allocated more memory than necessary, unecessary parts of + cinit were copied + - The SIG_CHILD-handler was not written very clean, in some versions + it was completly missing. + + +. So in `cinit-0.3` we changed it the following way: + - no extra child handlers + - handle everything in the SIG_CHILD handling function + - when sig_child is recieved do: + - check against respawn list + - if it is a respawning service, [do the following in a seperate fork?] + check whether it successfully stoped + - if yes: restart immediatly + - if no: sleep $sleep_time and then restart diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/devel/communication.text b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/communication.text new file mode 100644 index 00000000..82f77774 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/communication.text @@ -0,0 +1,221 @@ +cinit - communication +===================== +Nico Schottelius +0.1 for cinit-0.3, Initial version: 2006-08-11 +:Author Initials: NS + +This document describes the internal communication of cinit. +It is thought to be read by developers. + + +Introduction +------------ +This document describes the messages used between cinit, cinit forks +and other programs that want to talk to cinit. It does NOT +describe the communication method, but only the messages sent +(for the communication method read "ipc.text"). + +Document status +~~~~~~~~~~~~~~~ +This document is still being written, it is not finished. + + +About Messages +-------------- + +Order +~~~~~ +The client always initiates the communication. +cinit will begin listening to messages directly after its start. + +Data +~~~~~ +A message always conists of a predefined structure (see src/headers/comm.h). +The byte order is host specific (may be little or big endian). + + +The messages +------------ +The client always uses the same structure (struct msg_client) to contact +cinit. This way cinit does not need to handle dynamic data structures. + +cinit in contrast delivers different data structures to its clients, +depending on the question. + +The questions are issued by any type of client, the internal command used is +noted in square brackets ([]). + +The answers are given by cinit. + + +Question: Start a service (and its dependencies) [CMD_START_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to start the service and its dependencies. + +The client must provide cinit with the following information: +. Name of the service to be started +. Reason why to start it +. eventually additional information (see below) + +The reason +^^^^^^^^^^ +Can be one of: +- RS_NONE (it's a manual start request) +- RS_WANTS (a currently starting service wants to start this service) +- RS_NEEDS (a currently starting service needs to start this service) + +If the reason is RS_WANTS or RS_NEEDS the client must supply the name +of the service, which wants it to be started. + + +Question: Start a service (nothing else) [CMD_START_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to start the service and which will +report the status back. + + +Question: Stop a service (and its dependencies) [CMD_STOP_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to stop the service and each service +that 'needs' it. + +This function works recursively, thus also killing those services, that +need the service that need the current service. + + +Question: Stop a service (nothing else) [CMD_STOP_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to stop this service and which will +report the status back. + + +Question: Stop a service (plus 'needs' and 'wants') [CMD_STOP_SVC_WANTS] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Same as 'Stop a service (and its dependencies)', but also stop the +services that want to have this service. + +This function works recursively, thus also killing those services, that +'need' or 'want' the service that 'need' or 'want' the current service. + + +Question: Could you change the status? [CMD_CHG_STAT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A cinit fork reports the new status of a service. + + +Question: Could you start the rescue mode? [CMD_RESCUE] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +spawn the rescue program. + + +Question: Could you halt the system? [CMD_HALT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +halt the system. + + +Question: Could you reboot the system? [CMD_REBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +reboot the system. + + +Question: Could you poweroff the system? [CMD_POWEROFF] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +poweroff the system. If poweroff is not possible, the system will +be halted. + + +Question: Could you warmboot the system? [CMD_WBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +restart itself and the bootup process. + + +Question: Could you send information about a service? [CMD_INFO] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will respond with detailled information about the service +to the client. + + +Answer: Return short status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Start a service (and its dependencies) + - Question: Start a service (nothing else) + - Question: Stop a service (and its dependencies) + - Question: Stop a service (nothing else) + - Question: Stop a service (plus 'needs' and 'wants') + - Question: Could you change the status? + +cinit only responds the status of the asked service. +The structure send is "asw_sstatus", which only include a status byte. + + +Answer: Return long status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Could you send information about a service? + + +old Messages (to be transferred into this document) +--------------------------------------------------- + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Service status: + +-------------------------------------------------------------------------------- +service status (cinit), +Nico Schottelius 2005-09-29 (Last Modified: -) +-------------------------------------------------------------------------------- + +There are service status and service returns. Service status is a status +a service can have. A service return is a value from a function that +describes what happened with the service. + +Status has ST_ prefix, return has RT_ prefix. +See cinit.h for most up to date versions. + + +ST_NEED_FAIL - this service will not be started, until the needs are started +ST_FAIL - this service failed to start +ST_UNSPEC - some unknown error. This should never happen. +ST_ERR - ??? /* tried earlier, service failed, won't retry */ + +ST_SUCCESS - service was successfully started - senseful? +ST_TMP - some instance is currently working on it +ST_ONCE - executed once sucessfully +ST_RESPAWN - service is running and respawning + +ST_TMPNOW 55 /* now you are on it - only for clients */ +#define ST_OFF 56 /* Switching service off */ + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/devel/configuring.text b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/configuring.text new file mode 100644 index 00000000..405a4d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/configuring.text @@ -0,0 +1,18 @@ +cinit/doc/devel/using-conf.text +================================ +Nico Schottelius +0.1, Initial Version from 2006-07-28 +:Author Initials: NS + +About conf/* and how to use the configurations. + +Introduction +------------ + +Who should read those documents? +-------------------------------- + +Content +------- + + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/devel/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/cross-compiling.text new file mode 100644 index 00000000..fdf70564 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/cross-compiling.text @@ -0,0 +1,36 @@ +TODO: + - merge into "Cross compiling" + +cinit - Problems that may arise +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Max open files + OS dependent + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/devel/ipc.text b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/ipc.text new file mode 100644 index 00000000..7013a985 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/ipc.text @@ -0,0 +1,108 @@ +IPC - in cinit and in general +============================= +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +IPC - Inter process communication + +Introduction +------------ +This document describes the IPC methods used and/or tested for +cinit. + +It does not describe in detail, how the different methods work +(this is already done many times, there's great documentation +available online), but more the advantages and disadvantages +(especially for an init system). + +What is IPC? +~~~~~~~~~~~~ +IPC describes methods to communicate between different processes +(programs). + +IPC as described by SUSV3 (The Single UNIX Specification Version 3) +aka IEEE Std 1003.1, 2004 Edition aka POSIX only defines +MSQ, SHM and Semaphores as IPC. This document also covers +Sockets and FIFOs. + + +What is not (yet) covered by this document? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Speed of different IPC methods, different behaviour on different +unices. + + +Why do you need IPC for an init system? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +cinit IPC history + analysis +---------------------------- + + +FIFOs +~~~~~ +First in - first out +File on the filesystem +Always need two files for two way communication + +Hints +^^^^^ +The first idea for IPC in cinit was to use two FIFOs, like minit does. +Wrong assumption: +runit also uses fifos, but two fifos for each services. That way +more parallel transmissions is possible. +You have to pay attention: Maximum number of opened files! +(On Linux 2.6 this is 1024, which makes a maximum of 512 services. +This limit is most likely never reached, but you have to keep it +in mind). + +Sockets +~~~~~~~ +Clean and beautiful. They allow easy two way communication. + +If you created a socket, fs is r/o, you cannot use it, although +there is SO_REUSE. + +First method: Using memory mapped part (tmpfs). +Second method: use interal communication (pipes!) and external after +/etc/cinit/ becomes writable. + + +Current IPC configuration +-------------------------- + +- switchable (conf/ipc_method) +- each ipc implementation needs: + + ipc.h -> for global variables and ipc specific things + prefix variables with ipc_ + int cinit_ipc_init(void); -> general initialization + return 1 on success, 0 on failure + int cinit_ipc_listen(void); -> begin to listen for messages + int cinit_ipc_send(void *data) -> send data to a client + +-------------------------------------------------------------------------------- +TO SORT: + +1. message queues + o clients schreiben rein + o datenpaket gross genug fuer antwort? + +2. shared memory + o client kann direkt rauslesen, was gestartet werden muss + o client kann direkt abhaengigkeiten starten, muss diese aber + eintragen + +Ausprobieren: + - Mutexe + - Message Queues + - + +Ideen: + Message queue + 1. Client geht auf die normale + als id = pid (cast!) + dann rueck via anderer queue + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/devel/lists.text b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/lists.text new file mode 100644 index 00000000..6360acb3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/lists.text @@ -0,0 +1,22 @@ +Lists in cinit-0.3 are generalized, all have the same general layout: + + - double linked + - have 'prev' and 'next' as pointers + + Add an element to a list + + /--------------------------\ + |<->first<->middle<->last<->| + + + After insert: + + /-------------------------------\ + |<->first<->middle<->last<->new<->| + + We alway have 'first'. + Need to adjust: + - new->prev = last (= first->next) + - new->next = first + - first->prev = new + - first->prev->next (= last->next) = new diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/devel/merging.other.initsystems.text b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/merging.other.initsystems.text new file mode 100644 index 00000000..0baa4789 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/merging.other.initsystems.text @@ -0,0 +1,68 @@ +TODO: + - rewrite to asciidoc + - implement a sample merge + +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not mean that he does not accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated! + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/devel/testing.text b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/testing.text new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/devel/testing.text @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/logs/2006-10-25.config.wasserstoff b/software/cinit/browse_source/cinit-0.3pre4/doc/logs/2006-10-25.config.wasserstoff new file mode 100644 index 00000000..f28bd71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/logs/2006-10-25.config.wasserstoff @@ -0,0 +1,16 @@ +[17:12] wasserstoff:svc# pwd +/etc/cinit/svc +[17:12] wasserstoff:svc# ls +init +17:12] wasserstoff:svc# mkdir getty +[17:12] wasserstoff:svc# mkdir getty/2/ +[17:12] wasserstoff:svc# cd getty/2 +[17:12] wasserstoff:2# ln -s /sbin/getty on +17:12] wasserstoff:2# echo 38400 > on.params +[17:13] wasserstoff:2# echo tty2 >> on.params +[17:13] wasserstoff:2# cd ../../init +[17:14] wasserstoff:init# mkdir needs +[17:14] wasserstoff:init# cd needs +[17:14] wasserstoff:needs# ln -s ../../getty/2 getty-2 +[17:14] wasserstoff:needs# + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/logs/2006-11-22.startup-with-debug b/software/cinit/browse_source/cinit-0.3pre4/doc/logs/2006-11-22.startup-with-debug new file mode 100644 index 00000000..44121cf4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/logs/2006-11-22.startup-with-debug @@ -0,0 +1,55 @@ +[0:08] wasserstoff:cinit-0.3pre3% ./src/cinit +cinit-0.3pre3: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty:: +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2:: +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout:: +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3:: +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning:: +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount:: +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root:: +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network:: +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0:: +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback:: +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::/etc/cinit/svc/init +========> tree_exec() +/etc/cinit/svc/local-tuning/keyboard-layout:::abhaengigkeiten gestartet, exec; add wants, needsdep_needs_wants_add::/etc/cinit/svc/local-tuning/keyboard-layout add: (/etc/cinit/svc/getty/2) + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/man/cinit.text b/software/cinit/browse_source/cinit-0.3pre4/doc/man/cinit.text new file mode 100644 index 00000000..11d56be2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/man/cinit.text @@ -0,0 +1,54 @@ +cinit(8) +======== +Nico Schottelius + + +NAME +---- +cinit - fast executing, small and simple init with support for profiles + + +SYNOPSIS +-------- +'cinit' [cprofile:name_of_profile] + + +DESCRIPTION +----------- +ccollect is a backup utility written in the sh-scripting language. +It does not depend on a specific shell, only `/bin/sh` needs to be +bourne shell compatibel (like 'dash', 'ksh', 'zsh', 'bash', ...). + +For more information refer to the texinfo or html documentation. + + +OPTIONS +------- + +cprofile:name_of_profile:: + If specified, cinit will start the named profile instead of the + standard service (which is confdir/init/) + +BUGS +---- +cinit is not tested nor documented very well currently. + +Additionally the porting to other OS is not finished yet. + +Both is work in progress. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + + +COPYING +------- +Copyright \(C) 2006 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/man/cservice b/software/cinit/browse_source/cinit-0.3pre4/doc/man/cservice new file mode 100644 index 00000000..8dae0c2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/man/cservice @@ -0,0 +1,34 @@ +-------------------------------------------------------------------------------- +cservice, +Nico Schottelius, 2005-06-10 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +cservice - control cinit + +cservice -[phearsu] + -e - (ein) start a service (including all needed dependencies) + -a - (aus) stop a respawing service, don't care about other services + + -r - reboot + -h - halt + -p - poweroff (on some systems the same as halt) + -s - reScue mode - only a shell + + -u - update: hot reboot - shutdown system and execute /sbin/cinit + +A service may be specified either as relative or as absolute path. + +-h, -p, -r, -s and -u need the "Magic Word" to do their work: "thilo" + +-------------------------------------------------------------------------------- + +Some examples: + + cservice -e /etc/cinit/getty/8 # fire up getty/8 + cd /etc/cinit/getty; cservice -a ./8 # shut down getty/8 + cservice -h thilo # halt + cservice -r thilo # reboot + cservice -s thilo # rescue + cservice -u thilo # update + +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/FAQ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/FAQ new file mode 100644 index 00000000..53494f73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile:home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/README.text b/software/cinit/browse_source/cinit-0.3pre4/doc/user/README.text new file mode 100644 index 00000000..3467ba63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/README.text @@ -0,0 +1,21 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit user documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +People using cinit. + +Content +------- + +hints.text: Some general hints +tuning.text: Some tuning hints diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/TODO b/software/cinit/browse_source/cinit-0.3pre4/doc/user/TODO new file mode 100644 index 00000000..6044e97a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/TODO @@ -0,0 +1,4 @@ +All the content in this file is unsorted. Reading may harm you. + +Confdir: /etc/cinit/conf/ +panic: /etc/cinit/conf/panic, /etc/cinit/conf/panic.params diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/caveats b/software/cinit/browse_source/cinit-0.3pre4/doc/user/caveats new file mode 100644 index 00000000..5ab123e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/caveats @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/compiles.on b/software/cinit/browse_source/cinit-0.3pre4/doc/user/compiles.on new file mode 100644 index 00000000..3fe83479 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/compiles.on @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +compiles.on, +Nico Schottelius 2005-06-09 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit is known to compile on: + +x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 + +Please report your configuration, if it's not listed here. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/config-dirs b/software/cinit/browse_source/cinit-0.3pre4/doc/user/config-dirs new file mode 100644 index 00000000..4a8fbb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/config-dirs @@ -0,0 +1,19 @@ +configuring + + /etc/cinit/defaults/panic -> link to something to execute on panic + (most likely /sbin/sulogin) + + /etc/cinit/defaults/tmp -> link to a directory where + the socket should be created, + after finishing boot + + What todo right before halting/rebooting/powering off + /etc/cinit/special/ + -> halt + -> reboot + -> poweroff + +Configuration +------------- + +Send kill signal diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/configuring.cinit b/software/cinit/browse_source/cinit-0.3pre4/doc/user/configuring.cinit new file mode 100644 index 00000000..a88ba00f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/configuring.cinit @@ -0,0 +1,189 @@ +-------------------------------------------------------------------------------- +configuring cinit, +Nico Schottelius 2005-05-28 (Last Modified: 2005-06-05) +-------------------------------------------------------------------------------- + +0. Pre-compile configuration +1. General configuration layout +2. Hints +2.0 Service executing / parameters +2.1 Daemons +2.2 Logging +2.3 Using prepared scripts +3. Profiles + + +0. Pre-compile configuration + +Have a look at conf/*. Those variable will mostly be used when +compiling cinit. Some will be read later (like destdir). + + +1. General configuration layout + +/etc/cinit (configurable via conf/cinit_dir) stores the complete +cinit configuration. + +cinit is service based. +A service consists of + - a base directory (like /etc/cinit/getty/1) + - dependency configuration: + + ./wants - services it wants to be started before (but it + will work anyway) + + ./needs/ - services it needs. If those services fail, this service + won't be started. + + - a flag indicating whether to respawn the service: + + ./respawn (simply touch it) + + - a delay: how long to wait for the service (in seconds) before + sending SIGKILL after the SIGTERM (only for respawning processes): + + ./delay (one line with only the digits) + + If delay is non-existing or not readable, the delay from + conf/sleep_kill_svc is taken. The maximum length of this + number ("9999" uses length 4, "42" needs 2 bytes) can be adjusted + at compile time in conf/max_delay. Internally this is a signed + integer, so the maximum size depends on your system. Though + I don't think anybody will want to wait for a service as long as + an integer would allow. + + - the program to run when switching the service on and off: + + ./on (a link to a program or a shell script) + ./on.params (see conf/c_params, the parameters to pass to the program) + ./on.env (see conf/c_env, the environment to pass to the program) + + ./off (call that when shutting down the service) + ./off.params (the parameters to pass to the program) + ./on.env (the environment to pass to the program) + +You should have a look at the samples/ directory for examples. + +If things are missing, cinit will continue with what's available. +This way you only need the files you use. Some examples: + + /etc/cinit/init: + ./wants -> services it wants + ./needs -> services it needs + That's everything + + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it + That's everything, as it has no dependencies + + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn on service + delay -> wait this time before sending SIGKILL after SIGTERM + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting + + +2. Hints + +2.0 Service executing / parameters + +The on and off files can and should be links to the programs you want +to execute. This way you save yourself loading the big shell (which is +on many Linux systems bash, why so ever, dash does the job as good, still +beeing small). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. The on script +could look like: + + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). + + +2.1 Daemons + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking (Please have a look at +daemons.backgrounding for a list of known daemons and their switches +to avoid backgrounding). + +The other possibility is to use a program, which will + a) start the daemon + b) look into the pidfile of the daemon + c) will then wait until that pid does not exist anymore + d) and then it exits and cinit will restart it (goto a) now) + +Such a program is included into this cinit release, +though I do not recommend using it. You should better contact the +authors and make them implement a clean non-forking mode. + +The name of the program (actually a shell script) is "cinit.wait.for.daemon". + +You will use it as the "on" part of the service and you have to add + + a) the pidfile to on.params + b) the daemon binary + +Thus the service would look like: + + svc-broken-daemon/ + on -> /sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + + +2.2 Logging + +Currently there's no special logging support. +When programs write to stdout, it will be displayed on +the same stdout cinit is connected to +(we don't even open /dev/console - we are too lazy currently). + + +2.3 Using prepared scripts + +In the bin/ directory of this tarball you'll find at least: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + + +3. Profiles + +Since cinit-0.0.6 there is profile in cinit. +Profiles are described in doc/profile.support. + +X. Examples + +Can be found in the tarballs below samples/. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre4/doc/user/cross-compiling.text new file mode 100644 index 00000000..67208534 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/cross-compiling.text @@ -0,0 +1,6 @@ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/daemons.backgrounding b/software/cinit/browse_source/cinit-0.3pre4/doc/user/daemons.backgrounding new file mode 100644 index 00000000..f7b7fdf5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/daemons.backgrounding @@ -0,0 +1,71 @@ +-------------------------------------------------------------------------------- +daemons backgrounding, +Nico Schottelius 2005-06-12 (Last Modified: 2005-10-15) +-------------------------------------------------------------------------------- + +0. Definition + +A daemon is a program which runs in the background, not having a tty +associated necesserally. Running in background does not mean it has +to background (fork()) itself, but that you cannot control it directly +from a shell. + +1. Daemons and cinit + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking + +The following daemons / servers are known to avoid backgrounding easily: + + acpid [x86 power management]: -f (undocumentated but works) + apache [webserver]: -DFOREGROUND + asterisk [pbx]: -f + bind [dns server/caching]: -f + cardmgr [pcmcia/cardbus]: -f + cron (vixie) [schedular]: -f + cupsd [printer server]: -f or -F + dhclient [dhcp client]: -d + dhcp3 (isc) [dhcp server]: -f + distccd [compile server]: normal behaviour + fam [file alteration monitor]:-f + fcron [schedular]: -f + frox [ftp proxy]: "NoDetach" in config + gdm [display manager]: -nodaemon + hybrid [irc server]: -foreground + icecast2 [sound streamer]: normal behaviour + mini-lpd [printer server]: normal behaviour + metalog [log server]: normal behaviour + monotone [vcs]: normal behaviour + mpd [music server]: --no-daemon + nessusd ["security server"]: normal behaviour + ntpd [time server]: -n + oidentd [identd server]: -i + oops [http proxy]: normal behaviour + openssh [ssh server]: -D + openvpn [vpn server]: normal behaviour + pbbuttonsd [power management]:normal behaviour + proftpd [ftp server]: -n + qmail [mta]: normal behaviour + rsync ["file server"]: --no-detach + silcd ["secure chat server"]: -F, --foreground + slapd [ldap]: -d + snmpd [snmp daemon]: -f + svnserve [vcs]: --foreground + syslogd [log server]: -n + syslog-ng [log server]: -F + tcpserver [super server]: normal behaviour + udhcpc [dhcp client]: normal behaviour + vsftpd [ftp server]: normal behaviour (or: config: background=no) + xinetd [super server]: -dontfork + +Those are the daemons that do not offer the possibility (as of release 0.2): + + atd (no switch, no configuraton option) + inetd (some variants) + nscd (no switch, no configuraton option) + portmap (only with debug mode) diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/debugging.configuration b/software/cinit/browse_source/cinit-0.3pre4/doc/user/debugging.configuration new file mode 100644 index 00000000..1289865e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/debugging.configuration @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +Debugging your init configuration, +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +As writing an init configuration is not the easiest thing, +here are some problems (P) and debugging hints (H): + +P: There's no output! +H: If you don't start a service which outputs something there won't be any, + cinit starts up silently. + +P: Service XYZ seems not to work? +H: Try the following in your shell: + cd /etc/cinit/the-service; ./on "$(on.params)" + If that succeeds it has perhaps something missing which should have been + started before. +H: Create a test-service, which contains the following: + on: link to /bin/echo + on.params: "A test string" (with or without the quotes) + Now add the test-service to the needs directory of service XYZ. + If you see output the next time, the service is started. + Otherwise you forgot to make another service dependent on service + XYZ. + +P: How can I test if a non-outputting service successfully started? +H: Create another service, which depends on your service and make + it echo something. + +P: Does that profile support really work? +H: Try that: cprofile:NONEXISTENT and you'll see. + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/ideas b/software/cinit/browse_source/cinit-0.3pre4/doc/user/ideas new file mode 100644 index 00000000..d3f13d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/ideas @@ -0,0 +1,3 @@ +- cinit-multi-machine-daemon: + coordinating bootup with several machines + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/installing-cinit.text b/software/cinit/browse_source/cinit-0.3pre4/doc/user/installing-cinit.text new file mode 100644 index 00000000..084a225e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/installing-cinit.text @@ -0,0 +1,25 @@ +cinit - Installing +================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 +:Author Initials: NS + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +For cross compiling see 'cross-compiling.text'. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/main.text b/software/cinit/browse_source/cinit-0.3pre4/doc/user/main.text new file mode 100644 index 00000000..6308e4c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/main.text @@ -0,0 +1,113 @@ +cinit - a modern init system +============================= +Nico Schottelius +v0.1, for cinit-0.2.2, 2005-01-18 +:Author Initials: NS + + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/meta.dependencies b/software/cinit/browse_source/cinit-0.3pre4/doc/user/meta.dependencies new file mode 100644 index 00000000..fe743c48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/meta.dependencies @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, one would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation (see profile.support). + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +why it does not even need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ + +This way you have the indirection (meta-dependencies) in the filesystem +and cinit does not need any additional code. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/optimising.cinit b/software/cinit/browse_source/cinit-0.3pre4/doc/user/optimising.cinit new file mode 100644 index 00000000..4f4b5c02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/optimising.cinit @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options +2. striping + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + +The current standard for cinit is: (see CFLAGS in the Makefile). + + +2. striping + +With strip(1) you can remove specific sections of object files. +You have to find out, which ones you can remove safely +(for instance with objdump(1)). + +The current standard for cinit is: (see STRIP in the Makefile) diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/paths.text b/software/cinit/browse_source/cinit-0.3pre4/doc/user/paths.text new file mode 100644 index 00000000..0b8c6b39 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/paths.text @@ -0,0 +1,68 @@ +cinit - Configuration +====================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Configuring cinit - the paths used + + +Introduction +------------ +The base directory under which all configurations are found +is '/etc/cinit'. + +The basic hierarchy is shown below: +---------------------------------------------------------------------- +/etc/cinit + svc -> services + conf -> general configuration +---------------------------------------------------------------------- + + +General pathnames +~~~~~~~~~~~~~~~~~~ +When you create something that cinit should execute (like on +starting a service, on stopping a service, on panic, ...), cinit +will recognize the following extensions: + +. cinit executions extensions + - 'name' - the file that should be executed + - 'name'.params - the parameter to pass to 'name' when executing + - 'name'.env - the environment to pass to 'name' when executing + + +Name.params +^^^^^^^^^^^ +The 'params' file is a simple file containing one argument on each +line. + +Name.env +^^^^^^^^ +The 'env' file contains one assignment on each line. +"testvar=testvalue". + + +The subdirectory 'conf' +~~~~~~~~~~~~~~~~~~~~~~~ +In this directory are general configurations located. + +. The executable files in this directory are: + - panic{.*} + - umount{.*} + +The subdirectory 'svc' +~~~~~~~~~~~~~~~~~~~~~~ +This directory contains the services. A service is a directory +which may contain the following files: + +. List of files + - on - What to execute when starting the service + * on.env - Environment to pass to 'on' + * on.params - Parameters to pass to 'on' + - off - What to execute when stopping the service + * off.env - Environment to pass to 'on' + * off.params - Parameters to pass to 'on' + - respawn - An empty file that tells cinit to restart the service + when it exits + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/problems b/software/cinit/browse_source/cinit-0.3pre4/doc/user/problems new file mode 100644 index 00000000..a3440a3a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/problems @@ -0,0 +1,9 @@ +fsck: + returns non-zero if it repaired something. + You have to wrap it into a shell-script :-( + + #!/bin/sh + fsck $@ + [ $? -le 1 ] && exit 0 + exit 1 + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/profile.support b/software/cinit/browse_source/cinit-0.3pre4/doc/user/profile.support new file mode 100644 index 00000000..7bc607b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/profile.support @@ -0,0 +1,72 @@ +-------------------------------------------------------------------------------- +Profiles, +Nico Schottelius, 2005-06-04 +-------------------------------------------------------------------------------- + +1. What are profiles? +2. How to use profiles? +3. How to configure profiles? +4. Some examples + + +1. What are profiles? + +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +2. How to use profiles? + +Simply pass 'cprofile:PROFILENAME' (like cprofile:home) to cinit. +How to pass argumenents to cinit? Under Linux the init-system +gets the kernel arguments (see linux.kernel.eats.arguments) as arguments. +So you can use + + kernel /usr/src/linux/vmlinuz cprofile:work (grub1,grub2) + append="cprofile:work" (LILO,yaboot) + +Other Unices should work like Linux, please consult your local +documentation. + + +3. How to configure profiles? + +It's very simple: Normally cinit would call /etc/cinit/init as +primary service and solve all dependencies. If you pass +cprofile=wireless to it, cinit will start /etc/cinit/wireless as +primary service instead. + + [Note: /etc/cinit/yourprofile is the service that will be started. + You need/should/must NOT create /etc/cinit/yourprofile/init!] + +So the only thing you have to do is to create a service directory +below /etc/cinit with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/init; tar c . | (mkdir ../yp; cd ../yp; tar x ) + +That's it! + + +4. Some examples + +Here are some examples we found in #cLinux: + + profile name what it does + + musibox only start mp3blaster + terminal start only minicom, which opens the serial line + net-terminal start a respawning shell script, which starts + ssh to the selected host + video start X+mplayer, which plays the dvd/cdrom + wireless What to start when beeing in an unknown wlan + home/work selected services (nfs, ip, ...) for home or work + diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/replacing.init b/software/cinit/browse_source/cinit-0.3pre4/doc/user/replacing.init new file mode 100644 index 00000000..2858c56c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/replacing.init @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and link, move or copy cinit to init (ln -s /sbin/cinit /sbin/init), reboot. + +That's everything in general, the biggest part will be to configuring cinit. + +See also doc/merging.other.initsystems. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/updating.cinit b/software/cinit/browse_source/cinit-0.3pre4/doc/user/updating.cinit new file mode 100644 index 00000000..fc0d3fef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/updating.cinit @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. call cservice -u thilo (if you have cinit-0.1 or later) + + For older versions: + + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything running and restart as if you would just + have booted. diff --git a/software/cinit/browse_source/cinit-0.3pre4/doc/user/using.rescue b/software/cinit/browse_source/cinit-0.3pre4/doc/user/using.rescue new file mode 100644 index 00000000..f58ff512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/doc/user/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user"). + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.3pre4/scripts/cinit.build-env b/software/cinit/browse_source/cinit-0.3pre4/scripts/cinit.build-env new file mode 100644 index 00000000..94e093e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/scripts/cinit.build-env @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: build environment to be used in scripts +# * Should be sourced by using scripts +# 2006-10-26 +# + +. $(dirname $0)/cinit.read-conf + +export BASEDIR=${DESTDIR}${CINIT_DIR} +export SERVICES=${BASEDIR}/${SVCDIR} +export CONFIG=${BASEDIR}/${CONFDIR} diff --git a/software/cinit/browse_source/cinit-0.3pre4/scripts/cinit.get-confdir b/software/cinit/browse_source/cinit-0.3pre4/scripts/cinit.get-confdir new file mode 100644 index 00000000..38d8572d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/scripts/cinit.get-confdir @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# Date: 2005-05-24 (Last Changed: 2005-08-08) + +# try environment first +if [ "$CINIT_CONF_DIR" ]; then + CONFDIR=$CINIT_CONF_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +else + echo 'Did not find cinit configuration!' >&2 + echo "Please set the variable CINIT_CONF_DIR" >&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.3pre4/scripts/cinit.install.standard.dirs b/software/cinit/browse_source/cinit-0.3pre4/scripts/cinit.install.standard.dirs new file mode 100644 index 00000000..22cf273d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/scripts/cinit.install.standard.dirs @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install standard sub-configuration directories +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.build-env + +for svc in $SERVICE_CATEGORIES; do + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${SERVICES}/${svc}" +done + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre4/scripts/cinit.mkheader b/software/cinit/browse_source/cinit-0.3pre4/scripts/cinit.mkheader new file mode 100644 index 00000000..80e3f7cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/scripts/cinit.mkheader @@ -0,0 +1,32 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric: no quotes needed + is_numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + is_string="$(echo $value | grep '^"')" + + # + # Check for quote type + # + if [ ! "$is_numeric" -a ! "$is_string" ]; then + one_char=$(echo -n $value | wc -c) + + if [ "$one_char" -eq 1 ]; then + value="'$value'" + else + # is a string + value="\"$value\"" + fi + fi + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.3pre4/scripts/cinit.read-conf b/software/cinit/browse_source/cinit-0.3pre4/scripts/cinit.read-conf new file mode 100644 index 00000000..4f3c1cb7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/scripts/cinit.read-conf @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# ~ 2005 +# + +CONFS=$($(dirname $0)/cinit.get-confdir)/* + +set -e + +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + if eval test -z \$$NAME; then + eval $NAME=\"$(head -n 1 $conf)\" + eval export $NAME + fi +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.3pre4/scripts/create_baseconfig.sh b/software/cinit/browse_source/cinit-0.3pre4/scripts/create_baseconfig.sh new file mode 100644 index 00000000..7c9b69e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/scripts/create_baseconfig.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# 2006-10-23 +# cLinux/cinit + +. $(dirname $0)/cinit.build-env + +set -e + +mkdir -p "${BASEDIR}" + +mkdir -p "${SERVICES}" +mkdir -p "${SERVICES}/${C_INIT}" + +mkdir -p "${CONFIG}" diff --git a/software/cinit/browse_source/cinit-0.3pre4/serv/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre4/serv/run_init_svc.c new file mode 100644 index 00000000..f41c1f4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/serv/run_init_svc.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-17-19:03:48 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-17-19:03:48 new file mode 100644 index 00000000..e379e004 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-17-19:03:48 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 17 19:03 cinit +-rwx------ 1 nico users 46760 Jun 17 19:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-20-12:16:40 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-20-12:16:40 new file mode 100644 index 00000000..1f0c3325 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-20-12:16:40 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 20 12:16 cinit +-rwx------ 1 nico users 50860 Jun 20 12:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-20-15:16:31 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-20-15:16:31 new file mode 100644 index 00000000..75dc3e7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-20-15:16:31 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 15:16 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-20-16:29:28 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-20-16:29:28 new file mode 100644 index 00000000..1294bde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-20-16:29:28 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-20-16:29:50 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-20-16:29:50 new file mode 100644 index 00000000..69fe7490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-20-16:29:50 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 16:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-21-11:53:35 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-21-11:53:35 new file mode 100644 index 00000000..4a1e7b6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-21-11:53:35 @@ -0,0 +1,3 @@ +total 192 +-rwx------ 1 nico users 102039 Jun 21 11:53 cinit +-rwx------ 1 nico users 87871 Jun 21 11:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-07:33:11 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-07:33:11 new file mode 100644 index 00000000..e6c8ff14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-07:33:11 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47544 Jun 22 07:33 cinit +-rwx------ 1 nico users 46760 Jun 22 07:33 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-07:57:13 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-07:57:13 new file mode 100644 index 00000000..17161d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-07:57:13 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47536 Jun 22 07:57 cinit +-rwx------ 1 nico users 46760 Jun 22 07:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-08:08:40 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-08:08:40 new file mode 100644 index 00000000..770083f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-08:08:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47424 Jun 22 08:08 cinit +-rwx------ 1 nico users 46760 Jun 22 08:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-08:30:42 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-08:30:42 new file mode 100644 index 00000000..aa95fb3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-08:30:42 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47360 Jun 22 08:30 cinit +-rwx------ 1 nico users 46760 Jun 22 08:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-09:19:42 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-09:19:42 new file mode 100644 index 00000000..70c261bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-09:19:42 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 09:19 cinit +-rwx------ 1 nico users 50860 Jun 22 09:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-10:43:24 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-10:43:24 new file mode 100644 index 00000000..b8bc4076 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-10:43:24 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 10:43 cinit +-rwx------ 1 nico users 50860 Jun 22 10:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-12:42:57 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-12:42:57 new file mode 100644 index 00000000..c8119859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-12:42:57 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 22 12:42 cinit +-rwx------ 1 nico users 46760 Jun 22 12:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-13:52:41 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-13:52:41 new file mode 100644 index 00000000..793b92fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-13:52:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:52 cinit +-rwx------ 1 nico users 46760 Jun 22 13:52 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-13:59:40 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-13:59:40 new file mode 100644 index 00000000..d114c557 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-13:59:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:59 cinit +-rwx------ 1 nico users 46760 Jun 22 13:59 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-14:19:41 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-14:19:41 new file mode 100644 index 00000000..8d56882f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-14:19:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47640 Jun 22 14:19 cinit +-rwx------ 1 nico users 46760 Jun 22 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-14:37:18 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-14:37:18 new file mode 100644 index 00000000..b7c3e4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-22-14:37:18 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 22 14:37 cinit +-rwx------ 1 nico users 46760 Jun 22 14:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-23-06:22:23 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-23-06:22:23 new file mode 100644 index 00000000..9e38a5e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-23-06:22:23 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 23 06:22 cinit +-rwx------ 1 nico users 46760 Jun 23 06:22 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-24-17:53:55 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-24-17:53:55 new file mode 100644 index 00000000..3b750eaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-24-17:53:55 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:53 cinit +-rwx------ 1 nico users 46760 Jun 24 17:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-24-17:55:29 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-24-17:55:29 new file mode 100644 index 00000000..c30dcaf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-24-17:55:29 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:55 cinit +-rwx------ 1 nico users 46760 Jun 24 17:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-26-13:19:49 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-26-13:19:49 new file mode 100644 index 00000000..a4de830b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-06-26-13:19:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 26 13:19 cinit +-rwx------ 1 nico users 50860 Jun 26 13:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:07:13 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:07:13 new file mode 100644 index 00000000..e2c59ddf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:07:13 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:07 cinit +-rwx------ 1 nico users 50860 Jul 6 08:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:12:20 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:12:20 new file mode 100644 index 00000000..e562350c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:12:20 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:12 cinit +-rwx------ 1 nico users 50860 Jul 6 08:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:13:39 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:13:39 new file mode 100644 index 00000000..32fd8268 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:13:39 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:13 cinit +-rwx------ 1 nico users 50860 Jul 6 08:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:14:19 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:14:19 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:14:19 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:14:59 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:14:59 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:14:59 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:15:56 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:15:56 new file mode 100644 index 00000000..cf26e6f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-08:15:56 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:15 cinit +-rwx------ 1 nico users 50860 Jul 6 08:15 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-10:12:22 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-10:12:22 new file mode 100644 index 00000000..d5f0f2c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-10:12:22 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:08 cinit +-rwx------ 1 nico users 50860 Jul 6 10:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-10:12:31 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-10:12:31 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-10:12:31 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-10:12:49 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-10:12:49 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-07-06-10:12:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-08-29-21:21:34 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-08-29-21:21:34 new file mode 100644 index 00000000..e651a8ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-08-29-21:21:34 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 root root 444508 2005-08-29 21:21 cinit +-rwx------ 1 root root 440412 2005-08-29 21:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-08-29-23:50:55 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-08-29-23:50:55 new file mode 100644 index 00000000..a279aee3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-08-29-23:50:55 @@ -0,0 +1,3 @@ +insgesamt 856 +-rwx------ 1 nico nico 437564 2005-08-29 23:50 cinit +-rwx------ 1 nico nico 436316 2005-08-29 23:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-03-03:36:59 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-03-03:36:59 new file mode 100644 index 00000000..01e555f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-03-03:36:59 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 nico nico 444508 2005-09-03 03:36 cinit +-rwx------ 1 nico nico 440412 2005-09-03 03:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-03-04:34:35 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-03-04:34:35 new file mode 100644 index 00000000..1832930a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-03-04:34:35 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 04:34 cinit +-rwx------ 1 nico nico 440412 Sep 3 04:34 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-03-05:51:17 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-03-05:51:17 new file mode 100644 index 00000000..4e465d06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-03-05:51:17 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 05:51 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-03-05:54:20 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-03-05:54:20 new file mode 100644 index 00000000..9c040d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-03-05:54:20 @@ -0,0 +1,4 @@ +total 1300 +-rwx------ 1 nico nico 440412 Sep 3 05:54 ccontrol +-rwx------ 1 nico nico 444508 Sep 3 05:54 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-03-09:01:59 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-03-09:01:59 new file mode 100644 index 00000000..880422a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-03-09:01:59 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 3 09:01 cinit +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-05-19:41:12 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-05-19:41:12 new file mode 100644 index 00000000..0f07d86e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-05-19:41:12 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 root root 440412 2005-09-05 19:41 ccontrol +-rwx------ 1 root root 444508 2005-09-05 19:41 cinit +-rwx------ 1 root root 440412 2005-09-05 19:41 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-05-19:50:35 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-05-19:50:35 new file mode 100644 index 00000000..32ff19fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-05-19:50:35 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 5 19:50 cinit +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-24-01:42:38 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-24-01:42:38 new file mode 100644 index 00000000..0da6126e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-24-01:42:38 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-09-24 01:42 ccontrol +-rwx------ 1 nico nico 437628 2005-09-24 01:42 cinit +-rwx------ 1 nico nico 436316 2005-09-24 01:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-30-22:50:50 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-30-22:50:50 new file mode 100644 index 00000000..0d510174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-30-22:50:50 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 22:50 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 22:50 cinit +-rwx------ 1 nico nico 436316 2005-09-30 22:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-30-23:06:39 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-30-23:06:39 new file mode 100644 index 00000000..23450914 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-09-30-23:06:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 23:06 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 23:06 cinit +-rwx------ 1 nico nico 436316 2005-09-30 23:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-01-22:09:13 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-01-22:09:13 new file mode 100644 index 00000000..a62b9eb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-01-22:09:13 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-10-01 22:09 ccontrol +-rwx------ 1 nico nico 437308 2005-10-01 22:09 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-01-22:17:39 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-01-22:17:39 new file mode 100644 index 00000000..b1d8b11b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-01-22:17:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-01 22:17 ccontrol +-rwx------ 1 nico nico 437532 2005-10-01 22:17 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-02-11:12:29 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-02-11:12:29 new file mode 100644 index 00000000..e5f7b13d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-02-11:12:29 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:12 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-02-11:13:35 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-02-11:13:35 new file mode 100644 index 00000000..d7c14471 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-02-11:13:35 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-02-11:13:43 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-02-11:13:43 new file mode 100644 index 00000000..1711d01a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-02-11:13:43 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 11:13 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 436316 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-02-16:00:24 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-02-16:00:24 new file mode 100644 index 00000000..ab23228c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-02-16:00:24 @@ -0,0 +1,4 @@ +total 1284 +-rwx------ 1 nico nico 436316 Oct 2 16:00 ccontrol +-rwx------ 1 nico nico 437884 Oct 2 16:00 cinit +-rwx------ 1 nico nico 436316 Oct 2 16:00 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-02-23:17:11 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-02-23:17:11 new file mode 100644 index 00000000..92041cd9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-02-23:17:11 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 23:17 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 23:17 cinit +-rwx------ 1 nico nico 436316 2005-10-02 23:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-03-00:54:39 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-03-00:54:39 new file mode 100644 index 00000000..df47a057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-03-00:54:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:54 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:54 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-03-00:56:29 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-03-00:56:29 new file mode 100644 index 00000000..08db7fec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-03-00:56:29 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:56 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:56 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:56 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-13-09:55:52 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-13-09:55:52 new file mode 100644 index 00000000..d54a7ff4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-13-09:55:52 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:55 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:55 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-13-09:57:11 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-13-09:57:11 new file mode 100644 index 00000000..3b1af9ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-13-09:57:11 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:57 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:57 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-13-10:07:28 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-13-10:07:28 new file mode 100644 index 00000000..58d25315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-13-10:07:28 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 10:07 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 10:07 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 10:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-15-15:26:52 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-15-15:26:52 new file mode 100644 index 00000000..a88291e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-15-15:26:52 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 root root 436316 2005-10-15 15:26 ccontrol +-rwx------ 1 root root 437916 2005-10-15 15:26 cinit +-rwx------ 1 root root 436316 2005-10-15 15:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-15-21:23:56 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-15-21:23:56 new file mode 100644 index 00000000..43a4504d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-10-15-21:23:56 @@ -0,0 +1,4 @@ +total 36 +-rwx------ 1 nico nico 9148 Oct 15 21:23 ccontrol +-rwx------ 1 nico nico 11872 Oct 15 21:23 cinit +-rwx------ 1 nico nico 9768 Oct 15 21:23 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2005-11-17-17:03:53 b/software/cinit/browse_source/cinit-0.3pre4/size/2005-11-17-17:03:53 new file mode 100644 index 00000000..78543f15 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2005-11-17-17:03:53 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2005-11-17 17:03 ccontrol +-rwx------ 1 nico nico 11872 2005-11-17 17:03 cinit +-rwx------ 1 nico nico 9768 2005-11-17 17:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-11-23:45:54 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-11-23:45:54 new file mode 100644 index 00000000..f4852c81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-11-23:45:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-11 23:45 cinit +-rwx------ 1 nico nico 9768 2006-02-11 23:45 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-12-00:06:11 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-12-00:06:11 new file mode 100644 index 00000000..2fe41351 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-12-00:06:11 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-12-00:06:42 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-12-00:06:42 new file mode 100644 index 00000000..bf2ddc36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-12-00:06:42 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:06 ccontrol +-rwx------ 1 nico nico 11560 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-12-00:08:24 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-12-00:08:24 new file mode 100644 index 00000000..e25a49ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-12-00:08:24 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:08 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:08 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-12-00:09:33 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-12-00:09:33 new file mode 100644 index 00000000..0b64fa00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-12-00:09:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:09 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:09 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-12-00:13:32 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-12-00:13:32 new file mode 100644 index 00000000..b6c5c38e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-12-00:13:32 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:13 ccontrol +-rwx------ 1 nico nico 11500 2006-02-12 00:13 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-16-23:57:29 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-16-23:57:29 new file mode 100644 index 00000000..86b9fda9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-16-23:57:29 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11620 2006-02-16 23:57 cinit +-rwx------ 1 nico nico 9768 2006-02-16 23:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-17-00:16:18 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-17-00:16:18 new file mode 100644 index 00000000..28c853a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-17-00:16:18 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 00:16 cinit +-rwx------ 1 nico nico 9768 2006-02-17 00:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-17-22:48:35 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-17-22:48:35 new file mode 100644 index 00000000..5935acfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-17-22:48:35 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-17 22:48 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 22:48 cinit +-rwx------ 1 nico nico 9768 2006-02-17 22:48 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:03:54 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:03:54 new file mode 100644 index 00000000..9222f0b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:03:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:03 cinit +-rwx------ 1 nico nico 9768 2006-02-20 19:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:04:33 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:04:33 new file mode 100644 index 00000000..c5797edc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:04:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:04:36 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:04:36 new file mode 100644 index 00000000..fbcf9fa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:04:36 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:07:47 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:07:47 new file mode 100644 index 00000000..7e1fe18f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:07:47 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:07 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:12:33 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:12:33 new file mode 100644 index 00000000..2b4fda40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:12:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:12 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:12 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:14:56 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:14:56 new file mode 100644 index 00000000..bccb5d65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-02-20-20:14:56 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:14 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:14 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-01-23:32:43 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-01-23:32:43 new file mode 100644 index 00000000..fcbaf372 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-01-23:32:43 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-01 23:32 ccontrol +-rwx------ 1 nico nico 11640 2006-06-01 23:32 cinit +-rwx------ 1 nico nico 9768 2006-06-01 23:32 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-01:08:28 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-01:08:28 new file mode 100644 index 00000000..7683546c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-01:08:28 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:08 ccontrol +-rwx------ 1 nico nico 11688 2006-06-02 01:08 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-01:29:13 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-01:29:13 new file mode 100644 index 00000000..adbc6846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-01:29:13 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:29 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 01:29 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-11:13:39 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-11:13:39 new file mode 100644 index 00000000..46eaef4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-11:13:39 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:13 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:13 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-11:36:37 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-11:36:37 new file mode 100644 index 00000000..306402f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-11:36:37 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:36 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:36 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-15:17:17 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-15:17:17 new file mode 100644 index 00000000..7bb59095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-15:17:17 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:17 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:17 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-15:19:52 b/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-15:19:52 new file mode 100644 index 00000000..ce65256f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/size/2006-06-02-15:19:52 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:19 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:19 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/Makefile b/software/cinit/browse_source/cinit-0.3pre4/src/Makefile new file mode 100644 index 00000000..2100b7d1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/Makefile @@ -0,0 +1,135 @@ +# +# cinit +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +include Makefile.tests + +# Build tools / locations +CC=../tmpbin/cc +CFLAGS= +LD=../tmpbin/ld +LDFLAGS= +STRIP=../tmpbin/strip +SBIN=../sbin + +# directories and files +CONFIG_H=include/config.h + +# +# objects for the cinit part +# +CINIT_HEADERS=$(shell cat include/listing) +CINIT_CORE_OBJ=$(shell cat core/objects) +CINIT_GENERIC_OBJ=$(shell cat generic/objects) +CINIT_SVC_OBJ=$(shell cat svc/objects) + +# +# The current link may be missing in the first run +# +CINIT_IPC_OBJ=$(shell cat ipc/current/objects 2>/dev/null) +CINIT_OS_OBJ=$(shell cat os/current/objects 2>/dev/null) + +CINIT_OBJ=$(CINIT_CORE_OBJ) $(CINIT_IPC_OBJ) $(CINIT_OS_OBJ) \ + $(CINIT_GENERIC_OBJ) $(CINIT_SVC_OBJ) + +# +# Dependencies +# +$(CINIT_OBJ): $(CINIT_HEADERS) + +# +# Client modules +# +CLIENT=client/msg_svc_on_off.o client/msg_change_status.o client/run_svc.o \ + client/exec_svc.o client/respawn_svc.o client/run_run_svcs.o \ + client/connect_sock.o client/begin_msg.o client/sig_terminate.o + +COMMUNICATION=comm/do_change_status.o comm/do_result.o comm/do_svc_name.o + +BOTH=generic/set_signals.o generic/mini_printf.o generic/usage.o + +OBJ=$(SERV) $(SERV_OS) $(CLIENT) $(BOTH) $(COMMUNICATION) + +CSVC_OBJ=util/cservice.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +CCO_OBJ=util/ccontrol.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +%.o: %.c + $(CC) -c -o $@ $< + +# +# End user target +# +#all: cinit cservice ccontrol sizecheck docs +all: cinit + +# +# First do configuration, so we include the right variables +# +Makefile: .configured + +.configured: ../conf/* + @../bin/cinit.configure.os + @../bin/cinit.configure.tools + @../bin/cinit.configure.ipc + @../bin/cinit.configure.mark + +$(CINIT_OBJ): $(CONFIG_H) + +cinit: $(CINIT_OBJ) + $(LD) $^ -o $@ + + +#$(CINIT_BIN): $(SBIN) $(OBJ) +# $(LD) $(LDFLAGS) $(OBJ) -o $@ +# $(STRIP) $@ + +sizecheck: cinit cservice + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l sbin/ > $$FILE; cat $$FILE + @echo -n "Source size (in KiB): " + @du -s $(SDIRS) | awk '{ sum+=$$1 } END { print sum }' +# @du -s bin client comm conf doc generic serv | awk '{ sum+=$1 } END { print sum }' + + + +.PHONY: clean +clean: + rm -f .configured + rm -f $(CINIT_OBJ) + rm -f ../tmpbin/* + +distclean: + rm -f os/current ipc/current + +$(CONFIG_H): ../conf/* + ../scripts/cinit.mkheader > $(CONFIG_H) + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +ccontrol: $(SBIN)/ccontrol + +$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) + $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ + $(STRIP) $@ + +install: install-dir cinit cservice ccontrol + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/Makefile.tests b/software/cinit/browse_source/cinit-0.3pre4/src/Makefile.tests new file mode 100644 index 00000000..0f4b4626 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/Makefile.tests @@ -0,0 +1,27 @@ +# +# Makefile for cinit tests +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +TEST_BUILD_ARGV=test/test_build_argv.o core/build_argv.o + +PROGS=test_build_argv test_build_argv_link + +tests: $(PROGS) + +test_build_argv: test/test_build_argv.o core/build_argv.o +test_build_argv_link: test/test_build_argv+link.o core/build_argv.o + +test_gen_svc_tree: test/test_gen_svc_tree.o svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/gen_svc_tree.o \ + generic/mini_printf.o \ + svc/list_display_all.o + +test_openreadclose: test/test_openreadclose.o generic/openreadclose.o diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/core/build_argv.c b/software/cinit/browse_source/cinit-0.3pre4/src/core/build_argv.c new file mode 100644 index 00000000..85238d47 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/core/build_argv.c @@ -0,0 +1,170 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Build **argv for execution in cinit way: + * 1. check whether cmd is a valid executable + * 2. try to read cmd.params and write parameters + * 3. try to read cmd.env and setup environment + * + * Returns: + * BA_OK: Everything went well, you can use the struct + * BA_NOTFOUND: Binary executable is not available + * BA_PARAMS: Reading the parameters failed (ignoring non-existence!) + * BA_ENV: Reading the environment failed (same as above) + * BA_OTHER: Other error + */ + +#include /* open() */ +#include /* *alloc() */ +#include /* readlink */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* NULL */ +#include /* strchr */ +#include /* stat() */ + +#include "cinit.h" +#include "build_argv.h" + + /* + * char *basename: something we should execute + * (*basename) + ".params" will be added as parameters + * (*basename) + ".env" will be added as environment + */ + +int cinit_build_argv(char *basename, struct ba_argv *bav) +{ + int tmp; + int argc; + char pathtmp[PATH_MAX+1]; + char *sbuf = NULL; + char *p; + + /* sane values */ + bav->argv = NULL; + bav->envp = NULL; + + mini_printf("CBA::",1); + mini_printf(basename,1); + mini_printf("\n",1); + + /*********************************************************************** + * Try to get realname (for links) + */ + if((tmp = readlink(basename,pathtmp,PATH_MAX)) == -1) { + /* nothing there? */ + if(errno == ENOENT) { + return BA_E_NOTFOUND; + } + if (errno != EINVAL) { + return BA_E_OTHER; + } + tmp=strlen(basename); + strncpy(pathtmp,basename,tmp); + } + pathtmp[tmp] = '\0'; + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /*********************************************************************** + * prepare argv0 + */ + bav->argv = malloc(sizeof(char *)); + if(bav->argv == NULL) return BA_E_MEM; + + *bav->argv = malloc(tmp); + if(*(bav->argv) == NULL) return BA_E_MEM; + + strncpy(*(bav->argv),pathtmp,tmp); + + /********************** read params *********************/ + /* FIXME check bounds! */ + strcpy(pathtmp,basename); + strcat(pathtmp,C_PARAMS); + /* ORC_ERR_NONEXISTENT: Ok, have sbuf set to NULL + * ORC_OK: Ok, have a filled buffer (perhaps NULL, too) + * other: Error, print errno + */ + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /*********************************************************************** + * Now split the string, converting \n to \0 + */ + argc = 1; /* argv0 */ + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = sbuf; /* here begins the current argument */ + + if(p != NULL) { /* found another \n */ + *p = '\0'; + sbuf = p+1; + } else { /* end of string */ + sbuf = NULL; + } + + ++argc; + } + + /************ close argv list **************/ + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,basename); + strcat(pathtmp,C_ENV); + + tmp = argc = 0; + sbuf = NULL; + + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /************** build environment string **************/ + argc = 0; + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) return BA_E_MEM; + + bav->envp[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + sbuf = p+1; + } else { + sbuf = NULL; + } + ++argc; + } + + /************ close env list **************/ + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) { + return BA_E_MEM; + } + bav->envp[argc] = NULL; + + return BA_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/core/cinit.c b/software/cinit/browse_source/cinit-0.3pre4/src/core/cinit.c new file mode 100644 index 00000000..d2e48e95 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/core/cinit.c @@ -0,0 +1,90 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The main file + * + */ + +#include /* getpid,chdir */ +#include /* str(ncmp,len,cpy,cat) */ +#include /* perror */ +#include /* malloc */ + +#include "cinit.h" /* general things */ +#include "messages.h" /* messages */ +#include "ipc.h" /* general ipc methods */ +#include "svc.h" /* gen_svc_tree */ + +struct listitem *svc_list = NULL; +struct dep *svc_init = NULL; + +int main(int argc, char **argv) +{ + char *initdir; +// pid_t cpid; + + initdir = CINIT_INIT; /* default init dir */ + + /* FIXME: RE-ENABLE as SOON AS PRODUCTIVE cpid = getpid(); + * Is this really needed or should we lock() ourselves? + if(cpid != 1) { + mini_printf(CINIT_VERSION,2); + mini_printf(MSG_USAGE,2); + return 0; + }*/ + + set_signals(ACT_SERV); + + /* Look whether we should start a profile */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_SVCDIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_SVCDIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* FIXME: do we really need three calls? */ + mini_printf(MSG_BOOTING,1); mini_printf(initdir,1); mini_printf("\n",1); + + if(chdir(initdir) == -1) { + print_errno(initdir); + panic(); + } + + /* initialize ipc method */ + if(!cinit_ipc_init()) { + panic(); + } + + /* pre-calculate service tree */ + gen_svc_tree(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* start tree from the bottom */ + if(!tree_exec(svc_init)) return 1; + + mini_printf("=> cinit started.\n",1); + + /* listen for incomming messages: should never return */ + if(!cinit_ipc_listen()) { + panic(); + } + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/core/do_reboot.c b/software/cinit/browse_source/cinit-0.3pre4/src/core/do_reboot.c new file mode 100644 index 00000000..c190f634 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/core/do_reboot.c @@ -0,0 +1,74 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "ipc.h" +#include "cinit.h" +#include "os.h" +#include "messages.h" + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void do_reboot(int signal) +{ + //struct listitem *tmp; + struct timespec ts; + //char **cmd; + //int i; + + /* shutdown all services: take care about the dependency tree */ + + /* do not listen to client requests anymore + * FIXME: perhaps before shutdown? */ + cinit_ipc_destroy(); + + /* now: all services are down, let's kill all other processes */ + if( kill(-1,SIGTERM) == -1) { + print_errno(MSG_TERMKILL); + } + + /* FIXME make SLEEP_KILL an optional configuration statement */ + ts.tv_sec = SLEEP_KILL; /* defined in conf/sleep_kill */ + ts.tv_nsec = 0; + nanosleep(&ts,NULL); + + if( kill(-1,SIGKILL) == -1) { + print_errno(MSG_KILLBILL); + } + + /* execute umount, as defined in conf/umount */ + + /* execute_sth(CINIT_UMOUNT); */ + + /* do what we really wanted to do */ + switch(signal) { + case SIGTERM: /* power off */ + LOG(MSG_POWER_OFF); + cinit_poweroff(); + break; + case SIGHUP: /* reboot */ + LOG(MSG_REBOOT); + cinit_reboot(); + break; + case SIGUSR1: /* halt */ + LOG(MSG_HALT); + cinit_halt(); + break; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/core/objects b/software/cinit/browse_source/cinit-0.3pre4/src/core/objects new file mode 100644 index 00000000..fd49e8d3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/core/objects @@ -0,0 +1,6 @@ +core/build_argv.o +core/cinit.o +core/panic.o +core/run_init_svc.o +core/set_signals.o +core/do_reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/core/panic.c b/software/cinit/browse_source/cinit-0.3pre4/src/core/panic.c new file mode 100644 index 00000000..39092aef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/core/panic.c @@ -0,0 +1,30 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something + */ + +#include "cinit.h" +#include + +void panic(void) +{ + char *nargv[2]; + + execute_sth(CINIT_PANIC); + + /*********************************************************************** + * THIS SHOULD NOT HAPPEN, fallback to hardcoded sulogin + * (conf/sulogin) + */ + nargv[0] = SULOGIN; + nargv[1] = NULL; + + execv(SULOGIN,nargv); + + /* there's nothing todo, if everything fails */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/core/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre4/src/core/run_init_svc.c new file mode 100644 index 00000000..42edb167 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/core/run_init_svc.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include /* _exit, fork */ + +#include "cinit.h" +#include "messages.h" +#include "ipc.h" + +int run_svc(char *rpath) { rpath = "test"; return 0; } /* a hack to compile cinit for now */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + if(!cinit_ipc_logon()) _exit(1); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/core/run_svc.c b/software/cinit/browse_source/cinit-0.3pre4/src/core/run_svc.c new file mode 100644 index 00000000..4a7eabf1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/core/run_svc.c @@ -0,0 +1,131 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +#error "needs to be cleaned up" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + print_errno(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + print_errno(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/core/set_signals.c b/software/cinit/browse_source/cinit-0.3pre4/src/core/set_signals.c new file mode 100644 index 00000000..57dfc242 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/core/set_signals.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2006-2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Define signal handlers + */ + + +#include +#include +#include "cinit.h" + +void sig_child(int signal) { signal=2; } /* HACK */ + +void set_signals(int action) +{ + struct sigaction sa; + + if(action == ACT_SERV) { + sa.sa_handler=sig_child; + } + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + if(action == ACT_SERV) { + sa.sa_handler=do_reboot; + } + sigaction(SIGHUP,&sa,NULL); /* reboot */ + sigaction(SIGTERM,&sa,NULL); /* poweroff */ + sigaction(SIGUSR1,&sa,NULL); /* halt */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/core/sig_child.c b/software/cinit/browse_source/cinit-0.3pre4/src/core/sig_child.c new file mode 100644 index 00000000..bbbf86cd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/core/sig_child.c @@ -0,0 +1,43 @@ +/* cinit + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * We are called, when a child dies. Remove it. + */ + +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sig_child + * collect the children + * FIXME: check whether we've race conditions when reciieving multiiple + * signals + * Perhaps disable listening to sig_child in meantime? + */ + +void sig_child(int tmp) +{ + /* New code: + * - disable almost all signal handlers, so we do not get interrupted + * - search for pid in service list + * * if (respawn) -> start new + * - insert delay? if exit code is non-zero? if uptime too less? + * * if (once) -> update service status + * * else ignore, but reap away + */ + struct listitem *svc; + + do { + /* check if it's a watched child */ + tmp = waitpid(-1, &tmp, WNOHANG); + + /* restart service, if we are watching it */ + svc = list_search_pid((pid_t) tmp); + + if( svc != NULL ) { + svc->pid = exec_svc(svc->abs_path, CMD_START_SVC); + } + } while( tmp > 0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/generic/execute_sth.c b/software/cinit/browse_source/cinit-0.3pre4/src/generic/execute_sth.c new file mode 100644 index 00000000..2672a244 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/generic/execute_sth.c @@ -0,0 +1,36 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Executes something: replaces us + */ + +#include /* _exit */ +#include "cinit.h" +#include "build_argv.h" + +void execute_sth(char *basename) +{ + int tmp; + struct ba_argv bav; + + mini_printf("ES::",1); + mini_printf(basename,1); + mini_printf("\n",1); + + tmp = cinit_build_argv(basename,&bav); + if((tmp = cinit_build_argv(basename,&bav)) != BA_OK) { + if(tmp != BA_E_MEM) { + print_errno(basename); + } /* do not print something on memory errors */ + _exit(1); /* FIXME: adjust exit code? */ + } + + execve((bav.argv)[0],bav.argv,bav.envp); + print_errno(basename); + _exit(1); /* FIXME: return specific error code, so cinit knows + * what happened! - sure? perhaps this gets non + * standard errors from other programs, too ... */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre4/src/generic/mini_printf.c new file mode 100644 index 00000000..b3139349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/generic/mini_printf.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Print the world! + * + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) return; + + p = str; + while ( *p ) p++; + + write(fd,str,(size_t) (p - str) ); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/generic/objects b/software/cinit/browse_source/cinit-0.3pre4/src/generic/objects new file mode 100644 index 00000000..f22ea6fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/generic/objects @@ -0,0 +1,7 @@ +generic/execute_sth.o +generic/mini_printf.o +generic/path_absolute.o +generic/path_append.o +generic/print_errno.o +generic/openreadclose.o +generic/strip_final_newline.o diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/generic/openreadclose.c b/software/cinit/browse_source/cinit-0.3pre4/src/generic/openreadclose.c new file mode 100644 index 00000000..0b21733f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/generic/openreadclose.c @@ -0,0 +1,71 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * read a file + * + */ + +#include +#include /* strncpy */ +#include /* realloc */ +#include /* errno */ +#include /* NULL */ +#include /* open */ +#include "cinit.h" + +int openreadclose(char *filename, char **where) +{ + + int tmp; + int cnt; + int fd; + char buf[512]; + + mini_printf("ORC:",1); + mini_printf(filename,1); + mini_printf("\n",1); + *where = NULL; + + while((fd = open(filename,O_RDONLY)) == -1) { + if(errno == ENOENT) return ORC_ERR_NONEXISTENT; + if(errno != EINTR) return ORC_ERR_OPEN; + } + + cnt = 0; + while (1) { + tmp = read(fd,buf,512); + + if(tmp == -1) { + if(errno == EINTR) + continue; + else + return ORC_ERR_READ; + } else if(tmp == 0) { + break; + } + + cnt += tmp; + *where = realloc(*where,cnt + 1); + if(*where == NULL) return ORC_ERR_MEM; + + /* FIXME check correctness of copied buffer... + * and get some sleep..soon, very soon! */ + strncpy(&(*where)[cnt-tmp],buf,tmp); + mini_printf("ORC: ",1); + mini_printf(buf,1); + mini_printf("\n",1); + } + + while((fd = close(fd)) == -1) { + if(errno == EINTR) continue; + return ORC_ERR_CLOSE; + } + + /* terminate string! */ + (*where)[cnt] = '\0'; + + return ORC_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/generic/path_absolute.c b/software/cinit/browse_source/cinit-0.3pre4/src/generic/path_absolute.c new file mode 100644 index 00000000..9568bf67 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/generic/path_absolute.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create an absulte path + */ + +#include /* chdir(),getcwd */ +#include /* PATH_MAX */ +#include "cinit.h" /* print_errno */ +#include "messages.h" /* print_errno */ + +int path_absolute(char *relpath, char *newpath, size_t size) +{ + char oldpath[PATH_MAX+1]; + + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_CHDIR); + return 0; + } + + if(chdir(relpath) == -1) { + print_errno(relpath); + return 0; + } + + if(!getcwd(newpath,size)) { + print_errno(relpath); + return 0; + } + + if(chdir(oldpath) == -1) { + print_errno(oldpath); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/generic/path_append.c b/software/cinit/browse_source/cinit-0.3pre4/src/generic/path_append.c new file mode 100644 index 00000000..c6617ba9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/generic/path_append.c @@ -0,0 +1,28 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create path to needs + */ + +#include /* strlen */ +#include /* PATH_MAX */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +int path_append(char *path, char *append) +{ + size_t end = strlen(path); + + if(strcmp(&path[end-1],SLASH)) { + if((end + strlen(SLASH) + strlen(append)) > PATH_MAX) return 0; + strcat(path,SLASH); + } else { + if((end + strlen(append)) > PATH_MAX) return 0; + } + strcat(path,append); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/generic/print_errno.c b/software/cinit/browse_source/cinit-0.3pre4/src/generic/print_errno.c new file mode 100644 index 00000000..7415d556 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/generic/print_errno.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * stolen from tcpserver_blocker + * + * Author: Nico Schottelius + * Date: 2006-08-24 + * + * Print the error found in errno + */ + +#include /* strerror */ +#include /* errno */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +void print_errno(char *msg) +{ + if(msg) { + mini_printf(msg, FD_ERR); + mini_printf(": ", FD_ERR); + } + mini_printf(strerror(errno), FD_ERR); + mini_printf("\n", FD_ERR); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/generic/strip_final_newline.c b/software/cinit/browse_source/cinit-0.3pre4/src/generic/strip_final_newline.c new file mode 100644 index 00000000..d9c12f05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/generic/strip_final_newline.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * If the last character is \n, shrink the memory and remove it + * + */ + +#include /* NULL */ +#include /* strchr */ +#include /* alloc */ +#include "cinit.h" /* FIXME debug */ + +char *strip_final_newline(char *str) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) { + mini_printf("SFN: NULL\n",1); + return NULL; + } + + p = strrchr(str,'\n'); + if(p) { + if(*(p+1) == '\0') { + str = realloc(str,(p-str)); + } + } + + return str; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/generic/usage.c b/software/cinit/browse_source/cinit-0.3pre4/src/generic/usage.c new file mode 100644 index 00000000..87d62c73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/generic/usage.c @@ -0,0 +1,23 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * usage: tell the world what we want - seriously no capitalism + * + */ + +#include +#include "cinit.h" + +/*********************************************************************** + * usage: tell the user what's wrong and a help text + */ +void usage(char *banner, char *text) +{ + /* print banner + error message */ + mini_printf(banner,1); + mini_printf(text,1); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/include/build_argv.h b/software/cinit/browse_source/cinit-0.3pre4/src/include/build_argv.h new file mode 100644 index 00000000..b61b27a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/include/build_argv.h @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * build **argv + */ + +#ifndef CINIT_BA_HEADER +#define CINIT_BA_HEADER + +/***************************************************************************** + * Defines: return values + */ +enum { + BA_OK, + BA_E_NOTFOUND, + BA_E_PARAMS, + BA_E_ENV, + BA_E_MEM, + BA_E_OTHER +}; + +/***************************************************************************** + * Structures + */ +struct ba_argv { + char **argv; + char **envp; +}; + +/***************************************************************************** + * Functions + */ +int cinit_build_argv(char *basename, struct ba_argv *bav); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/include/cinit.h b/software/cinit/browse_source/cinit-0.3pre4/src/include/cinit.h new file mode 100644 index 00000000..8f8f970f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/include/cinit.h @@ -0,0 +1,97 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_H +#define _CINIT_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/*********************************************************************** + * Defines + */ +#define SLASH "/" +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC + +enum { /* FIXME: there are some default defines somewhere for that */ + FD_IN=0, + FD_OUT=1, + FD_ERR=2 +}; + +enum { /* returns of openreadclose */ + ORC_OK, + ORC_ERR_NONEXISTENT, + ORC_ERR_OPEN, + ORC_ERR_READ, + ORC_ERR_CLOSE, + ORC_ERR_MEM +}; + +/*********************************************************************** + * Paths + */ +#define CINIT_SVCDIR CINIT_DIR SLASH SVCDIR +#define CINIT_INIT CINIT_SVCDIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK +#define CINIT_BIN PREFIX SLASH "sbin" SLASH "cinit" + +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC +#define CINIT_UMOUNT CINIT_CONFDIR SLASH C_UMOUNT + +/* actions for i/o handlers (see comm/do_*) */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* functions (used by server and client) */ +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +void usage(char *banner, char *stext); + +int do_svc_name(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* server functions */ +int run_init_svc(char *cinit_svc); +void sigio(int socket); +void do_reboot(int signal); +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +int msg_svc_on_off(char *svc, char action); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +int run_run_svcs(char *abspath); +pid_t exec_svc(char *abspath, int on); +pid_t respawn_svc(char *abspath); +int connect_sock(int socke); +char **read_file(char *file); +void sig_terminate(int signal); + +/* generic */ +void execute_sth(char *basename); +int path_append(char *path, char *append); +int path_absolute(char *relpath, char *buf, size_t size); +int openreadclose(char *filename, char **where); +char *strip_final_newline(char *str); + +/* util */ +int msg_reboot(char cmd); +void print_errno(char *text); + +/* os-functions */ +void cinit_reboot(void); +void cinit_halt(void); +void cinit_poweroff(void); + +#endif /* _CINIT_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/include/comm.h b/software/cinit/browse_source/cinit-0.3pre4/src/include/comm.h new file mode 100644 index 00000000..b9aaf60f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/include/comm.h @@ -0,0 +1,69 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#ifndef CINIT_COMM_HEADER +#define CINIT_COMM_HEADER + +#include /* PATH_MAX */ + +/*********************************************************************** + * Commands the clients may issue to us + * maximum number of commands: 2^8 = 256 + */ +enum commands { + CMD_START_SVC=1, /* the client wants US to start a service */ + CMD_START_SVC_ONLY, /* start this service without dependencies */ + CMD_STOP_SVC, /* stop svc and all svcs that need it */ + CMD_STOP_SVC_ONLY, /* we should stop _only_ this service */ + CMD_STOP_SVC_WANTS, /* stop svc, all svcs that need or want it */ + CMD_CHG_STAT, /* the client reports a status change */ + CMD_RESCUE, /* we should start the rescue mode */ + CMD_HALT, /* halt the system */ + CMD_REBOOT, /* reboot the system */ + CMD_POWEROFF, /* poweroff the system */ + CMD_WBOOT, /* shutdown and restart everything */ + CMD_INFO /* send information about that service */ +}; + +/* old + RT_ERR_COMM, * communication failed * + RT_ERR, * service starting failed * + RT_UNSPEC, * some kind of error, unspecified * + RT_SUCCESS, * successfully started: respawning or once * + RT_SVC_FAILED, * tried earlier, service failed, won't retry * + +*/ + +/*********************************************************************** + * messages from the client + * Prefix: qst_ (question) + */ +struct msg_client { + pid_t pid; /* pid of the telling client */ + char cmd; /* which cmd is issued to us */ + char status; /* status of the service */ + char svc[PATH_MAX]; /* name of the service */ + char svc_orig[PATH_MAX]; /* the service, which wants to start us */ +}; + +/*********************************************************************** + * messages from the server + * Prefix: asw_ (answer) + */ + +/*********************************************************************** + * return short status + */ +struct asw_sstatus { + long mtype; + char status; + char msg[PATH_MAX]; +}; + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/include/ipc.h b/software/cinit/browse_source/cinit-0.3pre4/src/include/ipc.h new file mode 100644 index 00000000..66b3bc86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/include/ipc.h @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Prototypes for ipc handler + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +/***************************************************************************** + * Functions: in server + */ +int cinit_ipc_init(void); /* init in init */ +int cinit_ipc_listen(void); /* listen in init */ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + +/***************************************************************************** + * Functions: in clients + */ +int cinit_ipc_logon(void); /* logon to init (client init) */ +int cinit_ipc_connect(void); /* connect to init */ +int cinit_ipc_csend(void *data); /* send to the server from a client */ + +/***************************************************************************** + * Functions: shared + */ + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/include/listing b/software/cinit/browse_source/cinit-0.3pre4/src/include/listing new file mode 100644 index 00000000..df30f408 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/include/listing @@ -0,0 +1,5 @@ +include/cinit.h +include/config.h +include/ipc.h +include/messages.h +include/os.h diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/include/messages.h b/software/cinit/browse_source/cinit-0.3pre4/src/include/messages.h new file mode 100644 index 00000000..e0829989 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/include/messages.h @@ -0,0 +1,98 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_MSG_H +#define _CINIT_MSG_H + +/* version */ +#define CINIT_VERSION "cinit-" VERSION +#define MSG_BOOTING CINIT_VERSION ": Booting from " + +#define MSG_DP ": " + +/* Messages to the outside */ +#define MSG_BIND "bind" +#define MSG_CONNECT "connect" +#define MSG_FCNTL "fcntl" +#define MSG_KILLBILL "sigkill" +#define MSG_LISTEN "listen" +#define MSG_SOCKET "socket" +#define MSG_TERMKILL "sigterm" +#define MSG_USAGE_1 ": fast executing, small and simple init " +#define MSG_USAGE_2 "with support for profiles\n" +#define MSG_USAGE_3 "\nError: cinit must be started as PID 1.\n" +#define MSG_USAGE MSG_USAGE_1 MSG_USAGE_2 MSG_USAGE_3 +#define MSG_ERR_FORK "fork" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_OPEN "open" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_READ "read" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" + +#define MSG_ERR_DEPS "Too many dependencies" +#define MSG_ERR_ACCEPT "accept" +#define MSG_ERR_WAITPID "waitpid" +#define MSG_ERR_POLL "poll" +#define MSG_ERR_MODIFY "modify list failed" +#define MSG_ERR_COMM "Communication failed" + +#define MSG_ERR_LESS_ARGS "Too less arguments!" +#define MSG_ERR_BAD_ARGS "Wrong arguments / parameter" +#define MSG_ERR_ARGS_LEN "Wrong parameter length" + +#define LOG_SVC_STOPED "Service stoped" +#define LOG_SVC_ONCE "Started once" +#define LOG_SVC_RESPAWN "Respawns now" +#define LOG_SVC_FAIL "Service failed" +#define LOG_NEED_FAIL "One or more need failed" +#define LOG_SVC_FAILED "Service already failed, not starting." +#define LOG_SVC_NOTEXIST "Service does not exist" + +#define MSG_START_SVC "Starting " +#define MSG_STOP_SVC "Stoping " +#define MSG_EXEC_FAILED "Failed to execute " + +#define MSG_POWER_OFF "Powering off..." +#define MSG_HALT "Halting system ..." +#define MSG_REBOOT "Rebooting ..." +#define MSG_RESCUE "Switching to rescue mode ..." +#define MSG_UPDATE "Updating cinit ..." +#define MSG_HOT_REBOOT "Hot reboot in progress ..." + +#define MSG_SHOULD_NOT_HAPPEN "This should not happen, I do not know what todo!" + +/* DEBUG */ +#ifdef DEBUG +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) +#endif + +/* macros */ +#define SERVICE_LOG(svc,message) { \ + mini_printf(svc,1); \ + mini_printf(MSG_DP,1); \ + mini_printf(message,1); \ + mini_printf("\n",1); \ +} +#define LOG(s) { \ + mini_printf(s,1); \ + mini_printf("\n",1); \ +} +#define P_START_SERVICE(name) { mini_printf(MSG_START_SVC,1); mini_printf(name,1); mini_printf("\n",1); } +#define P_EXEC_FAILED(name) { mini_printf(MSG_EXEC_FAILED,1); mini_printf(name,1); mini_printf("\n",1); } + +/* NEW (clean) Service status: Messages to the outside */ +#define MSG_SVC_FORK "fork() failed" + + +#endif /* _CINIT_MSG_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/include/os.h b/software/cinit/browse_source/cinit-0.3pre4/src/include/os.h new file mode 100644 index 00000000..e36d5a8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/include/os.h @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * os specific functions + */ + +#ifndef CINIT_OS_HEADER +#define CINIT_OS_HEADER + +/***************************************************************************** + * Functions + */ +void cinit_halt(void); +void cinit_poweroff(void); +void cinit_reboot(void); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/include/svc.h b/software/cinit/browse_source/cinit-0.3pre4/src/include/svc.h new file mode 100644 index 00000000..c4f63a57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/include/svc.h @@ -0,0 +1,126 @@ +/*********************************************************************** + * + * 2006,2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + + +#ifndef _CINIT_SVC_H +#define _CINIT_SVC_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* service list */ +struct listitem { + struct listitem *prev; /* previous item */ + struct listitem *next; /* next item */ + + char *abs_path; /* name of service */ + int status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + + + struct dep *wanted; /* list of services that want this service */ + struct dep *needed; /* list of services that need this service */ + + struct dep *wants; /* list of services that this service wants */ + struct dep *needs; /* list of services that this service needs */ +}; + +/* list of dependencies */ +struct dep { + struct dep *prev; + struct dep *next; + struct listitem *svc; +}; + +/* variables */ +extern struct dep *svc_init; /* the services to start */ +extern struct listitem *svc_list; /* the list of services */ + +/* list functions */ +struct listitem *list_insert(char *path, int status); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); +struct listitem *list_search(char *path); +inline struct listitem *list_search_pid(pid_t pid); +int list_display_all(); + + +/* service */ +struct listitem *svc_create(char *svc); +struct listitem *gen_svc_tree(char *svc); +int check_add_deps(struct listitem *svc, int type); +int dep_entry_add(struct dep **list, struct dep *new); +struct dep *dep_entry_del(struct dep *del); +int tree_exec(struct dep *start); +int svc_set_status(struct listitem *li, int status); +int svc_should_respawn(struct listitem *li); +int svc_needs_status(struct listitem *li); +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type); +struct dep *dep_create(struct listitem *svc); +void svc_success(struct listitem *li); +void svc_report_status(char *svc, char *msg, char *err); +void svc_start(struct listitem *li); + + + +/*********************************************************************** + * to decide whether to operate on needs or wants + */ +enum dep_types { + DEP_WANTS, + DEP_NEEDS +}; + +/*********************************************************************** + * status of a service and return codes - errors and success + */ +enum svc_status_old { + ST_TMPNOW=1, /* the client is now starting the service NEEDED??? */ + ST_NOTEXIST, /* service does not exist */ + + ST_NEED_FAIL, /* failed to start a need for this service */ + ST_FAIL, /* failed to start service */ + + ST_OFF, /* service is off */ + ST_OFF_ALL, /* service and those that need it are off */ + ST_OFF_ALL_F, /* same, but something failed */ + ST_OFF_WANTS, /* service + those that need or want it are off */ + ST_OFF_WANTS_F, /* same, but something failed */ + + ST_TMP, /* currently working on it */ + ST_ONCE, /* executed once */ + ST_RESPAWN /* running and respawning */ +}; + +/*********************************************************************** + * The real status types a service may have (ignore above) + * We have 32 Bits, we should use them ;-) + */ +enum svc_status { + /* first define basics */ + ST_SH_ONCE = 1, /* service SHould be started once */ + ST_SH_RESPAWN = 2, /* service SHould respawn */ + ST_ONCE_OK = 4, /* service was successfully started once */ + ST_ONCE_FAIL = 8, /* service failed to start */ + ST_RESPAWNING = 16, /* service is respawning */ + ST_NEED_FAILD = 32, /* this service is not started, need failed */ + ST_IN_LIST = 64, /* this service is being started (= in list) */ + ST_BAD_ERR = 128 /* some kind of error that SHOULD NOT happen */ +}; + +/*********************************************************************** + * Possibilities the needs of a service may have + */ +enum svc_needs_status { + SNS_NEEDS_STARTED = 1, /* all needs are started. We may start, too */ + SNS_NEEDS_FAILED, /* one ore more needs failed */ + SNS_NEEDS_UNFINISHED /* one ore more needs are not yet started */ +}; +#endif /* _CINIT_SVC_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/README.text b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/README.text new file mode 100644 index 00000000..c9a1acf2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/README.text @@ -0,0 +1,20 @@ +cinit/src/ipc/msgq: About this msqg implementation +=================================================== +Nico Schottelius +0.1, Initial Version from 2006-08-04 +:Author Initials: NS + +Intro here + +Introduction +------------ + +cinit opens a + +Files +----- +- README.text: This file +- cinit_init_ipc.c: Init +msgq.h +objects + diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_connect.c b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_connect.c new file mode 100644 index 00000000..a744980c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_connect.c @@ -0,0 +1,70 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel */ + k_in = ftok(IPC_KEY,IPC_IN); + k_out = ftok(IPC_KEY,IPC_OUT); + + if(k_in == -1 || k_out == -1) { + perror("ftok"); + exit(1); + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + perror("msgget"); + exit(1); + } + + /* wrong tabsto ;-) */ +while (1) { + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror("msgrcv"); + exit(1); + } + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_csend.c b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_csend.c new file mode 100644 index 00000000..43a0012f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_csend.c @@ -0,0 +1,62 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_logon(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(IPC_KEY,IPC_OUT); + k_out = ftok(IPC_KEY,IPC_IN); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_destroy.c b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_destroy.c new file mode 100644 index 00000000..299885c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_destroy.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Destory ipc mechanism, cinit is gonna die soon. + * + */ + +#include /* msgget */ +#include /* NULL */ + +#include "msgq.h" /* mq_in, mq_out */ +#include "cinit.h" /* print_errno */ + +void cinit_ipc_destroy(void) +{ + if(msgctl(mq_in,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } + if(msgctl(mq_out,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_init.c new file mode 100644 index 00000000..9ae072a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_init.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include /* ftok */ +#include /* msgget */ +#include /* msgget */ + +#include "cinit.h" +#include "config.h" +#include "msgq.h" + +int cinit_ipc_init(void) +{ + key_t k_tmp; + + /* to_server */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + if(k_tmp == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + mq_in = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_in == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + /* to_client */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + if(k_tmp == -1) { + perror(MSG_MSGQ_FTOK); + return 0; + } + mq_out = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_out == -1) { + perror(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_listen.c new file mode 100644 index 00000000..d21e561e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_listen.c @@ -0,0 +1,47 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ +#include /* perror */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + + struct msg_client m_client; + + while (1) { + /* FIXME: change msg structure */ + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror(MSG_MSGQ_MSGRCV); + } + + printf("pid: %d, m_client\n",m_client.pid); + + /* use pid as the message type + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + return 0; + } */ + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_logoff.c b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_logoff.c new file mode 100644 index 00000000..a744980c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_logoff.c @@ -0,0 +1,70 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel */ + k_in = ftok(IPC_KEY,IPC_IN); + k_out = ftok(IPC_KEY,IPC_OUT); + + if(k_in == -1 || k_out == -1) { + perror("ftok"); + exit(1); + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + perror("msgget"); + exit(1); + } + + /* wrong tabsto ;-) */ +while (1) { + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror("msgrcv"); + exit(1); + } + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_logon.c b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_logon.c new file mode 100644 index 00000000..08c0e252 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_logon.c @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "cinit.h" /* print_errno */ +#include "msgq.h" + +int cinit_ipc_logon(void) +{ + key_t k_in, k_out; /* FIXME: remove one variable */ + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + k_out = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_sclose.c b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_sclose.c new file mode 100644 index 00000000..69165e4d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/cinit_ipc_sclose.c @@ -0,0 +1,14 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Close the ressources from the server, clean state for forks. + * + */ + +int cinit_ipc_sclose(void) +{ + return 1; /* nothing to do when using message queues */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/msgq.h b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/msgq.h new file mode 100644 index 00000000..01c6e769 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/msgq.h @@ -0,0 +1,52 @@ +/* + * (c) 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * part of cinit + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +#include /* structures */ + +/*********************************************************************** + * configuration + */ + +#define MSGQ_PATHNAME "/bin/sh" /* should be on every *nix */ +#define MSGQ_TO_SERVER 'i' /* also for ftok */ +#define MSGQ_TO_CLIENT 'o' /* also for ftok */ +#define MSGQ_PERMS 0660 /* queue permissions */ + +/*********************************************************************** + * global variables + */ +int mq_in; /* input */ +int mq_out; /* output */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + pid_t pid; + struct msg_client msg; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server_short { + long mtype; + struct asw_sstatus answer; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_FTOK "ftok" +#define MSG_MSGQ_MSGGET "msgget" +#define MSG_MSGQ_MSGRCV "msgrcv" +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/objects b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/objects new file mode 100644 index 00000000..7c99d09f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/msgq/objects @@ -0,0 +1,5 @@ +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c new file mode 100644 index 00000000..88c310f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c @@ -0,0 +1,125 @@ +/* + * (c) 2005, 2006 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * create a socket, when we recieved a signal + */ +int main(int argc, char **argv) +{ + struct sockaddr_un addr; + struct pollfd plist; + char *initdir; + + list = NULL; /* list of services is empty currently */ + initdir = CINIT_INIT; /* default init dir */ + + cpid = getpid(); + if(cpid != 1) { + usage(MSG_USAGE,MSG_NOT_ONE); + } + + set_signals(ACT_SERV); /* set signal handlers */ + + /* read args, profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* tell the world we are there FIXME: do we really need three calls? */ + mini_printf(MSG_CINIT,1); mini_printf(initdir,1); mini_printf("\n",1); + + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c new file mode 100644 index 00000000..a174d78d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c @@ -0,0 +1,141 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int socket) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + while ( (nsock = accept(socket,(struct sockaddr *) NULL, + (socklen_t *) NULL)) != -1) { + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = ST_FAIL; + } else { + status = RT_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP (RESPAWNING) *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; + list_tmp = list_search(buf); + + /* FIXME: + - handle off + - handle switching off once services + - perhaps remove old cinit code, which has respawing childs + */ + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + /* kill cinit watcher, which kills the real process */ + kill(list_tmp->pid,SIGTERM); + + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + } + + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + status = ST_FAIL; + } else { /* return status */ + status = list_tmp->status; + } + } else { /* no service there */ + status = RT_NOTEXIST; + } + do_result(nsock,&status); + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + SERVICE_LOG(buf,MSG_ERR_MODIFY); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + case CMD_UPDATE: + sig_reboot(SIGCONT); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } + + /* hier kommt man haeufiger herein, interrupted system call */ + if( errno != EAGAIN && errno != EINTR) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/os/freebsd/halt.c b/software/cinit/browse_source/cinit-0.3pre4/src/os/freebsd/halt.c new file mode 100644 index 00000000..cd4dda1f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/os/freebsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/os/freebsd/objects b/software/cinit/browse_source/cinit-0.3pre4/src/os/freebsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/os/freebsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/os/freebsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre4/src/os/freebsd/poweroff.c new file mode 100644 index 00000000..61e5ef5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/os/freebsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWEROFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/os/freebsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre4/src/os/freebsd/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/os/freebsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/os/linux/halt.c b/software/cinit/browse_source/cinit-0.3pre4/src/os/linux/halt.c new file mode 100644 index 00000000..0ecf8ced --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/os/linux/halt.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * How to halt the system + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT_SYSTEM); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/os/linux/objects b/software/cinit/browse_source/cinit-0.3pre4/src/os/linux/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/os/linux/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/os/linux/poweroff.c b/software/cinit/browse_source/cinit-0.3pre4/src/os/linux/poweroff.c new file mode 100644 index 00000000..5f503678 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/os/linux/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff the system + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWER_OFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/os/linux/reboot.c b/software/cinit/browse_source/cinit-0.3pre4/src/os/linux/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/os/linux/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/os/openbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre4/src/os/openbsd/halt.c new file mode 100644 index 00000000..cd4dda1f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/os/openbsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/os/openbsd/objects b/software/cinit/browse_source/cinit-0.3pre4/src/os/openbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/os/openbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/os/openbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre4/src/os/openbsd/poweroff.c new file mode 100644 index 00000000..45168122 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/os/openbsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_HALT | RB_POWERDOWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/os/openbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre4/src/os/openbsd/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/os/openbsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/check_add_deps.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/check_add_deps.c new file mode 100644 index 00000000..c0568628 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/check_add_deps.c @@ -0,0 +1,133 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +/* FIXME: clean headers */ +#include +#include +#include /* PATH_MAX */ + +#include +#include +#include +#include +#include +#include +#include + + +#include /* PATH_MAX */ +#include /* malloc */ + +#include "cinit.h" +#include "messages.h" +#include "svc.h" + +int check_add_deps(struct listitem *svc, int type) +{ + char buf[PATH_MAX+1]; + char oldpath[PATH_MAX+1]; + struct dirent *tdirent; + struct dep *deps = NULL; + struct listitem *new_svc; + DIR *d_tmp; + + /* remember where we started */ + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_CHDIR); + return 0; + } + + mini_printf("CAD::",1); + mini_printf(svc->abs_path,1); + mini_printf("\n",1); + + /* Create path */ + strcpy(buf,svc->abs_path); + if(type == DEP_NEEDS) { + if(!path_append(buf,C_NEEDS)) return 0; + } else { + if(!path_append(buf,C_WANTS)) return 0; + } + + d_tmp = opendir(buf); + if(d_tmp == NULL) { + if(errno != ENOENT) { + print_errno(buf); + return 0; + } + return 1; /* it's fine when there's no needs */ + } + + if(chdir(buf) == -1) { /* change to needs or wants */ + print_errno(buf); + return 0; + } + + while((tdirent=readdir(d_tmp))!=NULL) { + if(*(tdirent->d_name)=='.') continue; /* ignore .* */ + + /* skip non-working directories */ + if(!path_absolute(tdirent->d_name,buf,PATH_MAX+1)) continue; + + /* FIXME: remove debug */ + mini_printf("CAD::NEW::",1); + mini_printf(svc->abs_path,1); + mini_printf("::",1); + mini_printf(buf,1); + mini_printf("\n",1); + + /* 1. create the service we depend on + * 2. initialize its dependencies + */ + if(!(new_svc = gen_svc_tree(buf))) return 0; + + /* We need ALL dependencies, as we are called only once + * per service; no need to test that first! + * + * And the other service CANNOT know anything about us yet, + * so we always add us to its list. + */ + + /* Dependencies: + * - a.needs b; add b to the list of dependencies. + * - a.needs b; add a to the list of needed by b. + * + * 1. check whether the dependency already exists + * 2. otherwise add it + * 3. do it once for needs, once for needed_by + */ + + /* create a dependency entry containing us */ + deps = dep_create(svc); + if(!deps) return 0; + + if(type == DEP_NEEDS) { + dep_entry_add(&(new_svc->needed),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->needs),deps); + } else { + dep_entry_add(&(new_svc->wanted),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->wants),deps); + } + } + if(chdir(oldpath) == -1) { + print_errno(buf); + return 0; + } + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/dep_create.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/dep_create.c new file mode 100644 index 00000000..691d66b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/dep_create.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Create dependency + */ + +#include /* NULL */ +#include /* malloc() */ +#include "svc.h" /* structs */ + +/* search for an entry by path, reverse: from end to the beginning */ +struct dep *dep_create(struct listitem *svc) +{ + struct dep *entry; + + entry = malloc(sizeof(struct dep)); + if(!entry) return NULL; + entry->svc = svc; + + return entry; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/dep_entry_add.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/dep_entry_add.c new file mode 100644 index 00000000..8bac1c1d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/dep_entry_add.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include "svc.h" + +/* + * list: pointer to the list + * new: pointer to data to insert (already filled up) + */ +int dep_entry_add(struct dep **deplist, struct dep *new) +{ + if( *deplist == NULL ) { /* new list */ + *deplist = new; + (*deplist)->prev = *deplist; + (*deplist)->next = *deplist; + } else { /* already existing */ + new->next = *deplist; /* new-> first */ + new->prev = (*deplist)->prev; /* last <- new */ + (*deplist)->prev->next = new; /* last -> new */ + (*deplist)->prev = new; /* new <- first */ + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/dep_entry_del.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/dep_entry_del.c new file mode 100644 index 00000000..ed2a627d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/dep_entry_del.c @@ -0,0 +1,37 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include /* free() */ +#include "svc.h" + +/* + * tmp: pointer to data to remove (must not be NULL) + * -> perhaps work on the pointer to the pointer? + * + * Returns either the next object or NULL if there's no next object + */ +struct dep *dep_entry_del(struct dep *del) +{ + struct dep *tmp; + + /* last service in the list */ + if(del->next == del && del->prev == del) { + tmp=NULL; + free(del); + } else { + /* remove from list */ + del->prev->next = del->next; + del->next->prev = del->prev; + tmp = del->next; + free(del); + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/dep_needs_wants_add.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/dep_needs_wants_add.c new file mode 100644 index 00000000..dba4fd7c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/dep_needs_wants_add.c @@ -0,0 +1,63 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Add all wants and needs from a specific service to dep list + */ + +#include /* NULL */ +#include "svc.h" +#include "cinit.h" /* FIXME: debug */ + +/* + * list: pointer to the list + * svc: pointer to data to the service + */ + +/* FIXME unfinished (wants) and possibly not adding all? */ +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type) +{ + + struct dep *tmp, *new, *end; + + /* first add needs, then add wants + * but only add the services, if they are still a virgin + */ + if(type == DEP_NEEDS) { + end = svc->needed; + } else { + end = svc->wanted; + } + + mini_printf("DNWA::",1); + mini_printf(svc->abs_path,1); + + /* check needs */ + tmp = end; + if(tmp != NULL) { + do { + mini_printf("::",1); + mini_printf(tmp->svc->abs_path,1); + if(((tmp->svc->status & ST_SH_ONCE) || + (tmp->svc->status & ST_SH_RESPAWN)) && + !(tmp->svc->status & ST_IN_LIST)) { + mini_printf("::(A)::",1); + new = dep_create(tmp->svc); + if(!new) return 0; + tmp->svc->status |= ST_IN_LIST; + dep_entry_add(list,new); + } + /* FIXME: go forward or backwards? + * this decision will influence starting order + * and may thereby add a minimal mount of speed enhancement */ + tmp = tmp->next; + } while(tmp != end); + } + mini_printf("\n",1); + + /* check wants */ + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/gen_svc_tree.c new file mode 100644 index 00000000..17be88dd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/gen_svc_tree.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +#include +#include "cinit.h" +#include "svc.h" + +struct listitem *gen_svc_tree(char *svc) +{ + struct listitem *li; + struct dep *deps; + + /* only do something if the service is not already known */ + if((li=list_search(svc))) return li; + + /* create a template, so other instances won't try to recreate us */ + if(!(li=svc_create(svc))) return NULL; + + /* FIXME: remove debug */ + mini_printf("gen_tree::",1); + mini_printf(svc,1); + mini_printf("\n",1); + + if(!check_add_deps(li,DEP_NEEDS)) return NULL; + if(!check_add_deps(li,DEP_WANTS)) return NULL; + + if(!li->wants && !li->needs) { + /* FIXME: remove debug */ + mini_printf("START::",1); + mini_printf(li->abs_path,1); + mini_printf("\n",1); + + deps = dep_create(li); + if(!deps) return NULL; + dep_entry_add(&svc_init,deps); + + /* mark it as being in _THE_ list */ + li->status |= ST_IN_LIST; + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_delete.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_delete.c new file mode 100644 index 00000000..10a7e218 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_delete.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "svc.h" + +/* ... */ +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if( tmp == NULL ) { + return 0; + } + + tmp->next->prev = tmp->prev; + tmp->prev->next = tmp->next; + free(tmp->abs_path); + free(tmp); + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_display_all.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_display_all.c new file mode 100644 index 00000000..65c7b3a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_display_all.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Show all list elements - mainly for debugging + */ + +#include /* NULL */ +#include "cinit.h" +#include "svc.h" + +int list_display_all() +{ + struct listitem *tmp; + + if( svc_list == NULL ) { + return 0; + } else { + tmp = svc_list; + } + + do { + mini_printf("Service: ",1); + mini_printf(tmp->abs_path,1); + mini_printf("\n",1); + tmp = tmp->prev; + } while(tmp != svc_list); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_insert.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_insert.c new file mode 100644 index 00000000..f31d4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_insert.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* malloc */ +#include /* bzero / memset */ +#include "svc.h" /* the list pointer */ + +struct listitem *list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc(sizeof(struct listitem)); + if(tmp == NULL) return NULL; + memset( tmp, '\0', sizeof(struct listitem)); + + if(svc_list == NULL) { /* list is empty, we have to init it */ + svc_list = tmp; + svc_list->next = svc_list; + svc_list->prev = svc_list; + } else { /* list has members,add this one */ + tmp->next = svc_list; /* begin after the new element */ + tmp->prev = svc_list->prev; /* change to the ex-last */ + svc_list->prev->next = tmp; /* change last element */ + svc_list->prev = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc(strlen(path) + 1); + if(tmp->abs_path == NULL) return NULL; + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_modify.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_modify.c new file mode 100644 index 00000000..4a93c41c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_modify.c @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "comm.h" /* for ST_OFF */ +#include "svc.h" /* for ST_OFF */ + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + +// D_PRINTF(path); + + tmp = list_search(path); + if( tmp == NULL ) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_search.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_search.c new file mode 100644 index 00000000..b40fae23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_search.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* NULL */ +#include /* strcmp */ +#include "cinit.h" +#include "svc.h" + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if(svc_list == NULL) { /* think positive */ + return NULL; + } else { + tmp = svc_list; + } + + do { + if(!strcmp(path, tmp->abs_path)) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_search_pid.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_search_pid.c new file mode 100644 index 00000000..a199e734 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/list_search_pid.c @@ -0,0 +1,37 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "svc.h" + +/* find service by pid, needs to be online because it is called + * by a signal handler + */ +inline struct listitem *list_search_pid(pid_t pid) +{ + struct listitem *tmp; + + if( svc_list == NULL ) { + return NULL; + } else { + tmp = svc_list; + } + + do { + if( pid == tmp->pid) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/objects b/software/cinit/browse_source/cinit-0.3pre4/src/svc/objects new file mode 100644 index 00000000..1b5fe3fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/objects @@ -0,0 +1,20 @@ +svc/gen_svc_tree.o +svc/list_delete.o +svc/list_display_all.o +svc/list_insert.o +svc/list_modify.o +svc/list_search.o +svc/list_search_pid.o +svc/svc_create.o +svc/check_add_deps.o +svc/dep_entry_add.o +svc/dep_entry_del.o +svc/tree_exec.o +svc/svc_set_status.o +svc/svc_should_respawn.o +svc/svc_needs_status.o +svc/dep_needs_wants_add.o +svc/dep_create.o +svc/svc_success.o +svc/svc_report_status.o +svc/svc_start.o diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_add_needs.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_add_needs.c new file mode 100644 index 00000000..cc03727d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_add_needs.c @@ -0,0 +1,67 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +//#include +//#include +#include "cinit.h" +#include "messages.h" + +int svc_add_needs(char *needs, char *is_needed) +{ + struct listitem *svc_needs, *svc_is_needed; + + + /* retrieve service entries in global service list */ + svc_needs = svc_is_needed = NULL; + svc_needs = list_search(needs); + svc_is_needed = list_search(is_needed); + + /* and exit if one is missing */ + if( !svc_needs || !svc_is_needed ) { + return 0; + } + + /* first add needs */ + + /* now add needed_by */ + + malloc... /* for adding */ + + if(svc->needs == NULL) { + svc->needs = neu; + } else { + svc->next = neu; + } + + /* write generic function for dependencies or even all lists */ + dep_entry_add(list_pointer,new_entry); + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members,add this one */ + tmp->after = list; /* begin after the new element */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_create.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_create.c new file mode 100644 index 00000000..85f3d940 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_create.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* strcpy */ +#include /* stat */ +#include /* stat */ +#include /* PATH_MAX */ +#include /* errno */ +#include "svc.h" /* listitem */ +#include "cinit.h" /* path_append */ + +/* checking for existence is done before! */ +/* FIXME: check heedars for conformance with POSIX */ +struct listitem *svc_create(char *svc) +{ + char buf[PATH_MAX+1]; + struct stat statbuf; + struct listitem *li; + + li = list_insert(svc,-1); + if(!li) return NULL; + + /* FIXME: add two path length checks? svc and svc+strlen(C_RESPAWN)? */ + strcpy(buf,svc); + if(!path_append(buf,C_RESPAWN)) return NULL; + + if(stat(buf,&statbuf) == -1) { + if(errno == ENOENT) { + svc_set_status(li,ST_SH_ONCE); + } else { + return NULL; + } + } else { + mini_printf("respawn: ",1); + mini_printf(li->abs_path,1); + mini_printf("\n",1); + svc_set_status(li,ST_SH_RESPAWN); + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_needs_status.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_needs_status.c new file mode 100644 index 00000000..d9d54a81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_needs_status.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return status of the needs of this service + */ + +#include /* NULL */ +#include "svc.h" /* service information */ + +// DEBUG #include "cinit.h" /* service information */ + +int svc_needs_status(struct listitem *svc) +{ + int retval = SNS_NEEDS_STARTED; + struct dep *deps = svc->needs; + +/* DEBUG mini_printf("sns: ",1); + mini_printf(svc->abs_path,1); + mini_printf("\n",1); */ + + if(deps == NULL) return SNS_NEEDS_STARTED; /* no needs, everything fine */ + + do { + /* worst case: need failed */ + if((deps->svc->status & ST_NEED_FAILD) || + (deps->svc->status & ST_ONCE_FAIL)) { + retval = SNS_NEEDS_FAILED; + break; + } + /* services are being started */ + if((deps->svc->status & ST_SH_ONCE) || + (deps->svc->status & ST_SH_RESPAWN)) { + retval = SNS_NEEDS_UNFINISHED; + } + deps = deps->next; + } while(deps != svc->needs); + + return retval; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_report_status.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_report_status.c new file mode 100644 index 00000000..4833240a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_report_status.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Tell the world what happened to the service + */ + +#include "cinit.h" /* mini_printf */ + +void svc_report_status(char *svc, char *msg, char *err) +{ + mini_printf("[Service] ",1); + mini_printf(svc,1); + mini_printf(": ",1); + mini_printf(msg,1); + if(err) { + mini_printf(" (",1); + mini_printf(err,1); + mini_printf(")",1); + } + mini_printf("\n",1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_respawn_check.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_respawn_check.c new file mode 100644 index 00000000..2ed44de8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_respawn_check.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* PATH_MAX */ +#include "svc.h" + +/* checking for existence is done before! */ +int svc_respawn_check(struct listitem *svc) +{ + char buf[PATH_MAX+1]; + + strcpy(buf,svc->abs_path); + if(!path_append(buf,C_RESPAWN)) return 0 +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_set_status.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_set_status.c new file mode 100644 index 00000000..36b61795 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_set_status.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_set_status(struct listitem *li, int status) +{ + return (li->status = status); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_should_respawn.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_should_respawn.c new file mode 100644 index 00000000..1c401024 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_should_respawn.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return whether should respawn or not + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_should_respawn(struct listitem *li) +{ + return (li->status & ST_SH_RESPAWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_start.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_start.c new file mode 100644 index 00000000..304f3077 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_start.c @@ -0,0 +1,58 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start a service + */ + +#include /* DEBUG */ + +#include /* fork */ +#include /* strerror */ +#include /* errno */ +#include /* PATH_MAX */ +#include "svc.h" /* struct * */ +#include "messages.h" /* MSG_* */ +#include "cinit.h" /* execute_sth */ + +void svc_start(struct listitem *li) +{ + char buf[PATH_MAX+1]; + + li->pid = fork(); + + if(li->pid < 0) { + svc_report_status(li->abs_path,MSG_SVC_FORK,strerror(errno)); + svc_set_status(li,ST_BAD_ERR); + return; + } + if(li->pid > 0) { + if(li->status & ST_SH_ONCE) + li->status = ST_ONCE_OK; + else + li->status = ST_RESPAWNING; + return; + } + + /* Client: FIXME: check for valid length! + * strlen(abs_path) + strlen(SLASH) + strlen(C_ON) */ + /* misuse status field (doesn't matter in fork) for strlen */ + li->status = strlen(li->abs_path); + strncpy(buf,li->abs_path,li->status); + buf[li->status] = '\0'; + printf("buf1: %s\n",buf); + printf("buf-orig: %s\n",li->abs_path); + strncat(buf,SLASH,PATH_MAX); + printf("buf2: %s\n",buf); + strncat(buf,C_ON,PATH_MAX); + printf("buf3: %s\n",buf); + + mini_printf("SS::",1); + mini_printf(li->abs_path,1); + mini_printf("::",1); + mini_printf(buf,1); + mini_printf("\n",1); + execute_sth(buf); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_success.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_success.c new file mode 100644 index 00000000..65e6284f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/svc_success.c @@ -0,0 +1,18 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include "svc.h" + +void svc_success(struct listitem *li) +{ + if(li->status & ST_SH_ONCE) + li->status = ST_ONCE_OK; + else + li->status = ST_RESPAWNING; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/svc/tree_exec.c b/software/cinit/browse_source/cinit-0.3pre4/src/svc/tree_exec.c new file mode 100644 index 00000000..245fbf20 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/svc/tree_exec.c @@ -0,0 +1,131 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + +#include /* DEBUG */ + +#include /* _exit, fork */ + +#include "cinit.h" +#include "messages.h" /* D_PRINTF */ +#include "svc.h" /* svc_init */ + +/* some thoughts... + * + * - we already generated the tree, we now need to start it from + * the ends + * + * - after starting the first service we have to care about SIG_CHILD + * to record changes + * + * - we execute all services in parallel without problems, because of + * SIG_CHILD notification + * + * - After successfully starting the service we start the service that + * need or want that service + * + * + * + */ + +int tree_exec(struct dep *start) +{ + struct dep *tmp; + + tmp = start; + + mini_printf("========> tree_exec() \n",1); + /* the main starting loop: All services in this list should be + * started, but it is possible that dependent services are in the + * list. In this case simply skip the current service + */ + do { + /* FIXME debug */ + mini_printf("TEX::",1); + mini_printf(tmp->svc->abs_path,1); + mini_printf("\n",1); + { + struct dep *tmp2; + tmp2=tmp->svc->needs; + if(tmp2) { + do { + mini_printf("::",1); + mini_printf(tmp2->svc->abs_path,1); + mini_printf("\n",1); + fprintf(stderr,"%s: <<%d>>\n",tmp2->svc->abs_path,tmp2->svc->status); + tmp2 = tmp2->next; + } while (tmp2 != tmp->svc->needs); + } + } + + switch(svc_needs_status(tmp->svc)) { + case SNS_NEEDS_STARTED: + mini_printf("abhaengigkeiten gestartet, exec; add wants, needs\n",1); + /* FIXME: execute service */ + svc_start(tmp->svc); + + /* FIXME: update status must be included in child handler! */ + //svc_success(tmp->svc); + + /* execute service, remowe from list */ + /* FIXME check return code? */ + dep_needs_wants_add(&tmp,tmp->svc,DEP_NEEDS); + dep_needs_wants_add(&tmp,tmp->svc,DEP_WANTS); + + /* delete service from list */ + tmp = dep_entry_del(tmp); + break; + case SNS_NEEDS_FAILED: + mini_printf("wer fehlgeschlagen\n",1); + /* mark service as NEED_FAILD and delete from list */ + svc_set_status(tmp->svc,ST_NEED_FAILD); + tmp = dep_entry_del(tmp); + break; + case SNS_NEEDS_UNFINISHED: + mini_printf("noch warten\n",1); + /* continue with the next item */ + tmp = tmp->next; + break; + } + +// tmp->svc->pid = fork(); + + +// if(tmp->svc->pid == -1) return 0; + + // if(tmp->svc->pid == 0) { /* child code */ + // execute_sth(tmp->svc->abs_path); +// _exit(1); + // } + + /* add the services that want or need this service to the list + * of services to be executed the next time + * + * We should add the new services at the beginning, so we + * clean the original onse first + * + * And we need to check, whether the dependencies are already + * solved. + * + * A service may be in status: + * + * - Unset (never touched) + * - Being started (passed our loop, but did not yet finish) + * - Respawning (means was started and we take care + * about it + * - failed (with reason copied, so one can reprint it later?) + * - once - started once successfully + * - need failed - not started, because need failed. perhaps + * registert which dependenc(y|ies) failed? + */ + /* FIXME: debug delay */ + //sleep(1); + } while(tmp != NULL); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/test/test_build_argv+link.c b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_build_argv+link.c new file mode 100644 index 00000000..e37169fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_build_argv+link.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec_link"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/test/test_build_argv.c b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_build_argv.c new file mode 100644 index 00000000..0b2678be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_build_argv.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec new file mode 100644 index 00000000..e5cf3f01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec @@ -0,0 +1,7 @@ +#!/bin/sh +# Nico Schottelius +# Test-skript for cinit + +echo '$0': "$0" +echo '$@': "$@" +echo 'cinit_is_great:' $cinit_is_great diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec.env b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec.env new file mode 100644 index 00000000..853e0663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec.env @@ -0,0 +1 @@ +cinit_is_great=yes diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec.params b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec.params new file mode 100644 index 00000000..afe0f2ef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec.params @@ -0,0 +1 @@ +Let's see if we read the arguments....YES! diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec_link b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec_link new file mode 120000 index 00000000..c2ec9306 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec_link @@ -0,0 +1 @@ +test_exec \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec_link.env b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec_link.env new file mode 120000 index 00000000..30ea4990 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec_link.env @@ -0,0 +1 @@ +test_exec.env \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec_link.params b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec_link.params new file mode 120000 index 00000000..0b77c256 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_exec_link.params @@ -0,0 +1 @@ +test_exec.params \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/test/test_gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_gen_svc_tree.c new file mode 100644 index 00000000..93ad54ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_gen_svc_tree.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test gen_svc_tree + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + gen_svc_tree("/etc/cinit/svc/init"); + list_display_all(); +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/test/test_openreadclose.c b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_openreadclose.c new file mode 100644 index 00000000..2f722da5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/src/test/test_openreadclose.c @@ -0,0 +1,16 @@ +#include + +int openreadclose(char *filename, char **where); + +int main() +{ + char *data; + char *file = "test_openreadclose.c"; + + openreadclose(file,&data); + + printf("%s\n",data); + + return 1; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre4/src/test_openread b/software/cinit/browse_source/cinit-0.3pre4/src/test_openread new file mode 100644 index 00000000..6e58f4c4 Binary files /dev/null and b/software/cinit/browse_source/cinit-0.3pre4/src/test_openread differ diff --git a/software/cinit/browse_source/cinit-0.3pre4/util/README b/software/cinit/browse_source/cinit-0.3pre4/util/README new file mode 100644 index 00000000..782cdc8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/util/README @@ -0,0 +1,2 @@ +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.3pre4/util/ccontrol.c b/software/cinit/browse_source/cinit-0.3pre4/util/ccontrol.c new file mode 100644 index 00000000..95bc5212 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/util/ccontrol.c @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * ccontrol: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define USAGE_TEXT "ccontrol - control cinit\n\n" \ + "Usage:\n\nccontrol -[phurs]\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-u\t- (update) Reboot (warm) and update cinit\n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n\n" \ + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * ccontrol: control cinit + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 2) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + + switch(argv[1][1]) { + case 'p': /* power off */ + LOG(MSG_POWER_OFF); + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + LOG(MSG_HALT); + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + LOG(MSG_REBOOT); + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + LOG(MSG_RESCUE); + msg_reboot(CMD_RESCUE); + break; + + case 'u': /* update */ + LOG(MSG_UPDATE); + msg_reboot(CMD_UPDATE); + break; + + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* cinit-0.2 return codes implemented - nothing changed*/ diff --git a/software/cinit/browse_source/cinit-0.3pre4/util/cservice.c b/software/cinit/browse_source/cinit-0.3pre4/util/cservice.c new file mode 100644 index 00000000..66be6563 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/util/cservice.c @@ -0,0 +1,164 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * cservice: control cinit services + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit services + */ + +#define USAGE_TEXT "cservice - start and stop cinit services\n\n" \ + "cservice -[ear] \n" \ + "\t-e\t- (ein,on ) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n" \ + "\t-r\t- (restart) stop and start a service\n" + +/*********************************************************************** + * fuzzy_path: allow other kinds of path specification .. + */ +char *fuzzy_path(char *rpath) +{ + char pathtmp[PATH_MAX]; + char *re = NULL; + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return NULL; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(rpath); + return NULL; + } + + re = malloc( strlen(pathtmp) + 1); + + if(re != NULL) { + strcpy(re,pathtmp); + } + + return re; +} + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + char *real_name = NULL; + + /* argv */ + if(argc != 3) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + if(strlen(argv[1]) != 2) C_USAGE(MSG_ERR_ARGS_LEN); + + real_name = fuzzy_path(argv[2]); + + /* fuzzy path failed, exit! */ + if(real_name == NULL) { + return 1; + } + switch(argv[1][1]) { + case 'a': /* aus */ + case 'r': /* restart */ + switch( msg_svc_on_off(real_name,CMD_STOP_SVC) ) { + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_OFF: + SERVICE_LOG(real_name,LOG_SVC_STOPED); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + /* FIX THIS AFTER cinit-0.2 */ + case RT_TMPNOW: + case RT_ERR: + case RT_SVC_FAILED: + case RT_UNSPEC: + case RT_SUCCESS: + case ST_NEED_FAIL: + case ST_TMP: + case ST_ONCE: + case RT_NOTEXIST: + case ST_RESPAWN: +// SERVICE_LOG(real_name,"Ein bekanntest ding"); + break; +/* default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; */ + } + if( argv[1][1] == 'a') break; /* only continue if restarting */ + + case 'e': /* ein */ + switch (run_svc(real_name)) { /* run_svc fuzzys itself */ + case RT_NOTEXIST: + SERVICE_LOG(real_name,LOG_SVC_NOTEXIST); + break; + case RT_SVC_FAILED: + SERVICE_LOG(real_name,LOG_SVC_FAILED); + break; + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_ONCE: + SERVICE_LOG(real_name,LOG_SVC_ONCE); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + case ST_RESPAWN: + SERVICE_LOG(real_name,LOG_SVC_RESPAWN); + break; + case ST_NEED_FAIL: + SERVICE_LOG(real_name,LOG_NEED_FAIL); + break; + default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; + } + break; + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* uses cinit-0.2 return code style */ diff --git a/software/cinit/browse_source/cinit-0.3pre4/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.3pre4/util/msg_reboot.c new file mode 100644 index 00000000..efe78ec6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre4/util/msg_reboot.c @@ -0,0 +1,21 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + if(!begin_msg(cmd)) return 0; + close(sock); + return 1; +} +/* clean for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre5/ b/software/cinit/browse_source/cinit-0.3pre5/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.3pre5/.exclude b/software/cinit/browse_source/cinit-0.3pre5/.exclude new file mode 100644 index 00000000..1a2d31e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/.exclude @@ -0,0 +1,2 @@ +tmp +.git diff --git a/software/cinit/browse_source/cinit-0.3pre5/.gitignore b/software/cinit/browse_source/cinit-0.3pre5/.gitignore new file mode 100644 index 00000000..0f53ad16 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/.gitignore @@ -0,0 +1,14 @@ +*.o +*.a +*0? +MT +ddoc +contrib+tools/cinit.graph.text +config.h +sbin +tmp +os/current +tmpbin +src/os/current +src/ipc/current +src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/CHANGES b/software/cinit/browse_source/cinit-0.3pre5/CHANGES new file mode 100644 index 00000000..c8e864ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/CHANGES @@ -0,0 +1,48 @@ +cinit-0.3pre5: + - Finished new SIGCHLD handler + - First cleanups for real release. + - This version is the first 0.3pre version that can handle respawn! + +cinit-0.3pre4: + - Re-implemented execution of services. + - This version is the first 0.3pre version that COULD bootup your system! + +cinit-0.3pre3: + - Finished execution all services via the reversed service tree. + +cinit-0.3pre2: + - Finished generation of the dependency tree. + +cinit-0.3pre1: + - cinit should now compile on mostly all unices + - introduced much new code + - THIS IS A DEVELOPER RELEASE, NOT USABLE IN PRODUCTION ENVIRONMENTS. + +cinit-0.2.1: (Bugfix release) + - Fixed problem in contrib+tools/Makefile when installing + - added many new scripts to convert sys-v-init, which are still early beta + (see bin/cinit.merge.sysvinit-debian-sid) + +cinit-0.2: + - Much more verbose error reporting + - You can now also disable 'once ran' services, + - You can restart services with csevice -r + - Online speech in German is available + - C_DELAY support - variable delay for sending SIGKILL after SIGTERM + - First /etc/csys configuration example (wasserstoff) is available + - a Mailing list was created + - Added tools to analyze cinit configuration + (cinit-vis.pl, cinit.graph.text.c) + - Added tools to import and export configuration to XML + (make.cconfig.from.xml.rb,cconfig.graph.xml.rb) + - Removed unecessary signalling + - Added many helper scripts to install services (cinit.install.service*) + - Fixed many small bugs in old helper scripts (cinit.add.getty, cinit.get-conf, ...) + - Added ccontrol, which allows to control cinit + - Added update (-u) via ccontrol + - Stripped cservice, which now "only" controls services + - Removed swapoff from cinit code, should be handled by off + - Much better error and processing descriptions + - A bit more verbose reporting + - Restructured run_svc, now with better error detection + - Removed Kernel panic, when halting system diff --git a/software/cinit/browse_source/cinit-0.3pre5/COPYING b/software/cinit/browse_source/cinit-0.3pre5/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.3pre5/CREDITS b/software/cinit/browse_source/cinit-0.3pre5/CREDITS new file mode 100644 index 00000000..b009a48c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/CREDITS @@ -0,0 +1,23 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: 2005-09-25) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete + * providing cinit-vs.pl to visualize the cinit-tree +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) +Sandro Koechli + * testing, testing and testing cinit and cinit documentation +Marcus Wagner + * building and maintaining the Debian package +Peter Portmann + * testing cinit and documentation, writing cinit.graph.text in C, other coding diff --git a/software/cinit/browse_source/cinit-0.3pre5/Changelog b/software/cinit/browse_source/cinit-0.3pre5/Changelog new file mode 100644 index 00000000..0fbf76f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/Changelog @@ -0,0 +1,10 @@ +Mo Okt 3 00:19:40 CEST 2005 + *Changelog can now be found in git database (cg-log) +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.3pre5/Makefile b/software/cinit/browse_source/cinit-0.3pre5/Makefile new file mode 100644 index 00000000..0fa0ecf4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/Makefile @@ -0,0 +1,83 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# directories and files +DDOC=ddoc +SDIRS=bin client conf comm doc generic serv util +CDIRS=contrib+tools + +# DO NOT CHANGE THIS. +SBIN=sbin +CINIT_BIN=$(SBIN)/cinit + +# targets +warn: + @cat doc/.buildwarn + +%.o: %.c + $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< + +all: sources sizecheck + +sources: + $(MAKE) -C src all + +docs: $(DDOC) bin/cdoc-man.sh + ./bin/cdoc-man.sh doc/cinit-doc > $(DDOC)/cinit.8 + ./bin/cdoc-man.sh doc/cservice-doc > $(DDOC)/cservice.8 + +$(DDOC): + mkdir $(DDOC) + +$(CSVC_OBJ) $(OBJ): $(CONFIG_H) + +$(SBIN): + mkdir $(SBIN) + +sizecheck: sources + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l src/cinit > $$FILE; cat $$FILE + @echo -n "Source size (in KiB): " + @du -s src/ | awk '{ sum+=$$1 } END { print sum }' + +clean: + $(MAKE) -C src clean + rm -f tmpbin/* + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +ccontrol: $(SBIN)/ccontrol + +$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) + $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ + $(STRIP) $@ + +install:: install-dir cinit cservice ccontrol + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + +#all install clean:: +# @for subdir in $(CDIRS); do \ +# echo "Making $@ in $$subdir"; \ +# (cd $$subdir && $(MAKE) $(MAKEFLAGS) $@) \ +# || exit 1;\ +# done; + +config: + @./bin/cinit.configure.os + @./bin/cinit.configure.tools + @./bin/cinit.configure.ipc + @touch src/.configured diff --git a/software/cinit/browse_source/cinit-0.3pre5/NEXTTODO b/software/cinit/browse_source/cinit-0.3pre5/NEXTTODO new file mode 100644 index 00000000..af4f47fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/NEXTTODO @@ -0,0 +1,31 @@ +- FIX the child handler! + * check for correct behaviour in tree_exec() + * think about howto NOT find once, if the system uses duplicated pids + -> pid reset + -> check only SH_ONCE? +- Begin documentation + * Check Makefile + * Integrate Makefile into main Makefile + * create manpage + * Write a small manual + - install + - configure + - boot (different OS) +- do not reports errors, when on or off does not exist! +- check free on dep_del! +- check that the new wants and need elements are nserted the other way round + * we go to next, elements must be put before us! +- implement do_reboot() + * so not only booting with cinit works, but also the shutdown +- define messages + a) human readable + b) binary data? + ? +- replace cinit_ipc_logon with cinit_ipc_init... +- cleanup run_svc + * NOT NECESSARY ANYMORE! + * remove run_svc? +- implement do_reboot.c + +Finally: +- test and release cinit-0.3rc1 diff --git a/software/cinit/browse_source/cinit-0.3pre5/README b/software/cinit/browse_source/cinit-0.3pre5/README new file mode 100644 index 00000000..27f07c12 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/README @@ -0,0 +1,110 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre5/ROADMAP b/software/cinit/browse_source/cinit-0.3pre5/ROADMAP new file mode 100644 index 00000000..b26ccb36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/ROADMAP @@ -0,0 +1,117 @@ +-------------------------------------------------------------------------------- +THIS DOCUMENT SHOULD VANISH AS SOON AS EVERYTHING IS FINE +-------------------------------------------------------------------------------- + +Timeline +--------- + * ~ End of October 2006: Reunderstand the code, manifest changes [DONE] + * ~ Mid of November 2006: Have a compile-able cinit [DONE] + * ~ End of November 2006: Have a testsystem booting cinit + * ~ Mid of December 2006: Have production stable cinit + - Begin with migration scripts + - publish installable pre-releases + * ~ End of December 2006: Have some generic migration scripts + - Have (different) understanable documents + * ~ Mid of January 2007: Begin official release of cinit-0.3 + + + + +Versions +--------- + +0.3: +~~~ + code: Make cinit compile again :) [DONE] + code: double check to remove Linux specific source from general tree + code: seperate ipc from the rest [DONE] + code: fix / check signal handlers + code: cleanup makefile + code: add porting code: add support for any unix in general [DONE] + code: stabilize code, remove experimenting parts + code: remove delay support, let off/off.params do that. + code: add special directory (/etc/cinit/special?) for os specific binaries + -> halt, poweroff, reboot (NOTHING MORE THEY CAN DO) + -> SHOULD NOT BE IN THE PATH + code: move production code to src/ + end user doc: add warning for special binaries and hint for r/o only + amiga alike systems + + doc: begin to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.1: + devel doc: how to write merging scripts + devel doc: merging framework: + - minimal (do not look at the current configuration, build minimal) + - use current system (slowly, may use old scripts) + - rebuilt current system (recommened) + + tools: general framework for merging + end user doc: merging old init to cinit + + code: add porting code: add support for freebsd + code: better readable output: + -> starting + [ started once ] + [ respawning ] + [ failed ] (+ REASON!) + [ needs failed ] (which ones) + + -> stopping + [ stopping ] (for dependencies) + [ stopped ] ? + [ not running ] ? + + code: export profile information (CINIT_PROFILE) + end user doc: using different profiles in user space + end user doc: write examples for profiles: + o switch ssh known_hosts based on profile + o different proxy settings in browsers + - environment + - mozilla settings + o start samba (for lan) + o start samba (for company lan) + o use nis and nfs (company profile) + + doc: continue to merge old documents into new structure and move them + to the doc/ancient directory +0.3.2: + end user doc: what to read to use cinit + end user doc: installing cinit + end user doc: configuring cinit + tools: writing cinit-config (graphical (dialog based?) configuration tool) + code: add porting code: add support for openbsd + + code: add reverse dependency chain (or earlier?) + code: better support for external tools + o neustarten + o mit herunterfahren + o mit herunterfahren und allen Diensten, die abhaengen + o ohne herunterfahren + o Statische Daten + o pid vom Daemon + o pid vom einmal ausgefuehrten Programm + + + doc: end to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.3: + devel doc: writing an init system + devel doc: the conf/-configuration system + + code: check conf/ and perhaps rewrite b0rken english sentences + + code / doc: add logging support for services -> use multilog? + code: add porting code: add support for netbsd + +0.4: + first stable, tested, well documented version. + + code: check for optimisation + + other: compare with other init systems + +0.4.x: + code: add porting code: add support for other unices diff --git a/software/cinit/browse_source/cinit-0.3pre5/TODO b/software/cinit/browse_source/cinit-0.3pre5/TODO new file mode 100644 index 00000000..e034901a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/TODO @@ -0,0 +1,276 @@ +- define how it should work (doc/braindums/big-picture.text) +- define service status in one document, so repeatition stops! + + +-------------------------------------------------------------------------------- +- rename headers/ -> includes/ +- remove client/ from top level +-------------------------------------------------------------------------------- +- write about shell scripts in system startup +- write about general behaviour (covering the death) +-------------------------------------------------------------------------------- +Generate automatic asciidoc from conf/* +-------------------------------------------------------------------------------- +Add handler for ctrl+alt+delete + * document in paths +-------------------------------------------------------------------------------- +pre-compile config: conf/* + +-------------------------------------------------------------------------------- +panic: + read configuratio from defaults/panic* + -> write execute_something before! +-------------------------------------------------------------------------------- +comm: + tmpnow: search for pid in list, + save the pid in the list, so we know whether our executer died! +-------------------------------------------------------------------------------- +Logging / cinit: + fuer unsere eigenen ausgaben auch multilog? + + Logger: shared memory? +-------------------------------------------------------------------------------- +Implement full starting logic in server? +-------------------------------------------------------------------------------- +Build full dependency tree at start? And begin from the end? +-------------------------------------------------------------------------------- +comm/*: + int read + int write + --> fuer pipes + +run_init_svc + muss alle services wissen, die gestartet werden + + start_services_with_deps + gibt pointer auf struktur zurueck + -> Anzahl Services (array!) + -> Service: + Name (Pfad) + Ergebniss + -> beim fehler, die nachricht, strerror? + http://www.opengroup.org/onlinepubs/009695399/functions/strerror.html + + +Beim starten werden needs und wants als needs behandelt, weil +jeder starter _alle_ services zurueckgeben muss. + + Ein Prozess kann maximal 512 abhaengigkeiten haben. + -> open files + + +Neues cinit: + Wenn service fehlschlaegt, wird eine Struktur zurueckgegeben. + + Diese enhaelt: + + int success = + enum { SVC_SUCCESS, SVC_FAILED, SVC_NEED_FAILED, ... } + + char *reason; + + Ausgaben nach Beendigung vom Starten des Services. + + [ on ] %s + Ergebnis + [ off ] %s + + Rekursives herunter/rauffahren +-------------------------------------------------------------------------------- +- add error handling to cinit.install.binary +- remove sigio(), create new functions: + - one for cleaning up the socket + - one for doing the communication (specify two fd's) +- put some logic around exec_svc: + o put waiting code herein -> waiting code to structure! +- cleanup serv/sig_reboot.c:7: + o implement os-specific reboot function +-------------------------------------------------------------------------------- +1. Entfernung mount +2. kommunikation ueber + 1. einen fork pro service + fork(fork) +3. Socket wird erst nach einem Signal erstellt + -> Konfiguration sollte SIGWHATEVER senden +4. Vielleicht panicen, wenn init fehlschlaegt? +-------------------------------------------------------------------------------- +Als naechstes: + +- add code do implement stopping / restarting with dependency tree + o add used_by to the list of services + o used_by should be a simple (double?) linked list +-------------------------------------------------------------------------------- +Documentation: + - Installing cinit + o compiling cinit from source + o debian / gentoo + - Configuring +-------------------------------------------------------------------------------- +Add "used" by to each service, so we can track which services to shutdown. +-------------------------------------------------------------------------------- +- perhaps use dnotify? +- recheck warm reboot +- fix cservice +- print service name or cinit: before _everything_ WE print + +TESTING: + - does cinit eat zombies? + - is the reporting ok? + - does cservice and ccontrol what's expected? + +# cinit.create.empty.service: can only be started from the bin directory + +- compile cinit static and other tools dynamically per default + +- Fix Switching services off !! +- Remove RUN_RUN_SVCs, move code to run_svc so one can determine which + services failed? + --> sequentieller ablauf! + --> parallel ablauf, struct-array mit namen und ergebnis? + --> for dep in deps/*; do fork(run_svc() ); done + -----> while(any_is_running) { sleep } + -------> array durchsuchen, ergebnis nutzen. + - ueberpruefen von wo aus run_svc() aufgerufen wird + +- Fix SIGCHILD problem: + - exec_svc wants to waitpid() itself, so SIG_CHILD makes problems + - respawn_svc: does that need to act on SIGCHLD if the master process + is still running? + - kill respawn -> sigchild cleans up, we do not get waitpid perhaps? +- remove umount code? +- remove zombies, but keep away from SIGCHILD problems +- remove mount /etc/cinit/tmp code + -> how to replace? +- fix bug in Makefile: linking happens twice +- do not kill respawing service, if off exists +- ccontrol +- manpages +- Error codes when shutting down a service? +- Delay dokumentieren +- no_kill dokumentieren +- ddoc zuendefuehren + +- remove umount, swapoff? +--> to services? + +- on.out, on.err, on.in? + -> reading/writing from/to files + +--> Wenn kein ReSPAWN und der Prozess beendet sich nicht, + dann haengt init! +- implement "no_kill" until cinit-0.2 or 0.3? + +Doku!!! + +-------------------------------------------------------------------------------- +- Source Logic issues + - remove FIXME entries (and what should be fixed, too) + - memset for timespecs? + - move umount, swapoff and remount to off of init? + -> cleanup sig_reboot.c + - run_svc: + o we have many strcat()s, perhaps save length of pathbuf and strncat at + pathtmp[strlen(pathbuf)] ? + - do we really need swapoff? +-------------------------------------------------------------------------------- +- Documentation + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml +-------------------------------------------------------------------------------- +Things I did not do and I don't know whether we have to care about: + +- Porting + - add porting code to other unices? + - like openssh guys do? + +- close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? +- logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? +-------------------------------------------------------------------------------- +[OLD BUGS] +- remove cinit watcher? + -> sig_child -> cycle through list? +- DOKU: what happens when a service does not terminate.... + und er als once drin ist +- MANPAGE! +- execve() fails -> no sleep!! +- multiple zombies sometimes - problemservices + -> zombies of respawn watchers are not caught! + -> sig_chld also therein + -> problematic due to wait for child +-doubled cinit instance + - nur einmal +- free() everything before starting child +- cservice! + - prozess nur einmal -> WARTET! cinit auch! +doku: + cservice einmal starten -> wartet auf ende + cint ersetzt init bei gentoo + an error occuerd-> verbose + multuicall probleme -> busysbox --> GIBT ES NICHT!! + ---> DOKU DAZU! mit links, doppelt links, aus test + ---> erklaeren, dass es unproblematisch ist! + +11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet + werden konnte. +11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0 + zurueckgeworfen. +11:09 < folken23> telmich: oder service allready started. +-------------------------------------------------------------------------------- +possible BUGS: + +[14:44] freelsd:cinit-0.2.2% ./sbin/cservice -e ein + +ein: No such file or directory +Bad address +: Service does not exist + +cinit-0.2.2: +USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND +root 1 96.7 0.0 1580 336 ? R 18:59 5:49 /sbin/cinit +root 2 0.0 0.0 0 0 ? SN 18:59 0:00 [ksoftirqd/0] +root 3 0.0 0.0 0 0 ? S 18:59 0:00 [watchdog/0] +root 4 0.0 0.0 0 0 ? S< 18:59 0:00 [events/0] +root 5 0.0 0.0 0 0 ? S< 18:59 0:00 [khelper] +root 6 0.0 0.0 0 0 ? S< 18:59 0:00 [kthread] +root 10 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [khubd] +root 12 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [kblockd/0] +root 99 0.0 0.0 0 0 ? S 18:59 0:00 \_ [pdflush] +root 100 0.0 0.0 0 0 ? S 18:59 0:00 \_ [pdflush] +root 102 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [aio/0] +root 727 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [kseriod] +root 101 0.0 0.0 0 0 ? S 18:59 0:00 [kswapd0] +root 800 0.0 0.0 0 0 ? S 18:59 0:00 [khpsbpkt] +root 803 0.0 0.0 0 0 ? S 18:59 0:00 [pccardd] +root 838 0.0 0.0 0 0 ? S 18:59 0:00 [kjournald] +root 1923 0.0 0.0 1584 200 ? S 18:59 0:00 /sbin/cinit +root 1924 0.0 0.3 3624 1936 tty2 Rs 18:59 0:00 \_ -zsh +root 1969 0.0 0.0 1580 320 tty2 S 19:05 0:00 \_ cservice -e 3 +root 1972 0.0 0.1 2604 828 tty2 R+ 19:05 0:00 \_ ps axuwwf +root 1945 0.0 0.0 0 0 tty2 Z 19:01 0:00 [loadkeys] +cinit: [cprofile:profile] +cinit should not be started directly, but by your kernel. +umount raus +/etc/cinit/specials/... rein + +1. Doku auf asciidoc umstellen +2. den signalhandler code fixen +3. den tempmount entfernen + +--> cinit-0.3-rc1 +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +Optimisations +------------- + +tree_exec +~~~~~~~~~ +- only check dependencies (=needs) after the basic run? diff --git a/software/cinit/browse_source/cinit-0.3pre5/TODO.doc b/software/cinit/browse_source/cinit-0.3pre5/TODO.doc new file mode 100644 index 00000000..71ed721d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/TODO.doc @@ -0,0 +1,12 @@ +- doc/user/paths.text + * finish + * add examples +- add cross-compilation howto +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cdoc-man.sh b/software/cinit/browse_source/cinit-0.3pre5/bin/cdoc-man.sh new file mode 100644 index 00000000..fc1adde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cdoc-man.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Nico Schottelius +# Date: 21-Aug-2005 +# Last Modified: - +# + +set -e + +[ $# -ne 1 ] && exit 23 + +SRC=$1 + +cd "$SRC" + +# +# Title heading +# +echo .TH $(cat "meta/name" "meta/man_section" "meta/date") + +# +# Name +# +echo .SH NAME +echo $(cat meta/name) - $(cat meta/short_description) + +# +# Synopsis +# +echo .SH SYNOPSIS +echo $(cat path) $(cat parameters) + +# +# description +# +echo .SH DESCRIPTION +echo $(cat long_description) + +# +# availability +# +for section in availability examples "see also" author; do + if [ -f "$section" ]; then + echo .SH $section | tr '[a-z]' '[A-Z]' + cat "$section" + fi +done + +# +# files +# +if [ -f files ]; then + echo .SH FILES + cat files | sed 's/\(.*\)/.IP "\1" /' +fi + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.add.dependency new file mode 100644 index 00000000..7bc9cc65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.add.dependency @@ -0,0 +1,51 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or wants Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +# adding 'wishes' for x-mas and requires for 'the mass' and 'tv' +case $DEP in + wishes|wants) DEP=$C_WANTS ;; + needs|requires) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could someone PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEP_DIR="${BASEDIR}/${SVC_A}/${DEP}" + +if [ ! -d "$DEP_DIR" ]; then + echo "$DEP_DIR does not exist, creating..." + mkdir "$DEP_DIR" + if [ $? -ne 0 ]; then + echo "Error occured due to creating directory. Exiting." + exit 1 + fi +fi + +DEST="${DEP_DIR}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.add.getty new file mode 100644 index 00000000..987a5bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.add.getty @@ -0,0 +1,75 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# Date: 2005-05-24 (Last changed: 2005-08-07) +# + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | sort -n | tail -n 1) + +[ ! "$LAST_NUMBER" ] && LAST_NUMBER=0 + +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +#echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + */mgetty) + mygetty=$getty + params="38400 tty${NUMBER}" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +# check input +if [ ! "$mygetty" ]; then + read -p "Getty to use [$mygetty]: " rgetty +fi +if [ ! "$params" ]; then + read -p "Parameters to pass [$params]: " rparams +fi +if [ ! "$params" -o ! "$mygetty" ]; then + echo "Sorry, either getty or parameters are not supplied." + exit 23 +fi + +echo -n "Creating $mygetty ($params) in $DDIR ... " +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DDIR" +ln -s "$mygetty" "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.configure.ipc b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.configure.ipc new file mode 100644 index 00000000..65190baa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.configure.ipc @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius, 2006-07-28 +# +# cinit: configure the ipc method to use +# + +HIER=$(dirname $0) +DDIR=$HIER/../src/ipc +DFILE=${DDIR}/current +IPC_METHOD=$(head -n 1 "$HIER/../conf/ipc_method") + +echo "Configure: IPC: Using \"$IPC_METHOD\" as IPC method" + +# always remove link before, as ln seems to be broken +# Doing ln -sf src/ipc/$method current twice, will create the file +# "current" _BELOW_ src/ipc/$method and not overwrite the link +# src/ipc/current + +rm -f "${DFILE}" +ln -sf "${IPC_METHOD}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.configure.mark b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.configure.mark new file mode 100644 index 00000000..aa648411 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.configure.mark @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: touch a file to mark everything configured +# 2006-08-27 +# + +echo "Configure: MK: Marking directory as configured" +touch .configured diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.configure.os b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.configure.os new file mode 100644 index 00000000..d5b8e6e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.configure.os @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups symlinks for the os +# + +DDIR=$(dirname $0)/../src/os +DFILE="$DDIR/current" +OSCONFIG=$(dirname $0)/../conf/os + +OS=$(head -n 1 "$OSCONFIG") + +echo "Configure: OS: Binaries are created for $OS ..." + +rm -f "${DFILE}" +ln -sf "${OS}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.configure.tools b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.configure.tools new file mode 100644 index 00000000..43242a01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.configure.tools @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups scripts for compiling and linking +# + +HIER=$(dirname $0) +DDIR=$HIER/../tmpbin/ +CC=$(head -n 1 "$HIER/../conf/cc") +CFLAGS=$(head -n 1 "$HIER/../conf/cflags") +LD=$(head -n 1 "$HIER/../conf/ld") +LDFLAGS=$(head -n 1 "$HIER/../conf/ldflags") +STRIP=$(head -n 1 "$HIER/../conf/strip") + +echo "Configure: CC: Creating cc, ld and strip ..." + +mkdir -p "$DDIR" +cd "$DDIR" + +echo "$CC $CFLAGS \"\$@\"" > cc +echo "$LD $LDFLAGS \"\$@\"" > ld +echo "$STRIP \"\$@\"" > strip + +# set correct permissions +chmod 0700 * diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.create.empty.service new file mode 100644 index 00000000..365c4bc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.create.empty.service @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.binary new file mode 100644 index 00000000..a368ac23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.binary @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: - +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice +"$INSTALL_PROG" sbin/ccontrol $DESTDIR/$PREFIX/sbin/ccontrol +"$INSTALL_PROG" bin/cinit.reboot $DESTDIR/$PREFIX/sbin/cinit.reboot +"$INSTALL_PROG" bin/cinit.shutdown $DESTDIR/$PREFIX/sbin/cinit.shutdown +"$INSTALL_PROG" bin/cinit.wait.for.daemon \ + $DESTDIR/$PREFIX/sbin/cinit.wait.for.daemon + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi + +# install as /sbin/shutdown, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/shutdown ]; then + ln -s $PREFIX/sbin/cinit.shutdown $DESTDIR/$PREFIX/sbin/shutdown +fi + +# install as /sbin/reboot, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/reboot ]; then + ln -s $PREFIX/sbin/cinit.reboot $DESTDIR/$PREFIX/sbin/reboot +fi diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.config-dir b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.config-dir new file mode 100644 index 00000000..c9adb70f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.config-dir @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.dir new file mode 100644 index 00000000..5e16f690 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.dir @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/sbin" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.fsck b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.fsck new file mode 100644 index 00000000..4508860a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.fsck @@ -0,0 +1,36 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 3 ]; then + echo "$(basename $0): name device filesystem-type" + exit 1 +fi + +NAME=$1 +DEVICE=$2 +FS_TYPE=$3 + +FSCK=/sbin/fsck.$FS_TYPE + +if [ ! -f "$FSCK" ]; then + echo "Missing $FSCK, abort." + exit 1 +fi + +if [ ! -e "$DEVICE" ]; then + echo "Missing $DEVICE abort." + exit 1 +fi + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME" +ln -sf "$FSCK" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON" +echo "$DEVICE" > "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.miniconf b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.miniconf new file mode 100644 index 00000000..45dcc632 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.miniconf @@ -0,0 +1,103 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: 2005-08-07 +# + + +. $(dirname $0)/cinit.read-conf + +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" +echo "" +echo "This will install a minimal cinit configuration." +echo "This configuration _SHOULD_ be able to run on _MOST_ systems." +echo "Still, it's highly EXPERIEMENTAL, use with CAUTION." +echo "" +echo "Please make sure, that" +echo " - you are using a journaling filesystem (fsck is not used)" +echo " - you have agetty, fgetty or mingetty installed" +echo " - you are runnig Linux 2.6 (sysfs is used)" +echo " - you have udev or static device nodes (you need /dev/tty*)" +echo " - getties will run on tty2-tty7, tty1 is used or logging" +echo "" +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" + +notosoftwarepatents="Please keep an eye on software patents, they are evil." +read -p "Do you really want to continue? [y/N] " notosoftwarepatents + +if [ "$notosoftwarepatents" = "y" -o "$notosoftwarepatents" = "Y" ]; then + echo "Let us try it ..." +else + echo 'Bye bye!' + exit 0 +fi + +set -e + +# Create basic layout +$(dirname $0)/cinit.install.standard-dirs + +# Install services: +# - mount root r/w +# - mount /proc +# - mount /sys +# - install getties on tty2-tty7 +# - add cleanup for /etc/mtab +# - add loopback device +# - init service + echo + +################################### mount ##################################### +# mount root read/write +$(dirname $0)/cinit.install.service.mount-root + +# - mount /proc +$(dirname $0)/cinit.install.service.mount-proc + +# - mount /sys +$(dirname $0)/cinit.install.service.mount-sys + +# mount needs everything below it +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/root" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/proc" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/sys" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" + +################################### getty ##################################### +# mount root read/write +# install getties +begin_getty=2 +end_getty=7 +i=$begin_getty + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" +while [ "$i" -le "$end_getty" ]; do + $(dirname $0)/cinit.add.getty + ln -sf "${DESTDIR}/${CINIT_DIR}/getty/$i" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" + i=$(($i+1)) +done + +################################### mtab ##################################### +# - add cleanup for /etc/mtab +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" +$(dirname $0)/cinit.install.service.cleanup-mtab +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" + +################################### lo ##################################### +# - add loopback device +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" +$(dirname $0)/cinit.install.service.network-lo +ln -sf "${DESTDIR}/${CINIT_DIR}/network/lo" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" + +# - init service + echo +# init depends on mount, getty -> everything from base-layout +$(dirname $0)/cinit.install.service.init +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" + +ln -sf "${DESTDIR}/${CINIT_DIR}/local-services/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/getty/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/network/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.cleanup-mtab b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.cleanup-mtab new file mode 100644 index 00000000..30a8dd48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.cleanup-mtab @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: cleanup mtab +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" +echo '#!/bin/sh' > "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'rm -f /etc/mtab' >>"${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'ln -s /proc/mounts /etc/mtab' \ + >> "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +chmod 0700 "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.hostname.generic b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.hostname.generic new file mode 100644 index 00000000..2d72f50e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.hostname.generic @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service, which sets the hostname +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): hostname" + exit 1 +fi + +HOSTNAME=$1 +HOSTNAME_BIN=${HOSTNAME_BIN:-/bin/hostname} + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/network/hostname" +ln -sf "$HOSTNAME_BIN" "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON" +echo "$HOSTNAME" > "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.init b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.init new file mode 100644 index 00000000..c3a10931 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.init @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +ln -sf /bin/echo "${DESTDIR}/${CINIT_DIR}/${C_INIT}/$C_ON" +echo '*** cinit initial service successfully started ***' \ + > "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.keymap.c_keymap b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.keymap.c_keymap new file mode 100644 index 00000000..235a329e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.keymap.c_keymap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install keymap from environment setting +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +if [ -z "$C_KEYMAP" ]; then + echo "Set C_KEPMAP to the wanted keymap." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" ]; then + echo "Service keymap already exists." + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find loadkeys) + +if [ $? -ne 0 ]; then + echo "Did not find binary loadkeys." + exit 1 +fi + +echo -n "Installing keymap to ${DESTDIR}/${CINIT_DIR}/local-tuning/keymap ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON" + +echo "$C_KEYMAP" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.mount-proc b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.mount-proc new file mode 100644 index 00000000..024847a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.mount-proc @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /proc +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/proc" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/proc/$C_ON" +echo proc > "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo /proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.mount-root b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.mount-root new file mode 100644 index 00000000..a1bd56ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.mount-root @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount root r/w +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# mount root read/write +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/root" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/root/$C_ON" +echo -n > "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo -o >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo remount,rw >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo / >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.mount-sys b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.mount-sys new file mode 100644 index 00000000..8c8191aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.mount-sys @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /sys +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /sys +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/sys" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/sys/$C_ON" +echo sys > "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo sysfs >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo /sys >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.network-lo b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.network-lo new file mode 100644 index 00000000..45bff6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.network-lo @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: loopback device +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/lo" +ln -sf /sbin/ifconfig "${DESTDIR}/${CINIT_DIR}/network/lo/$C_ON" +echo lo > "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo 127.0.0.1/8 >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo up >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.ntpdate.debian b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.ntpdate.debian new file mode 100644 index 00000000..2af2ee4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.ntpdate.debian @@ -0,0 +1,47 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install ntpdate +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +. /etc/default/ntpdate + +if [ -z "$NTPSERVERS" ]; then + echo "No ntp servers found, aborting" + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find ntpdate) + +if [ $? -ne 0 ]; then + echo "Did not find binary ntpdate." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" ]; then + echo "Service ntpdate already exists." + exit 1 +fi + +echo -n "Installing ntpdate to ${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON" + +for server in $NTPSERVERS; do + echo "$server" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON$C_PARAMS" +done + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.udev b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.udev new file mode 100644 index 00000000..d91f01cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.service.udev @@ -0,0 +1,64 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install udev +# Date: 2005-10-15 +# Comment: DO NOT RSYNC TO THE WRONG SIDE! +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BIN_UDEVSEND=$($(dirname $0)/cinit.path-find udevsend) +BIN_UDEVSTART=$($(dirname $0)/cinit.path-find udevstart) +BIN_SYSCTL=$($(dirname $0)/cinit.path-find sysctl) +BIN_MOUNT=$($(dirname $0)/cinit.path-find mount) +SERVICE="local-tuning/udev" + +if [ -z "$BIN_UDEVSEND" -o -z "$BIN_UDEVSTART" -o -z "$BIN_SYSCTL" -o -z "$BIN_MOUNT" ]; then + echo "Did not find a binary." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo "Installing ${SERVICE} to ${DESTDIR}/${CINIT_DIR}/ ..." + +# 0. general udev +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}" +# 1. udevmount +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/mount/udev" +ln -sf "$BIN_MOUNT" "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON" +echo "udev" > "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "-t" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "tmpfs" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "/dev" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" + +# 2. udevstart +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart" +ln -sf "$BIN_UDEVSTART" "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart/$C_ON" + +# dependencies +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/sys +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/udev + +# 3. udev to hotplug +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug" +ln -sf "$BIN_SYSCTL" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug/$C_ON" +echo "$BIN_UDEVSEND" > "${DESTDIR}${CINIT_DIR}/${SERVICE}/hotplug/$C_ON$C_PARAMS" + +$(dirname $0)/cinit.add.dependency ${SERVICE}/hotplug needs mount/proc + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.standard.init.deps b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.standard.init.deps new file mode 100644 index 00000000..dcc5cd07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.standard.init.deps @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add standard sub-configuration directories to init wants +# Date: 2005-10-11 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.standard.mounts b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.standard.mounts new file mode 100644 index 00000000..bb1fc0c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.standard.mounts @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create normal mounts +# Date: 2005-10-16 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.swap b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.swap new file mode 100644 index 00000000..84e6c928 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.swap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install swap +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +SERVICE=mount/swap + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BINARY=swapon +BINARY_PATH=$($(dirname $0)/cinit.path-find $BINARY) +if [ $? -ne 0 ]; then + echo "Did not find binary $BINARY." + exit 1 +fi + +HAS_SWAP=$(awk '$3 ~ /swap/ { print $3 }' /etc/fstab) +if [ -z "$HAS_SWAP" ]; then + echo "Seems you have no swap, service not installing" + exit 1 +fi +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo -n "Installing ${SERVICE} to ${DESTDIR}${CINIT_DIR}/${SERVICE} ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON" + +echo "-a" >> "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.merge.sysvinit-debian-sid b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.merge.sysvinit-debian-sid new file mode 100644 index 00000000..3ef0ce03 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.merge.sysvinit-debian-sid @@ -0,0 +1,137 @@ +#!/bin/sh +# Nico Schottelius +# Date: Sun Oct 16 16:57:03 CEST 2005 +# cLinux/cinit +# Automagically convert Debian-Sysv-Iinit +# THIS IS NOT CLEAN. +# THIS IS NOT EVEN INTENTED TO BE CLEAN. +# This is just a small hack, because my girlfriend wants her notebook back. + +echo "***> $(basename $0): converting Debian-Sys-V-Init" + +# read standard values, may be overwritten from outside +. $(dirname $0)/cinit.read-conf + +echo "***> Finding standard config ..." +# variables, which can be set from the outside +ROOT_DEV=${ROOT_DEV:-$(awk '$2 ~ /^\/$/ { print $1 }' /etc/fstab)} +ROOT_FSCK=${ROOT_FSCK:-$(awk '$2 ~ /^\/$/ { print $6 }' /etc/fstab)} +ROOT_FS=${ROOT_FS:-$(awk '$2 ~ /^\/$/ { print $3 }' /etc/fstab)} +RUNLEVEL=${RUNLEVEL:-$(runlevel | awk '{ print $2 }')} + +echo "***> Detecting keymap (this may take some time)" + +if [ -z "$C_KEYMAP" ]; then + echo "Please set the variable C_KEYMAP to your keymap." + echo "It is impossible to detect reliable your keymap in Debian." + exit 1 +fi + + +echo "***> Configuration" +echo "Hostname (\$HOSTNAME): $HOSTNAME" +echo "Keymap (\$C_KEYMAP): $C_KEYMAP" +echo "Root device (\$ROOT_DEV): $ROOT_DEV" +echo "Root fsck (\$ROOT_FSCK): $ROOT_FSCK" +echo "Root FS (\$ROOT_FS): $ROOT_FS" +echo "Runlevel (\$RUNLEVEL): $RUNLEVEL" +echo "Destdir: (\$DESTDIR): $DESTDIR" +echo "Config-Dir: (\$CINIT_DIR): $CINIT_DIR" +read -p "Is this correct (Y/n) " correct + +if [ "$correct" != "y" -a "$correct" != "Y" ]; then + echo "***> Abort." + exit 1 +fi + +if [ -d "${DESTDIR}${CINIT_DIR}" ]; then + echo "ERROR: Configuration already exists at ${DESTDIR}${CINIT_DIR}." + exit 1 +fi + +echo "***> Installing standard structure and dependencies" +set -e +$(dirname $0)/cinit.install.config-dir +$(dirname $0)/cinit.install.standard.dirs +$(dirname $0)/cinit.install.standard.init.deps + +echo "***> Adding mount / r/w" +$(dirname $0)/cinit.install.service.mount-root + +if [ "$ROOT_FSCK" = "1" ]; then + echo "***> Adding fsck for $ROOT_DEV ..." + $(dirname $0)/cinit.install.fsck root "$ROOT_DEV" "$ROOT_FS" + echo "***> Adding dependency" + $(dirname $0)/cinit.add.dependency mount/root needs fsck/root +else + echo "***> Skipping fsck for $ROOT_DEV ..." +fi + +echo "***> Setting up standard mounts ..." +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up hostname: $HOSTNAME" +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up keymap" +$(dirname $0)/cinit.install.service.keymap.c_keymap + +echo "***> Creating getties (tty1-8)" +for i in `seq 1 8`; do + $(dirname $0)/cinit.add.getty + + # each getty needs: + # - root r/w + $(dirname $0)/cinit.add.dependency getty/$i needs mount/root + # - hostname + $(dirname $0)/cinit.add.dependency getty/$i needs network/hostname +done + +echo "***> Enabling getties (tty2-8)" +for i in `seq 2 8`; do + # add getties to getty/ + $(dirname $0)/cinit.add.dependency getty wants getty/$i +done + +# +# Convert services: check /etc/rcS.d and /etc/rcX.d +# +echo "***> Converting services ..." +for script in $(cd /etc/rcS.d/; ls S*; cd /etc/rc${RUNLEVEL}.d/; ls S*); do + echo -n "$script: " + case $script in + # SCRIPTS READY + *ntpdate) + $(dirname $0)/cinit.install.service.ntpdate.debian + $(dirname $0)/cinit.add.dependency local-tuning/ntpdate needs network + ;; + *udev*) + $(dirname $0)/cinit.install.service.udev + + # SCRIPTS NEVER READY + *glibc.sh|*module-init-tools|*modutils|*procps.sh|*hotplug-net|*bootmisc.sh|*nviboot|*screen-cleanup|*x11-common|*sudo|*makedev|*rmnologin) + echo "Ignoring (useless)." + ;; + + # SCRIPTS NOT YET READY + *mountvirtfs|*checkroot.sh|*ifupdown-clean|*checkfs.sh|*mountall.sh|*ifupdown|*hostname*|*mountnfs.sh|*alsa|*rsync|*ssh|*fam|*cron|*gdm) + echo "converting planned later." + ;; + + # SCRIPTS LATER TO DO + *bootlogd|*keymap.sh|*hwclock*|*discover|*pppd-dns|*dns-clean|*networking|*portmap|*console-screen.sh|*urandom|*klogd|*apmd|*dbus-1|*exim4|*pcmcia|*nfs-common|*stop-bootlogd) + echo "unsupported currently (FIXME PLEASE)." + ;; + *sysklogd|*ppp|*inetd|*lpd|*aumix|*atd) + echo "unsupported (choose a better alternative)." + ;; + *initrd-tools.sh|*libdevmapper*|*hotplug) + echo "Ignoring (general or bloated script)." + ;; + *) + echo "Ignoring (unknown)" + ;; + esac +done + +echo "***> Finished." diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.path-find b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.path-find new file mode 100644 index 00000000..0d0f362b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.path-find @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: find binary in path +# Date: 2005-10-15 +# + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): searched binary" + exit 1 +fi + +binary=$1 + +# this is NOT really clean, paths can also contain spaces +for pfad in $(echo $PATH | sed 's/:/ /g'); do + fullname=$pfad/$binary + if [ -f "$fullname" ]; then + echo "$fullname" + exit 0 + fi +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.release b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.release new file mode 100644 index 00000000..c5e15859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.release @@ -0,0 +1,38 @@ +#!/bin/sh +# Nico Schottelius +# Build release tar +# Date: Sat Oct 15 21:38:29 CEST 2005 +# Last Changed: Fr Okt 28 01:24:58 CEST 2005 + + +if [ $# -ne 2 ]; then + echo $(basename $0): source-dir version + exit 1 +fi + +DIR=$1 +VERSION=$2 +OUT_NAME=cinit-${VERSION}.tar.bz2 +D_HOST=home.schottelius.org +D_BASE=www/org/schottelius/unix/www/cinit +D_DIR=${D_BASE}/archives/ +D_SOURCE=${D_BASE}/browse_source/ + +if [ ! -d "$DIR" ]; then + echo "$DIR is not a directory" + exit 1 +fi + +( cd "$DIR" && make clean ) || exit 1 + +echo "Creating bzip2 compressed tar" +tar cj -X $DIR/.exclude -f "$OUT_NAME" $DIR +chmod 0644 "$OUT_NAME" +echo "Transfering to $D_HOST" +scp "$OUT_NAME" "$D_HOST:$D_DIR" +echo "Extracting to $D_SOURCE" +ssh "$D_HOST" "tar xfj $D_DIR/$OUT_NAME -C $D_SOURCE" +echo "Correcting paranoid permissions" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type f -exec chmod 0644 {} \\;" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type d -exec chmod 0755 {} \\;" +echo "Please do not forget to update the website..." diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.remove.getty new file mode 100644 index 00000000..4950eeed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.remove.getty @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + +if [ ! "$NUMBER" ]; then + echo "There is no getty to remove." + exit 1 +fi + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r "$DDIR" +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.shutdown new file mode 100644 index 00000000..702c8a17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.shutdown @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# TODO: use ccontrol! +# 2005-05-24 (Last changed: 2005-06-18) + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -p|--power-off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " -s|--rescue: Rescue mode" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -p|--power-off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + -s|--rescue) kill -USR2 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.uml.test new file mode 100644 index 00000000..f6ea7fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.1 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG umid=cinit$$ init=/sbin/cinit" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..7f027455 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 (Last Changed: 2005-06-17) + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +PIDFILE=$1; shift +DAEMON=$1; shift + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.3pre5/client/README b/software/cinit/browse_source/cinit-0.3pre5/client/README new file mode 100644 index 00000000..0a5b8d0c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/client/README @@ -0,0 +1,2 @@ +client/ + These sources are used by the children which are spawned by cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre5/client/begin_msg.c b/software/cinit/browse_source/cinit-0.3pre5/client/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/client/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/client/connect_sock.c b/software/cinit/browse_source/cinit-0.3pre5/client/connect_sock.c new file mode 100644 index 00000000..2c2d45de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/client/connect_sock.c @@ -0,0 +1,38 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include /* memset, strcpy */ + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/client/exec_svc.c b/software/cinit/browse_source/cinit-0.3pre5/client/exec_svc.c new file mode 100644 index 00000000..f217f9e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/client/exec_svc.c @@ -0,0 +1,264 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +inline pid_t exec_svc(char *abspath, int action) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + SERVICE_LOG(abspath,LOG_SVC_FAIL); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + P_EXEC_FAILED(nargv[0]); + perror(MSG_ERR_EXECVE); + /* FIXME: remove debug, remove double printing without loosing info */ + sleep(3); /* debug */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/client/msg_change_status.c b/software/cinit/browse_source/cinit-0.3pre5/client/msg_change_status.c new file mode 100644 index 00000000..836a0fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/client/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* FIXME: change return code validation */ + +int msg_change_status(char *svc, char status, pid_t pid) +{ + if(!begin_msg(CMD_CHG_STATUS)) { + return RT_ERR_COMM; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/client/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.3pre5/client/msg_svc_on_off.c new file mode 100644 index 00000000..02948f2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/client/msg_svc_on_off.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, char action) +{ + if(!begin_msg(action)) return RT_ERR_COMM; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return RT_ERR_COMM; + return (int) do_result(sock,NULL); +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre5/client/respawn_svc.c b/software/cinit/browse_source/cinit-0.3pre5/client/respawn_svc.c new file mode 100644 index 00000000..5c350045 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/client/respawn_svc.c @@ -0,0 +1,99 @@ +/* + * (c) 2005,2006 Nico Schottelius (nico-linux at schottelius.org) + * respawn_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + D_PRINTF(abspath); + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, CMD_START_SVC) ) { + if(cpid != 0) { + D_PRINTF("sloefen"); + sleep(SLEEP_SVC); + D_PRINTF("Zuende geschlafen"); + } + } + } while(cpid); /* cpid is reset by sig_terminate() */ + + /* FIXME: put most code of sig_terminate here, look for no_kill */ + + /* start off task */ + exec_svc(abspath,CMD_STOP_SVC); + + D_PRINTF("jetzt weg"); + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/client/run_run_svcs.c b/software/cinit/browse_source/cinit-0.3pre5/client/run_run_svcs.c new file mode 100644 index 00000000..6486c76f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/client/run_run_svcs.c @@ -0,0 +1,86 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/client/run_svc.c b/software/cinit/browse_source/cinit-0.3pre5/client/run_svc.c new file mode 100644 index 00000000..7fea6a92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/client/run_svc.c @@ -0,0 +1,129 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre5/client/sig_terminate.c b/software/cinit/browse_source/cinit-0.3pre5/client/sig_terminate.c new file mode 100644 index 00000000..9b23e349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/client/sig_terminate.c @@ -0,0 +1,60 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + /* FIXME: only send SIGTERM, if not_kill does not exist */ + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + status = kill(cpid,SIGKILL); + if( status == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + D_PRINTF("muesste weg sein"); + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/comm/README b/software/cinit/browse_source/cinit-0.3pre5/comm/README new file mode 100644 index 00000000..840c9742 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/comm/README @@ -0,0 +1,3 @@ +comm/ + The communication part of cinit. + The functions are used in client and in server code. diff --git a/software/cinit/browse_source/cinit-0.3pre5/comm/do_change_status.c b/software/cinit/browse_source/cinit-0.3pre5/comm/do_change_status.c new file mode 100644 index 00000000..94b9be76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/comm/do_change_status.c @@ -0,0 +1,70 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/comm/do_result.c b/software/cinit/browse_source/cinit-0.3pre5/comm/do_result.c new file mode 100644 index 00000000..cb51161b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/comm/do_result.c @@ -0,0 +1,33 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return RT_ERR_COMM; + } + + return *value; +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre5/comm/do_svc_name.c b/software/cinit/browse_source/cinit-0.3pre5/comm/do_svc_name.c new file mode 100644 index 00000000..d427365f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/comm/do_svc_name.c @@ -0,0 +1,51 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/.README b/software/cinit/browse_source/cinit-0.3pre5/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_confdir b/software/cinit/browse_source/cinit-0.3pre5/conf/c_confdir new file mode 100644 index 00000000..091e6192 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_confdir @@ -0,0 +1,3 @@ +conf + +The directory below cinit_dir for cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_delay b/software/cinit/browse_source/cinit-0.3pre5/conf/c_delay new file mode 100644 index 00000000..dc30f147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGTERM for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_env b/software/cinit/browse_source/cinit-0.3pre5/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_halt b/software/cinit/browse_source/cinit-0.3pre5/conf/c_halt new file mode 100644 index 00000000..4eed340f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_halt @@ -0,0 +1,4 @@ +halt + +Name of the link belowe c_special, which links to the program +to be executed right before halting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_init b/software/cinit/browse_source/cinit-0.3pre5/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_needs b/software/cinit/browse_source/cinit-0.3pre5/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_off b/software/cinit/browse_source/cinit-0.3pre5/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_on b/software/cinit/browse_source/cinit-0.3pre5/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_panic b/software/cinit/browse_source/cinit-0.3pre5/conf/c_panic new file mode 100644 index 00000000..7fdb77b3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_panic @@ -0,0 +1,5 @@ +panic + +Name of the file below cinit_dir/c_confdir/ to execute on panic. +This name .params (normally panic.params) will be passed as parameters/ +argumunts to panic. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_params b/software/cinit/browse_source/cinit-0.3pre5/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_poweroff b/software/cinit/browse_source/cinit-0.3pre5/conf/c_poweroff new file mode 100644 index 00000000..5b5c9c9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_poweroff @@ -0,0 +1,4 @@ +poweroff + +Name of the link belowe c_special, which links to the program +to be executed right before powering off the system. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_reboot b/software/cinit/browse_source/cinit-0.3pre5/conf/c_reboot new file mode 100644 index 00000000..8702388f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_reboot @@ -0,0 +1,4 @@ +reboot + +Name of the link belowe c_special, which links to the program +to be executed right before rebooting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_respawn b/software/cinit/browse_source/cinit-0.3pre5/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_sock b/software/cinit/browse_source/cinit-0.3pre5/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_tmp b/software/cinit/browse_source/cinit-0.3pre5/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.3pre5/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.3pre5/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_umount b/software/cinit/browse_source/cinit-0.3pre5/conf/c_umount new file mode 100644 index 00000000..ab96b0a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_umount @@ -0,0 +1,6 @@ +umount + +Name of the file below cinit_dir/c_confdir/ to execute right before +reboot/halt/poweroff. + +It should normally be a shellscript with the OS-specific umount procedure. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/c_wants b/software/cinit/browse_source/cinit-0.3pre5/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/cc b/software/cinit/browse_source/cinit-0.3pre5/conf/cc new file mode 100644 index 00000000..b168ae6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/cc @@ -0,0 +1,3 @@ +gcc + +The c-compiler to use. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/cflags b/software/cinit/browse_source/cinit-0.3pre5/conf/cflags new file mode 100644 index 00000000..812812a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/cflags @@ -0,0 +1,3 @@ +-pipe -W -Wall -Werror -Iinclude -g + +Standard flags to pass to (g)cc. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/cinit_dir b/software/cinit/browse_source/cinit-0.3pre5/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/confdir b/software/cinit/browse_source/cinit-0.3pre5/conf/confdir new file mode 100644 index 00000000..55fb65e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/confdir @@ -0,0 +1,3 @@ +conf + +The subdirectory below /etc/cinit to be used for general configurations. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/destdir b/software/cinit/browse_source/cinit-0.3pre5/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/getty_dir b/software/cinit/browse_source/cinit-0.3pre5/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/install_directory b/software/cinit/browse_source/cinit-0.3pre5/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/install_prog b/software/cinit/browse_source/cinit-0.3pre5/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/ipc_method b/software/cinit/browse_source/cinit-0.3pre5/conf/ipc_method new file mode 100644 index 00000000..fc75e273 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/ipc_method @@ -0,0 +1,5 @@ +msgq + +The type of IPC (inter process communication) to use. +Valid values can be optained by issuing `ls src/ipc/`. + diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/ld b/software/cinit/browse_source/cinit-0.3pre5/conf/ld new file mode 100644 index 00000000..b60e4836 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/ld @@ -0,0 +1,3 @@ +gcc + +Comment missing. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/ldflags b/software/cinit/browse_source/cinit-0.3pre5/conf/ldflags new file mode 100644 index 00000000..fc214daf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/ldflags @@ -0,0 +1,3 @@ + + +No flags specified normally. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/max_delay b/software/cinit/browse_source/cinit-0.3pre5/conf/max_delay new file mode 100644 index 00000000..149fa16c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/max_delay @@ -0,0 +1,7 @@ +4 + +Maximum number of digits which may be in the delay file. +If there are more, the string "12345678901" will be cut to the +right length "1234567890". I don't think you'll ever need +a timeout greater 4 digits (9999 seconds are 166,65~ minutes, are +2 hours, 46 minutes and 39 seconds). See doc/configuring.cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/max_deps b/software/cinit/browse_source/cinit-0.3pre5/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/msgq_pathname b/software/cinit/browse_source/cinit-0.3pre5/conf/msgq_pathname new file mode 100644 index 00000000..1bef0b6b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/msgq_pathname @@ -0,0 +1,4 @@ +/bin/sh + +Used to generate an unique identifier for the message queue. +See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/msgq_to_clients b/software/cinit/browse_source/cinit-0.3pre5/conf/msgq_to_clients new file mode 100644 index 00000000..dd15808a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/msgq_to_clients @@ -0,0 +1,4 @@ +o + +This is use in ftok to generate a key_t for the message queue use to write +to the clients. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/msgq_to_server b/software/cinit/browse_source/cinit-0.3pre5/conf/msgq_to_server new file mode 100644 index 00000000..f87ae3f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/msgq_to_server @@ -0,0 +1,4 @@ +i + +This is use in ftok to generate a key_t for the message queue use to write +to the server. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/os b/software/cinit/browse_source/cinit-0.3pre5/conf/os new file mode 100644 index 00000000..ddbf8f9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/os @@ -0,0 +1,14 @@ +linux + +Select the operating system compiling for. + +Current possibilities: + + - linux + + +Currently Planned possibilities: + + - freebsd + - openbsd + - netbsd diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/p_asciidoc b/software/cinit/browse_source/cinit-0.3pre5/conf/p_asciidoc new file mode 100644 index 00000000..52485c86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/p_asciidoc @@ -0,0 +1,6 @@ +asciidoc + +The binary on your system (with or without path) which does what I expect +asciidoc todo. + +Default: asciidoc diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/p_docbooktoman b/software/cinit/browse_source/cinit-0.3pre5/conf/p_docbooktoman new file mode 100644 index 00000000..d62c9015 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/p_docbooktoman @@ -0,0 +1,6 @@ +docbook2x-man + +The binary on your system (with or without path) which converts +docbook to manpages. + +Default: docbook2x-man diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/p_docbooktotexi b/software/cinit/browse_source/cinit-0.3pre5/conf/p_docbooktotexi new file mode 100644 index 00000000..278f6805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/p_docbooktotexi @@ -0,0 +1,6 @@ +docbook2x-texi + +The binary on your system (with or without path) which converts +docbook to texinfo. + +Default: docbook2x-texi diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/prefix b/software/cinit/browse_source/cinit-0.3pre5/conf/prefix new file mode 100644 index 00000000..6b90469f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/prefix @@ -0,0 +1,5 @@ + + +Where to install cinit. Normally this will be /, but you can put it anywhere. +The subdirectory 'sbin' under this prefix must be readable by the kernel. +This is normally either empty or "/". diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/profile b/software/cinit/browse_source/cinit-0.3pre5/conf/profile new file mode 100644 index 00000000..b9104bf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/profile @@ -0,0 +1,9 @@ +cprofile: + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile:" is the standard, as +the Linux kernel eats everything in the form 'var=parm'. +The old (pre cinit-0.1) option "cprofile=" should therefore +NOT be used. + +Under Linux you tell it the bootloader like grub or LILO. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/service_categories b/software/cinit/browse_source/cinit-0.3pre5/conf/service_categories new file mode 100644 index 00000000..d632b875 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/service_categories @@ -0,0 +1,4 @@ +getty local-tuning local-services mount network remote-services + +List of directories normally created below /etc/cinit/svc/ as +'pseudo-services'. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/sleep_kill b/software/cinit/browse_source/cinit-0.3pre5/conf/sleep_kill new file mode 100644 index 00000000..b419241a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/sleep_kill @@ -0,0 +1,8 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. + +Note: This does NOT affect terminating services, they are shutdown by +their own 'off' functions. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.3pre5/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.3pre5/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/sleep_svc b/software/cinit/browse_source/cinit-0.3pre5/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/sock_queue b/software/cinit/browse_source/cinit-0.3pre5/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/strip b/software/cinit/browse_source/cinit-0.3pre5/conf/strip new file mode 100644 index 00000000..08736418 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/strip @@ -0,0 +1,3 @@ +strip -R .comment -R .note + +Strip out unecessary parts of the binaries. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/sulogin b/software/cinit/browse_source/cinit-0.3pre5/conf/sulogin new file mode 100644 index 00000000..24859afc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/sulogin @@ -0,0 +1,6 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it, if the standard panic +action fails (as specified in cinit_dir/c_confdir/panic). + +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/svcdir b/software/cinit/browse_source/cinit-0.3pre5/conf/svcdir new file mode 100644 index 00000000..087a3848 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/svcdir @@ -0,0 +1,3 @@ +svc + +Directory below /etc/cinit that contains the services. diff --git a/software/cinit/browse_source/cinit-0.3pre5/conf/version b/software/cinit/browse_source/cinit-0.3pre5/conf/version new file mode 100644 index 00000000..9f45daee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/conf/version @@ -0,0 +1,3 @@ +"0.3pre4" + +The version. diff --git a/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/Makefile b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/Makefile new file mode 100644 index 00000000..8441c90b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/Makefile @@ -0,0 +1,70 @@ +# +# (c) 2005 Peter Portmann (pp at bluewin.ch) +# cinit/contrib+tools +# +# This script is written for the clinux-System and published +# under the terms of GPL 2.0 +# +# Version: 0.2 +# clean with a single command instead of two commands. +# +# ChangeLog: +# 0.1 initial version +# +# Todo: +# +# Features: + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +DEBUG=-g -DDEBUG +#OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! +LDFLAGS= + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. -I../ +LD=gcc +STRIP=strip -R .comment -R .note + +INSTALL = install + +prefix = /usr +bindir = $(prefix)/bin + +# objects + +CLIENT=cinit.graph.text.o + +COMMUNICATION=error.o ../generic/usage.o ../generic/mini_printf.o + +OBJ=$(CLIENT) $(COMMUNICATION) + +# +PROGRAMS=cinit.graph.text +SCRIPTS=cconfig.graph.xml.rb \ + make.cconfig.from.xml.rb \ + cinit-vis.pl + +# targets +all: $(PROGRAMS) + +cinit.graph.text: $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +clean: + rm -f *.o $(PROGRAMS) + +install: all + @echo '*** Installing contrib+tools ***' + $(INSTALL) -d -m755 $(DESTDIR)$(bindir) + for bin in $(SCRIPTS) $(PROGRAMS); do \ + $(INSTALL) $$bin $(DESTDIR)/$(bindir); \ + done diff --git a/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/README b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/README new file mode 100644 index 00000000..85fa2f5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/README @@ -0,0 +1,11 @@ +contrib+tools/ + programs written by others and external tools not necessary + needed but (very) nice to have + + + cinit-vis.pl - draw an ascii graph of cinit configuration [perl] + cinit.graph.text - draw an ascii graph of cinit configuration [c] + + cconfig.graph.xml.rb - creates a xml file from a cconfig [ruby] + make.cconfig.from.xml.rb - creates a cconfig from a xml file [ruby] + diff --git a/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/README.ruby b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/README.ruby new file mode 100644 index 00000000..ed210cee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/README.ruby @@ -0,0 +1,7 @@ +The ruby tools for general cconfig [0] are written by René Nussbaumer [1]. +You can find the documentation for them at [2]. + + +[0]: http://nico.schotteli.us/papers/linux/cconfig/ +[1]: http://killerfox.forkbomb.ch/ +[2]: http://killerfox.forkbomb.ch/articles/cconfig/tools diff --git a/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/cconfig.graph.xml.rb b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/cconfig.graph.xml.rb new file mode 100644 index 00000000..d18ba422 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/cconfig.graph.xml.rb @@ -0,0 +1,117 @@ +#!/usr/bin/env ruby + +=begin + + Writes an XML-Tree for a cconfig directory + Idea by Nico Schottelius aka telmich + Implemented and (C) by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added support for binary files + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Changed checking order: symlink, directory, file. Because of + a logical bug -> directory follows symlink so, when a symlink + points to a directory no «link» element is created. + + Version 0.1 (René Nussbaumer): + * Holy hack for directory scanning (needs to be optimized) + * Hack for rexml to print out «lost» tags. This rexml sux. + + Todo: + * Optimize scanning. + * Use another xml library instead of rexml crap. + Problem: Produce dependencies -> no std-lib + + Features: + * Create a flat (no deepnes without directory) and 1:1 image + of an cconfig directory + +=end + +require 'rexml/document' +require 'base64' +require 'digest/sha1' + +require 'filemagic' + +@version = '0.3' + +def determineTarget(entry) + return 'external' if(!File.expand_path(entry).index(@initpath)) + return 'link' if(FileTest.symlink?(entry)) + return 'object' if(FileTest.directory?(entry)) + return 'attribute' if(FileTest.file?(entry)) + return 'unknown' # Should never be reached +end + +def createTree(dir, parent) + dir.each { |entry| + next if(entry =~ /^(\.|\.\.)$/) + + if(FileTest.symlink?(entry)) + e = parent.add_element('link') + + # Much fun with links + e.add_attributes( { 'name' => entry, 'target' => determineTarget(File.readlink(entry)) } ) + e.add_text(File.readlink(entry)) + elsif(FileTest.directory?(entry)) + e = parent.add_element('object') + e.add_attribute('name', entry) + + # Bad, that we need to change the directory every time. + oldPwd = Dir.pwd + Dir.chdir(entry) + createTree(Dir.new('.'), e) + Dir.chdir(oldPwd) + elsif(FileTest.file?(entry)) + e = parent.add_element('attribute') + e.add_attribute('name', entry) + if(File.stat(entry).size?) + # Yeah, we got one WITH content! W00h00, let's party. + + fm = FileMagic.new(FileMagic::MAGIC_MIME) + if(fm.file(entry) =~ /executable/) + e.add_attribute('type', 'binary') + text = File.new(entry).read + e.add_attribute('sha1', Digest::SHA1.hexdigest(text)) + e.add_text(Base64.encode64(text)) + else + e.add_text(File.new(entry).read) + end + fm.close() + end + end + } +end + + +if(!ARGV[0] || !FileTest.directory?(ARGV[0])) + puts 'You need to specify a directory' + Kernel.exit(-1) +end + +doc = REXML::Document.new + +e = doc.add_element('cconfig') +e.add_attribute('name', File.basename(ARGV[0])) +e.add_attribute('version', @version) + +@initpath = File.expand_path(ARGV[0]) +Dir.chdir(ARGV[0]) +createTree(Dir.new('.'), doc.root) + +out = '' +doc.write(out, 0, false, true) + +REXML::XMLDecl.new('1.0', 'utf-8').write($stdout) # This should automatically printed by rexml. Damn bugs. +puts '' +puts out # Workaround for a buggy rexml + diff --git a/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/cinit-vis.pl b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/cinit-vis.pl new file mode 100644 index 00000000..3956ff47 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/cinit-vis.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# (c) by Marcus Przyklink (downhill-clinux@burningchaos.org) +# written for cinit and published under GPL +# beautified a bit by Nico Schottelius +# optimized by René Nussbaumer +# Version: 0.1 + +use strict; +use warnings; + +# +# Variables for location and output +# +# cinit-directory +my $path = "/etc/cinit/"; +# started profile +my $starting_point = "init"; +# the spaces for each level (integer: amount of spaces) +my $space = 3; +# marker for need +my $need = "-->"; +# marker for want +my $want = "==>"; + +# +# main function, recursively list the components of the cinit system +# +if (@ARGV) { + if( $ARGV[0] =~ /-(h|-help)/ ) { + print "Usage: " . __FILE__ . " without parameters for standard-use (check variables in file)\n"; + print " Parameters:\n"; + print " -h for this help\n"; + print " profile-name for a profile\n"; + exit(0); + } + else { + $starting_point = $ARGV[0]; + } +} + +# +# start first instance +# +sub get_deeper { + my ($point, $tmp_counter, $need_want) = splice @_; + + print " " x ($space * $tmp_counter) . ($need_want ? $need : $want) . " " . $point . "\n"; + + opendir(DIR, "${path}${point}/needs") and + my @next_need = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + opendir(DIR, "${path}${point}/wants") and + my @next_want = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + + for(@next_need) { + get_deeper($_, $tmp_counter + 1, 1); + } + for(@next_want) { + get_deeper($_, $tmp_counter + 1, 0); + } +} + +# +# start first instance +# +get_deeper($starting_point, 0, 0); + +# +# work done, go home +# +exit(0); diff --git a/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/cinit.graph.text.c b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/cinit.graph.text.c new file mode 100644 index 00000000..bc6fb6ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/cinit.graph.text.c @@ -0,0 +1,200 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + cinit.graph.text.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.2 + + ChangeLog: + Version 0.2 (Peter Portmann): + * Not assigned link destinies are marked by (!). + * Not readable directories are marked by "directory not readable". + + Version 0.1 (Peter Portmann): + * Print of the directory structure of the contained files and links + without following the links. + + Todo: + + Features: +*/ + +//#include +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" +#include "error.h" + +#define FTW_F 1 /* file isn't a directory */ +#define FTW_D 2 /* file is a directory */ +#define FTW_DNR 3 /* not readable directory */ +#define FTW_NS 4 /* unsuccesfully stat on this file */ +#define MAX_CHAR 4096 + +/*********************************************************************** + * cinit.gaph.text - textual representation of the cinit directory + */ + +#define CSERVICE_BANNER "cinit.gaph.text - textual representatio of the cinitdirectory\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncinit.gaph.text \n" \ + "\tpath\t- cinit installationpath\n" + +typedef int EACH_ENTRY(const char *, const struct stat *, int); +typedef enum { FALSE=0, TRUE=1 } bool; + +static char dirpath[PATH_MAX]; +static int depth = 0; +static long int filecount = 0; + +static EACH_ENTRY each_entry; +static int pp_ftw(char *, EACH_ENTRY *); +static int each_getinfo(EACH_ENTRY *); + +/*********************************************************************** + * pp_ftw: file tree walk + */ +static int pp_ftw(char *filepath, EACH_ENTRY *function) +{ + int n; + + if(chdir(filepath) < 0) /* In angegebenen Pfad wechseln */ + err_msg(FATAL_SYS, "can't change to %s", filepath); + + if(getcwd(dirpath, PATH_MAX) == 0) /* Absoluten Pfadnamen ermitteln */ + err_msg(FATAL_SYS, "error using getcwd for %s", filepath); + + n = each_getinfo(function); + + return(n); +} + +/*********************************************************************** + * each_getinfo: get more info for each file. + */ +static int each_getinfo(EACH_ENTRY *function) +{ + struct stat statpuff; + struct dirent *direntz; + DIR *dirz; + int n; + char *zgr; + + if(lstat(dirpath, &statpuff) < 0) + return(function(dirpath, &statpuff, FTW_NS)); /* Error on stat */ + + if(S_ISDIR(statpuff.st_mode) == 0) + return(function(dirpath, &statpuff, FTW_F)); /* no directory */ + + /* It's a directory. + * Call function() for it. After that handel each file in the directory. */ + + if((dirz = opendir(dirpath)) == NULL) { /* Directory not readable */ + closedir(dirz); + return(function(dirpath, &statpuff, FTW_DNR)); + } + + if((n = function(dirpath, &statpuff, FTW_D)) != 0) /* return the directorydirpath */ + return(n); + + zgr = dirpath + strlen(dirpath); /* append slash to the dirpathname */ + *zgr++ = '/'; + *zgr = '\0'; + + while((direntz = readdir(dirz)) != NULL) { + /* ignor . and .. */ + if(strcmp(direntz->d_name, ".") && strcmp(direntz->d_name, "..")) { + strcpy(zgr, direntz->d_name); /* append filename after slash */ + depth++; + if(each_getinfo(function) != 0) { /* Recursion */ + depth--; + break; + } + depth--; + } + } + *(zgr-1) = '\0'; /* deleting evrything after the slash */ + + if(closedir(dirz) < 0) + err_msg(WARNING, "closedir for %s failed", dirpath); + + return(n); +} + +/*********************************************************************** + * each_entry: handling each file and build the graph step by step. + */ +static int each_entry(const char *filepath, const struct stat *statzgr, int filetype) +{ + struct stat statpuff; + static bool erstemal=TRUE; + int i; + + char link[MAX_CHAR]; + + filecount++; + if(!erstemal) { + for(i=1 ; i<=depth ; i++) + printf("%4c|", ' '); + printf("----%s", strrchr(filepath, '/')+1); + } else { + printf("%s", filepath); + erstemal = FALSE; + } + + switch(filetype) { + case FTW_F: + switch(statzgr->st_mode & S_IFMT) { + case S_IFREG: break; + case S_IFCHR: printf(" c"); break; + case S_IFBLK: printf(" b"); break; + case S_IFIFO: printf(" f"); break; + case S_IFLNK: + printf(" -> "); + if(( i=readlink(filepath, link, MAX_CHAR)) != -1) + printf("%.*s", i, link); + if(stat(filepath, &statpuff) < 0) + printf(" (!)"); + break; + case S_IFSOCK: printf(" s"); break; + default: printf(" ?"); break; + } + printf("\n"); + break; + + case FTW_D: + printf("/\n"); + break; + + case FTW_DNR: + printf("/ directory not readable\n"); + break; + + case FTW_NS: + err_msg(WARNING_SYS, "Error using 'stat' on file %s", filepath); + break; + + default: + err_msg(FATAL_SYS, "Unknown Filetype (%d) by file %s", filetype, filepath); + break; + } + + return(0); +} + +/*********************************************************************** + * main: + */ +int main(int argc, char *argv[]) +{ + if(argc != 2) + usage(CSERVICE_BANNER, USAGE_TEXT); + + exit(pp_ftw(argv[1], each_entry)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/error.c b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/error.c new file mode 100644 index 00000000..8174c702 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/error.c @@ -0,0 +1,124 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#include "error.h" +#include +#include +#include +#include +#include +#include + +#define MAX_CHAR 4096 + +int debug; /* Aufrufer von log_msg oder log_open muss debug setzen: + 0, wenn interaktiv; 1, wenn Daemon-Prozess */ + +/*---- Lokale Routinen zur Abarbeitung der Argumentliste --------------------*/ +static void msg_err(int sys_msg, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + return; +} + +static void msg_log(int sys_msg, int prio, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + if (debug) { + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + } else { + strcat(puffer, "\n"); + syslog(prio, puffer); + } + return; +} + +/*---- Global aufrufbare Fehlerroutinen -------------------------------------*/ +void err_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_err(0, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + case DUMP: + msg_err(1, fmt, az); + break; + default: + msg_err(1, "Falscher Aufruf von err_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + else if (kennung==DUMP) + abort(); /* core dump */ + exit(1); +} + +void log_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_log(0, LOG_ERR, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + msg_log(1, LOG_ERR, fmt, az); + break; + default: + msg_log(1, LOG_ERR, "Falscher Aufruf von log_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + exit(2); +} + +/*---- log_open --------------------------------------------------------------- + initialisiert syslog() bei einem Daemon-Prozess */ +void log_open(const char *kennung, int option, int facility) +{ + if (debug==0) + openlog(kennung, option, facility); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/error.h b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/error.h new file mode 100644 index 00000000..a55690fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/error.h @@ -0,0 +1,29 @@ +#ifndef ERROR_H +#define ERROR_H +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.h + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#define WARNING 0 +#define WARNING_SYS 1 +#define FATAL 2 +#define FATAL_SYS 3 +#define DUMP 4 + +void log_msg(int kennung, const char *fmt, ...); +void err_msg(int kennung, const char *fmt, ...); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/make.cconfig.from.xml.rb b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/make.cconfig.from.xml.rb new file mode 100644 index 00000000..05f35cc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/contrib+tools/make.cconfig.from.xml.rb @@ -0,0 +1,227 @@ +#!/usr/bin/env ruby + +=begin + + Create a cconfig directory based on a xml input. + (C) 2005 by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added binary file support + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Added some commandline options + * Added «level» so control the restrictivity of the program + * Added more «intelligence» to the program, to detect internal broken dependcies. + * Support «debug»-Levels. + * Print statistic at the end of the programs about warnings and errors. + + Version 0.1 (René Nussbaumer): + * Initial + + Todo: + * Use an rexml alternative + * Some cleanup + * Optimize + * Testing? + + Features: + * Create a cconfig directory based on a xml + +=end + +require 'rexml/document' +require 'getoptlong' +require 'base64' +require 'digest/sha1' + +@verbose = 0 +@level = 1 +@version = '0.3' + +@warnings = 0 +@errors = 0 +@checklist = Array.new + +def printMsg(prefix, msg) + puts '%-12s %s' % [prefix + ':', msg] +end + +def error(msg, fatal = 0) + @errors += 1 + fatal = 0 if(@level < 1) + fatal = 255 if(@level > 1 && !fatal) + printMsg(fatal != 0 ? 'PANIC' : 'ERROR', msg) + Kernel.exit(-fatal) if(fatal != 0) +end + +def warn(msg) + error(msg, 1) if(@level > 1) + @warnings += 1 + printMsg('WARNING', msg) +end + +def info(msg) + printMsg('INFO', msg) +end + +def debug(msg, verbosity = 1) + if(@verbose >= verbosity) + printMsg("DEBUG(#{verbosity})", msg) + end +end + +def createObject(name) + error("#{name} already exists.", 1) if(FileTest.exists?(name)) + begin + Dir.mkdir(name) + rescue + error("Could not create directory #{name}: #{$!}. Abort.", 7) + end + debug("Object #{File.expand_path(name)} has been created.", 4) +end + +def createAttribute(name, content = nil) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + begin + file = File.new(name, 'w') + file.print content if(content && !content.empty?) + file.close + debug("Attribute #{File.expand_path(name)} has been created", 4) + rescue + error("Could not create file #{name}: #{$!}. Skipped.") + end +end + +def createLink(name, target, type) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + error("Broken dependencies! Please take a look if #{target} exists on your system", 2) if(type == 'external' && !FileTest.exists?(target)) + if(!FileTest.exists?(target) && type != 'external') + #info("Possible break. But maybe the target #{target} does not yet exists. Checking later.") + exptarget = File.expand_path(target) + @checklist << exptarget + debug("Adding #{target} to the list of internal dependcies to check.", 2) + end + begin + error('You\'ve a system which does not support symbolic links. Abort.', 3) if(File.symlink(target, name) != 0) + rescue + error("Could not create symlink #{name} => #{target}: #{$!}.", 3) + end + debug("Link #{File.expand_path(name)} has been created", 4) +end + +def doWork(elm) + name = elm.name + attrname = elm.attributes['name'] + error("XML Tag with missing name attribute!", 5) if(!attrname) + if(name =~ /(object|cconfig)/) + if(name == 'cconfig') + if(elm.attributes['version']) + info("Found a version string: #{elm.attributes['version']}") + warn("This XML is maybe incompatible with this programm. I'm a version #{@version} script. The XML is generated with a version #{elm.attributes['version']} script. Please update.") if(elm.attributes['version'] > @version) + end + end + createObject(attrname) + if(elm.has_elements?) + pwd = Dir.pwd + Dir.chdir(attrname) + elm.each_element { |e| + doWork(e) + } + Dir.chdir(pwd) + end + elsif(name == 'attribute') + text = nil + e = nil + text = e.value if((e = elm.get_text)) + if(text && elm.attributes['type'] && elm.attributes['type'] == 'binary') + text = Base64.decode64(text) + if(Digest::SHA1.hexdigest(text) != elm.attributes['sha1']) + warn("SHA1 differs from file: #{Dir.pwd}#{attrname}") + end + end + createAttribute(attrname, text) + elsif(name == 'link') + error("link-Tag without content.", 6) if(!elm.has_text?) + error("link with missing target. Skipped.") if(!elm.attributes['target']) + createLink(attrname, elm.get_text.value, elm.attributes['target']) + end +end + +puts "This is #{File.basename(__FILE__)} v#{@version} by René Nussbaumer" +puts + +opts = GetoptLong.new( + ['--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT], + ['--level', '-l', GetoptLong::REQUIRED_ARGUMENT], + ['--version', '-V', GetoptLong::NO_ARGUMENT] +) + +opts.each { |arg,value| + case arg + when '--verbose' + @verbose += 1 + value.each_byte { |x| + if(x.chr == 'v') + @verbose += 1 + end + } + debug("Verbosity set to: #{@verbose}") + when '--level' + debug("Setting level to: #{value}", 3) + case value + when 'low' + @level = 0 + when 'normal' + @level = 1 + when 'paranoid' + @level = 2 + else + warn('Unknown level: ' + value) + end + when '--version' + Kernel.exit(0) + else + warn("Unknown option #{arg}#{value && !value.empty? ? ('with value ' + value) : ''}") + end +} + +if(!ARGV[0]) + puts 'Need at least one argument' + puts "Usage: #{__FILE__} " + Kernel.exit(1) +end + + +filedesc = $stdin + +if(ARGV[0] != '-') + filedesc = File.new(ARGV[0]) +end + +doc = REXML::Document.new filedesc + +doWork(doc.root) + +if(!@checklist.empty?) + info('Now checking all broken internal dependcies again') + broken = 0 + @checklist.each { |path| + debug("Checking #{path}.", 2) + if(!FileTest.exists?(path)) + broken += 1 + warn("Broken dependcies. #{path} does not exist. Please fix.") + end + } + info('Looks good.') if(broken == 0) + info('Bad, bad.') if(broken > 0) +end + +info("Successed. #{@warnings} warnings, #{@errors} errors") + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/.buildwarn b/software/cinit/browse_source/cinit-0.3pre5/doc/.buildwarn new file mode 100644 index 00000000..c2ac11d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/.buildwarn @@ -0,0 +1,25 @@ +**************************************************************************** +Welcome, cinit greets you. +**************************************************************************** + +Hints: +------ + - Settings used for compiling (not only) can be found in conf/* + - The boot configuration normally resides below /etc/cinit + + +Documentation +------------- +The documentation can be found in doc/: + + - doc/user/ contains documentation for users + - doc/devel/ contains documentation for developers + + +Building cinit +-------------- + + "make all" - to build cinit + "make install" - to install cinit + +**************************************************************************** diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/Makefile b/software/cinit/browse_source/cinit-0.3pre5/doc/Makefile new file mode 100644 index 00000000..e93866b5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/Makefile @@ -0,0 +1,81 @@ +# +# Makefile stolen from ccollect +# Nico Schottelius, Fri Jan 13 12:13:08 CET 2006 +# + +ASCIIDOC=asciidoc +DOCBOOKTOTEXI=docbook2x-texi +DOCBOOKTOMAN=docbook2x-man +XSLTPROC=xsltproc +XSL=/usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl + +# +# Asciidoc will be used to generate other formats later +# +MANDOCS = man/cinit.text +DOCS = $(MANDOCS) + +# +# Doku +# +HTMLDOCS = $(DOCS:.text=.html) +DBHTMLDOCS = $(DOCS:.text=.htm) + +TEXIDOCS = $(DOCS:.text=.texi) + +MANPDOCS = $(MANDOCS:.text=.man) + +DOCBDOCS = $(DOCS:.text=.docbook) + +DOC_ALL = $(HTMLDOCS) $(DBHTMLDOCS) $(TEXIDOCS) $(MANPDOCS) + +html: $(HTMLDOCS) +htm: $(DBHTMLDOCS) +info: $(TEXIDOCS) +man: $(MANPDOCS) +documentation: $(DOC_ALL) + +# +# End user targets +# +all: + @echo "----------- documentation make targets --------------" + @echo "documentation: generate HTMl, Texinfo and manpage" + @echo "html: only generate HTML" + @echo "info: only generate Texinfo" + @echo "man: only generate manpage(s)" + +install: + +# docbook gets .htm, asciidoc directly .html +%.html: %.docbook + ${XSLTPROC} -o $@ ${XSL} $< + +%.htm: %.text + ${ASCIIDOC} -n -o $@ $< + +%.docbook: %.text + ${ASCIIDOC} -n -b docbook -o $@ $< + +%.texi: %.docbook + ${DOCBOOKTOTEXI} --to-stdout $< > $@ + +%.mandocbook: %.text + ${ASCIIDOC} -b docbook -d manpage -o $@ $< + +%.man: %.mandocbook + ${DOCBOOKTOMAN} --to-stdout $< > $@ + +# +# Distribution +# +allclean: + rm -f $(DOC_ALL) + +distclean: + rm -f $(DOCBDOCS) + +# +# Be nice with the users and generate documentation for them +# +dist: distclean documentation diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/README.text b/software/cinit/browse_source/cinit-0.3pre5/doc/README.text new file mode 100644 index 00000000..46fe59fe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/README.text @@ -0,0 +1,57 @@ +cinit/doc +========= +Nico Schottelius +0.1, Initial Version from 2006-11-30 +:Author Initials: NS + +This directory contains the cinit documentation. + +Files and directories in this directory +---------------------------------------- + +ancient +~~~~~~~ +Old documents, only thought to irritate you. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +braindumps +~~~~~~~~~~ +Files I used to make the situation clear to myself. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +devel +~~~~~ +Developer related documents. Contains information for adding code, +for developing external tools to cinit or code guidelines for writing +patches to cinit. + + +logs +~~~~ +Logfiles or raw data dumps. + + +Makefile +~~~~~~~~ +The makefile used to generate the documentation. + + +man +~~~ +Manpages. + + +README.text +~~~~~~~~~~~ +This file + + +user +~~~~ +The most important part: Documentation for users (aka sysadmins, +hackers, endusers?): Explains howto install, configure, use and +debug cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/README b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/README new file mode 100644 index 00000000..45e193f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/README @@ -0,0 +1,16 @@ +Ancient +======= +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 + + +These files may be incorrect, outdated, totally wrong or even trying +to take over world dominance. + + +Why are they still there? +------------------------- + +Just because to document the early days of cinit. If you are +a software archaeologist in the year 2423, you'll be happy that +I saved those files. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/author b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/availability b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/availability new file mode 100644 index 00000000..cfb3f8a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/availability @@ -0,0 +1 @@ +cinit is currently Linux-specific. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/examples b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/examples new file mode 100644 index 00000000..1a7d2dcb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/examples @@ -0,0 +1 @@ +See http://linux.schottelius.org/cinit/#config diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/files b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/files new file mode 100644 index 00000000..4d6c0921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/files @@ -0,0 +1,5 @@ +/sbin/cinit - the init system +/sbin/cservice - control cinit +/sbin/cinit.reboot (/sbin/reboot if non-existent before) +/sbin/cinit.shutdown (/sbin/shutdown if non-existent before) +/etc/cinit - configuration directory diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/long_description b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/long_description new file mode 100644 index 00000000..18c3c082 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/long_description @@ -0,0 +1,5 @@ +cinit is a fast executing, small and simple init with support for profiles. It +minds dependencies (hard and soft, 'needs' and 'wants') and executes processes +in parallel. And it has a simple configuration, which makes many shell-scripts +unecessary (but you still could use them if you really want), which leads to +better performance and less memory using. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/meta/name new file mode 100644 index 00000000..b853da25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/meta/name @@ -0,0 +1 @@ +cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/parameters b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/parameters new file mode 100644 index 00000000..54df4727 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/parameters @@ -0,0 +1 @@ +cprofile: diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/path b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/path new file mode 100644 index 00000000..37edf339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/path @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/see also b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit.commands b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit.commands new file mode 100644 index 00000000..d34d13bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cinit.commands @@ -0,0 +1,73 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (using SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. +CMD_UPDATE: Update cinit, hot-reboot the system. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/author b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/long_description b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/long_description new file mode 100644 index 00000000..82818a93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/long_description @@ -0,0 +1 @@ +cservice controls cinit. Please use cservice -h for help. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/meta/name new file mode 100644 index 00000000..49c847bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/meta/name @@ -0,0 +1 @@ +cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/parameters b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/parameters new file mode 100644 index 00000000..605b08b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/parameters @@ -0,0 +1 @@ +[-eaphru] [thilo] diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/path b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/path new file mode 100644 index 00000000..85b0cb56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/path @@ -0,0 +1 @@ +/sbin/cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/see also b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/cservice-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/extern/README b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/extern/README new file mode 100644 index 00000000..e734d6d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/extern/README @@ -0,0 +1,2 @@ +doc/extern/ + Some things related to cinit from the outside world. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/extern/ipc.thoughts b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/extern/ipc.thoughts new file mode 100644 index 00000000..e2619d34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/extern/ipc.thoughts @@ -0,0 +1,83 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2 ), +1024 is the maximum opened file deskriptors, +minus 3 (stdin/stdout/stderr) already opened, divided +by two, because two fds needed per client. + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt, + - poweroff, + - update itself (hot-reboot) + - and to start a rescue mode (see using.rescue). + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + CONT: update + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/extern/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/extern/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/extern/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/extern/linux.kernel.eats.arguments b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/extern/linux.kernel.eats.arguments new file mode 100644 index 00000000..dbaf57d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/extern/linux.kernel.eats.arguments @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +Linux, the kernel, eats arguments +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +If you specify + + variable=value + +to the Linux kernel, the argument will NOT be passed to cinit. + +Here's the relevant code block from init/main.c of the Linux kernel: + +------------------------------------------------------------------------------- + +From init(void * unused) the function run_init_process(char *init_filename) +is called, which passes argv_init (char * argv_init[MAX_INIT_ARGS+2]) to init. + +First init_setup(char *str) resets all elements of the argv_init to NULL. + +The function unknown_bootoption(char *param, char *val) fills the +argv_init array, but only with parameters, which have no value +(val). + +The function parse_args calls unknown_bootoption with the unknown options. + +------------------------------------------------------------------------------- + +This way the profile support in all cinit versions below cinit-0.1 will +only work if you change conf/profile, because "cprofile=value" will +not be given to cinit, because it's not treated as a command line option. + +The original value "cprofile=" is replaced by "cprofile:" as of cinit-0.1. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/extern/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/extern/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/extern/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/fun-testing b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/fun-testing new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/fun-testing @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/how_it_works_internally b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/init-idea-first b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/init-idea-first new file mode 100644 index 00000000..2d677d8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/init-idea-first @@ -0,0 +1,38 @@ +- restarting/respawning + touch respawn +- dependencies + a needs started b +- clean multiply dependencies +- start & stop dependencies + start_depends + stop_depends +- parallel executation +- start and stop commands + start -> link + start_param -> parameters, like minit + stop -> link + stop_param -> parameters, like minit + + if no stop command is available, try to kill the pid we started at stop + +/startup/ + start_depends=gettys +/shutdown/ + stop_depends=power_off + + +gettys/ + start_depends=getty/1 + start_depends=getty/2 + start_depends=getty/3 + start_depends=getty/4 ... + +getty/1/ + start=/sbin/fgetty + respawn + +power_off/ + stop_depend=umount + +umount/ + stop_depend= diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/porting.to.other.os b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/porting.to.other.os new file mode 100644 index 00000000..65fdc07b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will perhaps become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/removing.zombies b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/removing.zombies new file mode 100644 index 00000000..9527e652 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + cinit in general will keep the behaviour of reaping the vestiges, + which broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/security b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/security new file mode 100644 index 00000000..f1dac591 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/security @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation, which will not accept connect() +by others than root. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console then! + +For extra parnoid settings you can do the following: + + ei # chmod 700 /etc/cinit/tmp/coala + ei # chown root:root /etc/cinit/tmp/coala diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/socket.poll_vs_o_async b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/socket.poll_vs_o_async new file mode 100644 index 00000000..477f2bff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/socket.poll_vs_o_async @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------------- +Socket: poll(2) vs. O_ASYNC, +Nico Schottelius 2005-06-22 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +0. General problem +1. O_ASYNC +2. poll(2) + + +0. General problem + +cinit has to react, as soon as there's data on the socket. + +1. O_ASYNC + +When you open a socket with O_ASYNC (or specify it with fcntl(2)) under +Linux, your process recieves the SIGIO signal from the kernel, as soon +as data is available. + +The problem is the handling of signals seems not to be serialised: + +The function, which is called on the SIGIO signal (called sigio() here) +calls other functions. Those functions way recieve SIGIO while working, +so the first data stream is not yet finished, though the next +stream is beeing read. + +This gives very nice race-conditions, which are very nice to debug. + +2. poll(2) + +poll(2) is a standard Unix-call (XPG4-UNIX), which waits a specific +timeout (or infinite time if you specify a value less that zero) for +the socket (or the fd in general) to be in a state where +data is available to read (in fact poll can do much more, but we are +not interested only in POLLIN and POLLPRI). + +While poll(2) seems to be a very bit slower than sigio it works reliable. + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/thoughts.closed b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/thoughts.closed new file mode 100644 index 00000000..91a8e080 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/ancient/thoughts.closed @@ -0,0 +1,52 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c + +7. Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. As this is not needed + currently, it's not implemented. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/README.text b/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/README.text new file mode 100644 index 00000000..c4947a13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/README.text @@ -0,0 +1,2 @@ +DO NOT READ CONTENT IN THIS DIRECTORY. +(or at least do not blame me, if you get really confused after reading it) diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/big-picture.text b/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/big-picture.text new file mode 100644 index 00000000..4426c236 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/big-picture.text @@ -0,0 +1,122 @@ +Just a small hint-file for me to see how cinit works: + + - cinit starts + * cinit executes either init or a profile + - the dependency-tree begins + + - now cinit begins to try to execute the dependencies + * first the needs (if those fail, wants are never called) + - fork() for every dependency? + +-------------------------------------------------------------------------------- +another idea: + + - cinit starts + - cinit reads the full depedency tree + * it builds n-depth trees + * it begins at the set init service (profile or init!) + * init is the first entry. always. + * read full service information (like on/off/params/respawn) + * design of each tree element: see below + - add a tree for the needs + - add a tree for the wants + - the elements have links, one service is created only once + - after the tree is created, execution begins + * begin from the bottom + * save a pointer to the last level somehow before? + +Pre calculation: + - need to act on changes (some kind of file watcher) + * need to keep status (?) + * what with now missing needs / wants? + - missing needs: shutdown now missing needs? + - simply ignore them? + - shut them down if not needed (no one has a link in needs?) + * +-------------------------------------------------------------------------------- +Sample dependency tree: + + init + / \ + needs wants + / | \ / | \ + a b c d e f + / | \ / | \ + needs needs needs END needs END + / | \ \ | | | | + b c d c f a e a +-------------------------------------------------------------------------------- +How this would be sorted:: + init: + needs: a b c + wants: d e f + a: + needs: b c d + b: + needs: c f + c: + needs: a e + d: + - + e: + needs: a + f: + - +-------------------------------------------------------------------------------- +So in this case, cinit may start services the following way: + d f + -> Wouldn't be possible in pre-calculation, because of circular dependencies. +-------------------------------------------------------------------------------- + Try a 'real' dependency tree: + a needs b c d + b needs c d + c and d do not need other stuff +-------------------------------------------------------------------------------- +Now cinit would it do the following way: + start c, start d + b will be started, as soon as c and d successfully finish + as soon as b is finished, a will be started +-------------------------------------------------------------------------------- +Now let's think about how this could look like in code... +- when we built up the tree, we have some ends (n to say) +- we can / must start starting (;-) at the end +- we would have more than one line back (z may be needed by c, i, and a) + * like in "c is needed by s, c, o" + * maxdepth counter? + * asynchronous rollback? + +--> to think more about it! +-------------------------------------------------------------------------------- + +tree elements: + * name (= path) + * on, off, +params + * respawn_delay + - -1 if not respawning + - >= 0 time to wait between restart + * status + - NOT STARTED (status on initialisation) + - RESPAWNING (running, respawning) + - RESPAWN_DELAY (waiting to respawn it) + - ONCE (started once) + * errormsg + - pointer to an error message in case of failure + * needs + - List of services we need + * wants + - List of services we want + * used_by + - List of services which use this service +-------------------------------------------------------------------------------- + +Conclusions +------------ + +cinit as the main executor +~~~~~~~~~~~~~~~~~~~~~~~~~~ +If cinit should start all services directly and manage dependencies +only internally, it will need to have build a reverse dependency tree, +so it begins starting at the end. + +cinit could execute all possible parallel running services in parallel +and open pipes to the (dumb) service executors. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/circular-dependencies.text b/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/circular-dependencies.text new file mode 100644 index 00000000..dcc91ea7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/circular-dependencies.text @@ -0,0 +1,35 @@ +What todo with circular dependencies? + a needs b + b needs a + + - try to start them? + status a: is_starting + status b: not_set + a wants b, so a service starter for b starts + status a: is_starting, waiting for b + status b: is_starting + service starter for b sees that a is needed + service starter for b sees that a is already being started + service starter for b begins to execute b + status a: is_starting, waiting for b + status b: is_starting, executing "on" + service starter b finishes + status a: is_starting, waiting for b + status b: FAILED | RESPAWN | ONCE + service a continues + b successful: execute on + b failed: register / print that we do not start, because + b failed + + -> this would only catch possible deadlocks, if the dependency + tree / status check is done dynamically + -> in case of pre-building the dep-tree this situation must + be concerned: + - start both a and b? + - or stop due to circular dependency? + + - Abort on detection of a circular dependency + * possible without pre-calculating? + - perhaps only with direct communication possible? + * pre calculate + - do not start that services? diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/coding-style b/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/coding-style new file mode 100644 index 00000000..1b164b9e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/coding-style @@ -0,0 +1,49 @@ +Coding style +============ +Nico Schottelius +0.1, for cinit, Initial version from 2006-11-13 +:Author Initials: NS + +This document describes the coding style used in cinit. + + +Indent +------ +Indent the code by 3 spaces for each level. + + +Unsorted +--------- +Linebreaks: + + +if(...) { + +} else { +} + + +do { +} while(); + +no spaces + - within braces and code "(!test)", + - before braces "if(code)" + +spaces + - after braces "if(test) return 0;" + - spaces before and after '=' (a = b); + +curly braces: + functions: + int func(int params) + { + body + } + +comments: + where necessery, do not state the obvious in comments: + + /* this code increments tmp */ + ++tmp; + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/creating-new-configurations b/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/creating-new-configurations new file mode 100644 index 00000000..a251de5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/creating-new-configurations @@ -0,0 +1,6 @@ +scripts/create_baseconfig.sh # create base +scripts/cinit.install.standard.dirs # create common categories + +- create fsck +- set hostname +- create getty(s) diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/possible_service_pre_calculation.text b/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/possible_service_pre_calculation.text new file mode 100644 index 00000000..96ec3a73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/possible_service_pre_calculation.text @@ -0,0 +1,19 @@ +- start at + * create a new service entry (if not exists) <--- + * reads needs | + - follow dependencies ------------------------ + * only if service does not yet exist! | + * read wants | + - follow dependencies ------------------------ + * only if service does not yet exist! + * create + - needed by entry in dependencies + - needs entry in service + - wanted by entry in dependencies + - wants entry in service + + * record + - (on,off)(,.env,.params)? + - alternatively put that code into service starter + * add services without further needs into a special + "begin" structure to be reused at fireing of the services? diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/possible_service_status.text b/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/possible_service_status.text new file mode 100644 index 00000000..eb0f21e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/possible_service_status.text @@ -0,0 +1,14 @@ + + - NOT_SET: this service has not yet been initialized + - RESPAWNING: happily respawning + - RESPAWN_DELAY: waiting delay before restarting + * HINT: using alarm()? + - senseful for single process service watcher + * HINT: using nanosleep()? + - senseful for per service process watcher + - NEED_FAILED + * add a (somehow terminated) list of services that failed? + * use global status to checkout which services failed? + - WANT_FAILED? + * NOT NECESSARY, it is a simple want, we do not need it. + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/registering_needs_wants.text b/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/registering_needs_wants.text new file mode 100644 index 00000000..ededbd41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/braindumps/registering_needs_wants.text @@ -0,0 +1,55 @@ +Each service has a list of services it + - needs + - is needed by + - wants + - is wanted by + + +Each entry is a service pointer. +The simplest list could look like this: + + service a: + needs: + b f g NULL + +So the needs pointer is NULL terminated: + needs = realloc(count_links) + -> how to get the count? + 0x02 + 0x + + Better: A double linked list (like the main service list)? + +Could look like: + service a: + needs: + *service + *next + *prev + +This design could also be used for wants. + +On the other hand, we've to register us at the needed/wanted service: + + service b: + needed_by: + *service + *next + *prev + + +So each service needs four pointers: + needs + needed_by + wants + wanted_by + +And on each request both lists have to be modified! + +Example: + + Service "a" adds "b" as needed: + + - add "a" needs "b" + - add "b" needed_by "a" + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/devel/README.text b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/README.text new file mode 100644 index 00000000..20524651 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/README.text @@ -0,0 +1,18 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit development documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +(cinit-)developers. + +Content +------- diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/devel/cinit-0.4.text b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/cinit-0.4.text new file mode 100644 index 00000000..61b718f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/cinit-0.4.text @@ -0,0 +1,115 @@ +cinit 0.4 - Redesign of cinit +============================================ +Nico Schottelius +0.4.0, for cinit 0.4, Initial Version from 2006-03-11 +:Author Initials: NS + + +cinit 0.2 ran fine and the general project of developing a +parallel executing init system is finished. +With cinit 0.4 there are new aims to reach. + + +Introduction +------------ + +. AIMS + - portability: no Linux-dependency anymore + - cleaner signal handling + - better documentation so more people can use it + + +Current problems +---------------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The mount(2) system call is os-specific. +The temporary fs is os-specific. + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Race conditions when multiple signals arrive + + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +serv/sig_reboot.c contains umount, remount hard coded. + + +Solutions +--------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Remove +- the mount call +- do not create an initial socket + +Wait until we recieve a signal, then we create a socket +under the configured socket directory (see `conf/sockdir`). + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +Misc +~~~~ + +- Configuration + /etc/cinit/config/ + init -> link to initial service + pre_boot + pre_boot_args + post_boot + post_boot_args + /etc/cinit/services/ + /etc/cinit/profiles/ + links to the starting services + + + +cinit - Internals +================= +Nico Schottelius +0.1 for cinit-0.3, Initial version: So Feb 19 10:25:46 CET 2006 +:Author Initials: NS + + +Introduction +------------ +This document describes the internals of cinit. It is thought +to be read by developers. + + +Child handler code in cinit-0.3 +------------------------------- + +In cinit versions <= cinit-0.2.1 the respawning services where +handled by an extra child handler, which was a fork of cinit. This +had some problems: + + - We allocated more memory than necessary, unecessary parts of + cinit were copied + - The SIG_CHILD-handler was not written very clean, in some versions + it was completly missing. + + +. So in `cinit-0.3` we changed it the following way: + - no extra child handlers + - handle everything in the SIG_CHILD handling function + - when sig_child is recieved do: + - check against respawn list + - if it is a respawning service, [do the following in a seperate fork?] + check whether it successfully stoped + - if yes: restart immediatly + - if no: sleep $sleep_time and then restart diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/devel/communication.text b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/communication.text new file mode 100644 index 00000000..82f77774 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/communication.text @@ -0,0 +1,221 @@ +cinit - communication +===================== +Nico Schottelius +0.1 for cinit-0.3, Initial version: 2006-08-11 +:Author Initials: NS + +This document describes the internal communication of cinit. +It is thought to be read by developers. + + +Introduction +------------ +This document describes the messages used between cinit, cinit forks +and other programs that want to talk to cinit. It does NOT +describe the communication method, but only the messages sent +(for the communication method read "ipc.text"). + +Document status +~~~~~~~~~~~~~~~ +This document is still being written, it is not finished. + + +About Messages +-------------- + +Order +~~~~~ +The client always initiates the communication. +cinit will begin listening to messages directly after its start. + +Data +~~~~~ +A message always conists of a predefined structure (see src/headers/comm.h). +The byte order is host specific (may be little or big endian). + + +The messages +------------ +The client always uses the same structure (struct msg_client) to contact +cinit. This way cinit does not need to handle dynamic data structures. + +cinit in contrast delivers different data structures to its clients, +depending on the question. + +The questions are issued by any type of client, the internal command used is +noted in square brackets ([]). + +The answers are given by cinit. + + +Question: Start a service (and its dependencies) [CMD_START_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to start the service and its dependencies. + +The client must provide cinit with the following information: +. Name of the service to be started +. Reason why to start it +. eventually additional information (see below) + +The reason +^^^^^^^^^^ +Can be one of: +- RS_NONE (it's a manual start request) +- RS_WANTS (a currently starting service wants to start this service) +- RS_NEEDS (a currently starting service needs to start this service) + +If the reason is RS_WANTS or RS_NEEDS the client must supply the name +of the service, which wants it to be started. + + +Question: Start a service (nothing else) [CMD_START_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to start the service and which will +report the status back. + + +Question: Stop a service (and its dependencies) [CMD_STOP_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to stop the service and each service +that 'needs' it. + +This function works recursively, thus also killing those services, that +need the service that need the current service. + + +Question: Stop a service (nothing else) [CMD_STOP_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to stop this service and which will +report the status back. + + +Question: Stop a service (plus 'needs' and 'wants') [CMD_STOP_SVC_WANTS] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Same as 'Stop a service (and its dependencies)', but also stop the +services that want to have this service. + +This function works recursively, thus also killing those services, that +'need' or 'want' the service that 'need' or 'want' the current service. + + +Question: Could you change the status? [CMD_CHG_STAT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A cinit fork reports the new status of a service. + + +Question: Could you start the rescue mode? [CMD_RESCUE] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +spawn the rescue program. + + +Question: Could you halt the system? [CMD_HALT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +halt the system. + + +Question: Could you reboot the system? [CMD_REBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +reboot the system. + + +Question: Could you poweroff the system? [CMD_POWEROFF] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +poweroff the system. If poweroff is not possible, the system will +be halted. + + +Question: Could you warmboot the system? [CMD_WBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +restart itself and the bootup process. + + +Question: Could you send information about a service? [CMD_INFO] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will respond with detailled information about the service +to the client. + + +Answer: Return short status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Start a service (and its dependencies) + - Question: Start a service (nothing else) + - Question: Stop a service (and its dependencies) + - Question: Stop a service (nothing else) + - Question: Stop a service (plus 'needs' and 'wants') + - Question: Could you change the status? + +cinit only responds the status of the asked service. +The structure send is "asw_sstatus", which only include a status byte. + + +Answer: Return long status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Could you send information about a service? + + +old Messages (to be transferred into this document) +--------------------------------------------------- + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Service status: + +-------------------------------------------------------------------------------- +service status (cinit), +Nico Schottelius 2005-09-29 (Last Modified: -) +-------------------------------------------------------------------------------- + +There are service status and service returns. Service status is a status +a service can have. A service return is a value from a function that +describes what happened with the service. + +Status has ST_ prefix, return has RT_ prefix. +See cinit.h for most up to date versions. + + +ST_NEED_FAIL - this service will not be started, until the needs are started +ST_FAIL - this service failed to start +ST_UNSPEC - some unknown error. This should never happen. +ST_ERR - ??? /* tried earlier, service failed, won't retry */ + +ST_SUCCESS - service was successfully started - senseful? +ST_TMP - some instance is currently working on it +ST_ONCE - executed once sucessfully +ST_RESPAWN - service is running and respawning + +ST_TMPNOW 55 /* now you are on it - only for clients */ +#define ST_OFF 56 /* Switching service off */ + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/devel/configuring.text b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/configuring.text new file mode 100644 index 00000000..405a4d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/configuring.text @@ -0,0 +1,18 @@ +cinit/doc/devel/using-conf.text +================================ +Nico Schottelius +0.1, Initial Version from 2006-07-28 +:Author Initials: NS + +About conf/* and how to use the configurations. + +Introduction +------------ + +Who should read those documents? +-------------------------------- + +Content +------- + + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/devel/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/cross-compiling.text new file mode 100644 index 00000000..fdf70564 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/cross-compiling.text @@ -0,0 +1,36 @@ +TODO: + - merge into "Cross compiling" + +cinit - Problems that may arise +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Max open files + OS dependent + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/devel/ipc.text b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/ipc.text new file mode 100644 index 00000000..7013a985 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/ipc.text @@ -0,0 +1,108 @@ +IPC - in cinit and in general +============================= +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +IPC - Inter process communication + +Introduction +------------ +This document describes the IPC methods used and/or tested for +cinit. + +It does not describe in detail, how the different methods work +(this is already done many times, there's great documentation +available online), but more the advantages and disadvantages +(especially for an init system). + +What is IPC? +~~~~~~~~~~~~ +IPC describes methods to communicate between different processes +(programs). + +IPC as described by SUSV3 (The Single UNIX Specification Version 3) +aka IEEE Std 1003.1, 2004 Edition aka POSIX only defines +MSQ, SHM and Semaphores as IPC. This document also covers +Sockets and FIFOs. + + +What is not (yet) covered by this document? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Speed of different IPC methods, different behaviour on different +unices. + + +Why do you need IPC for an init system? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +cinit IPC history + analysis +---------------------------- + + +FIFOs +~~~~~ +First in - first out +File on the filesystem +Always need two files for two way communication + +Hints +^^^^^ +The first idea for IPC in cinit was to use two FIFOs, like minit does. +Wrong assumption: +runit also uses fifos, but two fifos for each services. That way +more parallel transmissions is possible. +You have to pay attention: Maximum number of opened files! +(On Linux 2.6 this is 1024, which makes a maximum of 512 services. +This limit is most likely never reached, but you have to keep it +in mind). + +Sockets +~~~~~~~ +Clean and beautiful. They allow easy two way communication. + +If you created a socket, fs is r/o, you cannot use it, although +there is SO_REUSE. + +First method: Using memory mapped part (tmpfs). +Second method: use interal communication (pipes!) and external after +/etc/cinit/ becomes writable. + + +Current IPC configuration +-------------------------- + +- switchable (conf/ipc_method) +- each ipc implementation needs: + + ipc.h -> for global variables and ipc specific things + prefix variables with ipc_ + int cinit_ipc_init(void); -> general initialization + return 1 on success, 0 on failure + int cinit_ipc_listen(void); -> begin to listen for messages + int cinit_ipc_send(void *data) -> send data to a client + +-------------------------------------------------------------------------------- +TO SORT: + +1. message queues + o clients schreiben rein + o datenpaket gross genug fuer antwort? + +2. shared memory + o client kann direkt rauslesen, was gestartet werden muss + o client kann direkt abhaengigkeiten starten, muss diese aber + eintragen + +Ausprobieren: + - Mutexe + - Message Queues + - + +Ideen: + Message queue + 1. Client geht auf die normale + als id = pid (cast!) + dann rueck via anderer queue + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/devel/lists.text b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/lists.text new file mode 100644 index 00000000..6360acb3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/lists.text @@ -0,0 +1,22 @@ +Lists in cinit-0.3 are generalized, all have the same general layout: + + - double linked + - have 'prev' and 'next' as pointers + + Add an element to a list + + /--------------------------\ + |<->first<->middle<->last<->| + + + After insert: + + /-------------------------------\ + |<->first<->middle<->last<->new<->| + + We alway have 'first'. + Need to adjust: + - new->prev = last (= first->next) + - new->next = first + - first->prev = new + - first->prev->next (= last->next) = new diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/devel/merging.other.initsystems.text b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/merging.other.initsystems.text new file mode 100644 index 00000000..0baa4789 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/merging.other.initsystems.text @@ -0,0 +1,68 @@ +TODO: + - rewrite to asciidoc + - implement a sample merge + +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not mean that he does not accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated! + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/devel/testing.text b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/testing.text new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/devel/testing.text @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/logs/2006-10-25.config.wasserstoff b/software/cinit/browse_source/cinit-0.3pre5/doc/logs/2006-10-25.config.wasserstoff new file mode 100644 index 00000000..f28bd71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/logs/2006-10-25.config.wasserstoff @@ -0,0 +1,16 @@ +[17:12] wasserstoff:svc# pwd +/etc/cinit/svc +[17:12] wasserstoff:svc# ls +init +17:12] wasserstoff:svc# mkdir getty +[17:12] wasserstoff:svc# mkdir getty/2/ +[17:12] wasserstoff:svc# cd getty/2 +[17:12] wasserstoff:2# ln -s /sbin/getty on +17:12] wasserstoff:2# echo 38400 > on.params +[17:13] wasserstoff:2# echo tty2 >> on.params +[17:13] wasserstoff:2# cd ../../init +[17:14] wasserstoff:init# mkdir needs +[17:14] wasserstoff:init# cd needs +[17:14] wasserstoff:needs# ln -s ../../getty/2 getty-2 +[17:14] wasserstoff:needs# + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/logs/2006-11-22.startup-with-debug b/software/cinit/browse_source/cinit-0.3pre5/doc/logs/2006-11-22.startup-with-debug new file mode 100644 index 00000000..44121cf4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/logs/2006-11-22.startup-with-debug @@ -0,0 +1,55 @@ +[0:08] wasserstoff:cinit-0.3pre3% ./src/cinit +cinit-0.3pre3: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty:: +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2:: +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout:: +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3:: +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning:: +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount:: +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root:: +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network:: +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0:: +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback:: +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::/etc/cinit/svc/init +========> tree_exec() +/etc/cinit/svc/local-tuning/keyboard-layout:::abhaengigkeiten gestartet, exec; add wants, needsdep_needs_wants_add::/etc/cinit/svc/local-tuning/keyboard-layout add: (/etc/cinit/svc/getty/2) + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/logs/2006-11-30.startup-0.3pre5 b/software/cinit/browse_source/cinit-0.3pre5/doc/logs/2006-11-30.startup-0.3pre5 new file mode 100644 index 00000000..2ded7712 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/logs/2006-11-30.startup-0.3pre5 @@ -0,0 +1,1821 @@ +cinit-0.3pre4: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2 +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3 +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0 +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/test +gen_tree::/etc/cinit/svc/test +CAD::/etc/cinit/svc/test +CAD::NEW::/etc/cinit/svc/test::/etc/cinit/svc/test/env +gen_tree::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +START::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test +CAD::/etc/cinit/svc/init +========> tree_exec() +TEX::/etc/cinit/svc/local-tuning/keyboard-layout +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout::/etc/cinit/svc/getty/2::(A)::::/etc/cinit/svc/getty/3::(A)::::/etc/cinit/svc/local-tuning::(A):: +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout +TEX::/etc/cinit/svc/mount/root +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +DNWA::/etc/cinit/svc/mount/root::/etc/cinit/svc/mount::(A):: +DNWA::/etc/cinit/svc/mount/root +TEX::/etc/cinit/svc/network/eth0 +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +DNWA::/etc/cinit/svc/network/eth0::/etc/cinit/svc/network::(A):: +DNWA::/etc/cinit/svc/network/eth0 +TEX::/etc/cinit/svc/network/loopback +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +DNWA::/etc/cinit/svc/network/loopback::/etc/cinit/svc/network +DNWA::/etc/cinit/svc/network/loopback +TEX::/etc/cinit/svc/test/env +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +DNWA::/etc/cinit/svc/test/env::/etc/cinit/svc/test::(A):: +DNWA::/etc/cinit/svc/test/env +TEX::/etc/cinit/svc/getty/2 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/2/on +CBA::/etc/cinit/svc/getty/2/on +DNWA::/etc/cinit/svc/getty/2::/etc/cinit/svc/getty::(A):: +DNWA::/etc/cinit/svc/getty/2 +TEX::/etc/cinit/svc/getty/3 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/3/on +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +DNWA::/etc/cinit/svc/getty/3::/etc/cinit/svc/getty +DNWA::/etc/cinit/svc/getty/3 +TEX::/etc/cinit/svc/local-tuning +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +/etc/cinit/svc/local-tuning/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/local-tuning::/etc/cinit/svc/init::(A):: +DNWA::/etc/cinit/svc/local-tuning +TEX::/etc/cinit/svc/mount +::/etc/cinit/svc/mount/root +/etc/cinit/svc/mount/root: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +/etc/cinit/svc/mount/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/mount::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/mount +TEX::/etc/cinit/svc/network +::/etc/cinit/svc/network/eth0 +/etc/cinit/svc/network/eth0: <<16>> +::/etc/cinit/svc/network/loopback +/etc/cinit/svc/network/loopback: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +/etc/cinit/svc/network/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/network::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/network +TEX::/etc/cinit/svc/test +::/etc/cinit/svc/test/env +/etc/cinit/svc/test/env: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +/etc/cinit/svc/test/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/test::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/test +TEX::/etc/cinit/svc/getty +::/etc/cinit/svc/getty/2 +/etc/cinit/svc/getty/2: <<4>> +::/etc/cinit/svc/getty/3 +/etc/cinit/svc/getty/3: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +/etc/cinit/svc/getty/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/getty::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/getty +TEX::/etc/cinit/svc/init +::/etc/cinit/svc/getty +/etc/cinit/svc/getty: <<4>> +::/etc/cinit/svc/local-tuning +/etc/cinit/svc/local-tuning: <<4>> +::/etc/cinit/svc/mount +/etc/cinit/svc/mount: <<4>> +::/etc/cinit/svc/network +/etc/cinit/svc/network: <<4>> +::/etc/cinit/svc/test +/etc/cinit/svc/test: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +DNWA::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/init +=> cinit started. +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +ORC:/etc/cinit/svc/init/on.params +ORC:/etc/cinit/svc/getty/2/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test +SC::/etc/cinit/svc/test/env::FAILED::::RESPAWN::ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test + +msgrcv: Interrupted system call +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/2/on +ORC:/etc/cinit/svc/getty/2/on.params +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted +SC::/etc/cinit/svc/network/eth0::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted + +msgrcv: Interrupted system call +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. +SC::/etc/cinit/svc/init::FAILED::::RESPAWN::ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. + +msgrcv: Interrupted system call +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. +SC::/etc/cinit/svc/network/loopback::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. + +msgrcv: Interrupted system call +mount: only root can do that +SC::/etc/cinit/svc/mount/root::FAILED::::RESPAWN::ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +mount: only root can do that + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +LSP:: 32705: /etc/cinit/svc/init:1 (0) +LSP:: 32705: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32705: /etc/cinit/svc/test:65 (0) +LSP:: 32705: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32705: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32705: /etc/cinit/svc/network:65 (0) +LSP:: 32705: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32705: /etc/cinit/svc/mount:65 (0) +LSP:: 32705: /etc/cinit/svc/local-tuning:65 (0) +LSP:: 32705: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32705: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32705: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32705: /etc/cinit/svc/getty:65 (0) +LSP:: 32706: /etc/cinit/svc/init:65 (0) +LSP:: 32706: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32706: /etc/cinit/svc/test:65 (0) +LSP:: 32706: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32706: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32706: /etc/cinit/svc/network:65 (0) +LSP:: 32706: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32706: /etc/cinit/svc/mount:65 (0) +LSP:: 32706: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32706: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32706: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32706: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32706: /etc/cinit/svc/getty:65 (0) +LSP:: 32707: /etc/cinit/svc/init:65 (0) +LSP:: 32707: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32707: /etc/cinit/svc/test:65 (0) +LSP:: 32707: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32707: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32707: /etc/cinit/svc/network:65 (0) +LSP:: 32707: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32707: /etc/cinit/svc/mount:4 (32706) +LSP:: 32707: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32707: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32707: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32707: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32707: /etc/cinit/svc/getty:65 (0) +LSP:: 32708: /etc/cinit/svc/init:65 (0) +LSP:: 32708: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32708: /etc/cinit/svc/test:65 (0) +LSP:: 32708: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32708: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32708: /etc/cinit/svc/network:4 (32707) +LSP:: 32708: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32708: /etc/cinit/svc/mount:4 (32706) +LSP:: 32708: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32708: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32708: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32708: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32708: /etc/cinit/svc/getty:65 (0) +LSP:: 32709: /etc/cinit/svc/init:65 (0) +LSP:: 32709: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32709: /etc/cinit/svc/test:4 (32708) +LSP:: 32709: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32709: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32709: /etc/cinit/svc/network:4 (32707) +LSP:: 32709: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32709: /etc/cinit/svc/mount:4 (32706) +LSP:: 32709: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32709: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32709: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32709: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32709: /etc/cinit/svc/getty:65 (0) +LSP:: 32702: /etc/cinit/svc/init:4 (32710) +LSP:: 32702: /etc/cinit/svc/test/env:4 (32702) +pid: 0, m_client +LSP:: 32700: /etc/cinit/svc/init:4 (32710) +LSP:: 32700: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32700: /etc/cinit/svc/test:4 (32708) +LSP:: 32700: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32700: /etc/cinit/svc/network/eth0:16 (32700) +pid: 0, m_client +LSP:: 32710: /etc/cinit/svc/init:4 (32710) +pid: 0, m_client +LSP:: 32701: /etc/cinit/svc/init:16 (32719) +LSP:: 32701: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32701: /etc/cinit/svc/test:4 (32708) +LSP:: 32701: /etc/cinit/svc/network/loopback:4 (32701) +pid: 0, m_client +LSP:: 32699: /etc/cinit/svc/init:16 (32719) +LSP:: 32699: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32699: /etc/cinit/svc/test:4 (32708) +LSP:: 32699: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32699: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32699: /etc/cinit/svc/network:4 (32707) +LSP:: 32699: /etc/cinit/svc/mount/root:4 (32699) +pid: 0, m_client +LSP::SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz + 32698: /etc/cinit/svc/init:16 (32719) +LSP:: 32698: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32698: /etc/cinit/svc/test:4 (32708) +LSP:: 32698: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32698: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32698: /etc/cinit/svc/network:4 (32707) +LSP:: 32698: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32698: /etc/cinit/svc/mount:4 (32706) +LSP:: 32698: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32698: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32698: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +pid: 0, m_client +LSP:: 32728: /etc/cinit/svc/init:16 (32719) +LSP:: 32728: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32728: /etc/cinit/svc/test:4 (32708) +LSP:: 32728: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32728: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32728: /etc/cinit/svc/network:4 (32707) +LSP:: 32728: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32728: /etc/cinit/svc/mount:4 (32706) +LSP:: 32728: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32728: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32728: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32728) +pid: 0, m_client +LSP:: 32735: /etc/cinit/svc/init:16 (32719) +LSP:: 32735: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32735: /etc/cinit/svc/test:4 (32708) +LSP:: 32735: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32735: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32735: /etc/cinit/svc/network:4 (32707) +LSP:: 32735: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32735: /etc/cinit/svc/mount:4 (32706) +LSP:: 32735: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32735: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32735: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32735) +pid: 0, m_client +LSP:: 32742: /etc/cinit/svc/init:16 (32719) +LSP:: 32742: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32742: /etc/cinit/svc/test:4 (32708) +LSP:: 32742: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32742: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32742: /etc/cinit/svc/network:4 (32707) +LSP:: 32742: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32742: /etc/cinit/svc/mount:4 (32706) +LSP:: 32742: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32742: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32742: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32742) +pid: 0, m_client +LSP:: 32749: /etc/cinit/svc/init:16 (32719) +LSP:: 32749: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32749: /etc/cinit/svc/test:4 (32708) +LSP:: 32749: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32749: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32749: /etc/cinit/svc/network:4 (32707) +LSP:: 32749: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32749: /etc/cinit/svc/mount:4 (32706) +LSP:: 32749: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32749: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32749: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32749) +pid: 0, m_client +LSP:: 32756: /etc/cinit/svc/init:16 (32719) +LSP:: 32756: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32756: /etc/cinit/svc/test:4 (32708) +LSP:: 32756: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32756: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32756: /etc/cinit/svc/network:4 (32707) +LSP:: 32756: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32756: /etc/cinit/svc/mount:4 (32706) +LSP:: 32756: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32756: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32756: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32756) +pid: 0, m_client +LSP:: 32763: /etc/cinit/svc/init:16 (32719) +LSP:: 32763: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32763: /etc/cinit/svc/test:4 (32708) +LSP:: 32763: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32763: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32763: /etc/cinit/svc/network:4 (32707) +LSP:: 32763: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32763: /etc/cinit/svc/mount:4 (32706) +LSP:: 32763: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32763: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32763: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32763) +pid: 0, m_client +LSP:: 302: /etc/cinit/svc/init:16 (32719) +LSP:: 302: /etc/cinit/svc/test/env:16 (32717) +LSP:: 302: /etc/cinit/svc/test:4 (32708) +LSP:: 302: /etc/ciSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN:: +msgrcv: Interrupted system call +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +nit/svc/network/loopback:16 (32720) +LSP:: 302: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 302: /etc/cinit/svc/network:4 (32707) +LSP:: 302: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 302: /etc/cinit/svc/mount:4 (32706) +LSP:: 302: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 302: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 302: /etc/cinit/svc/local-tuning/keyboard-layout:16 (302) +pid: 0, m_client +LSP:: 312: /etc/cinit/svc/init:16 (32719) +LSP:: 312: /etc/cinit/svc/test/env:16 (32717) +LSP:: 312: /etc/cinit/svc/test:4 (32708) +LSP:: 312: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 312: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 312: /etc/cinit/svc/network:4 (32707) +LSP:: 312: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 312: /etc/cinit/svc/mount:4 (32706) +LSP:: 312: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 312: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 312: /etc/cinit/svc/local-tuning/keyboard-layout:16 (312) +pid: 0, m_client +LSP:: 326: /etc/cinit/svc/init:16 (32719) +LSP:: 326: /etc/cinit/svc/test/env:16 (32717) +LSP:: 326: /etc/cinit/svc/test:4 (32708) +LSP:: 326: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 326: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 326: /etc/cinit/svc/network:4 (32707) +LSP:: 326: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 326: /etc/cinit/svc/mount:4 (32706) +LSP:: 326: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 326: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 326: /etc/cinit/svc/local-tuning/keyboard-layout:16 (326) +pid: 0, m_client +LSP:: 333: /etc/cinit/svc/init:16 (32719) +LSP:: 333: /etc/cinit/svc/test/env:16 (32717) +LSP:: 333: /etc/cinit/svc/test:4 (32708) +LSP:: 333: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 333: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 333: /etc/cinit/svc/network:4 (32707) +LSP:: 333: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 333: /etc/cinit/svc/mount:4 (32706) +LSP:: 333: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 333: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 333: /etc/cinit/svc/local-tuning/keyboard-layout:16 (333) +pid: 0, m_client +LSP:: 340: /etc/cinit/svc/init:16 (32719) +LSP:: 340: /etc/cinit/svc/test/env:16 (32717) +LSP:: 340: /etc/cinit/svc/test:4 (32708) +LSP:: 340: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 340: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 340: /etc/cinit/svc/network:4 (32707) +LSP:: 340: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 340: /etc/cinit/svc/mount:4 (32706) +LSP:: 340: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 340: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 340: /etc/cinit/svc/local-tuning/keyboard-layout:16 (340) +pid: 0, m_client +LSP:: 347: /etc/cinit/svc/init:16 (32719) +LSP:: 347: /etc/cinit/svc/test/env:16 (32717) +LSP:: 347: /etc/cinit/svc/test:4 (32708) +LSP:: 347: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 347: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 347: /etc/cinit/svc/network:4 (32707) +LSP:: 347: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 347: /etc/cinit/svc/mount:4 (32706) +LSP:: 347: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 347: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 347: /etc/cinit/svc/local-tuning/keyboard-layout:16 (347) +pid: 0, m_client +LSP:: 354: /etc/cinit/svc/init:16 (32719) +LSP:: 354: /etc/cinit/svc/test/env:16 (32717) +LSP:: 354: /etc/cinit/svc/test:4 (32708) +LSP:: 354: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 354: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 354: /etc/cinit/svc/network:4 (32707) +LSP:: 354: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 354: /etc/cinit/svc/mount:4 (32706) +LSP:: 354: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 354: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 354: /etc/cinit/svc/local-tuning/keyboard-layout:16 (354) +pid: 0, m_client +LSP:: 372: /etc/cinit/svc/init:16 (32719) +LSP:: 372: /etc/cinit/svc/test/env:16 (32717) +LSP:: 372: /etc/cinit/svc/test:4 (32708) +LSP:: 372: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 372: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 372: /etc/cinit/svc/network:4 (32707) +LSP:: 372: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 372: /etc/cinit/svc/mount:4 (32706) +LSP:: 372: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 372: /etc/cinit/svc/getty/3:4 (327SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +04) +LSP:: 372: /etc/cinit/svc/local-tuning/keyboard-layout:16 (372) +pid: 0, m_client +LSP:: 379: /etc/cinit/svc/init:16 (32719) +LSP:: 379: /etc/cinit/svc/test/env:16 (32717) +LSP:: 379: /etc/cinit/svc/test:4 (32708) +LSP:: 379: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 379: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 379: /etc/cinit/svc/network:4 (32707) +LSP:: 379: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 379: /etc/cinit/svc/mount:4 (32706) +LSP:: 379: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 379: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 379: /etc/cinit/svc/local-tuning/keyboard-layout:16 (379) +pid: 0, m_client +LSP:: 386: /etc/cinit/svc/init:16 (32719) +LSP:: 386: /etc/cinit/svc/test/env:16 (32717) +LSP:: 386: /etc/cinit/svc/test:4 (32708) +LSP:: 386: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 386: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 386: /etc/cinit/svc/network:4 (32707) +LSP:: 386: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 386: /etc/cinit/svc/mount:4 (32706) +LSP:: 386: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 386: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 386: /etc/cinit/svc/local-tuning/keyboard-layout:16 (386) +pid: 0, m_client +LSP:: 393: /etc/cinit/svc/init:16 (32719) +LSP:: 393: /etc/cinit/svc/test/env:16 (32717) +LSP:: 393: /etc/cinit/svc/test:4 (32708) +LSP:: 393: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 393: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 393: /etc/cinit/svc/network:4 (32707) +LSP:: 393: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 393: /etc/cinit/svc/mount:4 (32706) +LSP:: 393: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 393: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 393: /etc/cinit/svc/local-tuning/keyboard-layout:16 (393) +pid: 0, m_client +LSP:: 400: /etc/cinit/svc/init:16 (32719) +LSP:: 400: /etc/cinit/svc/test/env:16 (32717) +LSP:: 400: /etc/cinit/svc/test:4 (32708) +LSP:: 400: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 400: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 400: /etc/cinit/svc/network:4 (32707) +LSP:: 400: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 400: /etc/cinit/svc/mount:4 (32706) +LSP:: 400: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 400: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 400: /etc/cinit/svc/local-tuning/keyboard-layout:16 (400) +pid: 0, m_client +LSP:: 407: /etc/cinit/svc/init:16 (32719) +LSP:: 407: /etc/cinit/svc/test/env:16 (32717) +LSP:: 407: /etc/cinit/svc/test:4 (32708) +LSP:: 407: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 407: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 407: /etc/cinit/svc/network:4 (32707) +LSP:: 407: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 407: /etc/cinit/svc/mount:4 (32706) +LSP:: 407: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 407: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 407: /etc/cinit/svc/local-tuning/keyboard-layout:16 (407) +pid: 0, m_client +LSP:: 414: /etc/cinit/svc/init:16 (32719) +LSP:: 414: /etc/cinit/svc/test/env:16 (32717) +LSP:: 414: /etc/cinit/svc/test:4 (32708) +LSP:: 414: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 414: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 414: /etc/cinit/svc/network:4 (32707) +LSP:: 414: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 414: /etc/cinit/svc/mount:4 (32706) +LSP:: 414: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 414: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 414: /etc/cinit/svc/local-tuning/keyboard-layout:16 (414) +pid: 0, m_client +LSP:: 421: /etc/cinit/svc/init:16 (32719) +LSP:: 421: /etc/cinit/svc/test/env:16 (32717) +LSP:: 421: /etc/cinit/svc/test:4 (32708) +LSP:: 421: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 421: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 421: /etc/cinit/svc/network:4 (32707) +LSP:: 421: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 421: /etc/cinit/svc/mount:4 (32706) +LSP:: 421: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 421: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 421: /etc/cinit/svc/local-tuning/keyboard-layout:16 (421) +pid: 0, m_client +LSP:: 428: /etc/cinit/svc/init:16 (32719) +LSP:: 428: /etc/cinit/svc/test/env:16 (32717) +LSP:: 428: /etc/cinit/svc/test:4 (32708) +LSP:: 428: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 428: /etc/cinit/svc/network/eth0:16SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call + (32718) +LSP:: 428: /etc/cinit/svc/network:4 (32707) +LSP:: 428: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 428: /etc/cinit/svc/mount:4 (32706) +LSP:: 428: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 428: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 428: /etc/cinit/svc/local-tuning/keyboard-layout:16 (428) +pid: 0, m_client +LSP:: 435: /etc/cinit/svc/init:16 (32719) +LSP:: 435: /etc/cinit/svc/test/env:16 (32717) +LSP:: 435: /etc/cinit/svc/test:4 (32708) +LSP:: 435: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 435: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 435: /etc/cinit/svc/network:4 (32707) +LSP:: 435: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 435: /etc/cinit/svc/mount:4 (32706) +LSP:: 435: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 435: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 435: /etc/cinit/svc/local-tuning/keyboard-layout:16 (435) +pid: 0, m_client +LSP:: 452: /etc/cinit/svc/init:16 (32719) +LSP:: 452: /etc/cinit/svc/test/env:16 (32717) +LSP:: 452: /etc/cinit/svc/test:4 (32708) +LSP:: 452: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 452: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 452: /etc/cinit/svc/network:4 (32707) +LSP:: 452: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 452: /etc/cinit/svc/mount:4 (32706) +LSP:: 452: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 452: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 452: /etc/cinit/svc/local-tuning/keyboard-layout:16 (452) +pid: 0, m_client +LSP:: 459: /etc/cinit/svc/init:16 (32719) +LSP:: 459: /etc/cinit/svc/test/env:16 (32717) +LSP:: 459: /etc/cinit/svc/test:4 (32708) +LSP:: 459: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 459: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 459: /etc/cinit/svc/network:4 (32707) +LSP:: 459: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 459: /etc/cinit/svc/mount:4 (32706) +LSP:: 459: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 459: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 459: /etc/cinit/svc/local-tuning/keyboard-layout:16 (459) +pid: 0, m_client +LSP:: 466: /etc/cinit/svc/init:16 (32719) +LSP:: 466: /etc/cinit/svc/test/env:16 (32717) +LSP:: 466: /etc/cinit/svc/test:4 (32708) +LSP:: 466: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 466: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 466: /etc/cinit/svc/network:4 (32707) +LSP:: 466: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 466: /etc/cinit/svc/mount:4 (32706) +LSP:: 466: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 466: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 466: /etc/cinit/svc/local-tuning/keyboard-layout:16 (466) +pid: 0, m_client +LSP:: 473: /etc/cinit/svc/init:16 (32719) +LSP:: 473: /etc/cinit/svc/test/env:16 (32717) +LSP:: 473: /etc/cinit/svc/test:4 (32708) +LSP:: 473: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 473: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 473: /etc/cinit/svc/network:4 (32707) +LSP:: 473: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 473: /etc/cinit/svc/mount:4 (32706) +LSP:: 473: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 473: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 473: /etc/cinit/svc/local-tuning/keyboard-layout:16 (473) +pid: 0, m_client +LSP:: 480: /etc/cinit/svc/init:16 (32719) +LSP:: 480: /etc/cinit/svc/test/env:16 (32717) +LSP:: 480: /etc/cinit/svc/test:4 (32708) +LSP:: 480: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 480: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 480: /etc/cinit/svc/network:4 (32707) +LSP:: 480: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 480: /etc/cinit/svc/mount:4 (32706) +LSP:: 480: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 480: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 480: /etc/cinit/svc/local-tuning/keyboard-layout:16 (480) +pid: 0, m_client +LSP:: 487: /etc/cinit/svc/init:16 (32719) +LSP:: 487: /etc/cinit/svc/test/env:16 (32717) +LSP:: 487: /etc/cinit/svc/test:4 (32708) +LSP:: 487: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 487: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 487: /etc/cinit/svc/network:4 (32707) +LSP:: 487: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 487: /etc/cinit/svc/mount:4 (32706) +LSP:: 487: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 487: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 487: /etc/cinit/svc/local-tuning/keyboard-layout:16 (487) +pid: 0, mLoading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +_client +LSP:: 494: /etc/cinit/svc/init:16 (32719) +LSP:: 494: /etc/cinit/svc/test/env:16 (32717) +LSP:: 494: /etc/cinit/svc/test:4 (32708) +LSP:: 494: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 494: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 494: /etc/cinit/svc/network:4 (32707) +LSP:: 494: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 494: /etc/cinit/svc/mount:4 (32706) +LSP:: 494: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 494: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 494: /etc/cinit/svc/local-tuning/keyboard-layout:16 (494) +pid: 0, m_client +LSP:: 501: /etc/cinit/svc/init:16 (32719) +LSP:: 501: /etc/cinit/svc/test/env:16 (32717) +LSP:: 501: /etc/cinit/svc/test:4 (32708) +LSP:: 501: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 501: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 501: /etc/cinit/svc/network:4 (32707) +LSP:: 501: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 501: /etc/cinit/svc/mount:4 (32706) +LSP:: 501: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 501: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 501: /etc/cinit/svc/local-tuning/keyboard-layout:16 (501) +pid: 0, m_client +LSP:: 510: /etc/cinit/svc/init:16 (32719) +LSP:: 510: /etc/cinit/svc/test/env:16 (32717) +LSP:: 510: /etc/cinit/svc/test:4 (32708) +LSP:: 510: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 510: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 510: /etc/cinit/svc/network:4 (32707) +LSP:: 510: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 510: /etc/cinit/svc/mount:4 (32706) +LSP:: 510: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 510: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 510: /etc/cinit/svc/local-tuning/keyboard-layout:16 (510) +pid: 0, m_client +LSP:: 520: /etc/cinit/svc/init:16 (32719) +LSP:: 520: /etc/cinit/svc/test/env:16 (32717) +LSP:: 520: /etc/cinit/svc/test:4 (32708) +LSP:: 520: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 520: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 520: /etc/cinit/svc/network:4 (32707) +LSP:: 520: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 520: /etc/cinit/svc/mount:4 (32706) +LSP:: 520: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 520: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 520: /etc/cinit/svc/local-tuning/keyboard-layout:16 (520) +pid: 0, m_client +LSP:: 533: /etc/cinit/svc/init:16 (32719) +LSP:: 533: /etc/cinit/svc/test/env:16 (32717) +LSP:: 533: /etc/cinit/svc/test:4 (32708) +LSP:: 533: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 533: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 533: /etc/cinit/svc/network:4 (32707) +LSP:: 533: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 533: /etc/cinit/svc/mount:4 (32706) +LSP:: 533: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 533: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 533: /etc/cinit/svc/local-tuning/keyboard-layout:16 (533) +pid: 0, m_client +LSP:: 541: /etc/cinit/svc/init:16 (32719) +LSP:: 541: /etc/cinit/svc/test/env:16 (32717) +LSP:: 541: /etc/cinit/svc/test:4 (32708) +LSP:: 541: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 541: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 541: /etc/cinit/svc/network:4 (32707) +LSP:: 541: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 541: /etc/cinit/svc/mount:4 (32706) +LSP:: 541: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 541: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 541: /etc/cinit/svc/local-tuning/keyboard-layout:16 (541) +pid: 0, m_client +LSP:: 548: /etc/cinit/svc/init:16 (32719) +LSP:: 548: /etc/cinit/svc/test/env:16 (32717) +LSP:: 548: /etc/cinit/svc/test:4 (32708) +LSP:: 548: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 548: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 548: /etc/cinit/svc/network:4 (32707) +LSP:: 548: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 548: /etc/cinit/svc/mount:4 (32706) +LSP:: 548: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 548: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 548: /etc/cinit/svc/local-tuning/keyboard-layout:16 (548) +pid: 0, m_client +LSP:: 555: /etc/cinit/svc/init:16 (32719) +LSP:: 555: /etc/cinit/svc/test/env:16 (32717) +LSP:: 555: /etc/cinit/svc/test:4 (32708) +LSP:: 555: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 555: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 555: /etc/cinit/svc/network:4 (32707) +LSP:: 555: /etc/cinit/svSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/man/cinit.text b/software/cinit/browse_source/cinit-0.3pre5/doc/man/cinit.text new file mode 100644 index 00000000..bd9bd0ab --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/man/cinit.text @@ -0,0 +1,64 @@ +cinit(8) +======== +Nico Schottelius + + +NAME +---- +cinit - fast executing, small and simple init with support for profiles + + +SYNOPSIS +-------- +'cinit' [cprofile:name_of_profile] + + +DESCRIPTION +----------- +Cinit is an init system. It normally gets started by the operating +system (Linux, *BSD, ...) directly after the kernel has been loaded. + +Cinit uses parallel execution of services as far as possible. To +ensure the correct boot order you need to specify which service +'needs' or 'wants' another service. The resulting dependency tree +is used at startup to determine which service to start when. + +This may result in different boot orders depending on whether +one service is one time faster or slower. Due to the dependencies +this is not a problem, but allowed and wished per design. + +For more information refer to the texinfo or html documentation. + + +OPTIONS +------- + +cprofile:name_of_profile:: + If specified, cinit will start the named profile instead of the + standard 'init' service + + +BUGS +---- +cinit is not tested nor documented very well currently. + +The porting to other OS is not finished yet (mainly missing +system level binaries: shutdown, reboot, halt). + +Both is work in progress. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + + +COPYING +------- +Copyright \(C) 2006 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/man/cservice b/software/cinit/browse_source/cinit-0.3pre5/doc/man/cservice new file mode 100644 index 00000000..26a472b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/man/cservice @@ -0,0 +1,37 @@ +WARNING: + cservice is not yet ready for cinit-0.3! + +-------------------------------------------------------------------------------- +cservice, +Nico Schottelius, 2005-06-10 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +cservice - control cinit + +cservice -[phearsu] + -e - (ein) start a service (including all needed dependencies) + -a - (aus) stop a respawing service, don't care about other services + + -r - reboot + -h - halt + -p - poweroff (on some systems the same as halt) + -s - reScue mode - only a shell + + -u - update: hot reboot - shutdown system and execute /sbin/cinit + +A service may be specified either as relative or as absolute path. + +-h, -p, -r, -s and -u need the "Magic Word" to do their work: "thilo" + +-------------------------------------------------------------------------------- + +Some examples: + + cservice -e /etc/cinit/getty/8 # fire up getty/8 + cd /etc/cinit/getty; cservice -a ./8 # shut down getty/8 + cservice -h thilo # halt + cservice -r thilo # reboot + cservice -s thilo # rescue + cservice -u thilo # update + +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/FAQ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/FAQ new file mode 100644 index 00000000..53494f73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile:home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/README.text b/software/cinit/browse_source/cinit-0.3pre5/doc/user/README.text new file mode 100644 index 00000000..3467ba63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/README.text @@ -0,0 +1,21 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit user documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +People using cinit. + +Content +------- + +hints.text: Some general hints +tuning.text: Some tuning hints diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/TODO b/software/cinit/browse_source/cinit-0.3pre5/doc/user/TODO new file mode 100644 index 00000000..6044e97a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/TODO @@ -0,0 +1,4 @@ +All the content in this file is unsorted. Reading may harm you. + +Confdir: /etc/cinit/conf/ +panic: /etc/cinit/conf/panic, /etc/cinit/conf/panic.params diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/caveats b/software/cinit/browse_source/cinit-0.3pre5/doc/user/caveats new file mode 100644 index 00000000..5ab123e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/caveats @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/compiles.on b/software/cinit/browse_source/cinit-0.3pre5/doc/user/compiles.on new file mode 100644 index 00000000..3fe83479 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/compiles.on @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +compiles.on, +Nico Schottelius 2005-06-09 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit is known to compile on: + +x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 + +Please report your configuration, if it's not listed here. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/config-dirs b/software/cinit/browse_source/cinit-0.3pre5/doc/user/config-dirs new file mode 100644 index 00000000..4a8fbb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/config-dirs @@ -0,0 +1,19 @@ +configuring + + /etc/cinit/defaults/panic -> link to something to execute on panic + (most likely /sbin/sulogin) + + /etc/cinit/defaults/tmp -> link to a directory where + the socket should be created, + after finishing boot + + What todo right before halting/rebooting/powering off + /etc/cinit/special/ + -> halt + -> reboot + -> poweroff + +Configuration +------------- + +Send kill signal diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/configuring.cinit b/software/cinit/browse_source/cinit-0.3pre5/doc/user/configuring.cinit new file mode 100644 index 00000000..a88ba00f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/configuring.cinit @@ -0,0 +1,189 @@ +-------------------------------------------------------------------------------- +configuring cinit, +Nico Schottelius 2005-05-28 (Last Modified: 2005-06-05) +-------------------------------------------------------------------------------- + +0. Pre-compile configuration +1. General configuration layout +2. Hints +2.0 Service executing / parameters +2.1 Daemons +2.2 Logging +2.3 Using prepared scripts +3. Profiles + + +0. Pre-compile configuration + +Have a look at conf/*. Those variable will mostly be used when +compiling cinit. Some will be read later (like destdir). + + +1. General configuration layout + +/etc/cinit (configurable via conf/cinit_dir) stores the complete +cinit configuration. + +cinit is service based. +A service consists of + - a base directory (like /etc/cinit/getty/1) + - dependency configuration: + + ./wants - services it wants to be started before (but it + will work anyway) + + ./needs/ - services it needs. If those services fail, this service + won't be started. + + - a flag indicating whether to respawn the service: + + ./respawn (simply touch it) + + - a delay: how long to wait for the service (in seconds) before + sending SIGKILL after the SIGTERM (only for respawning processes): + + ./delay (one line with only the digits) + + If delay is non-existing or not readable, the delay from + conf/sleep_kill_svc is taken. The maximum length of this + number ("9999" uses length 4, "42" needs 2 bytes) can be adjusted + at compile time in conf/max_delay. Internally this is a signed + integer, so the maximum size depends on your system. Though + I don't think anybody will want to wait for a service as long as + an integer would allow. + + - the program to run when switching the service on and off: + + ./on (a link to a program or a shell script) + ./on.params (see conf/c_params, the parameters to pass to the program) + ./on.env (see conf/c_env, the environment to pass to the program) + + ./off (call that when shutting down the service) + ./off.params (the parameters to pass to the program) + ./on.env (the environment to pass to the program) + +You should have a look at the samples/ directory for examples. + +If things are missing, cinit will continue with what's available. +This way you only need the files you use. Some examples: + + /etc/cinit/init: + ./wants -> services it wants + ./needs -> services it needs + That's everything + + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it + That's everything, as it has no dependencies + + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn on service + delay -> wait this time before sending SIGKILL after SIGTERM + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting + + +2. Hints + +2.0 Service executing / parameters + +The on and off files can and should be links to the programs you want +to execute. This way you save yourself loading the big shell (which is +on many Linux systems bash, why so ever, dash does the job as good, still +beeing small). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. The on script +could look like: + + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). + + +2.1 Daemons + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking (Please have a look at +daemons.backgrounding for a list of known daemons and their switches +to avoid backgrounding). + +The other possibility is to use a program, which will + a) start the daemon + b) look into the pidfile of the daemon + c) will then wait until that pid does not exist anymore + d) and then it exits and cinit will restart it (goto a) now) + +Such a program is included into this cinit release, +though I do not recommend using it. You should better contact the +authors and make them implement a clean non-forking mode. + +The name of the program (actually a shell script) is "cinit.wait.for.daemon". + +You will use it as the "on" part of the service and you have to add + + a) the pidfile to on.params + b) the daemon binary + +Thus the service would look like: + + svc-broken-daemon/ + on -> /sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + + +2.2 Logging + +Currently there's no special logging support. +When programs write to stdout, it will be displayed on +the same stdout cinit is connected to +(we don't even open /dev/console - we are too lazy currently). + + +2.3 Using prepared scripts + +In the bin/ directory of this tarball you'll find at least: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + + +3. Profiles + +Since cinit-0.0.6 there is profile in cinit. +Profiles are described in doc/profile.support. + +X. Examples + +Can be found in the tarballs below samples/. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre5/doc/user/cross-compiling.text new file mode 100644 index 00000000..67208534 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/cross-compiling.text @@ -0,0 +1,6 @@ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/daemons.backgrounding b/software/cinit/browse_source/cinit-0.3pre5/doc/user/daemons.backgrounding new file mode 100644 index 00000000..f7b7fdf5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/daemons.backgrounding @@ -0,0 +1,71 @@ +-------------------------------------------------------------------------------- +daemons backgrounding, +Nico Schottelius 2005-06-12 (Last Modified: 2005-10-15) +-------------------------------------------------------------------------------- + +0. Definition + +A daemon is a program which runs in the background, not having a tty +associated necesserally. Running in background does not mean it has +to background (fork()) itself, but that you cannot control it directly +from a shell. + +1. Daemons and cinit + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking + +The following daemons / servers are known to avoid backgrounding easily: + + acpid [x86 power management]: -f (undocumentated but works) + apache [webserver]: -DFOREGROUND + asterisk [pbx]: -f + bind [dns server/caching]: -f + cardmgr [pcmcia/cardbus]: -f + cron (vixie) [schedular]: -f + cupsd [printer server]: -f or -F + dhclient [dhcp client]: -d + dhcp3 (isc) [dhcp server]: -f + distccd [compile server]: normal behaviour + fam [file alteration monitor]:-f + fcron [schedular]: -f + frox [ftp proxy]: "NoDetach" in config + gdm [display manager]: -nodaemon + hybrid [irc server]: -foreground + icecast2 [sound streamer]: normal behaviour + mini-lpd [printer server]: normal behaviour + metalog [log server]: normal behaviour + monotone [vcs]: normal behaviour + mpd [music server]: --no-daemon + nessusd ["security server"]: normal behaviour + ntpd [time server]: -n + oidentd [identd server]: -i + oops [http proxy]: normal behaviour + openssh [ssh server]: -D + openvpn [vpn server]: normal behaviour + pbbuttonsd [power management]:normal behaviour + proftpd [ftp server]: -n + qmail [mta]: normal behaviour + rsync ["file server"]: --no-detach + silcd ["secure chat server"]: -F, --foreground + slapd [ldap]: -d + snmpd [snmp daemon]: -f + svnserve [vcs]: --foreground + syslogd [log server]: -n + syslog-ng [log server]: -F + tcpserver [super server]: normal behaviour + udhcpc [dhcp client]: normal behaviour + vsftpd [ftp server]: normal behaviour (or: config: background=no) + xinetd [super server]: -dontfork + +Those are the daemons that do not offer the possibility (as of release 0.2): + + atd (no switch, no configuraton option) + inetd (some variants) + nscd (no switch, no configuraton option) + portmap (only with debug mode) diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/debugging.configuration b/software/cinit/browse_source/cinit-0.3pre5/doc/user/debugging.configuration new file mode 100644 index 00000000..1289865e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/debugging.configuration @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +Debugging your init configuration, +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +As writing an init configuration is not the easiest thing, +here are some problems (P) and debugging hints (H): + +P: There's no output! +H: If you don't start a service which outputs something there won't be any, + cinit starts up silently. + +P: Service XYZ seems not to work? +H: Try the following in your shell: + cd /etc/cinit/the-service; ./on "$(on.params)" + If that succeeds it has perhaps something missing which should have been + started before. +H: Create a test-service, which contains the following: + on: link to /bin/echo + on.params: "A test string" (with or without the quotes) + Now add the test-service to the needs directory of service XYZ. + If you see output the next time, the service is started. + Otherwise you forgot to make another service dependent on service + XYZ. + +P: How can I test if a non-outputting service successfully started? +H: Create another service, which depends on your service and make + it echo something. + +P: Does that profile support really work? +H: Try that: cprofile:NONEXISTENT and you'll see. + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/ideas b/software/cinit/browse_source/cinit-0.3pre5/doc/user/ideas new file mode 100644 index 00000000..d3f13d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/ideas @@ -0,0 +1,3 @@ +- cinit-multi-machine-daemon: + coordinating bootup with several machines + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/installing-cinit.text b/software/cinit/browse_source/cinit-0.3pre5/doc/user/installing-cinit.text new file mode 100644 index 00000000..428f6b1f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/installing-cinit.text @@ -0,0 +1,42 @@ +cinit - Installing +================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 +:Author Initials: NS + +This documentes describes how to install cinit. + +Installing +---------- +Installing cinit is not a big deal, so is this document. +Where possible I added a list of commands to execute at the +end of each section. + +From source +~~~~~~~~~~~ +Retrieve the latest source from http://unix.schottelius.org/cinit/. +Then extract it, change to the sourcedir, adjust your OS in the file +"conf/os" and type "make all". + +Code to install cinit: +---------------------------------------------------------------------- +# the program we use to retrieve the source +get=wget + +---------------------------------------------------------------------- + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +For cross compiling see 'cross-compiling.text'. + + + + +Introduction +------------ +General sections, OS-specific, ... + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/main.text b/software/cinit/browse_source/cinit-0.3pre5/doc/user/main.text new file mode 100644 index 00000000..6308e4c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/main.text @@ -0,0 +1,113 @@ +cinit - a modern init system +============================= +Nico Schottelius +v0.1, for cinit-0.2.2, 2005-01-18 +:Author Initials: NS + + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/meta.dependencies b/software/cinit/browse_source/cinit-0.3pre5/doc/user/meta.dependencies new file mode 100644 index 00000000..fe743c48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/meta.dependencies @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, one would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation (see profile.support). + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +why it does not even need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ + +This way you have the indirection (meta-dependencies) in the filesystem +and cinit does not need any additional code. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/optimising.cinit b/software/cinit/browse_source/cinit-0.3pre5/doc/user/optimising.cinit new file mode 100644 index 00000000..4f4b5c02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/optimising.cinit @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options +2. striping + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + +The current standard for cinit is: (see CFLAGS in the Makefile). + + +2. striping + +With strip(1) you can remove specific sections of object files. +You have to find out, which ones you can remove safely +(for instance with objdump(1)). + +The current standard for cinit is: (see STRIP in the Makefile) diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/paths.text b/software/cinit/browse_source/cinit-0.3pre5/doc/user/paths.text new file mode 100644 index 00000000..0b8c6b39 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/paths.text @@ -0,0 +1,68 @@ +cinit - Configuration +====================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Configuring cinit - the paths used + + +Introduction +------------ +The base directory under which all configurations are found +is '/etc/cinit'. + +The basic hierarchy is shown below: +---------------------------------------------------------------------- +/etc/cinit + svc -> services + conf -> general configuration +---------------------------------------------------------------------- + + +General pathnames +~~~~~~~~~~~~~~~~~~ +When you create something that cinit should execute (like on +starting a service, on stopping a service, on panic, ...), cinit +will recognize the following extensions: + +. cinit executions extensions + - 'name' - the file that should be executed + - 'name'.params - the parameter to pass to 'name' when executing + - 'name'.env - the environment to pass to 'name' when executing + + +Name.params +^^^^^^^^^^^ +The 'params' file is a simple file containing one argument on each +line. + +Name.env +^^^^^^^^ +The 'env' file contains one assignment on each line. +"testvar=testvalue". + + +The subdirectory 'conf' +~~~~~~~~~~~~~~~~~~~~~~~ +In this directory are general configurations located. + +. The executable files in this directory are: + - panic{.*} + - umount{.*} + +The subdirectory 'svc' +~~~~~~~~~~~~~~~~~~~~~~ +This directory contains the services. A service is a directory +which may contain the following files: + +. List of files + - on - What to execute when starting the service + * on.env - Environment to pass to 'on' + * on.params - Parameters to pass to 'on' + - off - What to execute when stopping the service + * off.env - Environment to pass to 'on' + * off.params - Parameters to pass to 'on' + - respawn - An empty file that tells cinit to restart the service + when it exits + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/problems b/software/cinit/browse_source/cinit-0.3pre5/doc/user/problems new file mode 100644 index 00000000..a3440a3a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/problems @@ -0,0 +1,9 @@ +fsck: + returns non-zero if it repaired something. + You have to wrap it into a shell-script :-( + + #!/bin/sh + fsck $@ + [ $? -le 1 ] && exit 0 + exit 1 + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/profile.support b/software/cinit/browse_source/cinit-0.3pre5/doc/user/profile.support new file mode 100644 index 00000000..7bc607b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/profile.support @@ -0,0 +1,72 @@ +-------------------------------------------------------------------------------- +Profiles, +Nico Schottelius, 2005-06-04 +-------------------------------------------------------------------------------- + +1. What are profiles? +2. How to use profiles? +3. How to configure profiles? +4. Some examples + + +1. What are profiles? + +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +2. How to use profiles? + +Simply pass 'cprofile:PROFILENAME' (like cprofile:home) to cinit. +How to pass argumenents to cinit? Under Linux the init-system +gets the kernel arguments (see linux.kernel.eats.arguments) as arguments. +So you can use + + kernel /usr/src/linux/vmlinuz cprofile:work (grub1,grub2) + append="cprofile:work" (LILO,yaboot) + +Other Unices should work like Linux, please consult your local +documentation. + + +3. How to configure profiles? + +It's very simple: Normally cinit would call /etc/cinit/init as +primary service and solve all dependencies. If you pass +cprofile=wireless to it, cinit will start /etc/cinit/wireless as +primary service instead. + + [Note: /etc/cinit/yourprofile is the service that will be started. + You need/should/must NOT create /etc/cinit/yourprofile/init!] + +So the only thing you have to do is to create a service directory +below /etc/cinit with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/init; tar c . | (mkdir ../yp; cd ../yp; tar x ) + +That's it! + + +4. Some examples + +Here are some examples we found in #cLinux: + + profile name what it does + + musibox only start mp3blaster + terminal start only minicom, which opens the serial line + net-terminal start a respawning shell script, which starts + ssh to the selected host + video start X+mplayer, which plays the dvd/cdrom + wireless What to start when beeing in an unknown wlan + home/work selected services (nfs, ip, ...) for home or work + diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/replacing.init b/software/cinit/browse_source/cinit-0.3pre5/doc/user/replacing.init new file mode 100644 index 00000000..2858c56c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/replacing.init @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and link, move or copy cinit to init (ln -s /sbin/cinit /sbin/init), reboot. + +That's everything in general, the biggest part will be to configuring cinit. + +See also doc/merging.other.initsystems. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/updating.cinit b/software/cinit/browse_source/cinit-0.3pre5/doc/user/updating.cinit new file mode 100644 index 00000000..fc0d3fef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/updating.cinit @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. call cservice -u thilo (if you have cinit-0.1 or later) + + For older versions: + + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything running and restart as if you would just + have booted. diff --git a/software/cinit/browse_source/cinit-0.3pre5/doc/user/using.rescue b/software/cinit/browse_source/cinit-0.3pre5/doc/user/using.rescue new file mode 100644 index 00000000..f58ff512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/doc/user/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user"). + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.3pre5/scripts/cinit.build-env b/software/cinit/browse_source/cinit-0.3pre5/scripts/cinit.build-env new file mode 100644 index 00000000..94e093e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/scripts/cinit.build-env @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: build environment to be used in scripts +# * Should be sourced by using scripts +# 2006-10-26 +# + +. $(dirname $0)/cinit.read-conf + +export BASEDIR=${DESTDIR}${CINIT_DIR} +export SERVICES=${BASEDIR}/${SVCDIR} +export CONFIG=${BASEDIR}/${CONFDIR} diff --git a/software/cinit/browse_source/cinit-0.3pre5/scripts/cinit.get-confdir b/software/cinit/browse_source/cinit-0.3pre5/scripts/cinit.get-confdir new file mode 100644 index 00000000..38d8572d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/scripts/cinit.get-confdir @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# Date: 2005-05-24 (Last Changed: 2005-08-08) + +# try environment first +if [ "$CINIT_CONF_DIR" ]; then + CONFDIR=$CINIT_CONF_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +else + echo 'Did not find cinit configuration!' >&2 + echo "Please set the variable CINIT_CONF_DIR" >&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.3pre5/scripts/cinit.install.standard.dirs b/software/cinit/browse_source/cinit-0.3pre5/scripts/cinit.install.standard.dirs new file mode 100644 index 00000000..22cf273d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/scripts/cinit.install.standard.dirs @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install standard sub-configuration directories +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.build-env + +for svc in $SERVICE_CATEGORIES; do + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${SERVICES}/${svc}" +done + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre5/scripts/cinit.mkheader b/software/cinit/browse_source/cinit-0.3pre5/scripts/cinit.mkheader new file mode 100644 index 00000000..80e3f7cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/scripts/cinit.mkheader @@ -0,0 +1,32 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric: no quotes needed + is_numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + is_string="$(echo $value | grep '^"')" + + # + # Check for quote type + # + if [ ! "$is_numeric" -a ! "$is_string" ]; then + one_char=$(echo -n $value | wc -c) + + if [ "$one_char" -eq 1 ]; then + value="'$value'" + else + # is a string + value="\"$value\"" + fi + fi + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.3pre5/scripts/cinit.read-conf b/software/cinit/browse_source/cinit-0.3pre5/scripts/cinit.read-conf new file mode 100644 index 00000000..4f3c1cb7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/scripts/cinit.read-conf @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# ~ 2005 +# + +CONFS=$($(dirname $0)/cinit.get-confdir)/* + +set -e + +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + if eval test -z \$$NAME; then + eval $NAME=\"$(head -n 1 $conf)\" + eval export $NAME + fi +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.3pre5/scripts/create_baseconfig.sh b/software/cinit/browse_source/cinit-0.3pre5/scripts/create_baseconfig.sh new file mode 100644 index 00000000..7c9b69e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/scripts/create_baseconfig.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# 2006-10-23 +# cLinux/cinit + +. $(dirname $0)/cinit.build-env + +set -e + +mkdir -p "${BASEDIR}" + +mkdir -p "${SERVICES}" +mkdir -p "${SERVICES}/${C_INIT}" + +mkdir -p "${CONFIG}" diff --git a/software/cinit/browse_source/cinit-0.3pre5/serv/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre5/serv/run_init_svc.c new file mode 100644 index 00000000..f41c1f4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/serv/run_init_svc.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-17-19:03:48 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-17-19:03:48 new file mode 100644 index 00000000..e379e004 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-17-19:03:48 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 17 19:03 cinit +-rwx------ 1 nico users 46760 Jun 17 19:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-20-12:16:40 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-20-12:16:40 new file mode 100644 index 00000000..1f0c3325 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-20-12:16:40 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 20 12:16 cinit +-rwx------ 1 nico users 50860 Jun 20 12:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-20-15:16:31 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-20-15:16:31 new file mode 100644 index 00000000..75dc3e7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-20-15:16:31 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 15:16 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-20-16:29:28 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-20-16:29:28 new file mode 100644 index 00000000..1294bde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-20-16:29:28 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-20-16:29:50 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-20-16:29:50 new file mode 100644 index 00000000..69fe7490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-20-16:29:50 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 16:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-21-11:53:35 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-21-11:53:35 new file mode 100644 index 00000000..4a1e7b6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-21-11:53:35 @@ -0,0 +1,3 @@ +total 192 +-rwx------ 1 nico users 102039 Jun 21 11:53 cinit +-rwx------ 1 nico users 87871 Jun 21 11:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-07:33:11 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-07:33:11 new file mode 100644 index 00000000..e6c8ff14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-07:33:11 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47544 Jun 22 07:33 cinit +-rwx------ 1 nico users 46760 Jun 22 07:33 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-07:57:13 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-07:57:13 new file mode 100644 index 00000000..17161d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-07:57:13 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47536 Jun 22 07:57 cinit +-rwx------ 1 nico users 46760 Jun 22 07:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-08:08:40 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-08:08:40 new file mode 100644 index 00000000..770083f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-08:08:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47424 Jun 22 08:08 cinit +-rwx------ 1 nico users 46760 Jun 22 08:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-08:30:42 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-08:30:42 new file mode 100644 index 00000000..aa95fb3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-08:30:42 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47360 Jun 22 08:30 cinit +-rwx------ 1 nico users 46760 Jun 22 08:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-09:19:42 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-09:19:42 new file mode 100644 index 00000000..70c261bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-09:19:42 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 09:19 cinit +-rwx------ 1 nico users 50860 Jun 22 09:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-10:43:24 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-10:43:24 new file mode 100644 index 00000000..b8bc4076 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-10:43:24 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 10:43 cinit +-rwx------ 1 nico users 50860 Jun 22 10:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-12:42:57 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-12:42:57 new file mode 100644 index 00000000..c8119859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-12:42:57 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 22 12:42 cinit +-rwx------ 1 nico users 46760 Jun 22 12:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-13:52:41 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-13:52:41 new file mode 100644 index 00000000..793b92fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-13:52:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:52 cinit +-rwx------ 1 nico users 46760 Jun 22 13:52 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-13:59:40 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-13:59:40 new file mode 100644 index 00000000..d114c557 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-13:59:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:59 cinit +-rwx------ 1 nico users 46760 Jun 22 13:59 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-14:19:41 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-14:19:41 new file mode 100644 index 00000000..8d56882f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-14:19:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47640 Jun 22 14:19 cinit +-rwx------ 1 nico users 46760 Jun 22 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-14:37:18 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-14:37:18 new file mode 100644 index 00000000..b7c3e4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-22-14:37:18 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 22 14:37 cinit +-rwx------ 1 nico users 46760 Jun 22 14:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-23-06:22:23 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-23-06:22:23 new file mode 100644 index 00000000..9e38a5e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-23-06:22:23 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 23 06:22 cinit +-rwx------ 1 nico users 46760 Jun 23 06:22 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-24-17:53:55 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-24-17:53:55 new file mode 100644 index 00000000..3b750eaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-24-17:53:55 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:53 cinit +-rwx------ 1 nico users 46760 Jun 24 17:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-24-17:55:29 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-24-17:55:29 new file mode 100644 index 00000000..c30dcaf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-24-17:55:29 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:55 cinit +-rwx------ 1 nico users 46760 Jun 24 17:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-26-13:19:49 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-26-13:19:49 new file mode 100644 index 00000000..a4de830b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-06-26-13:19:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 26 13:19 cinit +-rwx------ 1 nico users 50860 Jun 26 13:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:07:13 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:07:13 new file mode 100644 index 00000000..e2c59ddf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:07:13 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:07 cinit +-rwx------ 1 nico users 50860 Jul 6 08:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:12:20 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:12:20 new file mode 100644 index 00000000..e562350c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:12:20 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:12 cinit +-rwx------ 1 nico users 50860 Jul 6 08:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:13:39 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:13:39 new file mode 100644 index 00000000..32fd8268 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:13:39 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:13 cinit +-rwx------ 1 nico users 50860 Jul 6 08:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:14:19 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:14:19 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:14:19 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:14:59 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:14:59 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:14:59 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:15:56 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:15:56 new file mode 100644 index 00000000..cf26e6f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-08:15:56 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:15 cinit +-rwx------ 1 nico users 50860 Jul 6 08:15 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-10:12:22 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-10:12:22 new file mode 100644 index 00000000..d5f0f2c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-10:12:22 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:08 cinit +-rwx------ 1 nico users 50860 Jul 6 10:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-10:12:31 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-10:12:31 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-10:12:31 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-10:12:49 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-10:12:49 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-07-06-10:12:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-08-29-21:21:34 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-08-29-21:21:34 new file mode 100644 index 00000000..e651a8ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-08-29-21:21:34 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 root root 444508 2005-08-29 21:21 cinit +-rwx------ 1 root root 440412 2005-08-29 21:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-08-29-23:50:55 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-08-29-23:50:55 new file mode 100644 index 00000000..a279aee3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-08-29-23:50:55 @@ -0,0 +1,3 @@ +insgesamt 856 +-rwx------ 1 nico nico 437564 2005-08-29 23:50 cinit +-rwx------ 1 nico nico 436316 2005-08-29 23:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-03-03:36:59 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-03-03:36:59 new file mode 100644 index 00000000..01e555f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-03-03:36:59 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 nico nico 444508 2005-09-03 03:36 cinit +-rwx------ 1 nico nico 440412 2005-09-03 03:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-03-04:34:35 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-03-04:34:35 new file mode 100644 index 00000000..1832930a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-03-04:34:35 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 04:34 cinit +-rwx------ 1 nico nico 440412 Sep 3 04:34 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-03-05:51:17 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-03-05:51:17 new file mode 100644 index 00000000..4e465d06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-03-05:51:17 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 05:51 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-03-05:54:20 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-03-05:54:20 new file mode 100644 index 00000000..9c040d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-03-05:54:20 @@ -0,0 +1,4 @@ +total 1300 +-rwx------ 1 nico nico 440412 Sep 3 05:54 ccontrol +-rwx------ 1 nico nico 444508 Sep 3 05:54 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-03-09:01:59 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-03-09:01:59 new file mode 100644 index 00000000..880422a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-03-09:01:59 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 3 09:01 cinit +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-05-19:41:12 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-05-19:41:12 new file mode 100644 index 00000000..0f07d86e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-05-19:41:12 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 root root 440412 2005-09-05 19:41 ccontrol +-rwx------ 1 root root 444508 2005-09-05 19:41 cinit +-rwx------ 1 root root 440412 2005-09-05 19:41 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-05-19:50:35 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-05-19:50:35 new file mode 100644 index 00000000..32ff19fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-05-19:50:35 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 5 19:50 cinit +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-24-01:42:38 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-24-01:42:38 new file mode 100644 index 00000000..0da6126e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-24-01:42:38 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-09-24 01:42 ccontrol +-rwx------ 1 nico nico 437628 2005-09-24 01:42 cinit +-rwx------ 1 nico nico 436316 2005-09-24 01:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-30-22:50:50 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-30-22:50:50 new file mode 100644 index 00000000..0d510174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-30-22:50:50 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 22:50 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 22:50 cinit +-rwx------ 1 nico nico 436316 2005-09-30 22:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-30-23:06:39 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-30-23:06:39 new file mode 100644 index 00000000..23450914 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-09-30-23:06:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 23:06 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 23:06 cinit +-rwx------ 1 nico nico 436316 2005-09-30 23:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-01-22:09:13 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-01-22:09:13 new file mode 100644 index 00000000..a62b9eb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-01-22:09:13 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-10-01 22:09 ccontrol +-rwx------ 1 nico nico 437308 2005-10-01 22:09 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-01-22:17:39 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-01-22:17:39 new file mode 100644 index 00000000..b1d8b11b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-01-22:17:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-01 22:17 ccontrol +-rwx------ 1 nico nico 437532 2005-10-01 22:17 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-02-11:12:29 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-02-11:12:29 new file mode 100644 index 00000000..e5f7b13d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-02-11:12:29 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:12 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-02-11:13:35 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-02-11:13:35 new file mode 100644 index 00000000..d7c14471 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-02-11:13:35 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-02-11:13:43 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-02-11:13:43 new file mode 100644 index 00000000..1711d01a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-02-11:13:43 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 11:13 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 436316 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-02-16:00:24 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-02-16:00:24 new file mode 100644 index 00000000..ab23228c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-02-16:00:24 @@ -0,0 +1,4 @@ +total 1284 +-rwx------ 1 nico nico 436316 Oct 2 16:00 ccontrol +-rwx------ 1 nico nico 437884 Oct 2 16:00 cinit +-rwx------ 1 nico nico 436316 Oct 2 16:00 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-02-23:17:11 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-02-23:17:11 new file mode 100644 index 00000000..92041cd9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-02-23:17:11 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 23:17 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 23:17 cinit +-rwx------ 1 nico nico 436316 2005-10-02 23:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-03-00:54:39 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-03-00:54:39 new file mode 100644 index 00000000..df47a057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-03-00:54:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:54 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:54 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-03-00:56:29 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-03-00:56:29 new file mode 100644 index 00000000..08db7fec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-03-00:56:29 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:56 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:56 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:56 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-13-09:55:52 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-13-09:55:52 new file mode 100644 index 00000000..d54a7ff4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-13-09:55:52 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:55 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:55 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-13-09:57:11 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-13-09:57:11 new file mode 100644 index 00000000..3b1af9ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-13-09:57:11 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:57 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:57 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-13-10:07:28 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-13-10:07:28 new file mode 100644 index 00000000..58d25315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-13-10:07:28 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 10:07 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 10:07 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 10:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-15-15:26:52 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-15-15:26:52 new file mode 100644 index 00000000..a88291e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-15-15:26:52 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 root root 436316 2005-10-15 15:26 ccontrol +-rwx------ 1 root root 437916 2005-10-15 15:26 cinit +-rwx------ 1 root root 436316 2005-10-15 15:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-15-21:23:56 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-15-21:23:56 new file mode 100644 index 00000000..43a4504d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-10-15-21:23:56 @@ -0,0 +1,4 @@ +total 36 +-rwx------ 1 nico nico 9148 Oct 15 21:23 ccontrol +-rwx------ 1 nico nico 11872 Oct 15 21:23 cinit +-rwx------ 1 nico nico 9768 Oct 15 21:23 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2005-11-17-17:03:53 b/software/cinit/browse_source/cinit-0.3pre5/size/2005-11-17-17:03:53 new file mode 100644 index 00000000..78543f15 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2005-11-17-17:03:53 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2005-11-17 17:03 ccontrol +-rwx------ 1 nico nico 11872 2005-11-17 17:03 cinit +-rwx------ 1 nico nico 9768 2005-11-17 17:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-11-23:45:54 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-11-23:45:54 new file mode 100644 index 00000000..f4852c81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-11-23:45:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-11 23:45 cinit +-rwx------ 1 nico nico 9768 2006-02-11 23:45 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-12-00:06:11 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-12-00:06:11 new file mode 100644 index 00000000..2fe41351 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-12-00:06:11 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-12-00:06:42 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-12-00:06:42 new file mode 100644 index 00000000..bf2ddc36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-12-00:06:42 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:06 ccontrol +-rwx------ 1 nico nico 11560 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-12-00:08:24 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-12-00:08:24 new file mode 100644 index 00000000..e25a49ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-12-00:08:24 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:08 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:08 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-12-00:09:33 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-12-00:09:33 new file mode 100644 index 00000000..0b64fa00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-12-00:09:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:09 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:09 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-12-00:13:32 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-12-00:13:32 new file mode 100644 index 00000000..b6c5c38e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-12-00:13:32 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:13 ccontrol +-rwx------ 1 nico nico 11500 2006-02-12 00:13 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-16-23:57:29 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-16-23:57:29 new file mode 100644 index 00000000..86b9fda9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-16-23:57:29 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11620 2006-02-16 23:57 cinit +-rwx------ 1 nico nico 9768 2006-02-16 23:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-17-00:16:18 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-17-00:16:18 new file mode 100644 index 00000000..28c853a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-17-00:16:18 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 00:16 cinit +-rwx------ 1 nico nico 9768 2006-02-17 00:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-17-22:48:35 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-17-22:48:35 new file mode 100644 index 00000000..5935acfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-17-22:48:35 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-17 22:48 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 22:48 cinit +-rwx------ 1 nico nico 9768 2006-02-17 22:48 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:03:54 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:03:54 new file mode 100644 index 00000000..9222f0b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:03:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:03 cinit +-rwx------ 1 nico nico 9768 2006-02-20 19:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:04:33 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:04:33 new file mode 100644 index 00000000..c5797edc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:04:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:04:36 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:04:36 new file mode 100644 index 00000000..fbcf9fa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:04:36 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:07:47 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:07:47 new file mode 100644 index 00000000..7e1fe18f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:07:47 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:07 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:12:33 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:12:33 new file mode 100644 index 00000000..2b4fda40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:12:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:12 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:12 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:14:56 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:14:56 new file mode 100644 index 00000000..bccb5d65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-02-20-20:14:56 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:14 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:14 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-01-23:32:43 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-01-23:32:43 new file mode 100644 index 00000000..fcbaf372 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-01-23:32:43 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-01 23:32 ccontrol +-rwx------ 1 nico nico 11640 2006-06-01 23:32 cinit +-rwx------ 1 nico nico 9768 2006-06-01 23:32 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-01:08:28 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-01:08:28 new file mode 100644 index 00000000..7683546c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-01:08:28 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:08 ccontrol +-rwx------ 1 nico nico 11688 2006-06-02 01:08 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-01:29:13 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-01:29:13 new file mode 100644 index 00000000..adbc6846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-01:29:13 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:29 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 01:29 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-11:13:39 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-11:13:39 new file mode 100644 index 00000000..46eaef4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-11:13:39 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:13 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:13 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-11:36:37 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-11:36:37 new file mode 100644 index 00000000..306402f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-11:36:37 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:36 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:36 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-15:17:17 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-15:17:17 new file mode 100644 index 00000000..7bb59095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-15:17:17 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:17 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:17 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-15:19:52 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-15:19:52 new file mode 100644 index 00000000..ce65256f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-06-02-15:19:52 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:19 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:19 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre5/size/2006-11-29-235834 b/software/cinit/browse_source/cinit-0.3pre5/size/2006-11-29-235834 new file mode 100644 index 00000000..c2c83117 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/size/2006-11-29-235834 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73645 2006-11-29 23:57 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/Makefile b/software/cinit/browse_source/cinit-0.3pre5/src/Makefile new file mode 100644 index 00000000..2100b7d1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/Makefile @@ -0,0 +1,135 @@ +# +# cinit +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +include Makefile.tests + +# Build tools / locations +CC=../tmpbin/cc +CFLAGS= +LD=../tmpbin/ld +LDFLAGS= +STRIP=../tmpbin/strip +SBIN=../sbin + +# directories and files +CONFIG_H=include/config.h + +# +# objects for the cinit part +# +CINIT_HEADERS=$(shell cat include/listing) +CINIT_CORE_OBJ=$(shell cat core/objects) +CINIT_GENERIC_OBJ=$(shell cat generic/objects) +CINIT_SVC_OBJ=$(shell cat svc/objects) + +# +# The current link may be missing in the first run +# +CINIT_IPC_OBJ=$(shell cat ipc/current/objects 2>/dev/null) +CINIT_OS_OBJ=$(shell cat os/current/objects 2>/dev/null) + +CINIT_OBJ=$(CINIT_CORE_OBJ) $(CINIT_IPC_OBJ) $(CINIT_OS_OBJ) \ + $(CINIT_GENERIC_OBJ) $(CINIT_SVC_OBJ) + +# +# Dependencies +# +$(CINIT_OBJ): $(CINIT_HEADERS) + +# +# Client modules +# +CLIENT=client/msg_svc_on_off.o client/msg_change_status.o client/run_svc.o \ + client/exec_svc.o client/respawn_svc.o client/run_run_svcs.o \ + client/connect_sock.o client/begin_msg.o client/sig_terminate.o + +COMMUNICATION=comm/do_change_status.o comm/do_result.o comm/do_svc_name.o + +BOTH=generic/set_signals.o generic/mini_printf.o generic/usage.o + +OBJ=$(SERV) $(SERV_OS) $(CLIENT) $(BOTH) $(COMMUNICATION) + +CSVC_OBJ=util/cservice.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +CCO_OBJ=util/ccontrol.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +%.o: %.c + $(CC) -c -o $@ $< + +# +# End user target +# +#all: cinit cservice ccontrol sizecheck docs +all: cinit + +# +# First do configuration, so we include the right variables +# +Makefile: .configured + +.configured: ../conf/* + @../bin/cinit.configure.os + @../bin/cinit.configure.tools + @../bin/cinit.configure.ipc + @../bin/cinit.configure.mark + +$(CINIT_OBJ): $(CONFIG_H) + +cinit: $(CINIT_OBJ) + $(LD) $^ -o $@ + + +#$(CINIT_BIN): $(SBIN) $(OBJ) +# $(LD) $(LDFLAGS) $(OBJ) -o $@ +# $(STRIP) $@ + +sizecheck: cinit cservice + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l sbin/ > $$FILE; cat $$FILE + @echo -n "Source size (in KiB): " + @du -s $(SDIRS) | awk '{ sum+=$$1 } END { print sum }' +# @du -s bin client comm conf doc generic serv | awk '{ sum+=$1 } END { print sum }' + + + +.PHONY: clean +clean: + rm -f .configured + rm -f $(CINIT_OBJ) + rm -f ../tmpbin/* + +distclean: + rm -f os/current ipc/current + +$(CONFIG_H): ../conf/* + ../scripts/cinit.mkheader > $(CONFIG_H) + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +ccontrol: $(SBIN)/ccontrol + +$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) + $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ + $(STRIP) $@ + +install: install-dir cinit cservice ccontrol + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/Makefile.tests b/software/cinit/browse_source/cinit-0.3pre5/src/Makefile.tests new file mode 100644 index 00000000..0f4b4626 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/Makefile.tests @@ -0,0 +1,27 @@ +# +# Makefile for cinit tests +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +TEST_BUILD_ARGV=test/test_build_argv.o core/build_argv.o + +PROGS=test_build_argv test_build_argv_link + +tests: $(PROGS) + +test_build_argv: test/test_build_argv.o core/build_argv.o +test_build_argv_link: test/test_build_argv+link.o core/build_argv.o + +test_gen_svc_tree: test/test_gen_svc_tree.o svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/gen_svc_tree.o \ + generic/mini_printf.o \ + svc/list_display_all.o + +test_openreadclose: test/test_openreadclose.o generic/openreadclose.o diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/core/build_argv.c b/software/cinit/browse_source/cinit-0.3pre5/src/core/build_argv.c new file mode 100644 index 00000000..85238d47 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/core/build_argv.c @@ -0,0 +1,170 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Build **argv for execution in cinit way: + * 1. check whether cmd is a valid executable + * 2. try to read cmd.params and write parameters + * 3. try to read cmd.env and setup environment + * + * Returns: + * BA_OK: Everything went well, you can use the struct + * BA_NOTFOUND: Binary executable is not available + * BA_PARAMS: Reading the parameters failed (ignoring non-existence!) + * BA_ENV: Reading the environment failed (same as above) + * BA_OTHER: Other error + */ + +#include /* open() */ +#include /* *alloc() */ +#include /* readlink */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* NULL */ +#include /* strchr */ +#include /* stat() */ + +#include "cinit.h" +#include "build_argv.h" + + /* + * char *basename: something we should execute + * (*basename) + ".params" will be added as parameters + * (*basename) + ".env" will be added as environment + */ + +int cinit_build_argv(char *basename, struct ba_argv *bav) +{ + int tmp; + int argc; + char pathtmp[PATH_MAX+1]; + char *sbuf = NULL; + char *p; + + /* sane values */ + bav->argv = NULL; + bav->envp = NULL; + + mini_printf("CBA::",1); + mini_printf(basename,1); + mini_printf("\n",1); + + /*********************************************************************** + * Try to get realname (for links) + */ + if((tmp = readlink(basename,pathtmp,PATH_MAX)) == -1) { + /* nothing there? */ + if(errno == ENOENT) { + return BA_E_NOTFOUND; + } + if (errno != EINVAL) { + return BA_E_OTHER; + } + tmp=strlen(basename); + strncpy(pathtmp,basename,tmp); + } + pathtmp[tmp] = '\0'; + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /*********************************************************************** + * prepare argv0 + */ + bav->argv = malloc(sizeof(char *)); + if(bav->argv == NULL) return BA_E_MEM; + + *bav->argv = malloc(tmp); + if(*(bav->argv) == NULL) return BA_E_MEM; + + strncpy(*(bav->argv),pathtmp,tmp); + + /********************** read params *********************/ + /* FIXME check bounds! */ + strcpy(pathtmp,basename); + strcat(pathtmp,C_PARAMS); + /* ORC_ERR_NONEXISTENT: Ok, have sbuf set to NULL + * ORC_OK: Ok, have a filled buffer (perhaps NULL, too) + * other: Error, print errno + */ + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /*********************************************************************** + * Now split the string, converting \n to \0 + */ + argc = 1; /* argv0 */ + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = sbuf; /* here begins the current argument */ + + if(p != NULL) { /* found another \n */ + *p = '\0'; + sbuf = p+1; + } else { /* end of string */ + sbuf = NULL; + } + + ++argc; + } + + /************ close argv list **************/ + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,basename); + strcat(pathtmp,C_ENV); + + tmp = argc = 0; + sbuf = NULL; + + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /************** build environment string **************/ + argc = 0; + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) return BA_E_MEM; + + bav->envp[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + sbuf = p+1; + } else { + sbuf = NULL; + } + ++argc; + } + + /************ close env list **************/ + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) { + return BA_E_MEM; + } + bav->envp[argc] = NULL; + + return BA_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/core/cinit.c b/software/cinit/browse_source/cinit-0.3pre5/src/core/cinit.c new file mode 100644 index 00000000..d2e48e95 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/core/cinit.c @@ -0,0 +1,90 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The main file + * + */ + +#include /* getpid,chdir */ +#include /* str(ncmp,len,cpy,cat) */ +#include /* perror */ +#include /* malloc */ + +#include "cinit.h" /* general things */ +#include "messages.h" /* messages */ +#include "ipc.h" /* general ipc methods */ +#include "svc.h" /* gen_svc_tree */ + +struct listitem *svc_list = NULL; +struct dep *svc_init = NULL; + +int main(int argc, char **argv) +{ + char *initdir; +// pid_t cpid; + + initdir = CINIT_INIT; /* default init dir */ + + /* FIXME: RE-ENABLE as SOON AS PRODUCTIVE cpid = getpid(); + * Is this really needed or should we lock() ourselves? + if(cpid != 1) { + mini_printf(CINIT_VERSION,2); + mini_printf(MSG_USAGE,2); + return 0; + }*/ + + set_signals(ACT_SERV); + + /* Look whether we should start a profile */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_SVCDIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_SVCDIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* FIXME: do we really need three calls? */ + mini_printf(MSG_BOOTING,1); mini_printf(initdir,1); mini_printf("\n",1); + + if(chdir(initdir) == -1) { + print_errno(initdir); + panic(); + } + + /* initialize ipc method */ + if(!cinit_ipc_init()) { + panic(); + } + + /* pre-calculate service tree */ + gen_svc_tree(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* start tree from the bottom */ + if(!tree_exec(svc_init)) return 1; + + mini_printf("=> cinit started.\n",1); + + /* listen for incomming messages: should never return */ + if(!cinit_ipc_listen()) { + panic(); + } + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/core/do_reboot.c b/software/cinit/browse_source/cinit-0.3pre5/src/core/do_reboot.c new file mode 100644 index 00000000..c190f634 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/core/do_reboot.c @@ -0,0 +1,74 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "ipc.h" +#include "cinit.h" +#include "os.h" +#include "messages.h" + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void do_reboot(int signal) +{ + //struct listitem *tmp; + struct timespec ts; + //char **cmd; + //int i; + + /* shutdown all services: take care about the dependency tree */ + + /* do not listen to client requests anymore + * FIXME: perhaps before shutdown? */ + cinit_ipc_destroy(); + + /* now: all services are down, let's kill all other processes */ + if( kill(-1,SIGTERM) == -1) { + print_errno(MSG_TERMKILL); + } + + /* FIXME make SLEEP_KILL an optional configuration statement */ + ts.tv_sec = SLEEP_KILL; /* defined in conf/sleep_kill */ + ts.tv_nsec = 0; + nanosleep(&ts,NULL); + + if( kill(-1,SIGKILL) == -1) { + print_errno(MSG_KILLBILL); + } + + /* execute umount, as defined in conf/umount */ + + /* execute_sth(CINIT_UMOUNT); */ + + /* do what we really wanted to do */ + switch(signal) { + case SIGTERM: /* power off */ + LOG(MSG_POWER_OFF); + cinit_poweroff(); + break; + case SIGHUP: /* reboot */ + LOG(MSG_REBOOT); + cinit_reboot(); + break; + case SIGUSR1: /* halt */ + LOG(MSG_HALT); + cinit_halt(); + break; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/core/objects b/software/cinit/browse_source/cinit-0.3pre5/src/core/objects new file mode 100644 index 00000000..9596d171 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/core/objects @@ -0,0 +1,7 @@ +core/build_argv.o +core/cinit.o +core/panic.o +core/run_init_svc.o +core/set_signals.o +core/do_reboot.o +core/sig_child.o diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/core/panic.c b/software/cinit/browse_source/cinit-0.3pre5/src/core/panic.c new file mode 100644 index 00000000..39092aef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/core/panic.c @@ -0,0 +1,30 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something + */ + +#include "cinit.h" +#include + +void panic(void) +{ + char *nargv[2]; + + execute_sth(CINIT_PANIC); + + /*********************************************************************** + * THIS SHOULD NOT HAPPEN, fallback to hardcoded sulogin + * (conf/sulogin) + */ + nargv[0] = SULOGIN; + nargv[1] = NULL; + + execv(SULOGIN,nargv); + + /* there's nothing todo, if everything fails */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/core/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre5/src/core/run_init_svc.c new file mode 100644 index 00000000..42edb167 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/core/run_init_svc.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include /* _exit, fork */ + +#include "cinit.h" +#include "messages.h" +#include "ipc.h" + +int run_svc(char *rpath) { rpath = "test"; return 0; } /* a hack to compile cinit for now */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + if(!cinit_ipc_logon()) _exit(1); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/core/run_svc.c b/software/cinit/browse_source/cinit-0.3pre5/src/core/run_svc.c new file mode 100644 index 00000000..4a7eabf1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/core/run_svc.c @@ -0,0 +1,131 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +#error "needs to be cleaned up" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + print_errno(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + print_errno(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/core/set_signals.c b/software/cinit/browse_source/cinit-0.3pre5/src/core/set_signals.c new file mode 100644 index 00000000..e70819ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/core/set_signals.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2006-2006 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Define signal handlers + */ + + +#include /* sigaction */ +//#include /* SIG* defs */ +#include /* NULL */ +#include "cinit.h" /* defines */ + +void set_signals(int action) +{ + struct sigaction sa; + + if(action == ACT_SERV) { + sa.sa_handler=sig_child; + } else { + sa.sa_handler=SIG_DFL; + } + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + if(action == ACT_SERV) { + sa.sa_handler=do_reboot; + } + sigaction(SIGHUP,&sa,NULL); /* reboot */ + sigaction(SIGTERM,&sa,NULL); /* poweroff */ + sigaction(SIGUSR1,&sa,NULL); /* halt */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/core/sig_child.c b/software/cinit/browse_source/cinit-0.3pre5/src/core/sig_child.c new file mode 100644 index 00000000..53439d0a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/core/sig_child.c @@ -0,0 +1,80 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The child handler + * + */ + +#include +#include +#include + +#include /* sigaction */ +#include "cinit.h" +#include "svc.h" /* list_search_pid */ + +/*********************************************************************** + * sig_child + * collect the children + * FIXME: check whether we've race conditions when reciieving multiiple + * signals + * Perhaps disable listening to sig_child in meantime? + */ + +void sig_child(int tmp) +{ + /* New code: + * - search for pid in service list + * * if (respawn) -> start new + * - insert delay? if exit code is non-zero? if uptime too less? + * * if (once) -> update service status + * * else ignore, but reap away + */ + struct listitem *svc; + struct sigaction sa; + + /* do not interrupt us or anything we might call */ + sa.sa_handler = SIG_IGN; + sigaction(SIGCHLD,&sa,NULL); + + while((tmp = waitpid(-1, &tmp, WNOHANG)) > 0) { + /* check if it's a watched child */ + + /* restart service, if we are watching it */ + svc = list_search_pid((pid_t) tmp); + + mini_printf("SC::",1); + if(svc != NULL) { + mini_printf(svc->abs_path,1); + if(WIFEXITED(tmp) && !WEXITSTATUS(tmp)) { + mini_printf("::JUHU::",1); + /* process successfully terminated */ + svc_success(svc); + if(svc->status == ST_RESPAWNING) { + /* respawn: restart */ + svc_start(svc); + } else { /* FIXME: SET PID = 0, so it's not found later again + } + } else { + mini_printf("::FAILED::",1); + //svc_report_status(svc->abs_path,"FAILED",NULL); + /* FAILED */ + svc_fail(svc); + if(svc->status == ST_RESPAWNING) { + mini_printf("::RESPAWN::",1); + /* respawn: restart */ + svc_start(svc); + } + } + } else { + mini_printf("Cleanup: reparenting",1); + } + mini_printf("\n",1); + } + + sa.sa_handler = sig_child; + sigaction(SIGCHLD,&sa,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/generic/execute_sth.c b/software/cinit/browse_source/cinit-0.3pre5/src/generic/execute_sth.c new file mode 100644 index 00000000..2672a244 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/generic/execute_sth.c @@ -0,0 +1,36 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Executes something: replaces us + */ + +#include /* _exit */ +#include "cinit.h" +#include "build_argv.h" + +void execute_sth(char *basename) +{ + int tmp; + struct ba_argv bav; + + mini_printf("ES::",1); + mini_printf(basename,1); + mini_printf("\n",1); + + tmp = cinit_build_argv(basename,&bav); + if((tmp = cinit_build_argv(basename,&bav)) != BA_OK) { + if(tmp != BA_E_MEM) { + print_errno(basename); + } /* do not print something on memory errors */ + _exit(1); /* FIXME: adjust exit code? */ + } + + execve((bav.argv)[0],bav.argv,bav.envp); + print_errno(basename); + _exit(1); /* FIXME: return specific error code, so cinit knows + * what happened! - sure? perhaps this gets non + * standard errors from other programs, too ... */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre5/src/generic/mini_printf.c new file mode 100644 index 00000000..b3139349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/generic/mini_printf.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Print the world! + * + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) return; + + p = str; + while ( *p ) p++; + + write(fd,str,(size_t) (p - str) ); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/generic/objects b/software/cinit/browse_source/cinit-0.3pre5/src/generic/objects new file mode 100644 index 00000000..f22ea6fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/generic/objects @@ -0,0 +1,7 @@ +generic/execute_sth.o +generic/mini_printf.o +generic/path_absolute.o +generic/path_append.o +generic/print_errno.o +generic/openreadclose.o +generic/strip_final_newline.o diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/generic/openreadclose.c b/software/cinit/browse_source/cinit-0.3pre5/src/generic/openreadclose.c new file mode 100644 index 00000000..0b21733f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/generic/openreadclose.c @@ -0,0 +1,71 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * read a file + * + */ + +#include +#include /* strncpy */ +#include /* realloc */ +#include /* errno */ +#include /* NULL */ +#include /* open */ +#include "cinit.h" + +int openreadclose(char *filename, char **where) +{ + + int tmp; + int cnt; + int fd; + char buf[512]; + + mini_printf("ORC:",1); + mini_printf(filename,1); + mini_printf("\n",1); + *where = NULL; + + while((fd = open(filename,O_RDONLY)) == -1) { + if(errno == ENOENT) return ORC_ERR_NONEXISTENT; + if(errno != EINTR) return ORC_ERR_OPEN; + } + + cnt = 0; + while (1) { + tmp = read(fd,buf,512); + + if(tmp == -1) { + if(errno == EINTR) + continue; + else + return ORC_ERR_READ; + } else if(tmp == 0) { + break; + } + + cnt += tmp; + *where = realloc(*where,cnt + 1); + if(*where == NULL) return ORC_ERR_MEM; + + /* FIXME check correctness of copied buffer... + * and get some sleep..soon, very soon! */ + strncpy(&(*where)[cnt-tmp],buf,tmp); + mini_printf("ORC: ",1); + mini_printf(buf,1); + mini_printf("\n",1); + } + + while((fd = close(fd)) == -1) { + if(errno == EINTR) continue; + return ORC_ERR_CLOSE; + } + + /* terminate string! */ + (*where)[cnt] = '\0'; + + return ORC_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/generic/path_absolute.c b/software/cinit/browse_source/cinit-0.3pre5/src/generic/path_absolute.c new file mode 100644 index 00000000..9568bf67 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/generic/path_absolute.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create an absulte path + */ + +#include /* chdir(),getcwd */ +#include /* PATH_MAX */ +#include "cinit.h" /* print_errno */ +#include "messages.h" /* print_errno */ + +int path_absolute(char *relpath, char *newpath, size_t size) +{ + char oldpath[PATH_MAX+1]; + + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_CHDIR); + return 0; + } + + if(chdir(relpath) == -1) { + print_errno(relpath); + return 0; + } + + if(!getcwd(newpath,size)) { + print_errno(relpath); + return 0; + } + + if(chdir(oldpath) == -1) { + print_errno(oldpath); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/generic/path_append.c b/software/cinit/browse_source/cinit-0.3pre5/src/generic/path_append.c new file mode 100644 index 00000000..c6617ba9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/generic/path_append.c @@ -0,0 +1,28 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create path to needs + */ + +#include /* strlen */ +#include /* PATH_MAX */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +int path_append(char *path, char *append) +{ + size_t end = strlen(path); + + if(strcmp(&path[end-1],SLASH)) { + if((end + strlen(SLASH) + strlen(append)) > PATH_MAX) return 0; + strcat(path,SLASH); + } else { + if((end + strlen(append)) > PATH_MAX) return 0; + } + strcat(path,append); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/generic/print_errno.c b/software/cinit/browse_source/cinit-0.3pre5/src/generic/print_errno.c new file mode 100644 index 00000000..7415d556 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/generic/print_errno.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * stolen from tcpserver_blocker + * + * Author: Nico Schottelius + * Date: 2006-08-24 + * + * Print the error found in errno + */ + +#include /* strerror */ +#include /* errno */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +void print_errno(char *msg) +{ + if(msg) { + mini_printf(msg, FD_ERR); + mini_printf(": ", FD_ERR); + } + mini_printf(strerror(errno), FD_ERR); + mini_printf("\n", FD_ERR); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/generic/strip_final_newline.c b/software/cinit/browse_source/cinit-0.3pre5/src/generic/strip_final_newline.c new file mode 100644 index 00000000..d9c12f05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/generic/strip_final_newline.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * If the last character is \n, shrink the memory and remove it + * + */ + +#include /* NULL */ +#include /* strchr */ +#include /* alloc */ +#include "cinit.h" /* FIXME debug */ + +char *strip_final_newline(char *str) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) { + mini_printf("SFN: NULL\n",1); + return NULL; + } + + p = strrchr(str,'\n'); + if(p) { + if(*(p+1) == '\0') { + str = realloc(str,(p-str)); + } + } + + return str; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/generic/usage.c b/software/cinit/browse_source/cinit-0.3pre5/src/generic/usage.c new file mode 100644 index 00000000..87d62c73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/generic/usage.c @@ -0,0 +1,23 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * usage: tell the world what we want - seriously no capitalism + * + */ + +#include +#include "cinit.h" + +/*********************************************************************** + * usage: tell the user what's wrong and a help text + */ +void usage(char *banner, char *text) +{ + /* print banner + error message */ + mini_printf(banner,1); + mini_printf(text,1); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/include/build_argv.h b/software/cinit/browse_source/cinit-0.3pre5/src/include/build_argv.h new file mode 100644 index 00000000..b61b27a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/include/build_argv.h @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * build **argv + */ + +#ifndef CINIT_BA_HEADER +#define CINIT_BA_HEADER + +/***************************************************************************** + * Defines: return values + */ +enum { + BA_OK, + BA_E_NOTFOUND, + BA_E_PARAMS, + BA_E_ENV, + BA_E_MEM, + BA_E_OTHER +}; + +/***************************************************************************** + * Structures + */ +struct ba_argv { + char **argv; + char **envp; +}; + +/***************************************************************************** + * Functions + */ +int cinit_build_argv(char *basename, struct ba_argv *bav); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/include/cinit.h b/software/cinit/browse_source/cinit-0.3pre5/src/include/cinit.h new file mode 100644 index 00000000..8f8f970f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/include/cinit.h @@ -0,0 +1,97 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_H +#define _CINIT_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/*********************************************************************** + * Defines + */ +#define SLASH "/" +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC + +enum { /* FIXME: there are some default defines somewhere for that */ + FD_IN=0, + FD_OUT=1, + FD_ERR=2 +}; + +enum { /* returns of openreadclose */ + ORC_OK, + ORC_ERR_NONEXISTENT, + ORC_ERR_OPEN, + ORC_ERR_READ, + ORC_ERR_CLOSE, + ORC_ERR_MEM +}; + +/*********************************************************************** + * Paths + */ +#define CINIT_SVCDIR CINIT_DIR SLASH SVCDIR +#define CINIT_INIT CINIT_SVCDIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK +#define CINIT_BIN PREFIX SLASH "sbin" SLASH "cinit" + +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC +#define CINIT_UMOUNT CINIT_CONFDIR SLASH C_UMOUNT + +/* actions for i/o handlers (see comm/do_*) */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* functions (used by server and client) */ +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +void usage(char *banner, char *stext); + +int do_svc_name(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* server functions */ +int run_init_svc(char *cinit_svc); +void sigio(int socket); +void do_reboot(int signal); +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +int msg_svc_on_off(char *svc, char action); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +int run_run_svcs(char *abspath); +pid_t exec_svc(char *abspath, int on); +pid_t respawn_svc(char *abspath); +int connect_sock(int socke); +char **read_file(char *file); +void sig_terminate(int signal); + +/* generic */ +void execute_sth(char *basename); +int path_append(char *path, char *append); +int path_absolute(char *relpath, char *buf, size_t size); +int openreadclose(char *filename, char **where); +char *strip_final_newline(char *str); + +/* util */ +int msg_reboot(char cmd); +void print_errno(char *text); + +/* os-functions */ +void cinit_reboot(void); +void cinit_halt(void); +void cinit_poweroff(void); + +#endif /* _CINIT_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/include/comm.h b/software/cinit/browse_source/cinit-0.3pre5/src/include/comm.h new file mode 100644 index 00000000..b9aaf60f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/include/comm.h @@ -0,0 +1,69 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#ifndef CINIT_COMM_HEADER +#define CINIT_COMM_HEADER + +#include /* PATH_MAX */ + +/*********************************************************************** + * Commands the clients may issue to us + * maximum number of commands: 2^8 = 256 + */ +enum commands { + CMD_START_SVC=1, /* the client wants US to start a service */ + CMD_START_SVC_ONLY, /* start this service without dependencies */ + CMD_STOP_SVC, /* stop svc and all svcs that need it */ + CMD_STOP_SVC_ONLY, /* we should stop _only_ this service */ + CMD_STOP_SVC_WANTS, /* stop svc, all svcs that need or want it */ + CMD_CHG_STAT, /* the client reports a status change */ + CMD_RESCUE, /* we should start the rescue mode */ + CMD_HALT, /* halt the system */ + CMD_REBOOT, /* reboot the system */ + CMD_POWEROFF, /* poweroff the system */ + CMD_WBOOT, /* shutdown and restart everything */ + CMD_INFO /* send information about that service */ +}; + +/* old + RT_ERR_COMM, * communication failed * + RT_ERR, * service starting failed * + RT_UNSPEC, * some kind of error, unspecified * + RT_SUCCESS, * successfully started: respawning or once * + RT_SVC_FAILED, * tried earlier, service failed, won't retry * + +*/ + +/*********************************************************************** + * messages from the client + * Prefix: qst_ (question) + */ +struct msg_client { + pid_t pid; /* pid of the telling client */ + char cmd; /* which cmd is issued to us */ + char status; /* status of the service */ + char svc[PATH_MAX]; /* name of the service */ + char svc_orig[PATH_MAX]; /* the service, which wants to start us */ +}; + +/*********************************************************************** + * messages from the server + * Prefix: asw_ (answer) + */ + +/*********************************************************************** + * return short status + */ +struct asw_sstatus { + long mtype; + char status; + char msg[PATH_MAX]; +}; + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/include/ipc.h b/software/cinit/browse_source/cinit-0.3pre5/src/include/ipc.h new file mode 100644 index 00000000..66b3bc86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/include/ipc.h @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Prototypes for ipc handler + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +/***************************************************************************** + * Functions: in server + */ +int cinit_ipc_init(void); /* init in init */ +int cinit_ipc_listen(void); /* listen in init */ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + +/***************************************************************************** + * Functions: in clients + */ +int cinit_ipc_logon(void); /* logon to init (client init) */ +int cinit_ipc_connect(void); /* connect to init */ +int cinit_ipc_csend(void *data); /* send to the server from a client */ + +/***************************************************************************** + * Functions: shared + */ + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/include/listing b/software/cinit/browse_source/cinit-0.3pre5/src/include/listing new file mode 100644 index 00000000..df30f408 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/include/listing @@ -0,0 +1,5 @@ +include/cinit.h +include/config.h +include/ipc.h +include/messages.h +include/os.h diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/include/messages.h b/software/cinit/browse_source/cinit-0.3pre5/src/include/messages.h new file mode 100644 index 00000000..e0829989 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/include/messages.h @@ -0,0 +1,98 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_MSG_H +#define _CINIT_MSG_H + +/* version */ +#define CINIT_VERSION "cinit-" VERSION +#define MSG_BOOTING CINIT_VERSION ": Booting from " + +#define MSG_DP ": " + +/* Messages to the outside */ +#define MSG_BIND "bind" +#define MSG_CONNECT "connect" +#define MSG_FCNTL "fcntl" +#define MSG_KILLBILL "sigkill" +#define MSG_LISTEN "listen" +#define MSG_SOCKET "socket" +#define MSG_TERMKILL "sigterm" +#define MSG_USAGE_1 ": fast executing, small and simple init " +#define MSG_USAGE_2 "with support for profiles\n" +#define MSG_USAGE_3 "\nError: cinit must be started as PID 1.\n" +#define MSG_USAGE MSG_USAGE_1 MSG_USAGE_2 MSG_USAGE_3 +#define MSG_ERR_FORK "fork" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_OPEN "open" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_READ "read" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" + +#define MSG_ERR_DEPS "Too many dependencies" +#define MSG_ERR_ACCEPT "accept" +#define MSG_ERR_WAITPID "waitpid" +#define MSG_ERR_POLL "poll" +#define MSG_ERR_MODIFY "modify list failed" +#define MSG_ERR_COMM "Communication failed" + +#define MSG_ERR_LESS_ARGS "Too less arguments!" +#define MSG_ERR_BAD_ARGS "Wrong arguments / parameter" +#define MSG_ERR_ARGS_LEN "Wrong parameter length" + +#define LOG_SVC_STOPED "Service stoped" +#define LOG_SVC_ONCE "Started once" +#define LOG_SVC_RESPAWN "Respawns now" +#define LOG_SVC_FAIL "Service failed" +#define LOG_NEED_FAIL "One or more need failed" +#define LOG_SVC_FAILED "Service already failed, not starting." +#define LOG_SVC_NOTEXIST "Service does not exist" + +#define MSG_START_SVC "Starting " +#define MSG_STOP_SVC "Stoping " +#define MSG_EXEC_FAILED "Failed to execute " + +#define MSG_POWER_OFF "Powering off..." +#define MSG_HALT "Halting system ..." +#define MSG_REBOOT "Rebooting ..." +#define MSG_RESCUE "Switching to rescue mode ..." +#define MSG_UPDATE "Updating cinit ..." +#define MSG_HOT_REBOOT "Hot reboot in progress ..." + +#define MSG_SHOULD_NOT_HAPPEN "This should not happen, I do not know what todo!" + +/* DEBUG */ +#ifdef DEBUG +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) +#endif + +/* macros */ +#define SERVICE_LOG(svc,message) { \ + mini_printf(svc,1); \ + mini_printf(MSG_DP,1); \ + mini_printf(message,1); \ + mini_printf("\n",1); \ +} +#define LOG(s) { \ + mini_printf(s,1); \ + mini_printf("\n",1); \ +} +#define P_START_SERVICE(name) { mini_printf(MSG_START_SVC,1); mini_printf(name,1); mini_printf("\n",1); } +#define P_EXEC_FAILED(name) { mini_printf(MSG_EXEC_FAILED,1); mini_printf(name,1); mini_printf("\n",1); } + +/* NEW (clean) Service status: Messages to the outside */ +#define MSG_SVC_FORK "fork() failed" + + +#endif /* _CINIT_MSG_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/include/os.h b/software/cinit/browse_source/cinit-0.3pre5/src/include/os.h new file mode 100644 index 00000000..e36d5a8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/include/os.h @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * os specific functions + */ + +#ifndef CINIT_OS_HEADER +#define CINIT_OS_HEADER + +/***************************************************************************** + * Functions + */ +void cinit_halt(void); +void cinit_poweroff(void); +void cinit_reboot(void); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/include/svc.h b/software/cinit/browse_source/cinit-0.3pre5/src/include/svc.h new file mode 100644 index 00000000..096c3273 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/include/svc.h @@ -0,0 +1,127 @@ +/*********************************************************************** + * + * 2006,2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + + +#ifndef _CINIT_SVC_H +#define _CINIT_SVC_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* service list */ +struct listitem { + struct listitem *prev; /* previous item */ + struct listitem *next; /* next item */ + + char *abs_path; /* name of service */ + int status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + + + struct dep *wanted; /* list of services that want this service */ + struct dep *needed; /* list of services that need this service */ + + struct dep *wants; /* list of services that this service wants */ + struct dep *needs; /* list of services that this service needs */ +}; + +/* list of dependencies */ +struct dep { + struct dep *prev; + struct dep *next; + struct listitem *svc; +}; + +/* variables */ +extern struct dep *svc_init; /* the services to start */ +extern struct listitem *svc_list; /* the list of services */ + +/* list functions */ +struct listitem *list_insert(char *path, int status); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); +struct listitem *list_search(char *path); +struct listitem *list_search_pid(pid_t pid); +int list_display_all(); + + +/* service */ +struct listitem *svc_create(char *svc); +struct listitem *gen_svc_tree(char *svc); +int check_add_deps(struct listitem *svc, int type); +int dep_entry_add(struct dep **list, struct dep *new); +struct dep *dep_entry_del(struct dep *del); +int tree_exec(struct dep *start); +int svc_set_status(struct listitem *li, int status); +int svc_should_respawn(struct listitem *li); +int svc_needs_status(struct listitem *li); +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type); +struct dep *dep_create(struct listitem *svc); +void svc_success(struct listitem *li); +void svc_fail(struct listitem *li); +void svc_report_status(char *svc, char *msg, char *err); +void svc_start(struct listitem *li); + + + +/*********************************************************************** + * to decide whether to operate on needs or wants + */ +enum dep_types { + DEP_WANTS, + DEP_NEEDS +}; + +/*********************************************************************** + * status of a service and return codes - errors and success + */ +enum svc_status_old { + ST_TMPNOW=1, /* the client is now starting the service NEEDED??? */ + ST_NOTEXIST, /* service does not exist */ + + ST_NEED_FAIL, /* failed to start a need for this service */ + ST_FAIL, /* failed to start service */ + + ST_OFF, /* service is off */ + ST_OFF_ALL, /* service and those that need it are off */ + ST_OFF_ALL_F, /* same, but something failed */ + ST_OFF_WANTS, /* service + those that need or want it are off */ + ST_OFF_WANTS_F, /* same, but something failed */ + + ST_TMP, /* currently working on it */ + ST_ONCE, /* executed once */ + ST_RESPAWN /* running and respawning */ +}; + +/*********************************************************************** + * The real status types a service may have (ignore above) + * We have 32 Bits, we should use them ;-) + */ +enum svc_status { + /* first define basics */ + ST_SH_ONCE = 1, /* service SHould be started once */ + ST_SH_RESPAWN = 2, /* service SHould respawn */ + ST_ONCE_OK = 4, /* service was successfully started once */ + ST_ONCE_FAIL = 8, /* service failed to start */ + ST_RESPAWNING = 16, /* service is respawning */ + ST_NEED_FAILD = 32, /* this service is not started, need failed */ + ST_IN_LIST = 64, /* this service is being started (= in list) */ + ST_BAD_ERR = 128 /* some kind of error that SHOULD NOT happen */ +}; + +/*********************************************************************** + * Possibilities the needs of a service may have + */ +enum svc_needs_status { + SNS_NEEDS_STARTED = 1, /* all needs are started. We may start, too */ + SNS_NEEDS_FAILED, /* one ore more needs failed */ + SNS_NEEDS_UNFINISHED /* one ore more needs are not yet started */ +}; +#endif /* _CINIT_SVC_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/README.text b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/README.text new file mode 100644 index 00000000..c9a1acf2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/README.text @@ -0,0 +1,20 @@ +cinit/src/ipc/msgq: About this msqg implementation +=================================================== +Nico Schottelius +0.1, Initial Version from 2006-08-04 +:Author Initials: NS + +Intro here + +Introduction +------------ + +cinit opens a + +Files +----- +- README.text: This file +- cinit_init_ipc.c: Init +msgq.h +objects + diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_connect.c b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_connect.c new file mode 100644 index 00000000..a744980c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_connect.c @@ -0,0 +1,70 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel */ + k_in = ftok(IPC_KEY,IPC_IN); + k_out = ftok(IPC_KEY,IPC_OUT); + + if(k_in == -1 || k_out == -1) { + perror("ftok"); + exit(1); + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + perror("msgget"); + exit(1); + } + + /* wrong tabsto ;-) */ +while (1) { + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror("msgrcv"); + exit(1); + } + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_csend.c b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_csend.c new file mode 100644 index 00000000..43a0012f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_csend.c @@ -0,0 +1,62 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_logon(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(IPC_KEY,IPC_OUT); + k_out = ftok(IPC_KEY,IPC_IN); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_destroy.c b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_destroy.c new file mode 100644 index 00000000..299885c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_destroy.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Destory ipc mechanism, cinit is gonna die soon. + * + */ + +#include /* msgget */ +#include /* NULL */ + +#include "msgq.h" /* mq_in, mq_out */ +#include "cinit.h" /* print_errno */ + +void cinit_ipc_destroy(void) +{ + if(msgctl(mq_in,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } + if(msgctl(mq_out,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_init.c new file mode 100644 index 00000000..9ae072a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_init.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include /* ftok */ +#include /* msgget */ +#include /* msgget */ + +#include "cinit.h" +#include "config.h" +#include "msgq.h" + +int cinit_ipc_init(void) +{ + key_t k_tmp; + + /* to_server */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + if(k_tmp == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + mq_in = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_in == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + /* to_client */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + if(k_tmp == -1) { + perror(MSG_MSGQ_FTOK); + return 0; + } + mq_out = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_out == -1) { + perror(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_listen.c new file mode 100644 index 00000000..d21e561e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_listen.c @@ -0,0 +1,47 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ +#include /* perror */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + + struct msg_client m_client; + + while (1) { + /* FIXME: change msg structure */ + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror(MSG_MSGQ_MSGRCV); + } + + printf("pid: %d, m_client\n",m_client.pid); + + /* use pid as the message type + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + return 0; + } */ + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_logoff.c b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_logoff.c new file mode 100644 index 00000000..a744980c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_logoff.c @@ -0,0 +1,70 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel */ + k_in = ftok(IPC_KEY,IPC_IN); + k_out = ftok(IPC_KEY,IPC_OUT); + + if(k_in == -1 || k_out == -1) { + perror("ftok"); + exit(1); + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + perror("msgget"); + exit(1); + } + + /* wrong tabsto ;-) */ +while (1) { + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror("msgrcv"); + exit(1); + } + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_logon.c b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_logon.c new file mode 100644 index 00000000..08c0e252 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_logon.c @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "cinit.h" /* print_errno */ +#include "msgq.h" + +int cinit_ipc_logon(void) +{ + key_t k_in, k_out; /* FIXME: remove one variable */ + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + k_out = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_sclose.c b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_sclose.c new file mode 100644 index 00000000..69165e4d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/cinit_ipc_sclose.c @@ -0,0 +1,14 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Close the ressources from the server, clean state for forks. + * + */ + +int cinit_ipc_sclose(void) +{ + return 1; /* nothing to do when using message queues */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/msgq.h b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/msgq.h new file mode 100644 index 00000000..01c6e769 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/msgq.h @@ -0,0 +1,52 @@ +/* + * (c) 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * part of cinit + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +#include /* structures */ + +/*********************************************************************** + * configuration + */ + +#define MSGQ_PATHNAME "/bin/sh" /* should be on every *nix */ +#define MSGQ_TO_SERVER 'i' /* also for ftok */ +#define MSGQ_TO_CLIENT 'o' /* also for ftok */ +#define MSGQ_PERMS 0660 /* queue permissions */ + +/*********************************************************************** + * global variables + */ +int mq_in; /* input */ +int mq_out; /* output */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + pid_t pid; + struct msg_client msg; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server_short { + long mtype; + struct asw_sstatus answer; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_FTOK "ftok" +#define MSG_MSGQ_MSGGET "msgget" +#define MSG_MSGQ_MSGRCV "msgrcv" +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/objects b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/objects new file mode 100644 index 00000000..7c99d09f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/msgq/objects @@ -0,0 +1,5 @@ +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c new file mode 100644 index 00000000..88c310f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c @@ -0,0 +1,125 @@ +/* + * (c) 2005, 2006 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * create a socket, when we recieved a signal + */ +int main(int argc, char **argv) +{ + struct sockaddr_un addr; + struct pollfd plist; + char *initdir; + + list = NULL; /* list of services is empty currently */ + initdir = CINIT_INIT; /* default init dir */ + + cpid = getpid(); + if(cpid != 1) { + usage(MSG_USAGE,MSG_NOT_ONE); + } + + set_signals(ACT_SERV); /* set signal handlers */ + + /* read args, profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* tell the world we are there FIXME: do we really need three calls? */ + mini_printf(MSG_CINIT,1); mini_printf(initdir,1); mini_printf("\n",1); + + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c new file mode 100644 index 00000000..a174d78d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c @@ -0,0 +1,141 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int socket) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + while ( (nsock = accept(socket,(struct sockaddr *) NULL, + (socklen_t *) NULL)) != -1) { + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = ST_FAIL; + } else { + status = RT_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP (RESPAWNING) *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; + list_tmp = list_search(buf); + + /* FIXME: + - handle off + - handle switching off once services + - perhaps remove old cinit code, which has respawing childs + */ + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + /* kill cinit watcher, which kills the real process */ + kill(list_tmp->pid,SIGTERM); + + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + } + + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + status = ST_FAIL; + } else { /* return status */ + status = list_tmp->status; + } + } else { /* no service there */ + status = RT_NOTEXIST; + } + do_result(nsock,&status); + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + SERVICE_LOG(buf,MSG_ERR_MODIFY); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + case CMD_UPDATE: + sig_reboot(SIGCONT); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } + + /* hier kommt man haeufiger herein, interrupted system call */ + if( errno != EAGAIN && errno != EINTR) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/os/freebsd/halt.c b/software/cinit/browse_source/cinit-0.3pre5/src/os/freebsd/halt.c new file mode 100644 index 00000000..cd4dda1f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/os/freebsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/os/freebsd/objects b/software/cinit/browse_source/cinit-0.3pre5/src/os/freebsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/os/freebsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/os/freebsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre5/src/os/freebsd/poweroff.c new file mode 100644 index 00000000..61e5ef5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/os/freebsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWEROFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/os/freebsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre5/src/os/freebsd/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/os/freebsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/os/linux/halt.c b/software/cinit/browse_source/cinit-0.3pre5/src/os/linux/halt.c new file mode 100644 index 00000000..0ecf8ced --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/os/linux/halt.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * How to halt the system + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT_SYSTEM); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/os/linux/objects b/software/cinit/browse_source/cinit-0.3pre5/src/os/linux/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/os/linux/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/os/linux/poweroff.c b/software/cinit/browse_source/cinit-0.3pre5/src/os/linux/poweroff.c new file mode 100644 index 00000000..5f503678 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/os/linux/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff the system + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWER_OFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/os/linux/reboot.c b/software/cinit/browse_source/cinit-0.3pre5/src/os/linux/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/os/linux/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/os/openbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre5/src/os/openbsd/halt.c new file mode 100644 index 00000000..cd4dda1f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/os/openbsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/os/openbsd/objects b/software/cinit/browse_source/cinit-0.3pre5/src/os/openbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/os/openbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/os/openbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre5/src/os/openbsd/poweroff.c new file mode 100644 index 00000000..45168122 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/os/openbsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_HALT | RB_POWERDOWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/os/openbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre5/src/os/openbsd/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/os/openbsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/check_add_deps.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/check_add_deps.c new file mode 100644 index 00000000..c0568628 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/check_add_deps.c @@ -0,0 +1,133 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +/* FIXME: clean headers */ +#include +#include +#include /* PATH_MAX */ + +#include +#include +#include +#include +#include +#include +#include + + +#include /* PATH_MAX */ +#include /* malloc */ + +#include "cinit.h" +#include "messages.h" +#include "svc.h" + +int check_add_deps(struct listitem *svc, int type) +{ + char buf[PATH_MAX+1]; + char oldpath[PATH_MAX+1]; + struct dirent *tdirent; + struct dep *deps = NULL; + struct listitem *new_svc; + DIR *d_tmp; + + /* remember where we started */ + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_CHDIR); + return 0; + } + + mini_printf("CAD::",1); + mini_printf(svc->abs_path,1); + mini_printf("\n",1); + + /* Create path */ + strcpy(buf,svc->abs_path); + if(type == DEP_NEEDS) { + if(!path_append(buf,C_NEEDS)) return 0; + } else { + if(!path_append(buf,C_WANTS)) return 0; + } + + d_tmp = opendir(buf); + if(d_tmp == NULL) { + if(errno != ENOENT) { + print_errno(buf); + return 0; + } + return 1; /* it's fine when there's no needs */ + } + + if(chdir(buf) == -1) { /* change to needs or wants */ + print_errno(buf); + return 0; + } + + while((tdirent=readdir(d_tmp))!=NULL) { + if(*(tdirent->d_name)=='.') continue; /* ignore .* */ + + /* skip non-working directories */ + if(!path_absolute(tdirent->d_name,buf,PATH_MAX+1)) continue; + + /* FIXME: remove debug */ + mini_printf("CAD::NEW::",1); + mini_printf(svc->abs_path,1); + mini_printf("::",1); + mini_printf(buf,1); + mini_printf("\n",1); + + /* 1. create the service we depend on + * 2. initialize its dependencies + */ + if(!(new_svc = gen_svc_tree(buf))) return 0; + + /* We need ALL dependencies, as we are called only once + * per service; no need to test that first! + * + * And the other service CANNOT know anything about us yet, + * so we always add us to its list. + */ + + /* Dependencies: + * - a.needs b; add b to the list of dependencies. + * - a.needs b; add a to the list of needed by b. + * + * 1. check whether the dependency already exists + * 2. otherwise add it + * 3. do it once for needs, once for needed_by + */ + + /* create a dependency entry containing us */ + deps = dep_create(svc); + if(!deps) return 0; + + if(type == DEP_NEEDS) { + dep_entry_add(&(new_svc->needed),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->needs),deps); + } else { + dep_entry_add(&(new_svc->wanted),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->wants),deps); + } + } + if(chdir(oldpath) == -1) { + print_errno(buf); + return 0; + } + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/dep_create.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/dep_create.c new file mode 100644 index 00000000..691d66b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/dep_create.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Create dependency + */ + +#include /* NULL */ +#include /* malloc() */ +#include "svc.h" /* structs */ + +/* search for an entry by path, reverse: from end to the beginning */ +struct dep *dep_create(struct listitem *svc) +{ + struct dep *entry; + + entry = malloc(sizeof(struct dep)); + if(!entry) return NULL; + entry->svc = svc; + + return entry; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/dep_entry_add.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/dep_entry_add.c new file mode 100644 index 00000000..8bac1c1d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/dep_entry_add.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include "svc.h" + +/* + * list: pointer to the list + * new: pointer to data to insert (already filled up) + */ +int dep_entry_add(struct dep **deplist, struct dep *new) +{ + if( *deplist == NULL ) { /* new list */ + *deplist = new; + (*deplist)->prev = *deplist; + (*deplist)->next = *deplist; + } else { /* already existing */ + new->next = *deplist; /* new-> first */ + new->prev = (*deplist)->prev; /* last <- new */ + (*deplist)->prev->next = new; /* last -> new */ + (*deplist)->prev = new; /* new <- first */ + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/dep_entry_del.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/dep_entry_del.c new file mode 100644 index 00000000..ed2a627d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/dep_entry_del.c @@ -0,0 +1,37 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include /* free() */ +#include "svc.h" + +/* + * tmp: pointer to data to remove (must not be NULL) + * -> perhaps work on the pointer to the pointer? + * + * Returns either the next object or NULL if there's no next object + */ +struct dep *dep_entry_del(struct dep *del) +{ + struct dep *tmp; + + /* last service in the list */ + if(del->next == del && del->prev == del) { + tmp=NULL; + free(del); + } else { + /* remove from list */ + del->prev->next = del->next; + del->next->prev = del->prev; + tmp = del->next; + free(del); + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/dep_needs_wants_add.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/dep_needs_wants_add.c new file mode 100644 index 00000000..dba4fd7c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/dep_needs_wants_add.c @@ -0,0 +1,63 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Add all wants and needs from a specific service to dep list + */ + +#include /* NULL */ +#include "svc.h" +#include "cinit.h" /* FIXME: debug */ + +/* + * list: pointer to the list + * svc: pointer to data to the service + */ + +/* FIXME unfinished (wants) and possibly not adding all? */ +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type) +{ + + struct dep *tmp, *new, *end; + + /* first add needs, then add wants + * but only add the services, if they are still a virgin + */ + if(type == DEP_NEEDS) { + end = svc->needed; + } else { + end = svc->wanted; + } + + mini_printf("DNWA::",1); + mini_printf(svc->abs_path,1); + + /* check needs */ + tmp = end; + if(tmp != NULL) { + do { + mini_printf("::",1); + mini_printf(tmp->svc->abs_path,1); + if(((tmp->svc->status & ST_SH_ONCE) || + (tmp->svc->status & ST_SH_RESPAWN)) && + !(tmp->svc->status & ST_IN_LIST)) { + mini_printf("::(A)::",1); + new = dep_create(tmp->svc); + if(!new) return 0; + tmp->svc->status |= ST_IN_LIST; + dep_entry_add(list,new); + } + /* FIXME: go forward or backwards? + * this decision will influence starting order + * and may thereby add a minimal mount of speed enhancement */ + tmp = tmp->next; + } while(tmp != end); + } + mini_printf("\n",1); + + /* check wants */ + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/gen_svc_tree.c new file mode 100644 index 00000000..17be88dd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/gen_svc_tree.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +#include +#include "cinit.h" +#include "svc.h" + +struct listitem *gen_svc_tree(char *svc) +{ + struct listitem *li; + struct dep *deps; + + /* only do something if the service is not already known */ + if((li=list_search(svc))) return li; + + /* create a template, so other instances won't try to recreate us */ + if(!(li=svc_create(svc))) return NULL; + + /* FIXME: remove debug */ + mini_printf("gen_tree::",1); + mini_printf(svc,1); + mini_printf("\n",1); + + if(!check_add_deps(li,DEP_NEEDS)) return NULL; + if(!check_add_deps(li,DEP_WANTS)) return NULL; + + if(!li->wants && !li->needs) { + /* FIXME: remove debug */ + mini_printf("START::",1); + mini_printf(li->abs_path,1); + mini_printf("\n",1); + + deps = dep_create(li); + if(!deps) return NULL; + dep_entry_add(&svc_init,deps); + + /* mark it as being in _THE_ list */ + li->status |= ST_IN_LIST; + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_delete.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_delete.c new file mode 100644 index 00000000..10a7e218 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_delete.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "svc.h" + +/* ... */ +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if( tmp == NULL ) { + return 0; + } + + tmp->next->prev = tmp->prev; + tmp->prev->next = tmp->next; + free(tmp->abs_path); + free(tmp); + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_display_all.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_display_all.c new file mode 100644 index 00000000..65c7b3a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_display_all.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Show all list elements - mainly for debugging + */ + +#include /* NULL */ +#include "cinit.h" +#include "svc.h" + +int list_display_all() +{ + struct listitem *tmp; + + if( svc_list == NULL ) { + return 0; + } else { + tmp = svc_list; + } + + do { + mini_printf("Service: ",1); + mini_printf(tmp->abs_path,1); + mini_printf("\n",1); + tmp = tmp->prev; + } while(tmp != svc_list); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_insert.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_insert.c new file mode 100644 index 00000000..f31d4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_insert.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* malloc */ +#include /* bzero / memset */ +#include "svc.h" /* the list pointer */ + +struct listitem *list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc(sizeof(struct listitem)); + if(tmp == NULL) return NULL; + memset( tmp, '\0', sizeof(struct listitem)); + + if(svc_list == NULL) { /* list is empty, we have to init it */ + svc_list = tmp; + svc_list->next = svc_list; + svc_list->prev = svc_list; + } else { /* list has members,add this one */ + tmp->next = svc_list; /* begin after the new element */ + tmp->prev = svc_list->prev; /* change to the ex-last */ + svc_list->prev->next = tmp; /* change last element */ + svc_list->prev = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc(strlen(path) + 1); + if(tmp->abs_path == NULL) return NULL; + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_modify.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_modify.c new file mode 100644 index 00000000..4a93c41c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_modify.c @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "comm.h" /* for ST_OFF */ +#include "svc.h" /* for ST_OFF */ + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + +// D_PRINTF(path); + + tmp = list_search(path); + if( tmp == NULL ) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_search.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_search.c new file mode 100644 index 00000000..b40fae23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_search.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* NULL */ +#include /* strcmp */ +#include "cinit.h" +#include "svc.h" + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if(svc_list == NULL) { /* think positive */ + return NULL; + } else { + tmp = svc_list; + } + + do { + if(!strcmp(path, tmp->abs_path)) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_search_pid.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_search_pid.c new file mode 100644 index 00000000..400d0377 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/list_search_pid.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Search by pid + */ + +#include /* NULL */ +#include /* pid_t */ +#include "svc.h" /* struct listitem */ + +struct listitem *list_search_pid(pid_t pid) +{ + struct listitem *tmp; + + if(svc_list == NULL) { + return NULL; + } else { + tmp = svc_list; + } + + do { + printf("LSP:: %d: %s:%d (%d)\n",pid,tmp->abs_path,tmp->status,tmp->pid); + if(pid == tmp->pid) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/objects b/software/cinit/browse_source/cinit-0.3pre5/src/svc/objects new file mode 100644 index 00000000..cf0ee36b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/objects @@ -0,0 +1,21 @@ +svc/gen_svc_tree.o +svc/list_delete.o +svc/list_display_all.o +svc/list_insert.o +svc/list_modify.o +svc/list_search.o +svc/list_search_pid.o +svc/svc_create.o +svc/check_add_deps.o +svc/dep_entry_add.o +svc/dep_entry_del.o +svc/tree_exec.o +svc/svc_set_status.o +svc/svc_should_respawn.o +svc/svc_needs_status.o +svc/dep_needs_wants_add.o +svc/dep_create.o +svc/svc_success.o +svc/svc_report_status.o +svc/svc_start.o +svc/svc_fail.o diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_add_needs.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_add_needs.c new file mode 100644 index 00000000..cc03727d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_add_needs.c @@ -0,0 +1,67 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +//#include +//#include +#include "cinit.h" +#include "messages.h" + +int svc_add_needs(char *needs, char *is_needed) +{ + struct listitem *svc_needs, *svc_is_needed; + + + /* retrieve service entries in global service list */ + svc_needs = svc_is_needed = NULL; + svc_needs = list_search(needs); + svc_is_needed = list_search(is_needed); + + /* and exit if one is missing */ + if( !svc_needs || !svc_is_needed ) { + return 0; + } + + /* first add needs */ + + /* now add needed_by */ + + malloc... /* for adding */ + + if(svc->needs == NULL) { + svc->needs = neu; + } else { + svc->next = neu; + } + + /* write generic function for dependencies or even all lists */ + dep_entry_add(list_pointer,new_entry); + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members,add this one */ + tmp->after = list; /* begin after the new element */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_create.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_create.c new file mode 100644 index 00000000..85f3d940 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_create.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* strcpy */ +#include /* stat */ +#include /* stat */ +#include /* PATH_MAX */ +#include /* errno */ +#include "svc.h" /* listitem */ +#include "cinit.h" /* path_append */ + +/* checking for existence is done before! */ +/* FIXME: check heedars for conformance with POSIX */ +struct listitem *svc_create(char *svc) +{ + char buf[PATH_MAX+1]; + struct stat statbuf; + struct listitem *li; + + li = list_insert(svc,-1); + if(!li) return NULL; + + /* FIXME: add two path length checks? svc and svc+strlen(C_RESPAWN)? */ + strcpy(buf,svc); + if(!path_append(buf,C_RESPAWN)) return NULL; + + if(stat(buf,&statbuf) == -1) { + if(errno == ENOENT) { + svc_set_status(li,ST_SH_ONCE); + } else { + return NULL; + } + } else { + mini_printf("respawn: ",1); + mini_printf(li->abs_path,1); + mini_printf("\n",1); + svc_set_status(li,ST_SH_RESPAWN); + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_fail.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_fail.c new file mode 100644 index 00000000..d9efb539 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_fail.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Mark the service as being failed + */ + +#include "svc.h" + +void svc_fail(struct listitem *li) +{ + if(li->status & ST_SH_ONCE) + li->status = ST_ONCE_FAIL; + else { + /* FIXME: do something senseful, record time of dead? */ + li->status = ST_RESPAWNING; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_needs_status.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_needs_status.c new file mode 100644 index 00000000..d9d54a81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_needs_status.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return status of the needs of this service + */ + +#include /* NULL */ +#include "svc.h" /* service information */ + +// DEBUG #include "cinit.h" /* service information */ + +int svc_needs_status(struct listitem *svc) +{ + int retval = SNS_NEEDS_STARTED; + struct dep *deps = svc->needs; + +/* DEBUG mini_printf("sns: ",1); + mini_printf(svc->abs_path,1); + mini_printf("\n",1); */ + + if(deps == NULL) return SNS_NEEDS_STARTED; /* no needs, everything fine */ + + do { + /* worst case: need failed */ + if((deps->svc->status & ST_NEED_FAILD) || + (deps->svc->status & ST_ONCE_FAIL)) { + retval = SNS_NEEDS_FAILED; + break; + } + /* services are being started */ + if((deps->svc->status & ST_SH_ONCE) || + (deps->svc->status & ST_SH_RESPAWN)) { + retval = SNS_NEEDS_UNFINISHED; + } + deps = deps->next; + } while(deps != svc->needs); + + return retval; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_report_status.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_report_status.c new file mode 100644 index 00000000..4833240a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_report_status.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Tell the world what happened to the service + */ + +#include "cinit.h" /* mini_printf */ + +void svc_report_status(char *svc, char *msg, char *err) +{ + mini_printf("[Service] ",1); + mini_printf(svc,1); + mini_printf(": ",1); + mini_printf(msg,1); + if(err) { + mini_printf(" (",1); + mini_printf(err,1); + mini_printf(")",1); + } + mini_printf("\n",1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_respawn_check.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_respawn_check.c new file mode 100644 index 00000000..2ed44de8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_respawn_check.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* PATH_MAX */ +#include "svc.h" + +/* checking for existence is done before! */ +int svc_respawn_check(struct listitem *svc) +{ + char buf[PATH_MAX+1]; + + strcpy(buf,svc->abs_path); + if(!path_append(buf,C_RESPAWN)) return 0 +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_set_status.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_set_status.c new file mode 100644 index 00000000..36b61795 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_set_status.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_set_status(struct listitem *li, int status) +{ + return (li->status = status); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_should_respawn.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_should_respawn.c new file mode 100644 index 00000000..1c401024 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_should_respawn.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return whether should respawn or not + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_should_respawn(struct listitem *li) +{ + return (li->status & ST_SH_RESPAWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_start.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_start.c new file mode 100644 index 00000000..a0a3c272 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_start.c @@ -0,0 +1,56 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start a service + */ + +#include /* DEBUG */ + +#include /* fork */ +#include /* strerror */ +#include /* errno */ +#include /* PATH_MAX */ +#include "svc.h" /* struct * */ +#include "messages.h" /* MSG_* */ +#include "cinit.h" /* execute_sth */ + +void svc_start(struct listitem *li) +{ + char buf[PATH_MAX+1]; + + /* FIXME: All cleanup must go here + * close(fds); + * reset signals + * reset env? + * + * FIXME: Add logging possibility to here + * open (0,1,2) to other processes, if specified */ + li->pid = fork(); + + if(li->pid < 0) { + svc_report_status(li->abs_path,MSG_SVC_FORK,strerror(errno)); + svc_set_status(li,ST_BAD_ERR); + return; + } + if(li->pid > 0) { + if(li->status & ST_SH_ONCE) + li->status = ST_ONCE_OK; + else + li->status = ST_RESPAWNING; + return; + } + + /* FIXME: check for valid length! + * strlen(abs_path) + strlen(SLASH) + strlen(C_ON) */ + /* misuse status field (doesn't matter in fork) for strlen */ + li->status = strlen(li->abs_path); + strncpy(buf,li->abs_path,li->status); + buf[li->status] = '\0'; + strncat(buf,SLASH,PATH_MAX); + strncat(buf,C_ON,PATH_MAX); + + execute_sth(buf); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_success.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_success.c new file mode 100644 index 00000000..65e6284f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/svc_success.c @@ -0,0 +1,18 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include "svc.h" + +void svc_success(struct listitem *li) +{ + if(li->status & ST_SH_ONCE) + li->status = ST_ONCE_OK; + else + li->status = ST_RESPAWNING; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/svc/tree_exec.c b/software/cinit/browse_source/cinit-0.3pre5/src/svc/tree_exec.c new file mode 100644 index 00000000..000c44bf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/svc/tree_exec.c @@ -0,0 +1,125 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + +#include /* NULL */ +#include "cinit.h" +#include "svc.h" /* svc_init */ + +/* some thoughts... + * + * - we already generated the tree, we now need to start it from + * the ends + * + * - after starting the first service we have to care about SIG_CHILD + * to record changes + * + * - we execute all services in parallel without problems, because of + * SIG_CHILD notification + * + * - After successfully starting the service we start the service that + * need or want that service + * + * + * + */ + +int tree_exec(struct dep *start) +{ + struct dep *tmp; + + tmp = start; + + mini_printf("========> tree_exec() \n",1); + /* the main starting loop: All services in this list should be + * started, but it is possible that dependent services are in the + * list. In this case simply skip the current service + */ + do { + /* FIXME debug */ + mini_printf("TEX::",1); + mini_printf(tmp->svc->abs_path,1); + mini_printf("\n",1); + { + struct dep *tmp2; + tmp2=tmp->svc->needs; + if(tmp2) { + do { + mini_printf("::",1); + mini_printf(tmp2->svc->abs_path,1); + mini_printf("\n",1); + fprintf(stderr,"%s: <<%d>>\n",tmp2->svc->abs_path,tmp2->svc->status); + tmp2 = tmp2->next; + } while (tmp2 != tmp->svc->needs); + } + } + + switch(svc_needs_status(tmp->svc)) { + case SNS_NEEDS_STARTED: + mini_printf("abhaengigkeiten gestartet, exec; add wants, needs\n",1); + /* FIXME: execute service */ + svc_start(tmp->svc); + + /* FIXME: update status must be included in child handler! */ + //svc_success(tmp->svc); + + /* execute service, remowe from list */ + /* FIXME check return code? */ + dep_needs_wants_add(&tmp,tmp->svc,DEP_NEEDS); + dep_needs_wants_add(&tmp,tmp->svc,DEP_WANTS); + + /* delete service from list */ + tmp = dep_entry_del(tmp); + break; + case SNS_NEEDS_FAILED: + mini_printf("wer fehlgeschlagen\n",1); + /* mark service as NEED_FAILD and delete from list */ + svc_set_status(tmp->svc,ST_NEED_FAILD); + tmp = dep_entry_del(tmp); + break; + case SNS_NEEDS_UNFINISHED: + mini_printf("noch warten\n",1); + /* continue with the next item */ + tmp = tmp->next; + break; + } + +// tmp->svc->pid = fork(); + + +// if(tmp->svc->pid == -1) return 0; + + // if(tmp->svc->pid == 0) { /* child code */ + // execute_sth(tmp->svc->abs_path); +// _exit(1); + // } + + /* add the services that want or need this service to the list + * of services to be executed the next time + * + * We should add the new services at the beginning, so we + * clean the original onse first + * + * And we need to check, whether the dependencies are already + * solved. + * + * A service may be in status: + * + * - Unset (never touched) + * - Being started (passed our loop, but did not yet finish) + * - Respawning (means was started and we take care + * about it + * - failed (with reason copied, so one can reprint it later?) + * - once - started once successfully + * - need failed - not started, because need failed. perhaps + * registert which dependenc(y|ies) failed? + */ + } while(tmp != NULL); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/test/test_build_argv+link.c b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_build_argv+link.c new file mode 100644 index 00000000..e37169fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_build_argv+link.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec_link"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/test/test_build_argv.c b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_build_argv.c new file mode 100644 index 00000000..0b2678be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_build_argv.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec new file mode 100644 index 00000000..e5cf3f01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec @@ -0,0 +1,7 @@ +#!/bin/sh +# Nico Schottelius +# Test-skript for cinit + +echo '$0': "$0" +echo '$@': "$@" +echo 'cinit_is_great:' $cinit_is_great diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec.env b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec.env new file mode 100644 index 00000000..853e0663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec.env @@ -0,0 +1 @@ +cinit_is_great=yes diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec.params b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec.params new file mode 100644 index 00000000..afe0f2ef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec.params @@ -0,0 +1 @@ +Let's see if we read the arguments....YES! diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec_link b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec_link new file mode 120000 index 00000000..c2ec9306 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec_link @@ -0,0 +1 @@ +test_exec \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec_link.env b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec_link.env new file mode 120000 index 00000000..30ea4990 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec_link.env @@ -0,0 +1 @@ +test_exec.env \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec_link.params b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec_link.params new file mode 120000 index 00000000..0b77c256 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_exec_link.params @@ -0,0 +1 @@ +test_exec.params \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/test/test_gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_gen_svc_tree.c new file mode 100644 index 00000000..93ad54ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_gen_svc_tree.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test gen_svc_tree + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + gen_svc_tree("/etc/cinit/svc/init"); + list_display_all(); +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/src/test/test_openreadclose.c b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_openreadclose.c new file mode 100644 index 00000000..2f722da5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/src/test/test_openreadclose.c @@ -0,0 +1,16 @@ +#include + +int openreadclose(char *filename, char **where); + +int main() +{ + char *data; + char *file = "test_openreadclose.c"; + + openreadclose(file,&data); + + printf("%s\n",data); + + return 1; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre5/util/README b/software/cinit/browse_source/cinit-0.3pre5/util/README new file mode 100644 index 00000000..782cdc8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/util/README @@ -0,0 +1,2 @@ +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.3pre5/util/ccontrol.c b/software/cinit/browse_source/cinit-0.3pre5/util/ccontrol.c new file mode 100644 index 00000000..95bc5212 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/util/ccontrol.c @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * ccontrol: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define USAGE_TEXT "ccontrol - control cinit\n\n" \ + "Usage:\n\nccontrol -[phurs]\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-u\t- (update) Reboot (warm) and update cinit\n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n\n" \ + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * ccontrol: control cinit + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 2) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + + switch(argv[1][1]) { + case 'p': /* power off */ + LOG(MSG_POWER_OFF); + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + LOG(MSG_HALT); + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + LOG(MSG_REBOOT); + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + LOG(MSG_RESCUE); + msg_reboot(CMD_RESCUE); + break; + + case 'u': /* update */ + LOG(MSG_UPDATE); + msg_reboot(CMD_UPDATE); + break; + + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* cinit-0.2 return codes implemented - nothing changed*/ diff --git a/software/cinit/browse_source/cinit-0.3pre5/util/cservice.c b/software/cinit/browse_source/cinit-0.3pre5/util/cservice.c new file mode 100644 index 00000000..66be6563 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/util/cservice.c @@ -0,0 +1,164 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * cservice: control cinit services + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit services + */ + +#define USAGE_TEXT "cservice - start and stop cinit services\n\n" \ + "cservice -[ear] \n" \ + "\t-e\t- (ein,on ) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n" \ + "\t-r\t- (restart) stop and start a service\n" + +/*********************************************************************** + * fuzzy_path: allow other kinds of path specification .. + */ +char *fuzzy_path(char *rpath) +{ + char pathtmp[PATH_MAX]; + char *re = NULL; + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return NULL; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(rpath); + return NULL; + } + + re = malloc( strlen(pathtmp) + 1); + + if(re != NULL) { + strcpy(re,pathtmp); + } + + return re; +} + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + char *real_name = NULL; + + /* argv */ + if(argc != 3) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + if(strlen(argv[1]) != 2) C_USAGE(MSG_ERR_ARGS_LEN); + + real_name = fuzzy_path(argv[2]); + + /* fuzzy path failed, exit! */ + if(real_name == NULL) { + return 1; + } + switch(argv[1][1]) { + case 'a': /* aus */ + case 'r': /* restart */ + switch( msg_svc_on_off(real_name,CMD_STOP_SVC) ) { + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_OFF: + SERVICE_LOG(real_name,LOG_SVC_STOPED); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + /* FIX THIS AFTER cinit-0.2 */ + case RT_TMPNOW: + case RT_ERR: + case RT_SVC_FAILED: + case RT_UNSPEC: + case RT_SUCCESS: + case ST_NEED_FAIL: + case ST_TMP: + case ST_ONCE: + case RT_NOTEXIST: + case ST_RESPAWN: +// SERVICE_LOG(real_name,"Ein bekanntest ding"); + break; +/* default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; */ + } + if( argv[1][1] == 'a') break; /* only continue if restarting */ + + case 'e': /* ein */ + switch (run_svc(real_name)) { /* run_svc fuzzys itself */ + case RT_NOTEXIST: + SERVICE_LOG(real_name,LOG_SVC_NOTEXIST); + break; + case RT_SVC_FAILED: + SERVICE_LOG(real_name,LOG_SVC_FAILED); + break; + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_ONCE: + SERVICE_LOG(real_name,LOG_SVC_ONCE); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + case ST_RESPAWN: + SERVICE_LOG(real_name,LOG_SVC_RESPAWN); + break; + case ST_NEED_FAIL: + SERVICE_LOG(real_name,LOG_NEED_FAIL); + break; + default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; + } + break; + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* uses cinit-0.2 return code style */ diff --git a/software/cinit/browse_source/cinit-0.3pre5/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.3pre5/util/msg_reboot.c new file mode 100644 index 00000000..efe78ec6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre5/util/msg_reboot.c @@ -0,0 +1,21 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + if(!begin_msg(cmd)) return 0; + close(sock); + return 1; +} +/* clean for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre6/ b/software/cinit/browse_source/cinit-0.3pre6/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.3pre6/.exclude b/software/cinit/browse_source/cinit-0.3pre6/.exclude new file mode 100644 index 00000000..1a2d31e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/.exclude @@ -0,0 +1,2 @@ +tmp +.git diff --git a/software/cinit/browse_source/cinit-0.3pre6/.gitignore b/software/cinit/browse_source/cinit-0.3pre6/.gitignore new file mode 100644 index 00000000..6d4d9d65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/.gitignore @@ -0,0 +1,18 @@ +*.o +*.a +*0? +MT +ddoc +contrib+tools/cinit.graph.text +config.h +sbin +tmp +os/current +tmpbin +src/os/current +src/ipc/current +src/cinit +doc/*/*.html +doc/*/*.htm +doc/*/*.man +doc/*/*.texi diff --git a/software/cinit/browse_source/cinit-0.3pre6/CHANGES b/software/cinit/browse_source/cinit-0.3pre6/CHANGES new file mode 100644 index 00000000..dd795a78 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/CHANGES @@ -0,0 +1,52 @@ +cinit-0.3pre6: + - Many code cleanups + - Added user documentation and cleaned up documentation in general + +cinit-0.3pre5: + - Finished new SIGCHLD handler + - First cleanups for real release. + - This version is the first 0.3pre version that can handle respawn! + +cinit-0.3pre4: + - Re-implemented execution of services. + - This version is the first 0.3pre version that COULD bootup your system! + +cinit-0.3pre3: + - Finished execution all services via the reversed service tree. + +cinit-0.3pre2: + - Finished generation of the dependency tree. + +cinit-0.3pre1: + - cinit should now compile on mostly all unices + - introduced much new code + - THIS IS A DEVELOPER RELEASE, NOT USABLE IN PRODUCTION ENVIRONMENTS. + +cinit-0.2.1: (Bugfix release) + - Fixed problem in contrib+tools/Makefile when installing + - added many new scripts to convert sys-v-init, which are still early beta + (see bin/cinit.merge.sysvinit-debian-sid) + +cinit-0.2: + - Much more verbose error reporting + - You can now also disable 'once ran' services, + - You can restart services with csevice -r + - Online speech in German is available + - C_DELAY support - variable delay for sending SIGKILL after SIGTERM + - First /etc/csys configuration example (wasserstoff) is available + - a Mailing list was created + - Added tools to analyze cinit configuration + (cinit-vis.pl, cinit.graph.text.c) + - Added tools to import and export configuration to XML + (make.cconfig.from.xml.rb,cconfig.graph.xml.rb) + - Removed unecessary signalling + - Added many helper scripts to install services (cinit.install.service*) + - Fixed many small bugs in old helper scripts (cinit.add.getty, cinit.get-conf, ...) + - Added ccontrol, which allows to control cinit + - Added update (-u) via ccontrol + - Stripped cservice, which now "only" controls services + - Removed swapoff from cinit code, should be handled by off + - Much better error and processing descriptions + - A bit more verbose reporting + - Restructured run_svc, now with better error detection + - Removed Kernel panic, when halting system diff --git a/software/cinit/browse_source/cinit-0.3pre6/COPYING b/software/cinit/browse_source/cinit-0.3pre6/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.3pre6/CREDITS b/software/cinit/browse_source/cinit-0.3pre6/CREDITS new file mode 100644 index 00000000..b009a48c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/CREDITS @@ -0,0 +1,23 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: 2005-09-25) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete + * providing cinit-vs.pl to visualize the cinit-tree +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) +Sandro Koechli + * testing, testing and testing cinit and cinit documentation +Marcus Wagner + * building and maintaining the Debian package +Peter Portmann + * testing cinit and documentation, writing cinit.graph.text in C, other coding diff --git a/software/cinit/browse_source/cinit-0.3pre6/Changelog b/software/cinit/browse_source/cinit-0.3pre6/Changelog new file mode 100644 index 00000000..0fbf76f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/Changelog @@ -0,0 +1,10 @@ +Mo Okt 3 00:19:40 CEST 2005 + *Changelog can now be found in git database (cg-log) +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.3pre6/Makefile b/software/cinit/browse_source/cinit-0.3pre6/Makefile new file mode 100644 index 00000000..e66cec24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/Makefile @@ -0,0 +1,96 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# Directories and files +CDIRS=src doc + +# +# Targets +# + +# +# Warn per default, make sure the user knows what she does +# +warn: + @cat doc/.buildwarn + +all: sources documentation sizecheck + +install clean dist distclean: + @for subdir in $(CDIRS); do \ + echo "Making $@ in $$subdir"; \ + (cd $$subdir && $(MAKE) $(MAKEFLAGS) $@); \ + done; + +.PHONY: sources +sources: + $(MAKE) -C src all + +.PHONY: documentation +documentation: + $(MAKE) -C doc documentation + +sizecheck: sources + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l src/cinit > $$FILE; cat $$FILE; \ + cg-add $$FILE + +source-size: clean + @echo -n "Source size (in KiB): " + @du -s src/ | awk '{ sum+=$$1 } END { print sum }' + + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + +config: + @./bin/cinit.configure.os + @./bin/cinit.configure.tools + @./bin/cinit.configure.ipc + @touch src/.configured + +################################################################################ +# old +#DDOC=ddoc +#SDIRS=bin client conf comm doc generic serv util +# DO NOT CHANGE THIS. +#SBIN=sbin +#CINIT_BIN=$(SBIN)/cinit +# +#%.o: %.c +# $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< +#$(DDOC): +# mkdir $(DDOC) +# +#$(SBIN): +# mkdir $(SBIN) +# +#docs: $(DDOC) bin/cdoc-man.sh +# ./bin/cdoc-man.sh doc/cinit-doc > $(DDOC)/cinit.8 +# ./bin/cdoc-man.sh doc/cservice-doc > $(DDOC)/cservice.8 +#$(CSVC_OBJ) $(OBJ): $(CONFIG_H) +#clean: +# $(MAKE) -C src clean +# rm -f tmpbin/* +################################################################################ +#cservice: $(SBIN)/cservice +# +#$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) +# $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ +# $(STRIP) $@ +# +#ccontrol: $(SBIN)/ccontrol +# +#$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) +# $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ +# $(STRIP) $@ +# +#install:: install-dir cinit cservice ccontrol +# @echo '*** Installing cinit ***' +# ./bin/cinit.install.binary diff --git a/software/cinit/browse_source/cinit-0.3pre6/NEXTTODO b/software/cinit/browse_source/cinit-0.3pre6/NEXTTODO new file mode 100644 index 00000000..7e3ea3bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/NEXTTODO @@ -0,0 +1,65 @@ +- Include doc into main Makefile, create html documentation on make dist +- Doc + * 'os-integration.text' + * 'daemons.backgrounding' + * There are some hints on how to migrate to cinit in general and also + some os specific help in the file 'migrating-init-systems.text', +- CODECHECK: + * what happens with the wants of the last services? + - are they added? + - are they added at the correct position? +- scripts + * `cinit.check.config` (doc/user/configuring.cinit.text) + -> circular depedencies! +- Doc.next: + - installing: report! + -> write report script. +- Doc later + * current-init-problems.text + - current-init-problems.text explains why cinit does not use nor recommends the use of shell scripts. + * special-services.text + +- Begin documentation + * Check Makefile + * Integrate Makefile into main Makefile + * create manpage + * Write a small manual + - install + - configure + - boot (different OS) + * generate asciidoc! +- report broken links in needs/wants +- Doc way: + * installing + * configuring + - testconfig! + * booting + - different OS / bootloader + * debugging +- Shutdomn code: + * begin at init, then shutdown wants/needs, ... +- check free on dep_del! +- check that the new wants and need elements are nserted the other way round + * we go to next, elements must be put before us! +- implement do_reboot() + * so not only booting with cinit works, but also the shutdown +- define messages + a) human readable + b) binary data? +- replace cinit_ipc_logon with cinit_ipc_init... + * delay ipc code -> after start! +- Remove old code + * remove run_svc + * remove run_init_svc + +Finally: +- test and release cinit-0.3rc1 + +- Cleanup object lists + object-lists/ + cinit + cservice + ccontrol + cinit.halt + cinit.reboot + cinit.shutdown (shell script?!?) diff --git a/software/cinit/browse_source/cinit-0.3pre6/README b/software/cinit/browse_source/cinit-0.3pre6/README new file mode 100644 index 00000000..00f2651b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/README @@ -0,0 +1,106 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Unix +- true dependencies (soft and hard!) +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +FIXME: Add mailing list here + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre6/ROADMAP b/software/cinit/browse_source/cinit-0.3pre6/ROADMAP new file mode 100644 index 00000000..b26ccb36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/ROADMAP @@ -0,0 +1,117 @@ +-------------------------------------------------------------------------------- +THIS DOCUMENT SHOULD VANISH AS SOON AS EVERYTHING IS FINE +-------------------------------------------------------------------------------- + +Timeline +--------- + * ~ End of October 2006: Reunderstand the code, manifest changes [DONE] + * ~ Mid of November 2006: Have a compile-able cinit [DONE] + * ~ End of November 2006: Have a testsystem booting cinit + * ~ Mid of December 2006: Have production stable cinit + - Begin with migration scripts + - publish installable pre-releases + * ~ End of December 2006: Have some generic migration scripts + - Have (different) understanable documents + * ~ Mid of January 2007: Begin official release of cinit-0.3 + + + + +Versions +--------- + +0.3: +~~~ + code: Make cinit compile again :) [DONE] + code: double check to remove Linux specific source from general tree + code: seperate ipc from the rest [DONE] + code: fix / check signal handlers + code: cleanup makefile + code: add porting code: add support for any unix in general [DONE] + code: stabilize code, remove experimenting parts + code: remove delay support, let off/off.params do that. + code: add special directory (/etc/cinit/special?) for os specific binaries + -> halt, poweroff, reboot (NOTHING MORE THEY CAN DO) + -> SHOULD NOT BE IN THE PATH + code: move production code to src/ + end user doc: add warning for special binaries and hint for r/o only + amiga alike systems + + doc: begin to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.1: + devel doc: how to write merging scripts + devel doc: merging framework: + - minimal (do not look at the current configuration, build minimal) + - use current system (slowly, may use old scripts) + - rebuilt current system (recommened) + + tools: general framework for merging + end user doc: merging old init to cinit + + code: add porting code: add support for freebsd + code: better readable output: + -> starting + [ started once ] + [ respawning ] + [ failed ] (+ REASON!) + [ needs failed ] (which ones) + + -> stopping + [ stopping ] (for dependencies) + [ stopped ] ? + [ not running ] ? + + code: export profile information (CINIT_PROFILE) + end user doc: using different profiles in user space + end user doc: write examples for profiles: + o switch ssh known_hosts based on profile + o different proxy settings in browsers + - environment + - mozilla settings + o start samba (for lan) + o start samba (for company lan) + o use nis and nfs (company profile) + + doc: continue to merge old documents into new structure and move them + to the doc/ancient directory +0.3.2: + end user doc: what to read to use cinit + end user doc: installing cinit + end user doc: configuring cinit + tools: writing cinit-config (graphical (dialog based?) configuration tool) + code: add porting code: add support for openbsd + + code: add reverse dependency chain (or earlier?) + code: better support for external tools + o neustarten + o mit herunterfahren + o mit herunterfahren und allen Diensten, die abhaengen + o ohne herunterfahren + o Statische Daten + o pid vom Daemon + o pid vom einmal ausgefuehrten Programm + + + doc: end to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.3: + devel doc: writing an init system + devel doc: the conf/-configuration system + + code: check conf/ and perhaps rewrite b0rken english sentences + + code / doc: add logging support for services -> use multilog? + code: add porting code: add support for netbsd + +0.4: + first stable, tested, well documented version. + + code: check for optimisation + + other: compare with other init systems + +0.4.x: + code: add porting code: add support for other unices diff --git a/software/cinit/browse_source/cinit-0.3pre6/TODO b/software/cinit/browse_source/cinit-0.3pre6/TODO new file mode 100644 index 00000000..ffa780af --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/TODO @@ -0,0 +1,317 @@ +- define how it should work (doc/braindums/big-picture.text) +- define service status in one document, so repeatition stops! + + +-------------------------------------------------------------------------------- +- rename headers/ -> includes/ +- remove client/ from top level +-------------------------------------------------------------------------------- +- write about shell scripts in system startup +- write about general behaviour (covering the death) +-------------------------------------------------------------------------------- +Generate automatic asciidoc from conf/* +-------------------------------------------------------------------------------- +Add handler for ctrl+alt+delete + * document in paths +-------------------------------------------------------------------------------- +pre-compile config: conf/* + +-------------------------------------------------------------------------------- +panic: + read configuratio from defaults/panic* + -> write execute_something before! +-------------------------------------------------------------------------------- +comm: + tmpnow: search for pid in list, + save the pid in the list, so we know whether our executer died! +-------------------------------------------------------------------------------- +Logging / cinit: + fuer unsere eigenen ausgaben auch multilog? + + Logger: shared memory? +-------------------------------------------------------------------------------- +Implement full starting logic in server? +-------------------------------------------------------------------------------- +Build full dependency tree at start? And begin from the end? +-------------------------------------------------------------------------------- +comm/*: + int read + int write + --> fuer pipes + +run_init_svc + muss alle services wissen, die gestartet werden + + start_services_with_deps + gibt pointer auf struktur zurueck + -> Anzahl Services (array!) + -> Service: + Name (Pfad) + Ergebniss + -> beim fehler, die nachricht, strerror? + http://www.opengroup.org/onlinepubs/009695399/functions/strerror.html + + +Beim starten werden needs und wants als needs behandelt, weil +jeder starter _alle_ services zurueckgeben muss. + + Ein Prozess kann maximal 512 abhaengigkeiten haben. + -> open files + + +Neues cinit: + Wenn service fehlschlaegt, wird eine Struktur zurueckgegeben. + + Diese enhaelt: + + int success = + enum { SVC_SUCCESS, SVC_FAILED, SVC_NEED_FAILED, ... } + + char *reason; + + Ausgaben nach Beendigung vom Starten des Services. + + [ on ] %s + Ergebnis + [ off ] %s + + Rekursives herunter/rauffahren +-------------------------------------------------------------------------------- +- add error handling to cinit.install.binary +- remove sigio(), create new functions: + - one for cleaning up the socket + - one for doing the communication (specify two fd's) +- put some logic around exec_svc: + o put waiting code herein -> waiting code to structure! +- cleanup serv/sig_reboot.c:7: + o implement os-specific reboot function +-------------------------------------------------------------------------------- +1. Entfernung mount +2. kommunikation ueber + 1. einen fork pro service + fork(fork) +3. Socket wird erst nach einem Signal erstellt + -> Konfiguration sollte SIGWHATEVER senden +4. Vielleicht panicen, wenn init fehlschlaegt? +-------------------------------------------------------------------------------- +Als naechstes: + +- add code do implement stopping / restarting with dependency tree + o add used_by to the list of services + o used_by should be a simple (double?) linked list +-------------------------------------------------------------------------------- +Documentation: + - Installing cinit + o compiling cinit from source + o debian / gentoo + - Configuring +-------------------------------------------------------------------------------- +Add "used" by to each service, so we can track which services to shutdown. +-------------------------------------------------------------------------------- +- perhaps use dnotify? +- recheck warm reboot +- fix cservice +- print service name or cinit: before _everything_ WE print + +TESTING: + - does cinit eat zombies? + - is the reporting ok? + - does cservice and ccontrol what's expected? + +# cinit.create.empty.service: can only be started from the bin directory + +- compile cinit static and other tools dynamically per default + +- Fix Switching services off !! +- Remove RUN_RUN_SVCs, move code to run_svc so one can determine which + services failed? + --> sequentieller ablauf! + --> parallel ablauf, struct-array mit namen und ergebnis? + --> for dep in deps/*; do fork(run_svc() ); done + -----> while(any_is_running) { sleep } + -------> array durchsuchen, ergebnis nutzen. + - ueberpruefen von wo aus run_svc() aufgerufen wird + +- Fix SIGCHILD problem: + - exec_svc wants to waitpid() itself, so SIG_CHILD makes problems + - respawn_svc: does that need to act on SIGCHLD if the master process + is still running? + - kill respawn -> sigchild cleans up, we do not get waitpid perhaps? +- remove umount code? +- remove zombies, but keep away from SIGCHILD problems +- remove mount /etc/cinit/tmp code + -> how to replace? +- fix bug in Makefile: linking happens twice +- do not kill respawing service, if off exists +- ccontrol +- manpages +- Error codes when shutting down a service? +- Delay dokumentieren +- no_kill dokumentieren +- ddoc zuendefuehren + +- remove umount, swapoff? +--> to services? + +- on.out, on.err, on.in? + -> reading/writing from/to files + +--> Wenn kein ReSPAWN und der Prozess beendet sich nicht, + dann haengt init! +- implement "no_kill" until cinit-0.2 or 0.3? + +Doku!!! + +-------------------------------------------------------------------------------- +- Source Logic issues + - remove FIXME entries (and what should be fixed, too) + - memset for timespecs? + - move umount, swapoff and remount to off of init? + -> cleanup sig_reboot.c + - run_svc: + o we have many strcat()s, perhaps save length of pathbuf and strncat at + pathtmp[strlen(pathbuf)] ? + - do we really need swapoff? +-------------------------------------------------------------------------------- +- Documentation + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml +-------------------------------------------------------------------------------- +Things I did not do and I don't know whether we have to care about: + +- Porting + - add porting code to other unices? + - like openssh guys do? + +- close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? +- logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? +-------------------------------------------------------------------------------- +[OLD BUGS] +- remove cinit watcher? + -> sig_child -> cycle through list? +- DOKU: what happens when a service does not terminate.... + und er als once drin ist +- MANPAGE! +- execve() fails -> no sleep!! +- multiple zombies sometimes - problemservices + -> zombies of respawn watchers are not caught! + -> sig_chld also therein + -> problematic due to wait for child +-doubled cinit instance + - nur einmal +- free() everything before starting child +- cservice! + - prozess nur einmal -> WARTET! cinit auch! +doku: + cservice einmal starten -> wartet auf ende + cint ersetzt init bei gentoo + an error occuerd-> verbose + multuicall probleme -> busysbox --> GIBT ES NICHT!! + ---> DOKU DAZU! mit links, doppelt links, aus test + ---> erklaeren, dass es unproblematisch ist! + +11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet + werden konnte. +11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0 + zurueckgeworfen. +11:09 < folken23> telmich: oder service allready started. +-------------------------------------------------------------------------------- +possible BUGS: + +[14:44] freelsd:cinit-0.2.2% ./sbin/cservice -e ein + +ein: No such file or directory +Bad address +: Service does not exist + +cinit-0.2.2: +USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND +root 1 96.7 0.0 1580 336 ? R 18:59 5:49 /sbin/cinit +root 2 0.0 0.0 0 0 ? SN 18:59 0:00 [ksoftirqd/0] +root 3 0.0 0.0 0 0 ? S 18:59 0:00 [watchdog/0] +root 4 0.0 0.0 0 0 ? S< 18:59 0:00 [events/0] +root 5 0.0 0.0 0 0 ? S< 18:59 0:00 [khelper] +root 6 0.0 0.0 0 0 ? S< 18:59 0:00 [kthread] +root 10 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [khubd] +root 12 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [kblockd/0] +root 99 0.0 0.0 0 0 ? S 18:59 0:00 \_ [pdflush] +root 100 0.0 0.0 0 0 ? S 18:59 0:00 \_ [pdflush] +root 102 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [aio/0] +root 727 0.0 0.0 0 0 ? S< 18:59 0:00 \_ [kseriod] +root 101 0.0 0.0 0 0 ? S 18:59 0:00 [kswapd0] +root 800 0.0 0.0 0 0 ? S 18:59 0:00 [khpsbpkt] +root 803 0.0 0.0 0 0 ? S 18:59 0:00 [pccardd] +root 838 0.0 0.0 0 0 ? S 18:59 0:00 [kjournald] +root 1923 0.0 0.0 1584 200 ? S 18:59 0:00 /sbin/cinit +root 1924 0.0 0.3 3624 1936 tty2 Rs 18:59 0:00 \_ -zsh +root 1969 0.0 0.0 1580 320 tty2 S 19:05 0:00 \_ cservice -e 3 +root 1972 0.0 0.1 2604 828 tty2 R+ 19:05 0:00 \_ ps axuwwf +root 1945 0.0 0.0 0 0 tty2 Z 19:01 0:00 [loadkeys] +cinit: [cprofile:profile] +cinit should not be started directly, but by your kernel. +umount raus +/etc/cinit/specials/... rein + +1. Doku auf asciidoc umstellen +2. den signalhandler code fixen +3. den tempmount entfernen + +--> cinit-0.3-rc1 +-------------------------------------------------------------------------------- +Helper scripts, rausgenommen aus Der Doku, muessen fuer +cinit-0.3 ueberprueft werden: + +Configure help scripts +~~~~~~~~~~~~~~~~~~~~~~ +cinit-conf later +Using prepared scripts + +In the bin/ directory of this tarball you'll find at least: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +Optimisations +------------- + +tree_exec +~~~~~~~~~ +- only check dependencies (=needs) after the basic run? + +Documentation +------------- + +developer +~~~~~~~~~ +- ST_IN_LIST == startup marker, used to (NOT) insert services into startup +- dep_needs_wants_add is used to add dependencies of a service to the general + starter list + + +user +---- +- dependencies with leading '.' (dot) are ignored. +- about cinit-configuration structure + * cconfig + * svc/ + * special/ (or however we called it) + - panic + - halt + - poweroff + - reboot diff --git a/software/cinit/browse_source/cinit-0.3pre6/TODO.doc b/software/cinit/browse_source/cinit-0.3pre6/TODO.doc new file mode 100644 index 00000000..a170a50d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/TODO.doc @@ -0,0 +1,29 @@ +- doc/user/paths.text + * finish + * add examples +- add cross-compilation howto +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + +caveats +------- + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- cinit ignores the Keyboard request +- Currently there is no support to react on 'ctr+alt+del': +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + diff --git a/software/cinit/browse_source/cinit-0.3pre6/TODO.optimisations b/software/cinit/browse_source/cinit-0.3pre6/TODO.optimisations new file mode 100644 index 00000000..8a686b4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/TODO.optimisations @@ -0,0 +1,19 @@ +This file describes enhancements or optimisations that +could be done / checked. + + +Code +---- + +fork() +~~~~~~ + +Security +^^^^^^^^^ +- Closed fds? +- Close other things? +- IPC? + +Cleanup +^^^^^^^ +- Do we have to reset signals or is that done anyway by fork()? diff --git a/software/cinit/browse_source/cinit-0.3pre6/TODO.pre7 b/software/cinit/browse_source/cinit-0.3pre6/TODO.pre7 new file mode 100644 index 00000000..d69f8d33 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/TODO.pre7 @@ -0,0 +1,2 @@ + - Added general shutdown support (via kill -TERM, -HUP, -USR1) + diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cdoc-man.sh b/software/cinit/browse_source/cinit-0.3pre6/bin/cdoc-man.sh new file mode 100644 index 00000000..fc1adde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cdoc-man.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Nico Schottelius +# Date: 21-Aug-2005 +# Last Modified: - +# + +set -e + +[ $# -ne 1 ] && exit 23 + +SRC=$1 + +cd "$SRC" + +# +# Title heading +# +echo .TH $(cat "meta/name" "meta/man_section" "meta/date") + +# +# Name +# +echo .SH NAME +echo $(cat meta/name) - $(cat meta/short_description) + +# +# Synopsis +# +echo .SH SYNOPSIS +echo $(cat path) $(cat parameters) + +# +# description +# +echo .SH DESCRIPTION +echo $(cat long_description) + +# +# availability +# +for section in availability examples "see also" author; do + if [ -f "$section" ]; then + echo .SH $section | tr '[a-z]' '[A-Z]' + cat "$section" + fi +done + +# +# files +# +if [ -f files ]; then + echo .SH FILES + cat files | sed 's/\(.*\)/.IP "\1" /' +fi + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.add.dependency new file mode 100644 index 00000000..7bc9cc65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.add.dependency @@ -0,0 +1,51 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or wants Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +# adding 'wishes' for x-mas and requires for 'the mass' and 'tv' +case $DEP in + wishes|wants) DEP=$C_WANTS ;; + needs|requires) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could someone PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEP_DIR="${BASEDIR}/${SVC_A}/${DEP}" + +if [ ! -d "$DEP_DIR" ]; then + echo "$DEP_DIR does not exist, creating..." + mkdir "$DEP_DIR" + if [ $? -ne 0 ]; then + echo "Error occured due to creating directory. Exiting." + exit 1 + fi +fi + +DEST="${DEP_DIR}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.add.getty new file mode 100644 index 00000000..987a5bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.add.getty @@ -0,0 +1,75 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# Date: 2005-05-24 (Last changed: 2005-08-07) +# + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | sort -n | tail -n 1) + +[ ! "$LAST_NUMBER" ] && LAST_NUMBER=0 + +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +#echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + */mgetty) + mygetty=$getty + params="38400 tty${NUMBER}" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +# check input +if [ ! "$mygetty" ]; then + read -p "Getty to use [$mygetty]: " rgetty +fi +if [ ! "$params" ]; then + read -p "Parameters to pass [$params]: " rparams +fi +if [ ! "$params" -o ! "$mygetty" ]; then + echo "Sorry, either getty or parameters are not supplied." + exit 23 +fi + +echo -n "Creating $mygetty ($params) in $DDIR ... " +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DDIR" +ln -s "$mygetty" "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.configure.ipc b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.configure.ipc new file mode 100644 index 00000000..65190baa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.configure.ipc @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius, 2006-07-28 +# +# cinit: configure the ipc method to use +# + +HIER=$(dirname $0) +DDIR=$HIER/../src/ipc +DFILE=${DDIR}/current +IPC_METHOD=$(head -n 1 "$HIER/../conf/ipc_method") + +echo "Configure: IPC: Using \"$IPC_METHOD\" as IPC method" + +# always remove link before, as ln seems to be broken +# Doing ln -sf src/ipc/$method current twice, will create the file +# "current" _BELOW_ src/ipc/$method and not overwrite the link +# src/ipc/current + +rm -f "${DFILE}" +ln -sf "${IPC_METHOD}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.configure.mark b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.configure.mark new file mode 100644 index 00000000..62454c7f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.configure.mark @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: touch a file to mark everything configured +# 2006-08-27 +# + +echo "Configure: MK: Marking directory as configured" +touch .configured diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.configure.os b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.configure.os new file mode 100644 index 00000000..d5b8e6e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.configure.os @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups symlinks for the os +# + +DDIR=$(dirname $0)/../src/os +DFILE="$DDIR/current" +OSCONFIG=$(dirname $0)/../conf/os + +OS=$(head -n 1 "$OSCONFIG") + +echo "Configure: OS: Binaries are created for $OS ..." + +rm -f "${DFILE}" +ln -sf "${OS}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.configure.tools b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.configure.tools new file mode 100644 index 00000000..43242a01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.configure.tools @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups scripts for compiling and linking +# + +HIER=$(dirname $0) +DDIR=$HIER/../tmpbin/ +CC=$(head -n 1 "$HIER/../conf/cc") +CFLAGS=$(head -n 1 "$HIER/../conf/cflags") +LD=$(head -n 1 "$HIER/../conf/ld") +LDFLAGS=$(head -n 1 "$HIER/../conf/ldflags") +STRIP=$(head -n 1 "$HIER/../conf/strip") + +echo "Configure: CC: Creating cc, ld and strip ..." + +mkdir -p "$DDIR" +cd "$DDIR" + +echo "$CC $CFLAGS \"\$@\"" > cc +echo "$LD $LDFLAGS \"\$@\"" > ld +echo "$STRIP \"\$@\"" > strip + +# set correct permissions +chmod 0700 * diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.create.empty.service new file mode 100644 index 00000000..365c4bc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.create.empty.service @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.binary new file mode 100644 index 00000000..a368ac23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.binary @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: - +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice +"$INSTALL_PROG" sbin/ccontrol $DESTDIR/$PREFIX/sbin/ccontrol +"$INSTALL_PROG" bin/cinit.reboot $DESTDIR/$PREFIX/sbin/cinit.reboot +"$INSTALL_PROG" bin/cinit.shutdown $DESTDIR/$PREFIX/sbin/cinit.shutdown +"$INSTALL_PROG" bin/cinit.wait.for.daemon \ + $DESTDIR/$PREFIX/sbin/cinit.wait.for.daemon + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi + +# install as /sbin/shutdown, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/shutdown ]; then + ln -s $PREFIX/sbin/cinit.shutdown $DESTDIR/$PREFIX/sbin/shutdown +fi + +# install as /sbin/reboot, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/reboot ]; then + ln -s $PREFIX/sbin/cinit.reboot $DESTDIR/$PREFIX/sbin/reboot +fi diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.config-dir b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.config-dir new file mode 100644 index 00000000..c9adb70f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.config-dir @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.dir new file mode 100644 index 00000000..5e16f690 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.dir @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/sbin" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.fsck b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.fsck new file mode 100644 index 00000000..4508860a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.fsck @@ -0,0 +1,36 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 3 ]; then + echo "$(basename $0): name device filesystem-type" + exit 1 +fi + +NAME=$1 +DEVICE=$2 +FS_TYPE=$3 + +FSCK=/sbin/fsck.$FS_TYPE + +if [ ! -f "$FSCK" ]; then + echo "Missing $FSCK, abort." + exit 1 +fi + +if [ ! -e "$DEVICE" ]; then + echo "Missing $DEVICE abort." + exit 1 +fi + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME" +ln -sf "$FSCK" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON" +echo "$DEVICE" > "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.miniconf b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.miniconf new file mode 100644 index 00000000..45dcc632 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.miniconf @@ -0,0 +1,103 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: 2005-08-07 +# + + +. $(dirname $0)/cinit.read-conf + +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" +echo "" +echo "This will install a minimal cinit configuration." +echo "This configuration _SHOULD_ be able to run on _MOST_ systems." +echo "Still, it's highly EXPERIEMENTAL, use with CAUTION." +echo "" +echo "Please make sure, that" +echo " - you are using a journaling filesystem (fsck is not used)" +echo " - you have agetty, fgetty or mingetty installed" +echo " - you are runnig Linux 2.6 (sysfs is used)" +echo " - you have udev or static device nodes (you need /dev/tty*)" +echo " - getties will run on tty2-tty7, tty1 is used or logging" +echo "" +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" + +notosoftwarepatents="Please keep an eye on software patents, they are evil." +read -p "Do you really want to continue? [y/N] " notosoftwarepatents + +if [ "$notosoftwarepatents" = "y" -o "$notosoftwarepatents" = "Y" ]; then + echo "Let us try it ..." +else + echo 'Bye bye!' + exit 0 +fi + +set -e + +# Create basic layout +$(dirname $0)/cinit.install.standard-dirs + +# Install services: +# - mount root r/w +# - mount /proc +# - mount /sys +# - install getties on tty2-tty7 +# - add cleanup for /etc/mtab +# - add loopback device +# - init service + echo + +################################### mount ##################################### +# mount root read/write +$(dirname $0)/cinit.install.service.mount-root + +# - mount /proc +$(dirname $0)/cinit.install.service.mount-proc + +# - mount /sys +$(dirname $0)/cinit.install.service.mount-sys + +# mount needs everything below it +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/root" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/proc" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/sys" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" + +################################### getty ##################################### +# mount root read/write +# install getties +begin_getty=2 +end_getty=7 +i=$begin_getty + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" +while [ "$i" -le "$end_getty" ]; do + $(dirname $0)/cinit.add.getty + ln -sf "${DESTDIR}/${CINIT_DIR}/getty/$i" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" + i=$(($i+1)) +done + +################################### mtab ##################################### +# - add cleanup for /etc/mtab +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" +$(dirname $0)/cinit.install.service.cleanup-mtab +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" + +################################### lo ##################################### +# - add loopback device +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" +$(dirname $0)/cinit.install.service.network-lo +ln -sf "${DESTDIR}/${CINIT_DIR}/network/lo" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" + +# - init service + echo +# init depends on mount, getty -> everything from base-layout +$(dirname $0)/cinit.install.service.init +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" + +ln -sf "${DESTDIR}/${CINIT_DIR}/local-services/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/getty/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/network/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.cleanup-mtab b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.cleanup-mtab new file mode 100644 index 00000000..30a8dd48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.cleanup-mtab @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: cleanup mtab +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" +echo '#!/bin/sh' > "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'rm -f /etc/mtab' >>"${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'ln -s /proc/mounts /etc/mtab' \ + >> "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +chmod 0700 "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.hostname.generic b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.hostname.generic new file mode 100644 index 00000000..2d72f50e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.hostname.generic @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service, which sets the hostname +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): hostname" + exit 1 +fi + +HOSTNAME=$1 +HOSTNAME_BIN=${HOSTNAME_BIN:-/bin/hostname} + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/network/hostname" +ln -sf "$HOSTNAME_BIN" "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON" +echo "$HOSTNAME" > "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.init b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.init new file mode 100644 index 00000000..c3a10931 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.init @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +ln -sf /bin/echo "${DESTDIR}/${CINIT_DIR}/${C_INIT}/$C_ON" +echo '*** cinit initial service successfully started ***' \ + > "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.keymap.c_keymap b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.keymap.c_keymap new file mode 100644 index 00000000..235a329e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.keymap.c_keymap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install keymap from environment setting +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +if [ -z "$C_KEYMAP" ]; then + echo "Set C_KEPMAP to the wanted keymap." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" ]; then + echo "Service keymap already exists." + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find loadkeys) + +if [ $? -ne 0 ]; then + echo "Did not find binary loadkeys." + exit 1 +fi + +echo -n "Installing keymap to ${DESTDIR}/${CINIT_DIR}/local-tuning/keymap ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON" + +echo "$C_KEYMAP" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.mount-proc b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.mount-proc new file mode 100644 index 00000000..024847a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.mount-proc @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /proc +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/proc" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/proc/$C_ON" +echo proc > "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo /proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.mount-root b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.mount-root new file mode 100644 index 00000000..a1bd56ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.mount-root @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount root r/w +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# mount root read/write +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/root" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/root/$C_ON" +echo -n > "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo -o >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo remount,rw >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo / >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.mount-sys b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.mount-sys new file mode 100644 index 00000000..8c8191aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.mount-sys @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /sys +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /sys +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/sys" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/sys/$C_ON" +echo sys > "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo sysfs >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo /sys >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.network-lo b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.network-lo new file mode 100644 index 00000000..45bff6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.network-lo @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: loopback device +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/lo" +ln -sf /sbin/ifconfig "${DESTDIR}/${CINIT_DIR}/network/lo/$C_ON" +echo lo > "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo 127.0.0.1/8 >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo up >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.ntpdate.debian b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.ntpdate.debian new file mode 100644 index 00000000..2af2ee4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.ntpdate.debian @@ -0,0 +1,47 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install ntpdate +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +. /etc/default/ntpdate + +if [ -z "$NTPSERVERS" ]; then + echo "No ntp servers found, aborting" + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find ntpdate) + +if [ $? -ne 0 ]; then + echo "Did not find binary ntpdate." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" ]; then + echo "Service ntpdate already exists." + exit 1 +fi + +echo -n "Installing ntpdate to ${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON" + +for server in $NTPSERVERS; do + echo "$server" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON$C_PARAMS" +done + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.udev b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.udev new file mode 100644 index 00000000..d91f01cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.service.udev @@ -0,0 +1,64 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install udev +# Date: 2005-10-15 +# Comment: DO NOT RSYNC TO THE WRONG SIDE! +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BIN_UDEVSEND=$($(dirname $0)/cinit.path-find udevsend) +BIN_UDEVSTART=$($(dirname $0)/cinit.path-find udevstart) +BIN_SYSCTL=$($(dirname $0)/cinit.path-find sysctl) +BIN_MOUNT=$($(dirname $0)/cinit.path-find mount) +SERVICE="local-tuning/udev" + +if [ -z "$BIN_UDEVSEND" -o -z "$BIN_UDEVSTART" -o -z "$BIN_SYSCTL" -o -z "$BIN_MOUNT" ]; then + echo "Did not find a binary." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo "Installing ${SERVICE} to ${DESTDIR}/${CINIT_DIR}/ ..." + +# 0. general udev +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}" +# 1. udevmount +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/mount/udev" +ln -sf "$BIN_MOUNT" "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON" +echo "udev" > "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "-t" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "tmpfs" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "/dev" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" + +# 2. udevstart +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart" +ln -sf "$BIN_UDEVSTART" "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart/$C_ON" + +# dependencies +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/sys +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/udev + +# 3. udev to hotplug +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug" +ln -sf "$BIN_SYSCTL" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug/$C_ON" +echo "$BIN_UDEVSEND" > "${DESTDIR}${CINIT_DIR}/${SERVICE}/hotplug/$C_ON$C_PARAMS" + +$(dirname $0)/cinit.add.dependency ${SERVICE}/hotplug needs mount/proc + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.standard.init.deps b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.standard.init.deps new file mode 100644 index 00000000..dcc5cd07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.standard.init.deps @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add standard sub-configuration directories to init wants +# Date: 2005-10-11 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.standard.mounts b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.standard.mounts new file mode 100644 index 00000000..bb1fc0c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.standard.mounts @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create normal mounts +# Date: 2005-10-16 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.swap b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.swap new file mode 100644 index 00000000..84e6c928 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.swap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install swap +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +SERVICE=mount/swap + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BINARY=swapon +BINARY_PATH=$($(dirname $0)/cinit.path-find $BINARY) +if [ $? -ne 0 ]; then + echo "Did not find binary $BINARY." + exit 1 +fi + +HAS_SWAP=$(awk '$3 ~ /swap/ { print $3 }' /etc/fstab) +if [ -z "$HAS_SWAP" ]; then + echo "Seems you have no swap, service not installing" + exit 1 +fi +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo -n "Installing ${SERVICE} to ${DESTDIR}${CINIT_DIR}/${SERVICE} ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON" + +echo "-a" >> "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.merge.sysvinit-debian-sid b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.merge.sysvinit-debian-sid new file mode 100644 index 00000000..3ef0ce03 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.merge.sysvinit-debian-sid @@ -0,0 +1,137 @@ +#!/bin/sh +# Nico Schottelius +# Date: Sun Oct 16 16:57:03 CEST 2005 +# cLinux/cinit +# Automagically convert Debian-Sysv-Iinit +# THIS IS NOT CLEAN. +# THIS IS NOT EVEN INTENTED TO BE CLEAN. +# This is just a small hack, because my girlfriend wants her notebook back. + +echo "***> $(basename $0): converting Debian-Sys-V-Init" + +# read standard values, may be overwritten from outside +. $(dirname $0)/cinit.read-conf + +echo "***> Finding standard config ..." +# variables, which can be set from the outside +ROOT_DEV=${ROOT_DEV:-$(awk '$2 ~ /^\/$/ { print $1 }' /etc/fstab)} +ROOT_FSCK=${ROOT_FSCK:-$(awk '$2 ~ /^\/$/ { print $6 }' /etc/fstab)} +ROOT_FS=${ROOT_FS:-$(awk '$2 ~ /^\/$/ { print $3 }' /etc/fstab)} +RUNLEVEL=${RUNLEVEL:-$(runlevel | awk '{ print $2 }')} + +echo "***> Detecting keymap (this may take some time)" + +if [ -z "$C_KEYMAP" ]; then + echo "Please set the variable C_KEYMAP to your keymap." + echo "It is impossible to detect reliable your keymap in Debian." + exit 1 +fi + + +echo "***> Configuration" +echo "Hostname (\$HOSTNAME): $HOSTNAME" +echo "Keymap (\$C_KEYMAP): $C_KEYMAP" +echo "Root device (\$ROOT_DEV): $ROOT_DEV" +echo "Root fsck (\$ROOT_FSCK): $ROOT_FSCK" +echo "Root FS (\$ROOT_FS): $ROOT_FS" +echo "Runlevel (\$RUNLEVEL): $RUNLEVEL" +echo "Destdir: (\$DESTDIR): $DESTDIR" +echo "Config-Dir: (\$CINIT_DIR): $CINIT_DIR" +read -p "Is this correct (Y/n) " correct + +if [ "$correct" != "y" -a "$correct" != "Y" ]; then + echo "***> Abort." + exit 1 +fi + +if [ -d "${DESTDIR}${CINIT_DIR}" ]; then + echo "ERROR: Configuration already exists at ${DESTDIR}${CINIT_DIR}." + exit 1 +fi + +echo "***> Installing standard structure and dependencies" +set -e +$(dirname $0)/cinit.install.config-dir +$(dirname $0)/cinit.install.standard.dirs +$(dirname $0)/cinit.install.standard.init.deps + +echo "***> Adding mount / r/w" +$(dirname $0)/cinit.install.service.mount-root + +if [ "$ROOT_FSCK" = "1" ]; then + echo "***> Adding fsck for $ROOT_DEV ..." + $(dirname $0)/cinit.install.fsck root "$ROOT_DEV" "$ROOT_FS" + echo "***> Adding dependency" + $(dirname $0)/cinit.add.dependency mount/root needs fsck/root +else + echo "***> Skipping fsck for $ROOT_DEV ..." +fi + +echo "***> Setting up standard mounts ..." +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up hostname: $HOSTNAME" +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up keymap" +$(dirname $0)/cinit.install.service.keymap.c_keymap + +echo "***> Creating getties (tty1-8)" +for i in `seq 1 8`; do + $(dirname $0)/cinit.add.getty + + # each getty needs: + # - root r/w + $(dirname $0)/cinit.add.dependency getty/$i needs mount/root + # - hostname + $(dirname $0)/cinit.add.dependency getty/$i needs network/hostname +done + +echo "***> Enabling getties (tty2-8)" +for i in `seq 2 8`; do + # add getties to getty/ + $(dirname $0)/cinit.add.dependency getty wants getty/$i +done + +# +# Convert services: check /etc/rcS.d and /etc/rcX.d +# +echo "***> Converting services ..." +for script in $(cd /etc/rcS.d/; ls S*; cd /etc/rc${RUNLEVEL}.d/; ls S*); do + echo -n "$script: " + case $script in + # SCRIPTS READY + *ntpdate) + $(dirname $0)/cinit.install.service.ntpdate.debian + $(dirname $0)/cinit.add.dependency local-tuning/ntpdate needs network + ;; + *udev*) + $(dirname $0)/cinit.install.service.udev + + # SCRIPTS NEVER READY + *glibc.sh|*module-init-tools|*modutils|*procps.sh|*hotplug-net|*bootmisc.sh|*nviboot|*screen-cleanup|*x11-common|*sudo|*makedev|*rmnologin) + echo "Ignoring (useless)." + ;; + + # SCRIPTS NOT YET READY + *mountvirtfs|*checkroot.sh|*ifupdown-clean|*checkfs.sh|*mountall.sh|*ifupdown|*hostname*|*mountnfs.sh|*alsa|*rsync|*ssh|*fam|*cron|*gdm) + echo "converting planned later." + ;; + + # SCRIPTS LATER TO DO + *bootlogd|*keymap.sh|*hwclock*|*discover|*pppd-dns|*dns-clean|*networking|*portmap|*console-screen.sh|*urandom|*klogd|*apmd|*dbus-1|*exim4|*pcmcia|*nfs-common|*stop-bootlogd) + echo "unsupported currently (FIXME PLEASE)." + ;; + *sysklogd|*ppp|*inetd|*lpd|*aumix|*atd) + echo "unsupported (choose a better alternative)." + ;; + *initrd-tools.sh|*libdevmapper*|*hotplug) + echo "Ignoring (general or bloated script)." + ;; + *) + echo "Ignoring (unknown)" + ;; + esac +done + +echo "***> Finished." diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.path-find b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.path-find new file mode 100644 index 00000000..0d0f362b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.path-find @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: find binary in path +# Date: 2005-10-15 +# + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): searched binary" + exit 1 +fi + +binary=$1 + +# this is NOT really clean, paths can also contain spaces +for pfad in $(echo $PATH | sed 's/:/ /g'); do + fullname=$pfad/$binary + if [ -f "$fullname" ]; then + echo "$fullname" + exit 0 + fi +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.remove.getty new file mode 100644 index 00000000..4950eeed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.remove.getty @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + +if [ ! "$NUMBER" ]; then + echo "There is no getty to remove." + exit 1 +fi + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r "$DDIR" +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.shutdown new file mode 100644 index 00000000..702c8a17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.shutdown @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# TODO: use ccontrol! +# 2005-05-24 (Last changed: 2005-06-18) + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -p|--power-off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " -s|--rescue: Rescue mode" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -p|--power-off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + -s|--rescue) kill -USR2 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.uml.test new file mode 100644 index 00000000..f6ea7fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.1 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG umid=cinit$$ init=/sbin/cinit" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..7f027455 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 (Last Changed: 2005-06-17) + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +PIDFILE=$1; shift +DAEMON=$1; shift + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.3pre6/client/README b/software/cinit/browse_source/cinit-0.3pre6/client/README new file mode 100644 index 00000000..0a5b8d0c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/client/README @@ -0,0 +1,2 @@ +client/ + These sources are used by the children which are spawned by cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre6/client/begin_msg.c b/software/cinit/browse_source/cinit-0.3pre6/client/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/client/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/client/connect_sock.c b/software/cinit/browse_source/cinit-0.3pre6/client/connect_sock.c new file mode 100644 index 00000000..2c2d45de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/client/connect_sock.c @@ -0,0 +1,38 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include /* memset, strcpy */ + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/client/exec_svc.c b/software/cinit/browse_source/cinit-0.3pre6/client/exec_svc.c new file mode 100644 index 00000000..f217f9e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/client/exec_svc.c @@ -0,0 +1,264 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +inline pid_t exec_svc(char *abspath, int action) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + SERVICE_LOG(abspath,LOG_SVC_FAIL); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + P_EXEC_FAILED(nargv[0]); + perror(MSG_ERR_EXECVE); + /* FIXME: remove debug, remove double printing without loosing info */ + sleep(3); /* debug */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/client/msg_change_status.c b/software/cinit/browse_source/cinit-0.3pre6/client/msg_change_status.c new file mode 100644 index 00000000..836a0fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/client/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* FIXME: change return code validation */ + +int msg_change_status(char *svc, char status, pid_t pid) +{ + if(!begin_msg(CMD_CHG_STATUS)) { + return RT_ERR_COMM; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/client/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.3pre6/client/msg_svc_on_off.c new file mode 100644 index 00000000..02948f2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/client/msg_svc_on_off.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, char action) +{ + if(!begin_msg(action)) return RT_ERR_COMM; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return RT_ERR_COMM; + return (int) do_result(sock,NULL); +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre6/client/respawn_svc.c b/software/cinit/browse_source/cinit-0.3pre6/client/respawn_svc.c new file mode 100644 index 00000000..5c350045 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/client/respawn_svc.c @@ -0,0 +1,99 @@ +/* + * (c) 2005,2006 Nico Schottelius (nico-linux at schottelius.org) + * respawn_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + D_PRINTF(abspath); + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, CMD_START_SVC) ) { + if(cpid != 0) { + D_PRINTF("sloefen"); + sleep(SLEEP_SVC); + D_PRINTF("Zuende geschlafen"); + } + } + } while(cpid); /* cpid is reset by sig_terminate() */ + + /* FIXME: put most code of sig_terminate here, look for no_kill */ + + /* start off task */ + exec_svc(abspath,CMD_STOP_SVC); + + D_PRINTF("jetzt weg"); + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/client/run_run_svcs.c b/software/cinit/browse_source/cinit-0.3pre6/client/run_run_svcs.c new file mode 100644 index 00000000..6486c76f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/client/run_run_svcs.c @@ -0,0 +1,86 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/client/run_svc.c b/software/cinit/browse_source/cinit-0.3pre6/client/run_svc.c new file mode 100644 index 00000000..7fea6a92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/client/run_svc.c @@ -0,0 +1,129 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre6/client/sig_terminate.c b/software/cinit/browse_source/cinit-0.3pre6/client/sig_terminate.c new file mode 100644 index 00000000..9b23e349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/client/sig_terminate.c @@ -0,0 +1,60 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + /* FIXME: only send SIGTERM, if not_kill does not exist */ + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + status = kill(cpid,SIGKILL); + if( status == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + D_PRINTF("muesste weg sein"); + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/comm/README b/software/cinit/browse_source/cinit-0.3pre6/comm/README new file mode 100644 index 00000000..840c9742 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/comm/README @@ -0,0 +1,3 @@ +comm/ + The communication part of cinit. + The functions are used in client and in server code. diff --git a/software/cinit/browse_source/cinit-0.3pre6/comm/do_change_status.c b/software/cinit/browse_source/cinit-0.3pre6/comm/do_change_status.c new file mode 100644 index 00000000..94b9be76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/comm/do_change_status.c @@ -0,0 +1,70 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/comm/do_result.c b/software/cinit/browse_source/cinit-0.3pre6/comm/do_result.c new file mode 100644 index 00000000..cb51161b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/comm/do_result.c @@ -0,0 +1,33 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return RT_ERR_COMM; + } + + return *value; +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre6/comm/do_svc_name.c b/software/cinit/browse_source/cinit-0.3pre6/comm/do_svc_name.c new file mode 100644 index 00000000..d427365f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/comm/do_svc_name.c @@ -0,0 +1,51 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/.README b/software/cinit/browse_source/cinit-0.3pre6/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_confdir b/software/cinit/browse_source/cinit-0.3pre6/conf/c_confdir new file mode 100644 index 00000000..091e6192 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_confdir @@ -0,0 +1,3 @@ +conf + +The directory below cinit_dir for cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_delay b/software/cinit/browse_source/cinit-0.3pre6/conf/c_delay new file mode 100644 index 00000000..dc30f147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGTERM for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_env b/software/cinit/browse_source/cinit-0.3pre6/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_halt b/software/cinit/browse_source/cinit-0.3pre6/conf/c_halt new file mode 100644 index 00000000..4eed340f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_halt @@ -0,0 +1,4 @@ +halt + +Name of the link belowe c_special, which links to the program +to be executed right before halting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_init b/software/cinit/browse_source/cinit-0.3pre6/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_needs b/software/cinit/browse_source/cinit-0.3pre6/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_off b/software/cinit/browse_source/cinit-0.3pre6/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_on b/software/cinit/browse_source/cinit-0.3pre6/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_panic b/software/cinit/browse_source/cinit-0.3pre6/conf/c_panic new file mode 100644 index 00000000..7fdb77b3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_panic @@ -0,0 +1,5 @@ +panic + +Name of the file below cinit_dir/c_confdir/ to execute on panic. +This name .params (normally panic.params) will be passed as parameters/ +argumunts to panic. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_params b/software/cinit/browse_source/cinit-0.3pre6/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_poweroff b/software/cinit/browse_source/cinit-0.3pre6/conf/c_poweroff new file mode 100644 index 00000000..5b5c9c9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_poweroff @@ -0,0 +1,4 @@ +poweroff + +Name of the link belowe c_special, which links to the program +to be executed right before powering off the system. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_reboot b/software/cinit/browse_source/cinit-0.3pre6/conf/c_reboot new file mode 100644 index 00000000..8702388f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_reboot @@ -0,0 +1,4 @@ +reboot + +Name of the link belowe c_special, which links to the program +to be executed right before rebooting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_respawn b/software/cinit/browse_source/cinit-0.3pre6/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_sock b/software/cinit/browse_source/cinit-0.3pre6/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_tmp b/software/cinit/browse_source/cinit-0.3pre6/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.3pre6/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.3pre6/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_umount b/software/cinit/browse_source/cinit-0.3pre6/conf/c_umount new file mode 100644 index 00000000..ab96b0a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_umount @@ -0,0 +1,6 @@ +umount + +Name of the file below cinit_dir/c_confdir/ to execute right before +reboot/halt/poweroff. + +It should normally be a shellscript with the OS-specific umount procedure. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/c_wants b/software/cinit/browse_source/cinit-0.3pre6/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/cc b/software/cinit/browse_source/cinit-0.3pre6/conf/cc new file mode 100644 index 00000000..b168ae6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/cc @@ -0,0 +1,3 @@ +gcc + +The c-compiler to use. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/cflags b/software/cinit/browse_source/cinit-0.3pre6/conf/cflags new file mode 100644 index 00000000..812812a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/cflags @@ -0,0 +1,3 @@ +-pipe -W -Wall -Werror -Iinclude -g + +Standard flags to pass to (g)cc. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/cinit_dir b/software/cinit/browse_source/cinit-0.3pre6/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/confdir b/software/cinit/browse_source/cinit-0.3pre6/conf/confdir new file mode 100644 index 00000000..55fb65e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/confdir @@ -0,0 +1,3 @@ +conf + +The subdirectory below /etc/cinit to be used for general configurations. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/destdir b/software/cinit/browse_source/cinit-0.3pre6/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/getty_dir b/software/cinit/browse_source/cinit-0.3pre6/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/install_directory b/software/cinit/browse_source/cinit-0.3pre6/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/install_prog b/software/cinit/browse_source/cinit-0.3pre6/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/ipc_method b/software/cinit/browse_source/cinit-0.3pre6/conf/ipc_method new file mode 100644 index 00000000..fc75e273 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/ipc_method @@ -0,0 +1,5 @@ +msgq + +The type of IPC (inter process communication) to use. +Valid values can be optained by issuing `ls src/ipc/`. + diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/ld b/software/cinit/browse_source/cinit-0.3pre6/conf/ld new file mode 100644 index 00000000..b60e4836 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/ld @@ -0,0 +1,3 @@ +gcc + +Comment missing. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/ldflags b/software/cinit/browse_source/cinit-0.3pre6/conf/ldflags new file mode 100644 index 00000000..fc214daf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/ldflags @@ -0,0 +1,3 @@ + + +No flags specified normally. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/max_delay b/software/cinit/browse_source/cinit-0.3pre6/conf/max_delay new file mode 100644 index 00000000..149fa16c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/max_delay @@ -0,0 +1,7 @@ +4 + +Maximum number of digits which may be in the delay file. +If there are more, the string "12345678901" will be cut to the +right length "1234567890". I don't think you'll ever need +a timeout greater 4 digits (9999 seconds are 166,65~ minutes, are +2 hours, 46 minutes and 39 seconds). See doc/configuring.cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/max_deps b/software/cinit/browse_source/cinit-0.3pre6/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/msgq_pathname b/software/cinit/browse_source/cinit-0.3pre6/conf/msgq_pathname new file mode 100644 index 00000000..1bef0b6b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/msgq_pathname @@ -0,0 +1,4 @@ +/bin/sh + +Used to generate an unique identifier for the message queue. +See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/msgq_to_clients b/software/cinit/browse_source/cinit-0.3pre6/conf/msgq_to_clients new file mode 100644 index 00000000..dd15808a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/msgq_to_clients @@ -0,0 +1,4 @@ +o + +This is use in ftok to generate a key_t for the message queue use to write +to the clients. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/msgq_to_server b/software/cinit/browse_source/cinit-0.3pre6/conf/msgq_to_server new file mode 100644 index 00000000..f87ae3f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/msgq_to_server @@ -0,0 +1,4 @@ +i + +This is use in ftok to generate a key_t for the message queue use to write +to the server. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/os b/software/cinit/browse_source/cinit-0.3pre6/conf/os new file mode 100644 index 00000000..ddbf8f9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/os @@ -0,0 +1,14 @@ +linux + +Select the operating system compiling for. + +Current possibilities: + + - linux + + +Currently Planned possibilities: + + - freebsd + - openbsd + - netbsd diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/p_asciidoc b/software/cinit/browse_source/cinit-0.3pre6/conf/p_asciidoc new file mode 100644 index 00000000..52485c86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/p_asciidoc @@ -0,0 +1,6 @@ +asciidoc + +The binary on your system (with or without path) which does what I expect +asciidoc todo. + +Default: asciidoc diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/p_docbooktoman b/software/cinit/browse_source/cinit-0.3pre6/conf/p_docbooktoman new file mode 100644 index 00000000..d62c9015 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/p_docbooktoman @@ -0,0 +1,6 @@ +docbook2x-man + +The binary on your system (with or without path) which converts +docbook to manpages. + +Default: docbook2x-man diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/p_docbooktotexi b/software/cinit/browse_source/cinit-0.3pre6/conf/p_docbooktotexi new file mode 100644 index 00000000..278f6805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/p_docbooktotexi @@ -0,0 +1,6 @@ +docbook2x-texi + +The binary on your system (with or without path) which converts +docbook to texinfo. + +Default: docbook2x-texi diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/prefix b/software/cinit/browse_source/cinit-0.3pre6/conf/prefix new file mode 100644 index 00000000..6b90469f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/prefix @@ -0,0 +1,5 @@ + + +Where to install cinit. Normally this will be /, but you can put it anywhere. +The subdirectory 'sbin' under this prefix must be readable by the kernel. +This is normally either empty or "/". diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/profile b/software/cinit/browse_source/cinit-0.3pre6/conf/profile new file mode 100644 index 00000000..b9104bf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/profile @@ -0,0 +1,9 @@ +cprofile: + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile:" is the standard, as +the Linux kernel eats everything in the form 'var=parm'. +The old (pre cinit-0.1) option "cprofile=" should therefore +NOT be used. + +Under Linux you tell it the bootloader like grub or LILO. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/service_categories b/software/cinit/browse_source/cinit-0.3pre6/conf/service_categories new file mode 100644 index 00000000..d632b875 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/service_categories @@ -0,0 +1,4 @@ +getty local-tuning local-services mount network remote-services + +List of directories normally created below /etc/cinit/svc/ as +'pseudo-services'. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/sleep_kill b/software/cinit/browse_source/cinit-0.3pre6/conf/sleep_kill new file mode 100644 index 00000000..b419241a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/sleep_kill @@ -0,0 +1,8 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. + +Note: This does NOT affect terminating services, they are shutdown by +their own 'off' functions. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.3pre6/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.3pre6/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/sleep_svc b/software/cinit/browse_source/cinit-0.3pre6/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/sock_queue b/software/cinit/browse_source/cinit-0.3pre6/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/strip b/software/cinit/browse_source/cinit-0.3pre6/conf/strip new file mode 100644 index 00000000..08736418 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/strip @@ -0,0 +1,3 @@ +strip -R .comment -R .note + +Strip out unecessary parts of the binaries. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/sulogin b/software/cinit/browse_source/cinit-0.3pre6/conf/sulogin new file mode 100644 index 00000000..24859afc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/sulogin @@ -0,0 +1,6 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it, if the standard panic +action fails (as specified in cinit_dir/c_confdir/panic). + +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/svcdir b/software/cinit/browse_source/cinit-0.3pre6/conf/svcdir new file mode 100644 index 00000000..087a3848 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/svcdir @@ -0,0 +1,3 @@ +svc + +Directory below /etc/cinit that contains the services. diff --git a/software/cinit/browse_source/cinit-0.3pre6/conf/version b/software/cinit/browse_source/cinit-0.3pre6/conf/version new file mode 100644 index 00000000..7ac11550 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/conf/version @@ -0,0 +1,3 @@ +"0.3pre6" + +The version. diff --git a/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/Makefile b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/Makefile new file mode 100644 index 00000000..8441c90b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/Makefile @@ -0,0 +1,70 @@ +# +# (c) 2005 Peter Portmann (pp at bluewin.ch) +# cinit/contrib+tools +# +# This script is written for the clinux-System and published +# under the terms of GPL 2.0 +# +# Version: 0.2 +# clean with a single command instead of two commands. +# +# ChangeLog: +# 0.1 initial version +# +# Todo: +# +# Features: + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +DEBUG=-g -DDEBUG +#OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! +LDFLAGS= + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. -I../ +LD=gcc +STRIP=strip -R .comment -R .note + +INSTALL = install + +prefix = /usr +bindir = $(prefix)/bin + +# objects + +CLIENT=cinit.graph.text.o + +COMMUNICATION=error.o ../generic/usage.o ../generic/mini_printf.o + +OBJ=$(CLIENT) $(COMMUNICATION) + +# +PROGRAMS=cinit.graph.text +SCRIPTS=cconfig.graph.xml.rb \ + make.cconfig.from.xml.rb \ + cinit-vis.pl + +# targets +all: $(PROGRAMS) + +cinit.graph.text: $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +clean: + rm -f *.o $(PROGRAMS) + +install: all + @echo '*** Installing contrib+tools ***' + $(INSTALL) -d -m755 $(DESTDIR)$(bindir) + for bin in $(SCRIPTS) $(PROGRAMS); do \ + $(INSTALL) $$bin $(DESTDIR)/$(bindir); \ + done diff --git a/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/README b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/README new file mode 100644 index 00000000..85fa2f5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/README @@ -0,0 +1,11 @@ +contrib+tools/ + programs written by others and external tools not necessary + needed but (very) nice to have + + + cinit-vis.pl - draw an ascii graph of cinit configuration [perl] + cinit.graph.text - draw an ascii graph of cinit configuration [c] + + cconfig.graph.xml.rb - creates a xml file from a cconfig [ruby] + make.cconfig.from.xml.rb - creates a cconfig from a xml file [ruby] + diff --git a/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/README.ruby b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/README.ruby new file mode 100644 index 00000000..ed210cee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/README.ruby @@ -0,0 +1,7 @@ +The ruby tools for general cconfig [0] are written by René Nussbaumer [1]. +You can find the documentation for them at [2]. + + +[0]: http://nico.schotteli.us/papers/linux/cconfig/ +[1]: http://killerfox.forkbomb.ch/ +[2]: http://killerfox.forkbomb.ch/articles/cconfig/tools diff --git a/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/cconfig.graph.xml.rb b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/cconfig.graph.xml.rb new file mode 100644 index 00000000..d18ba422 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/cconfig.graph.xml.rb @@ -0,0 +1,117 @@ +#!/usr/bin/env ruby + +=begin + + Writes an XML-Tree for a cconfig directory + Idea by Nico Schottelius aka telmich + Implemented and (C) by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added support for binary files + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Changed checking order: symlink, directory, file. Because of + a logical bug -> directory follows symlink so, when a symlink + points to a directory no «link» element is created. + + Version 0.1 (René Nussbaumer): + * Holy hack for directory scanning (needs to be optimized) + * Hack for rexml to print out «lost» tags. This rexml sux. + + Todo: + * Optimize scanning. + * Use another xml library instead of rexml crap. + Problem: Produce dependencies -> no std-lib + + Features: + * Create a flat (no deepnes without directory) and 1:1 image + of an cconfig directory + +=end + +require 'rexml/document' +require 'base64' +require 'digest/sha1' + +require 'filemagic' + +@version = '0.3' + +def determineTarget(entry) + return 'external' if(!File.expand_path(entry).index(@initpath)) + return 'link' if(FileTest.symlink?(entry)) + return 'object' if(FileTest.directory?(entry)) + return 'attribute' if(FileTest.file?(entry)) + return 'unknown' # Should never be reached +end + +def createTree(dir, parent) + dir.each { |entry| + next if(entry =~ /^(\.|\.\.)$/) + + if(FileTest.symlink?(entry)) + e = parent.add_element('link') + + # Much fun with links + e.add_attributes( { 'name' => entry, 'target' => determineTarget(File.readlink(entry)) } ) + e.add_text(File.readlink(entry)) + elsif(FileTest.directory?(entry)) + e = parent.add_element('object') + e.add_attribute('name', entry) + + # Bad, that we need to change the directory every time. + oldPwd = Dir.pwd + Dir.chdir(entry) + createTree(Dir.new('.'), e) + Dir.chdir(oldPwd) + elsif(FileTest.file?(entry)) + e = parent.add_element('attribute') + e.add_attribute('name', entry) + if(File.stat(entry).size?) + # Yeah, we got one WITH content! W00h00, let's party. + + fm = FileMagic.new(FileMagic::MAGIC_MIME) + if(fm.file(entry) =~ /executable/) + e.add_attribute('type', 'binary') + text = File.new(entry).read + e.add_attribute('sha1', Digest::SHA1.hexdigest(text)) + e.add_text(Base64.encode64(text)) + else + e.add_text(File.new(entry).read) + end + fm.close() + end + end + } +end + + +if(!ARGV[0] || !FileTest.directory?(ARGV[0])) + puts 'You need to specify a directory' + Kernel.exit(-1) +end + +doc = REXML::Document.new + +e = doc.add_element('cconfig') +e.add_attribute('name', File.basename(ARGV[0])) +e.add_attribute('version', @version) + +@initpath = File.expand_path(ARGV[0]) +Dir.chdir(ARGV[0]) +createTree(Dir.new('.'), doc.root) + +out = '' +doc.write(out, 0, false, true) + +REXML::XMLDecl.new('1.0', 'utf-8').write($stdout) # This should automatically printed by rexml. Damn bugs. +puts '' +puts out # Workaround for a buggy rexml + diff --git a/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/cinit-vis.pl b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/cinit-vis.pl new file mode 100644 index 00000000..3956ff47 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/cinit-vis.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# (c) by Marcus Przyklink (downhill-clinux@burningchaos.org) +# written for cinit and published under GPL +# beautified a bit by Nico Schottelius +# optimized by René Nussbaumer +# Version: 0.1 + +use strict; +use warnings; + +# +# Variables for location and output +# +# cinit-directory +my $path = "/etc/cinit/"; +# started profile +my $starting_point = "init"; +# the spaces for each level (integer: amount of spaces) +my $space = 3; +# marker for need +my $need = "-->"; +# marker for want +my $want = "==>"; + +# +# main function, recursively list the components of the cinit system +# +if (@ARGV) { + if( $ARGV[0] =~ /-(h|-help)/ ) { + print "Usage: " . __FILE__ . " without parameters for standard-use (check variables in file)\n"; + print " Parameters:\n"; + print " -h for this help\n"; + print " profile-name for a profile\n"; + exit(0); + } + else { + $starting_point = $ARGV[0]; + } +} + +# +# start first instance +# +sub get_deeper { + my ($point, $tmp_counter, $need_want) = splice @_; + + print " " x ($space * $tmp_counter) . ($need_want ? $need : $want) . " " . $point . "\n"; + + opendir(DIR, "${path}${point}/needs") and + my @next_need = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + opendir(DIR, "${path}${point}/wants") and + my @next_want = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + + for(@next_need) { + get_deeper($_, $tmp_counter + 1, 1); + } + for(@next_want) { + get_deeper($_, $tmp_counter + 1, 0); + } +} + +# +# start first instance +# +get_deeper($starting_point, 0, 0); + +# +# work done, go home +# +exit(0); diff --git a/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/cinit.graph.text.c b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/cinit.graph.text.c new file mode 100644 index 00000000..bc6fb6ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/cinit.graph.text.c @@ -0,0 +1,200 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + cinit.graph.text.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.2 + + ChangeLog: + Version 0.2 (Peter Portmann): + * Not assigned link destinies are marked by (!). + * Not readable directories are marked by "directory not readable". + + Version 0.1 (Peter Portmann): + * Print of the directory structure of the contained files and links + without following the links. + + Todo: + + Features: +*/ + +//#include +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" +#include "error.h" + +#define FTW_F 1 /* file isn't a directory */ +#define FTW_D 2 /* file is a directory */ +#define FTW_DNR 3 /* not readable directory */ +#define FTW_NS 4 /* unsuccesfully stat on this file */ +#define MAX_CHAR 4096 + +/*********************************************************************** + * cinit.gaph.text - textual representation of the cinit directory + */ + +#define CSERVICE_BANNER "cinit.gaph.text - textual representatio of the cinitdirectory\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncinit.gaph.text \n" \ + "\tpath\t- cinit installationpath\n" + +typedef int EACH_ENTRY(const char *, const struct stat *, int); +typedef enum { FALSE=0, TRUE=1 } bool; + +static char dirpath[PATH_MAX]; +static int depth = 0; +static long int filecount = 0; + +static EACH_ENTRY each_entry; +static int pp_ftw(char *, EACH_ENTRY *); +static int each_getinfo(EACH_ENTRY *); + +/*********************************************************************** + * pp_ftw: file tree walk + */ +static int pp_ftw(char *filepath, EACH_ENTRY *function) +{ + int n; + + if(chdir(filepath) < 0) /* In angegebenen Pfad wechseln */ + err_msg(FATAL_SYS, "can't change to %s", filepath); + + if(getcwd(dirpath, PATH_MAX) == 0) /* Absoluten Pfadnamen ermitteln */ + err_msg(FATAL_SYS, "error using getcwd for %s", filepath); + + n = each_getinfo(function); + + return(n); +} + +/*********************************************************************** + * each_getinfo: get more info for each file. + */ +static int each_getinfo(EACH_ENTRY *function) +{ + struct stat statpuff; + struct dirent *direntz; + DIR *dirz; + int n; + char *zgr; + + if(lstat(dirpath, &statpuff) < 0) + return(function(dirpath, &statpuff, FTW_NS)); /* Error on stat */ + + if(S_ISDIR(statpuff.st_mode) == 0) + return(function(dirpath, &statpuff, FTW_F)); /* no directory */ + + /* It's a directory. + * Call function() for it. After that handel each file in the directory. */ + + if((dirz = opendir(dirpath)) == NULL) { /* Directory not readable */ + closedir(dirz); + return(function(dirpath, &statpuff, FTW_DNR)); + } + + if((n = function(dirpath, &statpuff, FTW_D)) != 0) /* return the directorydirpath */ + return(n); + + zgr = dirpath + strlen(dirpath); /* append slash to the dirpathname */ + *zgr++ = '/'; + *zgr = '\0'; + + while((direntz = readdir(dirz)) != NULL) { + /* ignor . and .. */ + if(strcmp(direntz->d_name, ".") && strcmp(direntz->d_name, "..")) { + strcpy(zgr, direntz->d_name); /* append filename after slash */ + depth++; + if(each_getinfo(function) != 0) { /* Recursion */ + depth--; + break; + } + depth--; + } + } + *(zgr-1) = '\0'; /* deleting evrything after the slash */ + + if(closedir(dirz) < 0) + err_msg(WARNING, "closedir for %s failed", dirpath); + + return(n); +} + +/*********************************************************************** + * each_entry: handling each file and build the graph step by step. + */ +static int each_entry(const char *filepath, const struct stat *statzgr, int filetype) +{ + struct stat statpuff; + static bool erstemal=TRUE; + int i; + + char link[MAX_CHAR]; + + filecount++; + if(!erstemal) { + for(i=1 ; i<=depth ; i++) + printf("%4c|", ' '); + printf("----%s", strrchr(filepath, '/')+1); + } else { + printf("%s", filepath); + erstemal = FALSE; + } + + switch(filetype) { + case FTW_F: + switch(statzgr->st_mode & S_IFMT) { + case S_IFREG: break; + case S_IFCHR: printf(" c"); break; + case S_IFBLK: printf(" b"); break; + case S_IFIFO: printf(" f"); break; + case S_IFLNK: + printf(" -> "); + if(( i=readlink(filepath, link, MAX_CHAR)) != -1) + printf("%.*s", i, link); + if(stat(filepath, &statpuff) < 0) + printf(" (!)"); + break; + case S_IFSOCK: printf(" s"); break; + default: printf(" ?"); break; + } + printf("\n"); + break; + + case FTW_D: + printf("/\n"); + break; + + case FTW_DNR: + printf("/ directory not readable\n"); + break; + + case FTW_NS: + err_msg(WARNING_SYS, "Error using 'stat' on file %s", filepath); + break; + + default: + err_msg(FATAL_SYS, "Unknown Filetype (%d) by file %s", filetype, filepath); + break; + } + + return(0); +} + +/*********************************************************************** + * main: + */ +int main(int argc, char *argv[]) +{ + if(argc != 2) + usage(CSERVICE_BANNER, USAGE_TEXT); + + exit(pp_ftw(argv[1], each_entry)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/error.c b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/error.c new file mode 100644 index 00000000..8174c702 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/error.c @@ -0,0 +1,124 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#include "error.h" +#include +#include +#include +#include +#include +#include + +#define MAX_CHAR 4096 + +int debug; /* Aufrufer von log_msg oder log_open muss debug setzen: + 0, wenn interaktiv; 1, wenn Daemon-Prozess */ + +/*---- Lokale Routinen zur Abarbeitung der Argumentliste --------------------*/ +static void msg_err(int sys_msg, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + return; +} + +static void msg_log(int sys_msg, int prio, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + if (debug) { + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + } else { + strcat(puffer, "\n"); + syslog(prio, puffer); + } + return; +} + +/*---- Global aufrufbare Fehlerroutinen -------------------------------------*/ +void err_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_err(0, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + case DUMP: + msg_err(1, fmt, az); + break; + default: + msg_err(1, "Falscher Aufruf von err_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + else if (kennung==DUMP) + abort(); /* core dump */ + exit(1); +} + +void log_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_log(0, LOG_ERR, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + msg_log(1, LOG_ERR, fmt, az); + break; + default: + msg_log(1, LOG_ERR, "Falscher Aufruf von log_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + exit(2); +} + +/*---- log_open --------------------------------------------------------------- + initialisiert syslog() bei einem Daemon-Prozess */ +void log_open(const char *kennung, int option, int facility) +{ + if (debug==0) + openlog(kennung, option, facility); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/error.h b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/error.h new file mode 100644 index 00000000..a55690fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/error.h @@ -0,0 +1,29 @@ +#ifndef ERROR_H +#define ERROR_H +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.h + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#define WARNING 0 +#define WARNING_SYS 1 +#define FATAL 2 +#define FATAL_SYS 3 +#define DUMP 4 + +void log_msg(int kennung, const char *fmt, ...); +void err_msg(int kennung, const char *fmt, ...); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/make.cconfig.from.xml.rb b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/make.cconfig.from.xml.rb new file mode 100644 index 00000000..05f35cc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/contrib+tools/make.cconfig.from.xml.rb @@ -0,0 +1,227 @@ +#!/usr/bin/env ruby + +=begin + + Create a cconfig directory based on a xml input. + (C) 2005 by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added binary file support + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Added some commandline options + * Added «level» so control the restrictivity of the program + * Added more «intelligence» to the program, to detect internal broken dependcies. + * Support «debug»-Levels. + * Print statistic at the end of the programs about warnings and errors. + + Version 0.1 (René Nussbaumer): + * Initial + + Todo: + * Use an rexml alternative + * Some cleanup + * Optimize + * Testing? + + Features: + * Create a cconfig directory based on a xml + +=end + +require 'rexml/document' +require 'getoptlong' +require 'base64' +require 'digest/sha1' + +@verbose = 0 +@level = 1 +@version = '0.3' + +@warnings = 0 +@errors = 0 +@checklist = Array.new + +def printMsg(prefix, msg) + puts '%-12s %s' % [prefix + ':', msg] +end + +def error(msg, fatal = 0) + @errors += 1 + fatal = 0 if(@level < 1) + fatal = 255 if(@level > 1 && !fatal) + printMsg(fatal != 0 ? 'PANIC' : 'ERROR', msg) + Kernel.exit(-fatal) if(fatal != 0) +end + +def warn(msg) + error(msg, 1) if(@level > 1) + @warnings += 1 + printMsg('WARNING', msg) +end + +def info(msg) + printMsg('INFO', msg) +end + +def debug(msg, verbosity = 1) + if(@verbose >= verbosity) + printMsg("DEBUG(#{verbosity})", msg) + end +end + +def createObject(name) + error("#{name} already exists.", 1) if(FileTest.exists?(name)) + begin + Dir.mkdir(name) + rescue + error("Could not create directory #{name}: #{$!}. Abort.", 7) + end + debug("Object #{File.expand_path(name)} has been created.", 4) +end + +def createAttribute(name, content = nil) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + begin + file = File.new(name, 'w') + file.print content if(content && !content.empty?) + file.close + debug("Attribute #{File.expand_path(name)} has been created", 4) + rescue + error("Could not create file #{name}: #{$!}. Skipped.") + end +end + +def createLink(name, target, type) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + error("Broken dependencies! Please take a look if #{target} exists on your system", 2) if(type == 'external' && !FileTest.exists?(target)) + if(!FileTest.exists?(target) && type != 'external') + #info("Possible break. But maybe the target #{target} does not yet exists. Checking later.") + exptarget = File.expand_path(target) + @checklist << exptarget + debug("Adding #{target} to the list of internal dependcies to check.", 2) + end + begin + error('You\'ve a system which does not support symbolic links. Abort.', 3) if(File.symlink(target, name) != 0) + rescue + error("Could not create symlink #{name} => #{target}: #{$!}.", 3) + end + debug("Link #{File.expand_path(name)} has been created", 4) +end + +def doWork(elm) + name = elm.name + attrname = elm.attributes['name'] + error("XML Tag with missing name attribute!", 5) if(!attrname) + if(name =~ /(object|cconfig)/) + if(name == 'cconfig') + if(elm.attributes['version']) + info("Found a version string: #{elm.attributes['version']}") + warn("This XML is maybe incompatible with this programm. I'm a version #{@version} script. The XML is generated with a version #{elm.attributes['version']} script. Please update.") if(elm.attributes['version'] > @version) + end + end + createObject(attrname) + if(elm.has_elements?) + pwd = Dir.pwd + Dir.chdir(attrname) + elm.each_element { |e| + doWork(e) + } + Dir.chdir(pwd) + end + elsif(name == 'attribute') + text = nil + e = nil + text = e.value if((e = elm.get_text)) + if(text && elm.attributes['type'] && elm.attributes['type'] == 'binary') + text = Base64.decode64(text) + if(Digest::SHA1.hexdigest(text) != elm.attributes['sha1']) + warn("SHA1 differs from file: #{Dir.pwd}#{attrname}") + end + end + createAttribute(attrname, text) + elsif(name == 'link') + error("link-Tag without content.", 6) if(!elm.has_text?) + error("link with missing target. Skipped.") if(!elm.attributes['target']) + createLink(attrname, elm.get_text.value, elm.attributes['target']) + end +end + +puts "This is #{File.basename(__FILE__)} v#{@version} by René Nussbaumer" +puts + +opts = GetoptLong.new( + ['--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT], + ['--level', '-l', GetoptLong::REQUIRED_ARGUMENT], + ['--version', '-V', GetoptLong::NO_ARGUMENT] +) + +opts.each { |arg,value| + case arg + when '--verbose' + @verbose += 1 + value.each_byte { |x| + if(x.chr == 'v') + @verbose += 1 + end + } + debug("Verbosity set to: #{@verbose}") + when '--level' + debug("Setting level to: #{value}", 3) + case value + when 'low' + @level = 0 + when 'normal' + @level = 1 + when 'paranoid' + @level = 2 + else + warn('Unknown level: ' + value) + end + when '--version' + Kernel.exit(0) + else + warn("Unknown option #{arg}#{value && !value.empty? ? ('with value ' + value) : ''}") + end +} + +if(!ARGV[0]) + puts 'Need at least one argument' + puts "Usage: #{__FILE__} " + Kernel.exit(1) +end + + +filedesc = $stdin + +if(ARGV[0] != '-') + filedesc = File.new(ARGV[0]) +end + +doc = REXML::Document.new filedesc + +doWork(doc.root) + +if(!@checklist.empty?) + info('Now checking all broken internal dependcies again') + broken = 0 + @checklist.each { |path| + debug("Checking #{path}.", 2) + if(!FileTest.exists?(path)) + broken += 1 + warn("Broken dependcies. #{path} does not exist. Please fix.") + end + } + info('Looks good.') if(broken == 0) + info('Bad, bad.') if(broken > 0) +end + +info("Successed. #{@warnings} warnings, #{@errors} errors") + diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/.buildwarn b/software/cinit/browse_source/cinit-0.3pre6/doc/.buildwarn new file mode 100644 index 00000000..3a0354dd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/.buildwarn @@ -0,0 +1,23 @@ +**************************************************************************** +Welcome, cinit greets you. +**************************************************************************** + +Hints: +------ + - Settings used for compiling (not only) can be found in conf/* + - The boot configuration normally resides below /etc/cinit + +Documentation +------------- +The documentation can be found in doc/: + + - doc/user/ contains documentation for users + - doc/devel/ contains documentation for developers + + Please read doc/user/installing-cinit.text _BEFORE_ installing. + +Building cinit +-------------- + + "make all" - to build cinit + diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/Makefile b/software/cinit/browse_source/cinit-0.3pre6/doc/Makefile new file mode 100644 index 00000000..421e58c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/Makefile @@ -0,0 +1,87 @@ +# +# Makefile stolen from ccollect +# Nico Schottelius, Fri Jan 13 12:13:08 CET 2006 +# + +ASCIIDOC=asciidoc +DOCBOOKTOTEXI=docbook2x-texi +DOCBOOKTOMAN=docbook2x-man +XSLTPROC=xsltproc +XSL=/usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl + +# +# Asciidoc will be used to generate other formats later +# +MANDOCS = man/cinit.text +DOCS = $(MANDOCS) + +# +# Doku +# +HTMLDOCS = $(DOCS:.text=.html) +DBHTMLDOCS = $(DOCS:.text=.htm) + +TEXIDOCS = $(DOCS:.text=.texi) + +MANPDOCS = $(MANDOCS:.text=.man) + +DOCBDOCS = $(DOCS:.text=.docbook) + +DOC_ALL = $(HTMLDOCS) $(DBHTMLDOCS) $(TEXIDOCS) $(MANPDOCS) + +# +# End user targets +# +all: + @echo "----------- documentation make targets --------------" + @echo "documentation: generate HTML, Texinfo and manpage" + @echo "html: only generate HTML (via asciidoc/docbook/xsltproc)" + @echo "htm: only generate HTML (via asciidoc)" + @echo "info: only generate Texinfo" + @echo "man: only generate manpage(s)" + +install: + +# +# Internal targets +# +html: $(HTMLDOCS) +htm: $(DBHTMLDOCS) +info: $(TEXIDOCS) +man: $(MANPDOCS) +documentation: $(DOC_ALL) + + +# +# Generic targets +# + +# docbook gets .htm, asciidoc directly .html (or the other way round) +%.html: %.docbook + ${XSLTPROC} -o $@ ${XSL} $< + +%.htm: %.text + ${ASCIIDOC} -n -o $@ $< + +%.docbook: %.text + ${ASCIIDOC} -n -b docbook -o $@ $< + +%.texi: %.docbook + ${DOCBOOKTOTEXI} --to-stdout $< > $@ + +%.mandocbook: %.text + ${ASCIIDOC} -b docbook -d manpage -o $@ $< + +%.man: %.mandocbook + ${DOCBOOKTOMAN} --to-stdout $< > $@ + +# +# Distribution +# +distclean: + rm -f $(DOC_ALL) + +# +# Be nice with the users and generate documentation for them +# +dist: distclean documentation diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/README.text b/software/cinit/browse_source/cinit-0.3pre6/doc/README.text new file mode 100644 index 00000000..46fe59fe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/README.text @@ -0,0 +1,57 @@ +cinit/doc +========= +Nico Schottelius +0.1, Initial Version from 2006-11-30 +:Author Initials: NS + +This directory contains the cinit documentation. + +Files and directories in this directory +---------------------------------------- + +ancient +~~~~~~~ +Old documents, only thought to irritate you. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +braindumps +~~~~~~~~~~ +Files I used to make the situation clear to myself. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +devel +~~~~~ +Developer related documents. Contains information for adding code, +for developing external tools to cinit or code guidelines for writing +patches to cinit. + + +logs +~~~~ +Logfiles or raw data dumps. + + +Makefile +~~~~~~~~ +The makefile used to generate the documentation. + + +man +~~~ +Manpages. + + +README.text +~~~~~~~~~~~ +This file + + +user +~~~~ +The most important part: Documentation for users (aka sysadmins, +hackers, endusers?): Explains howto install, configure, use and +debug cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/README b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/README new file mode 100644 index 00000000..45e193f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/README @@ -0,0 +1,16 @@ +Ancient +======= +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 + + +These files may be incorrect, outdated, totally wrong or even trying +to take over world dominance. + + +Why are they still there? +------------------------- + +Just because to document the early days of cinit. If you are +a software archaeologist in the year 2423, you'll be happy that +I saved those files. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/caveats b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/caveats new file mode 100644 index 00000000..5ab123e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/caveats @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/author b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/availability b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/availability new file mode 100644 index 00000000..cfb3f8a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/availability @@ -0,0 +1 @@ +cinit is currently Linux-specific. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/examples b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/examples new file mode 100644 index 00000000..1a7d2dcb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/examples @@ -0,0 +1 @@ +See http://linux.schottelius.org/cinit/#config diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/files b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/files new file mode 100644 index 00000000..4d6c0921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/files @@ -0,0 +1,5 @@ +/sbin/cinit - the init system +/sbin/cservice - control cinit +/sbin/cinit.reboot (/sbin/reboot if non-existent before) +/sbin/cinit.shutdown (/sbin/shutdown if non-existent before) +/etc/cinit - configuration directory diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/long_description b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/long_description new file mode 100644 index 00000000..18c3c082 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/long_description @@ -0,0 +1,5 @@ +cinit is a fast executing, small and simple init with support for profiles. It +minds dependencies (hard and soft, 'needs' and 'wants') and executes processes +in parallel. And it has a simple configuration, which makes many shell-scripts +unecessary (but you still could use them if you really want), which leads to +better performance and less memory using. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/meta/name new file mode 100644 index 00000000..b853da25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/meta/name @@ -0,0 +1 @@ +cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/parameters b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/parameters new file mode 100644 index 00000000..54df4727 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/parameters @@ -0,0 +1 @@ +cprofile: diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/path b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/path new file mode 100644 index 00000000..37edf339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/path @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/see also b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit.commands b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit.commands new file mode 100644 index 00000000..d34d13bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cinit.commands @@ -0,0 +1,73 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (using SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. +CMD_UPDATE: Update cinit, hot-reboot the system. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/author b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/long_description b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/long_description new file mode 100644 index 00000000..82818a93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/long_description @@ -0,0 +1 @@ +cservice controls cinit. Please use cservice -h for help. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/meta/name new file mode 100644 index 00000000..49c847bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/meta/name @@ -0,0 +1 @@ +cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/parameters b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/parameters new file mode 100644 index 00000000..605b08b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/parameters @@ -0,0 +1 @@ +[-eaphru] [thilo] diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/path b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/path new file mode 100644 index 00000000..85b0cb56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/path @@ -0,0 +1 @@ +/sbin/cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/see also b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/cservice-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/extern/README b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/extern/README new file mode 100644 index 00000000..e734d6d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/extern/README @@ -0,0 +1,2 @@ +doc/extern/ + Some things related to cinit from the outside world. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/extern/ipc.thoughts b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/extern/ipc.thoughts new file mode 100644 index 00000000..e2619d34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/extern/ipc.thoughts @@ -0,0 +1,83 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2 ), +1024 is the maximum opened file deskriptors, +minus 3 (stdin/stdout/stderr) already opened, divided +by two, because two fds needed per client. + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt, + - poweroff, + - update itself (hot-reboot) + - and to start a rescue mode (see using.rescue). + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + CONT: update + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/extern/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/extern/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/extern/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/extern/linux.kernel.eats.arguments b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/extern/linux.kernel.eats.arguments new file mode 100644 index 00000000..dbaf57d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/extern/linux.kernel.eats.arguments @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +Linux, the kernel, eats arguments +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +If you specify + + variable=value + +to the Linux kernel, the argument will NOT be passed to cinit. + +Here's the relevant code block from init/main.c of the Linux kernel: + +------------------------------------------------------------------------------- + +From init(void * unused) the function run_init_process(char *init_filename) +is called, which passes argv_init (char * argv_init[MAX_INIT_ARGS+2]) to init. + +First init_setup(char *str) resets all elements of the argv_init to NULL. + +The function unknown_bootoption(char *param, char *val) fills the +argv_init array, but only with parameters, which have no value +(val). + +The function parse_args calls unknown_bootoption with the unknown options. + +------------------------------------------------------------------------------- + +This way the profile support in all cinit versions below cinit-0.1 will +only work if you change conf/profile, because "cprofile=value" will +not be given to cinit, because it's not treated as a command line option. + +The original value "cprofile=" is replaced by "cprofile:" as of cinit-0.1. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/extern/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/extern/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/extern/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/fun-testing b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/fun-testing new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/fun-testing @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/how_it_works_internally b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/init-idea-first b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/init-idea-first new file mode 100644 index 00000000..2d677d8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/init-idea-first @@ -0,0 +1,38 @@ +- restarting/respawning + touch respawn +- dependencies + a needs started b +- clean multiply dependencies +- start & stop dependencies + start_depends + stop_depends +- parallel executation +- start and stop commands + start -> link + start_param -> parameters, like minit + stop -> link + stop_param -> parameters, like minit + + if no stop command is available, try to kill the pid we started at stop + +/startup/ + start_depends=gettys +/shutdown/ + stop_depends=power_off + + +gettys/ + start_depends=getty/1 + start_depends=getty/2 + start_depends=getty/3 + start_depends=getty/4 ... + +getty/1/ + start=/sbin/fgetty + respawn + +power_off/ + stop_depend=umount + +umount/ + stop_depend= diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/porting.to.other.os b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/porting.to.other.os new file mode 100644 index 00000000..65fdc07b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will perhaps become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/removing.zombies b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/removing.zombies new file mode 100644 index 00000000..9527e652 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + cinit in general will keep the behaviour of reaping the vestiges, + which broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/security b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/security new file mode 100644 index 00000000..f1dac591 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/security @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation, which will not accept connect() +by others than root. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console then! + +For extra parnoid settings you can do the following: + + ei # chmod 700 /etc/cinit/tmp/coala + ei # chown root:root /etc/cinit/tmp/coala diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/socket.poll_vs_o_async b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/socket.poll_vs_o_async new file mode 100644 index 00000000..477f2bff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/socket.poll_vs_o_async @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------------- +Socket: poll(2) vs. O_ASYNC, +Nico Schottelius 2005-06-22 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +0. General problem +1. O_ASYNC +2. poll(2) + + +0. General problem + +cinit has to react, as soon as there's data on the socket. + +1. O_ASYNC + +When you open a socket with O_ASYNC (or specify it with fcntl(2)) under +Linux, your process recieves the SIGIO signal from the kernel, as soon +as data is available. + +The problem is the handling of signals seems not to be serialised: + +The function, which is called on the SIGIO signal (called sigio() here) +calls other functions. Those functions way recieve SIGIO while working, +so the first data stream is not yet finished, though the next +stream is beeing read. + +This gives very nice race-conditions, which are very nice to debug. + +2. poll(2) + +poll(2) is a standard Unix-call (XPG4-UNIX), which waits a specific +timeout (or infinite time if you specify a value less that zero) for +the socket (or the fd in general) to be in a state where +data is available to read (in fact poll can do much more, but we are +not interested only in POLLIN and POLLPRI). + +While poll(2) seems to be a very bit slower than sigio it works reliable. + diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/thoughts.closed b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/thoughts.closed new file mode 100644 index 00000000..91a8e080 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/ancient/thoughts.closed @@ -0,0 +1,52 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c + +7. Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. As this is not needed + currently, it's not implemented. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/README.text b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/README.text new file mode 100644 index 00000000..c4947a13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/README.text @@ -0,0 +1,2 @@ +DO NOT READ CONTENT IN THIS DIRECTORY. +(or at least do not blame me, if you get really confused after reading it) diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/big-picture.text b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/big-picture.text new file mode 100644 index 00000000..4426c236 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/big-picture.text @@ -0,0 +1,122 @@ +Just a small hint-file for me to see how cinit works: + + - cinit starts + * cinit executes either init or a profile + - the dependency-tree begins + + - now cinit begins to try to execute the dependencies + * first the needs (if those fail, wants are never called) + - fork() for every dependency? + +-------------------------------------------------------------------------------- +another idea: + + - cinit starts + - cinit reads the full depedency tree + * it builds n-depth trees + * it begins at the set init service (profile or init!) + * init is the first entry. always. + * read full service information (like on/off/params/respawn) + * design of each tree element: see below + - add a tree for the needs + - add a tree for the wants + - the elements have links, one service is created only once + - after the tree is created, execution begins + * begin from the bottom + * save a pointer to the last level somehow before? + +Pre calculation: + - need to act on changes (some kind of file watcher) + * need to keep status (?) + * what with now missing needs / wants? + - missing needs: shutdown now missing needs? + - simply ignore them? + - shut them down if not needed (no one has a link in needs?) + * +-------------------------------------------------------------------------------- +Sample dependency tree: + + init + / \ + needs wants + / | \ / | \ + a b c d e f + / | \ / | \ + needs needs needs END needs END + / | \ \ | | | | + b c d c f a e a +-------------------------------------------------------------------------------- +How this would be sorted:: + init: + needs: a b c + wants: d e f + a: + needs: b c d + b: + needs: c f + c: + needs: a e + d: + - + e: + needs: a + f: + - +-------------------------------------------------------------------------------- +So in this case, cinit may start services the following way: + d f + -> Wouldn't be possible in pre-calculation, because of circular dependencies. +-------------------------------------------------------------------------------- + Try a 'real' dependency tree: + a needs b c d + b needs c d + c and d do not need other stuff +-------------------------------------------------------------------------------- +Now cinit would it do the following way: + start c, start d + b will be started, as soon as c and d successfully finish + as soon as b is finished, a will be started +-------------------------------------------------------------------------------- +Now let's think about how this could look like in code... +- when we built up the tree, we have some ends (n to say) +- we can / must start starting (;-) at the end +- we would have more than one line back (z may be needed by c, i, and a) + * like in "c is needed by s, c, o" + * maxdepth counter? + * asynchronous rollback? + +--> to think more about it! +-------------------------------------------------------------------------------- + +tree elements: + * name (= path) + * on, off, +params + * respawn_delay + - -1 if not respawning + - >= 0 time to wait between restart + * status + - NOT STARTED (status on initialisation) + - RESPAWNING (running, respawning) + - RESPAWN_DELAY (waiting to respawn it) + - ONCE (started once) + * errormsg + - pointer to an error message in case of failure + * needs + - List of services we need + * wants + - List of services we want + * used_by + - List of services which use this service +-------------------------------------------------------------------------------- + +Conclusions +------------ + +cinit as the main executor +~~~~~~~~~~~~~~~~~~~~~~~~~~ +If cinit should start all services directly and manage dependencies +only internally, it will need to have build a reverse dependency tree, +so it begins starting at the end. + +cinit could execute all possible parallel running services in parallel +and open pipes to the (dumb) service executors. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/circular-dependencies.text b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/circular-dependencies.text new file mode 100644 index 00000000..dcc91ea7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/circular-dependencies.text @@ -0,0 +1,35 @@ +What todo with circular dependencies? + a needs b + b needs a + + - try to start them? + status a: is_starting + status b: not_set + a wants b, so a service starter for b starts + status a: is_starting, waiting for b + status b: is_starting + service starter for b sees that a is needed + service starter for b sees that a is already being started + service starter for b begins to execute b + status a: is_starting, waiting for b + status b: is_starting, executing "on" + service starter b finishes + status a: is_starting, waiting for b + status b: FAILED | RESPAWN | ONCE + service a continues + b successful: execute on + b failed: register / print that we do not start, because + b failed + + -> this would only catch possible deadlocks, if the dependency + tree / status check is done dynamically + -> in case of pre-building the dep-tree this situation must + be concerned: + - start both a and b? + - or stop due to circular dependency? + + - Abort on detection of a circular dependency + * possible without pre-calculating? + - perhaps only with direct communication possible? + * pre calculate + - do not start that services? diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/coding-style b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/coding-style new file mode 100644 index 00000000..1b164b9e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/coding-style @@ -0,0 +1,49 @@ +Coding style +============ +Nico Schottelius +0.1, for cinit, Initial version from 2006-11-13 +:Author Initials: NS + +This document describes the coding style used in cinit. + + +Indent +------ +Indent the code by 3 spaces for each level. + + +Unsorted +--------- +Linebreaks: + + +if(...) { + +} else { +} + + +do { +} while(); + +no spaces + - within braces and code "(!test)", + - before braces "if(code)" + +spaces + - after braces "if(test) return 0;" + - spaces before and after '=' (a = b); + +curly braces: + functions: + int func(int params) + { + body + } + +comments: + where necessery, do not state the obvious in comments: + + /* this code increments tmp */ + ++tmp; + diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/creating-new-configurations b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/creating-new-configurations new file mode 100644 index 00000000..a251de5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/creating-new-configurations @@ -0,0 +1,6 @@ +scripts/create_baseconfig.sh # create base +scripts/cinit.install.standard.dirs # create common categories + +- create fsck +- set hostname +- create getty(s) diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/messages.text b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/messages.text new file mode 100644 index 00000000..f4ef769e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/messages.text @@ -0,0 +1,6 @@ +This document describes the messages used between cinit and its +"clients" (i.e. ccontrol, cservice, cinit.halt, ...): + +Signal messages +--------------- +As signals diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/possible_service_pre_calculation.text b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/possible_service_pre_calculation.text new file mode 100644 index 00000000..96ec3a73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/possible_service_pre_calculation.text @@ -0,0 +1,19 @@ +- start at + * create a new service entry (if not exists) <--- + * reads needs | + - follow dependencies ------------------------ + * only if service does not yet exist! | + * read wants | + - follow dependencies ------------------------ + * only if service does not yet exist! + * create + - needed by entry in dependencies + - needs entry in service + - wanted by entry in dependencies + - wants entry in service + + * record + - (on,off)(,.env,.params)? + - alternatively put that code into service starter + * add services without further needs into a special + "begin" structure to be reused at fireing of the services? diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/possible_service_status.text b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/possible_service_status.text new file mode 100644 index 00000000..eb0f21e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/possible_service_status.text @@ -0,0 +1,14 @@ + + - NOT_SET: this service has not yet been initialized + - RESPAWNING: happily respawning + - RESPAWN_DELAY: waiting delay before restarting + * HINT: using alarm()? + - senseful for single process service watcher + * HINT: using nanosleep()? + - senseful for per service process watcher + - NEED_FAILED + * add a (somehow terminated) list of services that failed? + * use global status to checkout which services failed? + - WANT_FAILED? + * NOT NECESSARY, it is a simple want, we do not need it. + diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/registering_needs_wants.text b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/registering_needs_wants.text new file mode 100644 index 00000000..ededbd41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/braindumps/registering_needs_wants.text @@ -0,0 +1,55 @@ +Each service has a list of services it + - needs + - is needed by + - wants + - is wanted by + + +Each entry is a service pointer. +The simplest list could look like this: + + service a: + needs: + b f g NULL + +So the needs pointer is NULL terminated: + needs = realloc(count_links) + -> how to get the count? + 0x02 + 0x + + Better: A double linked list (like the main service list)? + +Could look like: + service a: + needs: + *service + *next + *prev + +This design could also be used for wants. + +On the other hand, we've to register us at the needed/wanted service: + + service b: + needed_by: + *service + *next + *prev + + +So each service needs four pointers: + needs + needed_by + wants + wanted_by + +And on each request both lists have to be modified! + +Example: + + Service "a" adds "b" as needed: + + - add "a" needs "b" + - add "b" needed_by "a" + diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/devel/README.text b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/README.text new file mode 100644 index 00000000..20524651 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/README.text @@ -0,0 +1,18 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit development documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +(cinit-)developers. + +Content +------- diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/devel/cinit-0.4.text b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/cinit-0.4.text new file mode 100644 index 00000000..61b718f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/cinit-0.4.text @@ -0,0 +1,115 @@ +cinit 0.4 - Redesign of cinit +============================================ +Nico Schottelius +0.4.0, for cinit 0.4, Initial Version from 2006-03-11 +:Author Initials: NS + + +cinit 0.2 ran fine and the general project of developing a +parallel executing init system is finished. +With cinit 0.4 there are new aims to reach. + + +Introduction +------------ + +. AIMS + - portability: no Linux-dependency anymore + - cleaner signal handling + - better documentation so more people can use it + + +Current problems +---------------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The mount(2) system call is os-specific. +The temporary fs is os-specific. + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Race conditions when multiple signals arrive + + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +serv/sig_reboot.c contains umount, remount hard coded. + + +Solutions +--------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Remove +- the mount call +- do not create an initial socket + +Wait until we recieve a signal, then we create a socket +under the configured socket directory (see `conf/sockdir`). + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +Misc +~~~~ + +- Configuration + /etc/cinit/config/ + init -> link to initial service + pre_boot + pre_boot_args + post_boot + post_boot_args + /etc/cinit/services/ + /etc/cinit/profiles/ + links to the starting services + + + +cinit - Internals +================= +Nico Schottelius +0.1 for cinit-0.3, Initial version: So Feb 19 10:25:46 CET 2006 +:Author Initials: NS + + +Introduction +------------ +This document describes the internals of cinit. It is thought +to be read by developers. + + +Child handler code in cinit-0.3 +------------------------------- + +In cinit versions <= cinit-0.2.1 the respawning services where +handled by an extra child handler, which was a fork of cinit. This +had some problems: + + - We allocated more memory than necessary, unecessary parts of + cinit were copied + - The SIG_CHILD-handler was not written very clean, in some versions + it was completly missing. + + +. So in `cinit-0.3` we changed it the following way: + - no extra child handlers + - handle everything in the SIG_CHILD handling function + - when sig_child is recieved do: + - check against respawn list + - if it is a respawning service, [do the following in a seperate fork?] + check whether it successfully stoped + - if yes: restart immediatly + - if no: sleep $sleep_time and then restart diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/devel/communication.text b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/communication.text new file mode 100644 index 00000000..82f77774 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/communication.text @@ -0,0 +1,221 @@ +cinit - communication +===================== +Nico Schottelius +0.1 for cinit-0.3, Initial version: 2006-08-11 +:Author Initials: NS + +This document describes the internal communication of cinit. +It is thought to be read by developers. + + +Introduction +------------ +This document describes the messages used between cinit, cinit forks +and other programs that want to talk to cinit. It does NOT +describe the communication method, but only the messages sent +(for the communication method read "ipc.text"). + +Document status +~~~~~~~~~~~~~~~ +This document is still being written, it is not finished. + + +About Messages +-------------- + +Order +~~~~~ +The client always initiates the communication. +cinit will begin listening to messages directly after its start. + +Data +~~~~~ +A message always conists of a predefined structure (see src/headers/comm.h). +The byte order is host specific (may be little or big endian). + + +The messages +------------ +The client always uses the same structure (struct msg_client) to contact +cinit. This way cinit does not need to handle dynamic data structures. + +cinit in contrast delivers different data structures to its clients, +depending on the question. + +The questions are issued by any type of client, the internal command used is +noted in square brackets ([]). + +The answers are given by cinit. + + +Question: Start a service (and its dependencies) [CMD_START_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to start the service and its dependencies. + +The client must provide cinit with the following information: +. Name of the service to be started +. Reason why to start it +. eventually additional information (see below) + +The reason +^^^^^^^^^^ +Can be one of: +- RS_NONE (it's a manual start request) +- RS_WANTS (a currently starting service wants to start this service) +- RS_NEEDS (a currently starting service needs to start this service) + +If the reason is RS_WANTS or RS_NEEDS the client must supply the name +of the service, which wants it to be started. + + +Question: Start a service (nothing else) [CMD_START_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to start the service and which will +report the status back. + + +Question: Stop a service (and its dependencies) [CMD_STOP_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to stop the service and each service +that 'needs' it. + +This function works recursively, thus also killing those services, that +need the service that need the current service. + + +Question: Stop a service (nothing else) [CMD_STOP_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to stop this service and which will +report the status back. + + +Question: Stop a service (plus 'needs' and 'wants') [CMD_STOP_SVC_WANTS] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Same as 'Stop a service (and its dependencies)', but also stop the +services that want to have this service. + +This function works recursively, thus also killing those services, that +'need' or 'want' the service that 'need' or 'want' the current service. + + +Question: Could you change the status? [CMD_CHG_STAT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A cinit fork reports the new status of a service. + + +Question: Could you start the rescue mode? [CMD_RESCUE] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +spawn the rescue program. + + +Question: Could you halt the system? [CMD_HALT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +halt the system. + + +Question: Could you reboot the system? [CMD_REBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +reboot the system. + + +Question: Could you poweroff the system? [CMD_POWEROFF] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +poweroff the system. If poweroff is not possible, the system will +be halted. + + +Question: Could you warmboot the system? [CMD_WBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +restart itself and the bootup process. + + +Question: Could you send information about a service? [CMD_INFO] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will respond with detailled information about the service +to the client. + + +Answer: Return short status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Start a service (and its dependencies) + - Question: Start a service (nothing else) + - Question: Stop a service (and its dependencies) + - Question: Stop a service (nothing else) + - Question: Stop a service (plus 'needs' and 'wants') + - Question: Could you change the status? + +cinit only responds the status of the asked service. +The structure send is "asw_sstatus", which only include a status byte. + + +Answer: Return long status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Could you send information about a service? + + +old Messages (to be transferred into this document) +--------------------------------------------------- + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Service status: + +-------------------------------------------------------------------------------- +service status (cinit), +Nico Schottelius 2005-09-29 (Last Modified: -) +-------------------------------------------------------------------------------- + +There are service status and service returns. Service status is a status +a service can have. A service return is a value from a function that +describes what happened with the service. + +Status has ST_ prefix, return has RT_ prefix. +See cinit.h for most up to date versions. + + +ST_NEED_FAIL - this service will not be started, until the needs are started +ST_FAIL - this service failed to start +ST_UNSPEC - some unknown error. This should never happen. +ST_ERR - ??? /* tried earlier, service failed, won't retry */ + +ST_SUCCESS - service was successfully started - senseful? +ST_TMP - some instance is currently working on it +ST_ONCE - executed once sucessfully +ST_RESPAWN - service is running and respawning + +ST_TMPNOW 55 /* now you are on it - only for clients */ +#define ST_OFF 56 /* Switching service off */ + diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/devel/configuring.text b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/configuring.text new file mode 100644 index 00000000..405a4d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/configuring.text @@ -0,0 +1,18 @@ +cinit/doc/devel/using-conf.text +================================ +Nico Schottelius +0.1, Initial Version from 2006-07-28 +:Author Initials: NS + +About conf/* and how to use the configurations. + +Introduction +------------ + +Who should read those documents? +-------------------------------- + +Content +------- + + diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/devel/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/cross-compiling.text new file mode 100644 index 00000000..fdf70564 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/cross-compiling.text @@ -0,0 +1,36 @@ +TODO: + - merge into "Cross compiling" + +cinit - Problems that may arise +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Max open files + OS dependent + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/devel/ipc.text b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/ipc.text new file mode 100644 index 00000000..7013a985 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/ipc.text @@ -0,0 +1,108 @@ +IPC - in cinit and in general +============================= +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +IPC - Inter process communication + +Introduction +------------ +This document describes the IPC methods used and/or tested for +cinit. + +It does not describe in detail, how the different methods work +(this is already done many times, there's great documentation +available online), but more the advantages and disadvantages +(especially for an init system). + +What is IPC? +~~~~~~~~~~~~ +IPC describes methods to communicate between different processes +(programs). + +IPC as described by SUSV3 (The Single UNIX Specification Version 3) +aka IEEE Std 1003.1, 2004 Edition aka POSIX only defines +MSQ, SHM and Semaphores as IPC. This document also covers +Sockets and FIFOs. + + +What is not (yet) covered by this document? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Speed of different IPC methods, different behaviour on different +unices. + + +Why do you need IPC for an init system? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +cinit IPC history + analysis +---------------------------- + + +FIFOs +~~~~~ +First in - first out +File on the filesystem +Always need two files for two way communication + +Hints +^^^^^ +The first idea for IPC in cinit was to use two FIFOs, like minit does. +Wrong assumption: +runit also uses fifos, but two fifos for each services. That way +more parallel transmissions is possible. +You have to pay attention: Maximum number of opened files! +(On Linux 2.6 this is 1024, which makes a maximum of 512 services. +This limit is most likely never reached, but you have to keep it +in mind). + +Sockets +~~~~~~~ +Clean and beautiful. They allow easy two way communication. + +If you created a socket, fs is r/o, you cannot use it, although +there is SO_REUSE. + +First method: Using memory mapped part (tmpfs). +Second method: use interal communication (pipes!) and external after +/etc/cinit/ becomes writable. + + +Current IPC configuration +-------------------------- + +- switchable (conf/ipc_method) +- each ipc implementation needs: + + ipc.h -> for global variables and ipc specific things + prefix variables with ipc_ + int cinit_ipc_init(void); -> general initialization + return 1 on success, 0 on failure + int cinit_ipc_listen(void); -> begin to listen for messages + int cinit_ipc_send(void *data) -> send data to a client + +-------------------------------------------------------------------------------- +TO SORT: + +1. message queues + o clients schreiben rein + o datenpaket gross genug fuer antwort? + +2. shared memory + o client kann direkt rauslesen, was gestartet werden muss + o client kann direkt abhaengigkeiten starten, muss diese aber + eintragen + +Ausprobieren: + - Mutexe + - Message Queues + - + +Ideen: + Message queue + 1. Client geht auf die normale + als id = pid (cast!) + dann rueck via anderer queue + diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/devel/lists.text b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/lists.text new file mode 100644 index 00000000..6360acb3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/lists.text @@ -0,0 +1,22 @@ +Lists in cinit-0.3 are generalized, all have the same general layout: + + - double linked + - have 'prev' and 'next' as pointers + + Add an element to a list + + /--------------------------\ + |<->first<->middle<->last<->| + + + After insert: + + /-------------------------------\ + |<->first<->middle<->last<->new<->| + + We alway have 'first'. + Need to adjust: + - new->prev = last (= first->next) + - new->next = first + - first->prev = new + - first->prev->next (= last->next) = new diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/devel/merging.other.initsystems.text b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/merging.other.initsystems.text new file mode 100644 index 00000000..0baa4789 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/merging.other.initsystems.text @@ -0,0 +1,68 @@ +TODO: + - rewrite to asciidoc + - implement a sample merge + +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not mean that he does not accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated! + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/devel/testing.text b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/testing.text new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/devel/testing.text @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/logs/2006-10-25.config.wasserstoff b/software/cinit/browse_source/cinit-0.3pre6/doc/logs/2006-10-25.config.wasserstoff new file mode 100644 index 00000000..f28bd71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/logs/2006-10-25.config.wasserstoff @@ -0,0 +1,16 @@ +[17:12] wasserstoff:svc# pwd +/etc/cinit/svc +[17:12] wasserstoff:svc# ls +init +17:12] wasserstoff:svc# mkdir getty +[17:12] wasserstoff:svc# mkdir getty/2/ +[17:12] wasserstoff:svc# cd getty/2 +[17:12] wasserstoff:2# ln -s /sbin/getty on +17:12] wasserstoff:2# echo 38400 > on.params +[17:13] wasserstoff:2# echo tty2 >> on.params +[17:13] wasserstoff:2# cd ../../init +[17:14] wasserstoff:init# mkdir needs +[17:14] wasserstoff:init# cd needs +[17:14] wasserstoff:needs# ln -s ../../getty/2 getty-2 +[17:14] wasserstoff:needs# + diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/logs/2006-11-22.startup-with-debug b/software/cinit/browse_source/cinit-0.3pre6/doc/logs/2006-11-22.startup-with-debug new file mode 100644 index 00000000..44121cf4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/logs/2006-11-22.startup-with-debug @@ -0,0 +1,55 @@ +[0:08] wasserstoff:cinit-0.3pre3% ./src/cinit +cinit-0.3pre3: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty:: +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2:: +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout:: +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3:: +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning:: +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount:: +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root:: +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network:: +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0:: +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback:: +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::/etc/cinit/svc/init +========> tree_exec() +/etc/cinit/svc/local-tuning/keyboard-layout:::abhaengigkeiten gestartet, exec; add wants, needsdep_needs_wants_add::/etc/cinit/svc/local-tuning/keyboard-layout add: (/etc/cinit/svc/getty/2) + diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/logs/2006-11-30.startup-0.3pre5 b/software/cinit/browse_source/cinit-0.3pre6/doc/logs/2006-11-30.startup-0.3pre5 new file mode 100644 index 00000000..2ded7712 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/logs/2006-11-30.startup-0.3pre5 @@ -0,0 +1,1821 @@ +cinit-0.3pre4: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2 +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3 +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0 +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/test +gen_tree::/etc/cinit/svc/test +CAD::/etc/cinit/svc/test +CAD::NEW::/etc/cinit/svc/test::/etc/cinit/svc/test/env +gen_tree::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +START::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test +CAD::/etc/cinit/svc/init +========> tree_exec() +TEX::/etc/cinit/svc/local-tuning/keyboard-layout +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout::/etc/cinit/svc/getty/2::(A)::::/etc/cinit/svc/getty/3::(A)::::/etc/cinit/svc/local-tuning::(A):: +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout +TEX::/etc/cinit/svc/mount/root +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +DNWA::/etc/cinit/svc/mount/root::/etc/cinit/svc/mount::(A):: +DNWA::/etc/cinit/svc/mount/root +TEX::/etc/cinit/svc/network/eth0 +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +DNWA::/etc/cinit/svc/network/eth0::/etc/cinit/svc/network::(A):: +DNWA::/etc/cinit/svc/network/eth0 +TEX::/etc/cinit/svc/network/loopback +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +DNWA::/etc/cinit/svc/network/loopback::/etc/cinit/svc/network +DNWA::/etc/cinit/svc/network/loopback +TEX::/etc/cinit/svc/test/env +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +DNWA::/etc/cinit/svc/test/env::/etc/cinit/svc/test::(A):: +DNWA::/etc/cinit/svc/test/env +TEX::/etc/cinit/svc/getty/2 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/2/on +CBA::/etc/cinit/svc/getty/2/on +DNWA::/etc/cinit/svc/getty/2::/etc/cinit/svc/getty::(A):: +DNWA::/etc/cinit/svc/getty/2 +TEX::/etc/cinit/svc/getty/3 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/3/on +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +DNWA::/etc/cinit/svc/getty/3::/etc/cinit/svc/getty +DNWA::/etc/cinit/svc/getty/3 +TEX::/etc/cinit/svc/local-tuning +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +/etc/cinit/svc/local-tuning/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/local-tuning::/etc/cinit/svc/init::(A):: +DNWA::/etc/cinit/svc/local-tuning +TEX::/etc/cinit/svc/mount +::/etc/cinit/svc/mount/root +/etc/cinit/svc/mount/root: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +/etc/cinit/svc/mount/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/mount::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/mount +TEX::/etc/cinit/svc/network +::/etc/cinit/svc/network/eth0 +/etc/cinit/svc/network/eth0: <<16>> +::/etc/cinit/svc/network/loopback +/etc/cinit/svc/network/loopback: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +/etc/cinit/svc/network/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/network::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/network +TEX::/etc/cinit/svc/test +::/etc/cinit/svc/test/env +/etc/cinit/svc/test/env: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +/etc/cinit/svc/test/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/test::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/test +TEX::/etc/cinit/svc/getty +::/etc/cinit/svc/getty/2 +/etc/cinit/svc/getty/2: <<4>> +::/etc/cinit/svc/getty/3 +/etc/cinit/svc/getty/3: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +/etc/cinit/svc/getty/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/getty::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/getty +TEX::/etc/cinit/svc/init +::/etc/cinit/svc/getty +/etc/cinit/svc/getty: <<4>> +::/etc/cinit/svc/local-tuning +/etc/cinit/svc/local-tuning: <<4>> +::/etc/cinit/svc/mount +/etc/cinit/svc/mount: <<4>> +::/etc/cinit/svc/network +/etc/cinit/svc/network: <<4>> +::/etc/cinit/svc/test +/etc/cinit/svc/test: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +DNWA::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/init +=> cinit started. +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +ORC:/etc/cinit/svc/init/on.params +ORC:/etc/cinit/svc/getty/2/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test +SC::/etc/cinit/svc/test/env::FAILED::::RESPAWN::ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test + +msgrcv: Interrupted system call +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/2/on +ORC:/etc/cinit/svc/getty/2/on.params +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted +SC::/etc/cinit/svc/network/eth0::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted + +msgrcv: Interrupted system call +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. +SC::/etc/cinit/svc/init::FAILED::::RESPAWN::ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. + +msgrcv: Interrupted system call +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. +SC::/etc/cinit/svc/network/loopback::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. + +msgrcv: Interrupted system call +mount: only root can do that +SC::/etc/cinit/svc/mount/root::FAILED::::RESPAWN::ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +mount: only root can do that + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +LSP:: 32705: /etc/cinit/svc/init:1 (0) +LSP:: 32705: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32705: /etc/cinit/svc/test:65 (0) +LSP:: 32705: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32705: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32705: /etc/cinit/svc/network:65 (0) +LSP:: 32705: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32705: /etc/cinit/svc/mount:65 (0) +LSP:: 32705: /etc/cinit/svc/local-tuning:65 (0) +LSP:: 32705: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32705: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32705: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32705: /etc/cinit/svc/getty:65 (0) +LSP:: 32706: /etc/cinit/svc/init:65 (0) +LSP:: 32706: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32706: /etc/cinit/svc/test:65 (0) +LSP:: 32706: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32706: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32706: /etc/cinit/svc/network:65 (0) +LSP:: 32706: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32706: /etc/cinit/svc/mount:65 (0) +LSP:: 32706: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32706: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32706: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32706: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32706: /etc/cinit/svc/getty:65 (0) +LSP:: 32707: /etc/cinit/svc/init:65 (0) +LSP:: 32707: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32707: /etc/cinit/svc/test:65 (0) +LSP:: 32707: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32707: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32707: /etc/cinit/svc/network:65 (0) +LSP:: 32707: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32707: /etc/cinit/svc/mount:4 (32706) +LSP:: 32707: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32707: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32707: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32707: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32707: /etc/cinit/svc/getty:65 (0) +LSP:: 32708: /etc/cinit/svc/init:65 (0) +LSP:: 32708: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32708: /etc/cinit/svc/test:65 (0) +LSP:: 32708: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32708: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32708: /etc/cinit/svc/network:4 (32707) +LSP:: 32708: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32708: /etc/cinit/svc/mount:4 (32706) +LSP:: 32708: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32708: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32708: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32708: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32708: /etc/cinit/svc/getty:65 (0) +LSP:: 32709: /etc/cinit/svc/init:65 (0) +LSP:: 32709: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32709: /etc/cinit/svc/test:4 (32708) +LSP:: 32709: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32709: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32709: /etc/cinit/svc/network:4 (32707) +LSP:: 32709: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32709: /etc/cinit/svc/mount:4 (32706) +LSP:: 32709: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32709: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32709: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32709: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32709: /etc/cinit/svc/getty:65 (0) +LSP:: 32702: /etc/cinit/svc/init:4 (32710) +LSP:: 32702: /etc/cinit/svc/test/env:4 (32702) +pid: 0, m_client +LSP:: 32700: /etc/cinit/svc/init:4 (32710) +LSP:: 32700: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32700: /etc/cinit/svc/test:4 (32708) +LSP:: 32700: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32700: /etc/cinit/svc/network/eth0:16 (32700) +pid: 0, m_client +LSP:: 32710: /etc/cinit/svc/init:4 (32710) +pid: 0, m_client +LSP:: 32701: /etc/cinit/svc/init:16 (32719) +LSP:: 32701: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32701: /etc/cinit/svc/test:4 (32708) +LSP:: 32701: /etc/cinit/svc/network/loopback:4 (32701) +pid: 0, m_client +LSP:: 32699: /etc/cinit/svc/init:16 (32719) +LSP:: 32699: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32699: /etc/cinit/svc/test:4 (32708) +LSP:: 32699: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32699: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32699: /etc/cinit/svc/network:4 (32707) +LSP:: 32699: /etc/cinit/svc/mount/root:4 (32699) +pid: 0, m_client +LSP::SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz + 32698: /etc/cinit/svc/init:16 (32719) +LSP:: 32698: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32698: /etc/cinit/svc/test:4 (32708) +LSP:: 32698: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32698: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32698: /etc/cinit/svc/network:4 (32707) +LSP:: 32698: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32698: /etc/cinit/svc/mount:4 (32706) +LSP:: 32698: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32698: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32698: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +pid: 0, m_client +LSP:: 32728: /etc/cinit/svc/init:16 (32719) +LSP:: 32728: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32728: /etc/cinit/svc/test:4 (32708) +LSP:: 32728: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32728: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32728: /etc/cinit/svc/network:4 (32707) +LSP:: 32728: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32728: /etc/cinit/svc/mount:4 (32706) +LSP:: 32728: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32728: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32728: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32728) +pid: 0, m_client +LSP:: 32735: /etc/cinit/svc/init:16 (32719) +LSP:: 32735: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32735: /etc/cinit/svc/test:4 (32708) +LSP:: 32735: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32735: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32735: /etc/cinit/svc/network:4 (32707) +LSP:: 32735: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32735: /etc/cinit/svc/mount:4 (32706) +LSP:: 32735: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32735: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32735: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32735) +pid: 0, m_client +LSP:: 32742: /etc/cinit/svc/init:16 (32719) +LSP:: 32742: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32742: /etc/cinit/svc/test:4 (32708) +LSP:: 32742: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32742: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32742: /etc/cinit/svc/network:4 (32707) +LSP:: 32742: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32742: /etc/cinit/svc/mount:4 (32706) +LSP:: 32742: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32742: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32742: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32742) +pid: 0, m_client +LSP:: 32749: /etc/cinit/svc/init:16 (32719) +LSP:: 32749: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32749: /etc/cinit/svc/test:4 (32708) +LSP:: 32749: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32749: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32749: /etc/cinit/svc/network:4 (32707) +LSP:: 32749: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32749: /etc/cinit/svc/mount:4 (32706) +LSP:: 32749: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32749: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32749: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32749) +pid: 0, m_client +LSP:: 32756: /etc/cinit/svc/init:16 (32719) +LSP:: 32756: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32756: /etc/cinit/svc/test:4 (32708) +LSP:: 32756: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32756: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32756: /etc/cinit/svc/network:4 (32707) +LSP:: 32756: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32756: /etc/cinit/svc/mount:4 (32706) +LSP:: 32756: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32756: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32756: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32756) +pid: 0, m_client +LSP:: 32763: /etc/cinit/svc/init:16 (32719) +LSP:: 32763: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32763: /etc/cinit/svc/test:4 (32708) +LSP:: 32763: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32763: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32763: /etc/cinit/svc/network:4 (32707) +LSP:: 32763: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32763: /etc/cinit/svc/mount:4 (32706) +LSP:: 32763: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32763: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32763: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32763) +pid: 0, m_client +LSP:: 302: /etc/cinit/svc/init:16 (32719) +LSP:: 302: /etc/cinit/svc/test/env:16 (32717) +LSP:: 302: /etc/cinit/svc/test:4 (32708) +LSP:: 302: /etc/ciSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN:: +msgrcv: Interrupted system call +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +nit/svc/network/loopback:16 (32720) +LSP:: 302: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 302: /etc/cinit/svc/network:4 (32707) +LSP:: 302: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 302: /etc/cinit/svc/mount:4 (32706) +LSP:: 302: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 302: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 302: /etc/cinit/svc/local-tuning/keyboard-layout:16 (302) +pid: 0, m_client +LSP:: 312: /etc/cinit/svc/init:16 (32719) +LSP:: 312: /etc/cinit/svc/test/env:16 (32717) +LSP:: 312: /etc/cinit/svc/test:4 (32708) +LSP:: 312: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 312: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 312: /etc/cinit/svc/network:4 (32707) +LSP:: 312: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 312: /etc/cinit/svc/mount:4 (32706) +LSP:: 312: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 312: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 312: /etc/cinit/svc/local-tuning/keyboard-layout:16 (312) +pid: 0, m_client +LSP:: 326: /etc/cinit/svc/init:16 (32719) +LSP:: 326: /etc/cinit/svc/test/env:16 (32717) +LSP:: 326: /etc/cinit/svc/test:4 (32708) +LSP:: 326: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 326: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 326: /etc/cinit/svc/network:4 (32707) +LSP:: 326: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 326: /etc/cinit/svc/mount:4 (32706) +LSP:: 326: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 326: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 326: /etc/cinit/svc/local-tuning/keyboard-layout:16 (326) +pid: 0, m_client +LSP:: 333: /etc/cinit/svc/init:16 (32719) +LSP:: 333: /etc/cinit/svc/test/env:16 (32717) +LSP:: 333: /etc/cinit/svc/test:4 (32708) +LSP:: 333: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 333: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 333: /etc/cinit/svc/network:4 (32707) +LSP:: 333: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 333: /etc/cinit/svc/mount:4 (32706) +LSP:: 333: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 333: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 333: /etc/cinit/svc/local-tuning/keyboard-layout:16 (333) +pid: 0, m_client +LSP:: 340: /etc/cinit/svc/init:16 (32719) +LSP:: 340: /etc/cinit/svc/test/env:16 (32717) +LSP:: 340: /etc/cinit/svc/test:4 (32708) +LSP:: 340: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 340: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 340: /etc/cinit/svc/network:4 (32707) +LSP:: 340: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 340: /etc/cinit/svc/mount:4 (32706) +LSP:: 340: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 340: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 340: /etc/cinit/svc/local-tuning/keyboard-layout:16 (340) +pid: 0, m_client +LSP:: 347: /etc/cinit/svc/init:16 (32719) +LSP:: 347: /etc/cinit/svc/test/env:16 (32717) +LSP:: 347: /etc/cinit/svc/test:4 (32708) +LSP:: 347: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 347: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 347: /etc/cinit/svc/network:4 (32707) +LSP:: 347: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 347: /etc/cinit/svc/mount:4 (32706) +LSP:: 347: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 347: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 347: /etc/cinit/svc/local-tuning/keyboard-layout:16 (347) +pid: 0, m_client +LSP:: 354: /etc/cinit/svc/init:16 (32719) +LSP:: 354: /etc/cinit/svc/test/env:16 (32717) +LSP:: 354: /etc/cinit/svc/test:4 (32708) +LSP:: 354: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 354: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 354: /etc/cinit/svc/network:4 (32707) +LSP:: 354: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 354: /etc/cinit/svc/mount:4 (32706) +LSP:: 354: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 354: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 354: /etc/cinit/svc/local-tuning/keyboard-layout:16 (354) +pid: 0, m_client +LSP:: 372: /etc/cinit/svc/init:16 (32719) +LSP:: 372: /etc/cinit/svc/test/env:16 (32717) +LSP:: 372: /etc/cinit/svc/test:4 (32708) +LSP:: 372: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 372: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 372: /etc/cinit/svc/network:4 (32707) +LSP:: 372: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 372: /etc/cinit/svc/mount:4 (32706) +LSP:: 372: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 372: /etc/cinit/svc/getty/3:4 (327SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +04) +LSP:: 372: /etc/cinit/svc/local-tuning/keyboard-layout:16 (372) +pid: 0, m_client +LSP:: 379: /etc/cinit/svc/init:16 (32719) +LSP:: 379: /etc/cinit/svc/test/env:16 (32717) +LSP:: 379: /etc/cinit/svc/test:4 (32708) +LSP:: 379: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 379: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 379: /etc/cinit/svc/network:4 (32707) +LSP:: 379: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 379: /etc/cinit/svc/mount:4 (32706) +LSP:: 379: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 379: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 379: /etc/cinit/svc/local-tuning/keyboard-layout:16 (379) +pid: 0, m_client +LSP:: 386: /etc/cinit/svc/init:16 (32719) +LSP:: 386: /etc/cinit/svc/test/env:16 (32717) +LSP:: 386: /etc/cinit/svc/test:4 (32708) +LSP:: 386: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 386: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 386: /etc/cinit/svc/network:4 (32707) +LSP:: 386: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 386: /etc/cinit/svc/mount:4 (32706) +LSP:: 386: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 386: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 386: /etc/cinit/svc/local-tuning/keyboard-layout:16 (386) +pid: 0, m_client +LSP:: 393: /etc/cinit/svc/init:16 (32719) +LSP:: 393: /etc/cinit/svc/test/env:16 (32717) +LSP:: 393: /etc/cinit/svc/test:4 (32708) +LSP:: 393: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 393: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 393: /etc/cinit/svc/network:4 (32707) +LSP:: 393: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 393: /etc/cinit/svc/mount:4 (32706) +LSP:: 393: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 393: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 393: /etc/cinit/svc/local-tuning/keyboard-layout:16 (393) +pid: 0, m_client +LSP:: 400: /etc/cinit/svc/init:16 (32719) +LSP:: 400: /etc/cinit/svc/test/env:16 (32717) +LSP:: 400: /etc/cinit/svc/test:4 (32708) +LSP:: 400: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 400: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 400: /etc/cinit/svc/network:4 (32707) +LSP:: 400: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 400: /etc/cinit/svc/mount:4 (32706) +LSP:: 400: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 400: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 400: /etc/cinit/svc/local-tuning/keyboard-layout:16 (400) +pid: 0, m_client +LSP:: 407: /etc/cinit/svc/init:16 (32719) +LSP:: 407: /etc/cinit/svc/test/env:16 (32717) +LSP:: 407: /etc/cinit/svc/test:4 (32708) +LSP:: 407: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 407: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 407: /etc/cinit/svc/network:4 (32707) +LSP:: 407: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 407: /etc/cinit/svc/mount:4 (32706) +LSP:: 407: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 407: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 407: /etc/cinit/svc/local-tuning/keyboard-layout:16 (407) +pid: 0, m_client +LSP:: 414: /etc/cinit/svc/init:16 (32719) +LSP:: 414: /etc/cinit/svc/test/env:16 (32717) +LSP:: 414: /etc/cinit/svc/test:4 (32708) +LSP:: 414: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 414: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 414: /etc/cinit/svc/network:4 (32707) +LSP:: 414: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 414: /etc/cinit/svc/mount:4 (32706) +LSP:: 414: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 414: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 414: /etc/cinit/svc/local-tuning/keyboard-layout:16 (414) +pid: 0, m_client +LSP:: 421: /etc/cinit/svc/init:16 (32719) +LSP:: 421: /etc/cinit/svc/test/env:16 (32717) +LSP:: 421: /etc/cinit/svc/test:4 (32708) +LSP:: 421: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 421: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 421: /etc/cinit/svc/network:4 (32707) +LSP:: 421: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 421: /etc/cinit/svc/mount:4 (32706) +LSP:: 421: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 421: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 421: /etc/cinit/svc/local-tuning/keyboard-layout:16 (421) +pid: 0, m_client +LSP:: 428: /etc/cinit/svc/init:16 (32719) +LSP:: 428: /etc/cinit/svc/test/env:16 (32717) +LSP:: 428: /etc/cinit/svc/test:4 (32708) +LSP:: 428: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 428: /etc/cinit/svc/network/eth0:16SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call + (32718) +LSP:: 428: /etc/cinit/svc/network:4 (32707) +LSP:: 428: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 428: /etc/cinit/svc/mount:4 (32706) +LSP:: 428: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 428: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 428: /etc/cinit/svc/local-tuning/keyboard-layout:16 (428) +pid: 0, m_client +LSP:: 435: /etc/cinit/svc/init:16 (32719) +LSP:: 435: /etc/cinit/svc/test/env:16 (32717) +LSP:: 435: /etc/cinit/svc/test:4 (32708) +LSP:: 435: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 435: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 435: /etc/cinit/svc/network:4 (32707) +LSP:: 435: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 435: /etc/cinit/svc/mount:4 (32706) +LSP:: 435: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 435: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 435: /etc/cinit/svc/local-tuning/keyboard-layout:16 (435) +pid: 0, m_client +LSP:: 452: /etc/cinit/svc/init:16 (32719) +LSP:: 452: /etc/cinit/svc/test/env:16 (32717) +LSP:: 452: /etc/cinit/svc/test:4 (32708) +LSP:: 452: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 452: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 452: /etc/cinit/svc/network:4 (32707) +LSP:: 452: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 452: /etc/cinit/svc/mount:4 (32706) +LSP:: 452: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 452: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 452: /etc/cinit/svc/local-tuning/keyboard-layout:16 (452) +pid: 0, m_client +LSP:: 459: /etc/cinit/svc/init:16 (32719) +LSP:: 459: /etc/cinit/svc/test/env:16 (32717) +LSP:: 459: /etc/cinit/svc/test:4 (32708) +LSP:: 459: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 459: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 459: /etc/cinit/svc/network:4 (32707) +LSP:: 459: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 459: /etc/cinit/svc/mount:4 (32706) +LSP:: 459: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 459: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 459: /etc/cinit/svc/local-tuning/keyboard-layout:16 (459) +pid: 0, m_client +LSP:: 466: /etc/cinit/svc/init:16 (32719) +LSP:: 466: /etc/cinit/svc/test/env:16 (32717) +LSP:: 466: /etc/cinit/svc/test:4 (32708) +LSP:: 466: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 466: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 466: /etc/cinit/svc/network:4 (32707) +LSP:: 466: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 466: /etc/cinit/svc/mount:4 (32706) +LSP:: 466: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 466: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 466: /etc/cinit/svc/local-tuning/keyboard-layout:16 (466) +pid: 0, m_client +LSP:: 473: /etc/cinit/svc/init:16 (32719) +LSP:: 473: /etc/cinit/svc/test/env:16 (32717) +LSP:: 473: /etc/cinit/svc/test:4 (32708) +LSP:: 473: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 473: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 473: /etc/cinit/svc/network:4 (32707) +LSP:: 473: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 473: /etc/cinit/svc/mount:4 (32706) +LSP:: 473: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 473: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 473: /etc/cinit/svc/local-tuning/keyboard-layout:16 (473) +pid: 0, m_client +LSP:: 480: /etc/cinit/svc/init:16 (32719) +LSP:: 480: /etc/cinit/svc/test/env:16 (32717) +LSP:: 480: /etc/cinit/svc/test:4 (32708) +LSP:: 480: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 480: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 480: /etc/cinit/svc/network:4 (32707) +LSP:: 480: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 480: /etc/cinit/svc/mount:4 (32706) +LSP:: 480: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 480: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 480: /etc/cinit/svc/local-tuning/keyboard-layout:16 (480) +pid: 0, m_client +LSP:: 487: /etc/cinit/svc/init:16 (32719) +LSP:: 487: /etc/cinit/svc/test/env:16 (32717) +LSP:: 487: /etc/cinit/svc/test:4 (32708) +LSP:: 487: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 487: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 487: /etc/cinit/svc/network:4 (32707) +LSP:: 487: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 487: /etc/cinit/svc/mount:4 (32706) +LSP:: 487: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 487: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 487: /etc/cinit/svc/local-tuning/keyboard-layout:16 (487) +pid: 0, mLoading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +_client +LSP:: 494: /etc/cinit/svc/init:16 (32719) +LSP:: 494: /etc/cinit/svc/test/env:16 (32717) +LSP:: 494: /etc/cinit/svc/test:4 (32708) +LSP:: 494: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 494: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 494: /etc/cinit/svc/network:4 (32707) +LSP:: 494: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 494: /etc/cinit/svc/mount:4 (32706) +LSP:: 494: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 494: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 494: /etc/cinit/svc/local-tuning/keyboard-layout:16 (494) +pid: 0, m_client +LSP:: 501: /etc/cinit/svc/init:16 (32719) +LSP:: 501: /etc/cinit/svc/test/env:16 (32717) +LSP:: 501: /etc/cinit/svc/test:4 (32708) +LSP:: 501: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 501: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 501: /etc/cinit/svc/network:4 (32707) +LSP:: 501: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 501: /etc/cinit/svc/mount:4 (32706) +LSP:: 501: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 501: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 501: /etc/cinit/svc/local-tuning/keyboard-layout:16 (501) +pid: 0, m_client +LSP:: 510: /etc/cinit/svc/init:16 (32719) +LSP:: 510: /etc/cinit/svc/test/env:16 (32717) +LSP:: 510: /etc/cinit/svc/test:4 (32708) +LSP:: 510: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 510: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 510: /etc/cinit/svc/network:4 (32707) +LSP:: 510: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 510: /etc/cinit/svc/mount:4 (32706) +LSP:: 510: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 510: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 510: /etc/cinit/svc/local-tuning/keyboard-layout:16 (510) +pid: 0, m_client +LSP:: 520: /etc/cinit/svc/init:16 (32719) +LSP:: 520: /etc/cinit/svc/test/env:16 (32717) +LSP:: 520: /etc/cinit/svc/test:4 (32708) +LSP:: 520: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 520: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 520: /etc/cinit/svc/network:4 (32707) +LSP:: 520: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 520: /etc/cinit/svc/mount:4 (32706) +LSP:: 520: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 520: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 520: /etc/cinit/svc/local-tuning/keyboard-layout:16 (520) +pid: 0, m_client +LSP:: 533: /etc/cinit/svc/init:16 (32719) +LSP:: 533: /etc/cinit/svc/test/env:16 (32717) +LSP:: 533: /etc/cinit/svc/test:4 (32708) +LSP:: 533: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 533: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 533: /etc/cinit/svc/network:4 (32707) +LSP:: 533: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 533: /etc/cinit/svc/mount:4 (32706) +LSP:: 533: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 533: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 533: /etc/cinit/svc/local-tuning/keyboard-layout:16 (533) +pid: 0, m_client +LSP:: 541: /etc/cinit/svc/init:16 (32719) +LSP:: 541: /etc/cinit/svc/test/env:16 (32717) +LSP:: 541: /etc/cinit/svc/test:4 (32708) +LSP:: 541: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 541: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 541: /etc/cinit/svc/network:4 (32707) +LSP:: 541: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 541: /etc/cinit/svc/mount:4 (32706) +LSP:: 541: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 541: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 541: /etc/cinit/svc/local-tuning/keyboard-layout:16 (541) +pid: 0, m_client +LSP:: 548: /etc/cinit/svc/init:16 (32719) +LSP:: 548: /etc/cinit/svc/test/env:16 (32717) +LSP:: 548: /etc/cinit/svc/test:4 (32708) +LSP:: 548: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 548: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 548: /etc/cinit/svc/network:4 (32707) +LSP:: 548: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 548: /etc/cinit/svc/mount:4 (32706) +LSP:: 548: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 548: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 548: /etc/cinit/svc/local-tuning/keyboard-layout:16 (548) +pid: 0, m_client +LSP:: 555: /etc/cinit/svc/init:16 (32719) +LSP:: 555: /etc/cinit/svc/test/env:16 (32717) +LSP:: 555: /etc/cinit/svc/test:4 (32708) +LSP:: 555: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 555: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 555: /etc/cinit/svc/network:4 (32707) +LSP:: 555: /etc/cinit/svSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/man/cinit.text b/software/cinit/browse_source/cinit-0.3pre6/doc/man/cinit.text new file mode 100644 index 00000000..bd9bd0ab --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/man/cinit.text @@ -0,0 +1,64 @@ +cinit(8) +======== +Nico Schottelius + + +NAME +---- +cinit - fast executing, small and simple init with support for profiles + + +SYNOPSIS +-------- +'cinit' [cprofile:name_of_profile] + + +DESCRIPTION +----------- +Cinit is an init system. It normally gets started by the operating +system (Linux, *BSD, ...) directly after the kernel has been loaded. + +Cinit uses parallel execution of services as far as possible. To +ensure the correct boot order you need to specify which service +'needs' or 'wants' another service. The resulting dependency tree +is used at startup to determine which service to start when. + +This may result in different boot orders depending on whether +one service is one time faster or slower. Due to the dependencies +this is not a problem, but allowed and wished per design. + +For more information refer to the texinfo or html documentation. + + +OPTIONS +------- + +cprofile:name_of_profile:: + If specified, cinit will start the named profile instead of the + standard 'init' service + + +BUGS +---- +cinit is not tested nor documented very well currently. + +The porting to other OS is not finished yet (mainly missing +system level binaries: shutdown, reboot, halt). + +Both is work in progress. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + + +COPYING +------- +Copyright \(C) 2006 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/man/cservice b/software/cinit/browse_source/cinit-0.3pre6/doc/man/cservice new file mode 100644 index 00000000..26a472b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/man/cservice @@ -0,0 +1,37 @@ +WARNING: + cservice is not yet ready for cinit-0.3! + +-------------------------------------------------------------------------------- +cservice, +Nico Schottelius, 2005-06-10 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +cservice - control cinit + +cservice -[phearsu] + -e - (ein) start a service (including all needed dependencies) + -a - (aus) stop a respawing service, don't care about other services + + -r - reboot + -h - halt + -p - poweroff (on some systems the same as halt) + -s - reScue mode - only a shell + + -u - update: hot reboot - shutdown system and execute /sbin/cinit + +A service may be specified either as relative or as absolute path. + +-h, -p, -r, -s and -u need the "Magic Word" to do their work: "thilo" + +-------------------------------------------------------------------------------- + +Some examples: + + cservice -e /etc/cinit/getty/8 # fire up getty/8 + cd /etc/cinit/getty; cservice -a ./8 # shut down getty/8 + cservice -h thilo # halt + cservice -r thilo # reboot + cservice -s thilo # rescue + cservice -u thilo # update + +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/FAQ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/FAQ new file mode 100644 index 00000000..53494f73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile:home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/README.text b/software/cinit/browse_source/cinit-0.3pre6/doc/user/README.text new file mode 100644 index 00000000..3467ba63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/README.text @@ -0,0 +1,21 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit user documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +People using cinit. + +Content +------- + +hints.text: Some general hints +tuning.text: Some tuning hints diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/TODO b/software/cinit/browse_source/cinit-0.3pre6/doc/user/TODO new file mode 100644 index 00000000..6044e97a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/TODO @@ -0,0 +1,4 @@ +All the content in this file is unsorted. Reading may harm you. + +Confdir: /etc/cinit/conf/ +panic: /etc/cinit/conf/panic, /etc/cinit/conf/panic.params diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/compiles.on.text b/software/cinit/browse_source/cinit-0.3pre6/doc/user/compiles.on.text new file mode 100644 index 00000000..ad467d38 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/compiles.on.text @@ -0,0 +1,19 @@ +cinit - known configurations cinit compiles on +============================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-12-08 +:Author Initials: NS + + +This document lists all the configuration known to me on that +cinit compiles. If you compiled cinit with another configuration, +drop a mail to nico-cinit-report [at] schottelius.org. + +The list +-------- +cinit is known to compile on: + +- x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +- x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/conf-system.text b/software/cinit/browse_source/cinit-0.3pre6/doc/user/conf-system.text new file mode 100644 index 00000000..600112c3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/conf-system.text @@ -0,0 +1,34 @@ +The conf/ system +================= +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-08 +:Author Initials: NS + +This documentes describes the configuration system used by cinit. + + +What is the conf/ system? +------------------------- +The conf/ system is the configuration system for the cinit build. +The first line of each file below conf/ is a configuration value +with the name of the file: + +---------------------------------------------------------------------- +[9:00] hydrogenium:cinit-0.3pre6% head -n 1 conf/cc +gcc +---------------------------------------------------------------------- + +This means that the variable "cc" has the value "gcc". + + +What is the reason for conf/? +----------------------------- +I needed a small and simple configuration system, which may be included +in the full build process. + + +Is conf/ also usable for other projects? +---------------------------------------- +In its current state conf/ is just a prototype, with which I experiement +a lot. But it is possible that the future aim is to provide a simele +configuration and autoconfiguraton mechanism. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/config-dirs b/software/cinit/browse_source/cinit-0.3pre6/doc/user/config-dirs new file mode 100644 index 00000000..4a8fbb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/config-dirs @@ -0,0 +1,19 @@ +configuring + + /etc/cinit/defaults/panic -> link to something to execute on panic + (most likely /sbin/sulogin) + + /etc/cinit/defaults/tmp -> link to a directory where + the socket should be created, + after finishing boot + + What todo right before halting/rebooting/powering off + /etc/cinit/special/ + -> halt + -> reboot + -> poweroff + +Configuration +------------- + +Send kill signal diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/configuring.cinit.text b/software/cinit/browse_source/cinit-0.3pre6/doc/user/configuring.cinit.text new file mode 100644 index 00000000..73dd0cc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/configuring.cinit.text @@ -0,0 +1,285 @@ +cinit - Configuring +=================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2005-05-28 +:Author Initials: NS + + +This documentes describes how to configure cinit. +You should already have cinit installed, otherwise read "cinit - Installing" +first. + + +General configuration layout +---------------------------- +Cinit uses the <<>> configuration syntax, which means that +the configuration is kept as simple as possible. The following +sections will show you what that means. + + +Paths +----- +Normally the configuration is kept below '/etc/cinit' +(though you can change this before compiling in conf/cinit_dir). + +The full description of the path layout of cinit and how to change it +can be found in 'paths.text'. + + +Services +-------- +cinit is service based. Other init systems use shell +scripts (for instance /etc/rc, /etc/init.d/rc as starters +and /etc/rc*.d/* as "service definitions"). + +'current-init-problems.text' explains why cinit does *not* +use nor recommends the use of shell scripts. + +A service is simply a directory. This directory contains information about + +- what should be started when starting the service +- what should be started when stoping the service +- what dependencies the service has +- whether to restart it, when it exits + + +Full service definition +~~~~~~~~~~~~~~~~~~~~~~~ +. A service consists of + - a base directory (like /etc/cinit/svc/mount/root/) + - dependency configuration (`needs` and `wants`) + - start/stop programs (`on` and `off`) + - respawn flag (`respawn`) + + +Base directory +^^^^^^^^^^^^^^ +You can create the base directory everywhere below /etc/cinit/svc. +You may and it is recommened to create a directory structure +(see 'example-directory-structure.text'). + + +Dependencies +^^^^^^^^^^^^ +The subdirectories + +- `wants` +- and `needs` + +contain the dependencies for the service. + +Read 'dependencies.text' for more information. + + +Respawning +^^^^^^^^^^^ +If you create the empty file 'respawn' (adjustable via conf/c_respawn) +the service will be restarted after it exits. + +-------------------------------------------------------------------------------- +# Tell cinit to respawn the eth0.udhcpc service +touch /etc/cinit/svc/network/eth0.udhcpc +-------------------------------------------------------------------------------- + + +Execution: on and off +^^^^^^^^^^^^^^^^^^^^^ +When a service starts, the file `on` in the service +directory is executed. It is ok, if this file is not existing. +When a service stops, the file `off` in the service +directory is executed. + +The file with the extension `.params` is used to specify the arguments +to pass. Each line contains exactly one parameter. + +The file with the extension `.env` is used to specify the environment +to pass. Each line contains exactly one variable definition in the form +'variable=value'. + +. The following six files are possibly used on starting/stoping: + - ./on (the program called on startup) + - ./on.params (the parameters to pass to the program, see conf/c_params) + - ./on.env (the environment to pass to the program, see conf/c_env) + - ./off (the program called when shutting down the service) + - ./off.params (the parameters to pass to the program) + - ./on.env (the environment to pass to the program) + +Some examples: +---------------------------------------------------------------------- + /etc/cinit/svc/init: + ./wants -> services it wants + ./needs -> services it needs +---------------------------------------------------------------------- + +A more or less normal service without dependencies: +---------------------------------------------------------------------- + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it +---------------------------------------------------------------------- + +A service with all options used: +---------------------------------------------------------------------- + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn service + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting +---------------------------------------------------------------------- + + +Profiles +-------- +Profiles allow you to define different startup scenarios and select +those before bootup. Read 'profiles.text' for more information about +profiles. + +The profile support was added in cinit-0.0.6. + + +Service execution order +------------------------ +The first service executed is '/etc/cinit/svc/init'. +If a profile is selected '/etc/cinit/svc/`profilename`' is used +instead. + +Cinit builds a full service dependency tree through the `wants` +and `needs` of the first service and its dependencies +(recursively). + +After the tree is generated, cinit begins to start the services +at the end of the tree. These services have no `needs`. + +If you manage to create circular dependencies your system will not startup. +You can verify the correctness your configuration with the script +`cinit.check.config`. + + + +Hints +----- + +Service executing / parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The on and off files can and should be links to the programs you want +to execute instead of a shell script. This way you save yourself the overhead +of loading a shell. The speed enhancement is very big if you have shells +like bash installed as /bin/sh (which is *not* senseful anyway, I would +recommend dash or ksh for /bin/sh). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. +The service could look like this: +---------------------------------------------------------------------- + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). +---------------------------------------------------------------------- + + +Daemons +~~~~~~~~ +Daemons are programs that go away to the background (using fork()) after +start. + +The fork-away strategy seems to be some illness introduced by traditional +init systems, that are dependent on the fact, that a service exits. + +Cinit in contrast remembers the process ID (pid) of the services it +restarts (those with `respawn` enabled). + +So when the daemon fork()s away and the parent process exits it looks to +cinit like the watched service died and cinit will restart it. + +Happily, most processes can be taught not to go to background. +Some processes even do that by default and very less are broken that +one cannot tell them not to background. + +A list of known processes that are normally used in respawn +processes can be found in 'daemons.backgrounding.text'. + +If your process is not listed in `daemons.backgrounding.text', +check the documentation of your daemon program, if may have a +switch to disable forking. + +But, with a small hack it is even possible to respawn those broken processes: + +We start a program, that + - starts the daemon, + - monitors the pidfile of the daemon, + - waits until that pid does not exist anymore + - and then exits. + +Such a program is included into the cinit source tarball, +though I do not recommend using it. The better way is to implement +non forking mode into your process. + +The name of the program (actually a shell script) is 'cinit.wait.for.daemon'. + +You can use it as the `on` part of a service and add + + - the pidfile, + - the process binary + - and the process parameters + +to `on.params`. + +Thus the service could look like: +---------------------------------------------------------------------- + svc-broken-daemon/ + on -> /sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL +---------------------------------------------------------------------- +(This is not a so good example, because Apache supports non-forking mode). + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + + +Logging +~~~~~~~ +Currently there's no special logging support. +When a process writes to stdout, it will be displayed on +the same stdout cinit is connected to. + +In newer versions cinit (perhaps cinit-0.4) will also support logging +stdout and stderr of a service. + + +How to migrate your old init-system configuration to cinit +---------------------------------------------------------- +This is highly dependent on your actual system, your system +configuration and your own ideas. + +Cinit is able to replace all other init systems I know about. + +So the only question is "How to do it?". + +There are some hints on how to migrate to cinit in general and also +some os specific help in the file 'migrating-init-systems.text', + +Examples +-------- +Currently there are no example configurations available. +As soon as they are, you will be able to download them at +cinit's homepage. + + +References +---------- ++ [[[cconfig]]] http://nico.schotteli.us/papers/linux/cconfig/ diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre6/doc/user/cross-compiling.text new file mode 100644 index 00000000..67208534 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/cross-compiling.text @@ -0,0 +1,6 @@ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/current-init-problems.text b/software/cinit/browse_source/cinit-0.3pre6/doc/user/current-init-problems.text new file mode 100644 index 00000000..20e7bf56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/current-init-problems.text @@ -0,0 +1,168 @@ +Currently available init systems and their problems +=================================================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-11 +:Author Initials: NS + + +This document describes some other init systems, especially +the "traditional" ones and describes their problems. + + +Introduction +------------- +some history, sysv, bsd, + +minit, runit, initng, cinit, upstart + + +Implementations +--------------- +List of current implementations as of 2006-12-12. + + +Linux Sys-V-Init +~~~~~~~~~~~~~~~~ +Debian Sid + +/etc/inittab + +"First script" /etc/init.d/rcS (specified +/etc/init.d/rcS: Bourne shell script text executable + +Runlevels: 0-6, different states + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% /sbin/runlevel +N 2 +-------------------------------------------------------------------------------- + + +Depending on runlevel, the init calls /etc/init.d/rc $runlevel. + +This is manually configured in /etc/inittab + +/etc/init.d/rc: Bourne shell script text executable + +/etc/init.d/rc + +Calls symlinks in /etc/rc?.d. Each runlevel a directory: + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% ls -ld /etc/rc*.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc0.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc1.d +drwxr-xr-x 3 root root 4096 2006-12-01 16:56 /etc/rc2.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc3.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc4.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc5.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc6.d +drwxr-xr-x 2 root root 4096 2006-11-28 23:17 /etc/rcS.d +-------------------------------------------------------------------------------- + + + +rlmanager: sys-v-init hack +~~~~~~~~~~~~~~~~~~~~~~~~~~ +rlmanager: one script to be executed, sources +simply configuration + +Gentoo Linux +~~~~~~~~~~~~ + +BSD init +~~~~~~~~ +Analyzed on FreeBSD. +/etc/rc +/etc/rc.d/ system services +/usr/local/etc/rc.d/ user installed services +Scripts may use values from /etc/rc.conf to check whether +they should be started or not. + +runit +~~~~~ +Three stages: Script1, dependencies, Script3 + + +Initng +~~~~~~ + + +minit +~~~~~ +Focus on being small. Needs libowfat. +Log support through pipe. + + + + + +Problems overview +----------------- + +Scripts +~~~~~~~ +Scripts are slow. + + +Sequential startup +~~~~~~~~~~~~~~~~~~ +In the 'old' init systems there is no support of parallel execution. +So if one services hangs at startup, the whole system has to wait +(for instance a dhcp request). In the worst case this may result in +a non-booting system. Systems with dependencies can start the gettys +for login before, in parallel to or even after blocking services are +started. The fact, that they *are* started means you can interact with +the system, you can end looping or blocking services. + +So sequential startup may not only be the reason for a pretty +slow system, but also for an unmaintainable one. + +Unecessary services +~~~~~~~~~~~~~~~~~~~ +Many implementations try to do whatever-is-possible on boot, trying to +cover every possible and impossible situation. + +Portmap without any program that needs it. + +Starting all installed services per default (Debian) vs. let the +user choose what to start (Gentoo). + +Nicht entfernte Altlasten ab und zu. + + +No dependencies +~~~~~~~~~~~~~~~ +Systems without dependencies may result in a chaos state after booting up. + + +Only soft dependencies +~~~~~~~~~~~~~~~~~~~~~~~ +The dependencies are used, but because of soft dependencies, services +may be started although their dependency is missing. + + +Parallel init system debugging +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In contrast to the old init systems, parallel executing init systems +are much harder to debug. If the starting init systems does not have +proper logging / reporting to the user (like cinit-0.2 has), the user +may never find out, what happened and why. + + +Parallel / dependency checking init system with variable boot order +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The boot order may be different each time you boot and is dependent +on the success or failure of services. This way you can never tell +exactly how and in which order they are executed. On multiprocessor +machines, where processes may be truely executed in parallel, there +is no order anymore, but there are n orders on n processors. + +To solve this issue, init systems which support parallel execution +should ship with some testing tools, that simulate a startup. + +cinit will ship with such a tool in cinit-0.4. + + +References +---------- diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/daemons.backgrounding b/software/cinit/browse_source/cinit-0.3pre6/doc/user/daemons.backgrounding new file mode 100644 index 00000000..4506abee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/daemons.backgrounding @@ -0,0 +1,71 @@ +-------------------------------------------------------------------------------- +daemons backgrounding, +Nico Schottelius 2005-06-12 (Last Modified: 2005-10-15) +-------------------------------------------------------------------------------- + +0. Definition + +A daemon is a program which runs in the background, not having a tty +associated necesserally. Running in background does not mean it has +to background (fork()) itself, but that you cannot control it directly +from a shell. + +1. Daemons and cinit + +Respawning daemons is a bit more difficult, as daemons do often fork() +(go to background, the calling process exits). + +This way cinit cannot watch it directly. + +The first solution is to check the documentation of your daemon program, +if it has a switch to disable forking + +The following daemons / servers are known to avoid backgrounding easily: + + acpid [x86 power management]: -f (undocumentated but works) + apache [webserver]: -DFOREGROUND + asterisk [pbx]: -f + bind [dns server/caching]: -f + cardmgr [pcmcia/cardbus]: -f + cron (vixie) [schedular]: -f + cupsd [printer server]: -f or -F + dhclient [dhcp client]: -d + dhcp3 (isc) [dhcp server]: -f + distccd [compile server]: normal behaviour + fam [file alteration monitor]:-f + fcron [schedular]: -f + frox [ftp proxy]: "NoDetach" in config + gdm [display manager]: -nodaemon + hybrid [irc server]: -foreground + icecast2 [sound streamer]: normal behaviour + mini-lpd [printer server]: normal behaviour + metalog [log server]: normal behaviour + monotone [vcs]: normal behaviour + mpd [music server]: --no-daemon + nessusd ["security server"]: normal behaviour + ntpd [time server]: -n + oidentd [identd server]: -i + oops [http proxy]: normal behaviour + openssh [ssh server]: -D + openvpn [vpn server]: normal behaviour + pbbuttonsd [power management]:normal behaviour + portmap [portmapper]: -f + proftpd [ftp server]: -n + qmail [mta]: normal behaviour + rsync ["file server"]: --no-detach + silcd ["secure chat server"]: -F, --foreground + slapd [ldap]: -d + snmpd [snmp daemon]: -f + svnserve [vcs]: --foreground + syslogd [log server]: -n + syslog-ng [log server]: -F + tcpserver [super server]: normal behaviour + udhcpc [dhcp client]: normal behaviour + vsftpd [ftp server]: normal behaviour (or: config: background=no) + xinetd [super server]: -dontfork + +Those are the daemons that do not offer the possibility (as of release 0.2): + + atd (no switch, no configuraton option) + inetd (some variants) + nscd (no switch, no configuraton option) diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/debugging.configuration b/software/cinit/browse_source/cinit-0.3pre6/doc/user/debugging.configuration new file mode 100644 index 00000000..1289865e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/debugging.configuration @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +Debugging your init configuration, +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +As writing an init configuration is not the easiest thing, +here are some problems (P) and debugging hints (H): + +P: There's no output! +H: If you don't start a service which outputs something there won't be any, + cinit starts up silently. + +P: Service XYZ seems not to work? +H: Try the following in your shell: + cd /etc/cinit/the-service; ./on "$(on.params)" + If that succeeds it has perhaps something missing which should have been + started before. +H: Create a test-service, which contains the following: + on: link to /bin/echo + on.params: "A test string" (with or without the quotes) + Now add the test-service to the needs directory of service XYZ. + If you see output the next time, the service is started. + Otherwise you forgot to make another service dependent on service + XYZ. + +P: How can I test if a non-outputting service successfully started? +H: Create another service, which depends on your service and make + it echo something. + +P: Does that profile support really work? +H: Try that: cprofile:NONEXISTENT and you'll see. + diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/dependencies.text b/software/cinit/browse_source/cinit-0.3pre6/doc/user/dependencies.text new file mode 100644 index 00000000..e1154a54 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/dependencies.text @@ -0,0 +1,68 @@ +cinit - Dependencies +==================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-13 +:Author Initials: NS + +This document describes the different dependency types of cinit. + + +Dependencies in general +----------------------- +Each service may have two types (non-exclusive) types of dependencies: +The so called `needs` or `wants`. These are directories below the service +directory and contain symbolic links to the dependencies. +The name of the link can be freely chosen. + +An example: + +The service '/etc/cinit/svc/getty/2' needs the service +'/etc/cinit/svc/local-tuning/keyboard-layout': +-------------------------------------------------------------------------------- +[21:35] hydrogenium:needs# cd /etc/cinit/svc/getty/2/needs +[21:35] hydrogenium:needs# ls -l +insgesamt 0 +lrwxrwxrwx 1 root root 37 2006-10-26 17:51 keyboard-layout -> ../../../local-tuning/keyboard-layout +[21:35] hydrogenium:needs# cd keyboard-layout/ +[21:35] hydrogenium:keyboard-layout# pwd -P +/etc/cinit/svc/local-tuning/keyboard-layout +-------------------------------------------------------------------------------- +(Warning: This is an incomplete example, it misses at least `mount/root` +as dependency) + +This service could additionally want something else, too. It is also +possible that a service only `wants` another service or that a service +has no dependencies. + + +Absolute versus relative links +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +cinit does not care whether a link is relative or absolute. And +as far as I can see it does not make any difference to usability. + +In general, it seems to be a little bit 'easier' to use relative links +when manually configuring cinit ('ln -s ../../../service' versus +'ln -s /etc/cinit/svc/category/service'), but easier readable when +analysing them (with `ls -l'). + + +The two types +------------- + +needs +~~~~~ +`Needs` are the 'hard dependencies': If a services fails to start that +is linked in the `needs` directory, the service will not be started. + + +wants +~~~~~ +`Wants` are the 'soft dependencies': cinit will try to start the dependencies +found in `wants` before the service, but the service will also be started, +indenpendend of success of the dependencies. + + +Circular dependency problem +---------------------------- +If you manage to create circular dependencies cinit will fall into an +endless loop. Use `cinit.check.config` to verify your configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/example-directory-structure.text b/software/cinit/browse_source/cinit-0.3pre6/doc/user/example-directory-structure.text new file mode 100644 index 00000000..d19ac1fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/example-directory-structure.text @@ -0,0 +1,140 @@ +cinit - Example directory structure +=================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-12 +:Author Initials: NS + + +This document describes a tested directory hierarchy that +you could adapt for your setup. But this is no need, you +are free to design your own layout and/or improve this one. + + +Main idea +--------- +The main reason for this layout is that all services directly located +in /etc/cinit/svc/ would create a not-so-easy maintainable chaos. + + +Categories +---------- +When thinking about grouping some parts together, there came some categories +to my mind: + +- init: This must be there. It is no real choice (well, working with profiles + is an alternative) +- we need to mount things +- things that are used to 'configure' my local system +- network connectivity +- services only locally reachable +- services remote reachable +- something that let me login + +With these requirements the following categories (=directories) were created: + + +getty +~~~~~ +Gettys are those little and nice programs that allow you to login. +As we normally want to have more than one it seems to be senseful +to create a category for it. + +For the creation of the getty services itself, an extremly simply +scheme is used: Simply create services with the number of the getty +that is running. This results in the following setup: + +-------------------------------------------------------------------------------- + /etc/cinit/svc/getty/ + 2/ + 3/ + 4/ + ... +-------------------------------------------------------------------------------- + +The number '1' is skipped, because cinit normally logs to stdout that is +connected to the first console. + +`/etc/cinit/svc/getty/needs/` contains all enabled gettys. This way +`/etc/cinit/svc/init/needs/` can refer to `/etc/cinit/svc/getty/` only +but will catch all gettys. + +If you want to allow users to login via a graphical login screen +(also known as X11 with xdm/gdm/kdm) you could add this service as +`getty/gdm` for instance, because gdm is just another getty (just with +more colours). + + +init +~~~~ +`init` is the service everything begins with. You simply put all other +categories into the `needs` (or if soft-dependencies to `wants`) of this +service. + + +local-services +~~~~~~~~~~~~~~ +This directory contains all the services that are only locally reachable. +This may contain local webserver, a MTA that only accepts mails +via /usr/sbin/sendmail (like qmail is capable of) or some other local +only available services. + + +local-tuning +~~~~~~~~~~~~ +This directory is used for local configuration. It contains services, +that setup the keyboard layout (perhaps called `local-tuning/keyboard-layout` +needed by `getty`!), adjust system to hardware time, cleans /tmp +(`local-tuning/tmpclean`), ... + + +mount +~~~~~ +This directory contains the service to remount the root filesystem +read-write (`mount/root`) which is dependend on the filesystem +check (`mount/root/fsck`, also have a look at 'special-services.text'). +It also contains the services that mount the pseudo filesystems +(`mount/proc` (FreeBSD, Linux) and `mount/sys` (Linux)) and all +other partitions (`mount/home`, `mount/usr`,...) which again contain +a dependency to the filesystem check, if necessary. + + +network +~~~~~~~ +The `network` directory should cover all of the network basics. +This includes setting the hostname (`network/hostname`) configuring +network devices (`network/eth0.static`, `network.ath0.master`) limiting +network accesses (`network/firewall`), enable packet forwarding +(`network/ip-forward`), adjusting the available bandwith +(`network/traffic-shaping`), ... + + +If there are too many network devices, you could create a subfolder named +`network/devices/`. + +I used to suffix the network devices with the mode they run, so I can +use different modes in different profiles (setup the wireless card in +master mode at home, in ad-hoc mode at a friend and in managed mode at +work). + + +remote-services +~~~~~~~~~~~~~~~~ +Remote-services are all services that are reachable from remote hosts. +This includes ssh (`remote-services/opensshd`), webserver +(`remote-services/lighttpd` or `remote-services/apache22`). + +Most servers `need` a working network interface, before they can be +started, but mostly it is enough to have the loopback interface up. + +This results in the possible `needs` dependency for `network/loopback` +and soft dependencies, what we call `wants` on `network`. + +Other examples for remote services are +- dns (`remote-services/dnscache`, `remote-services/tinydns`, + `remote-services/bind`) +- fileserver (`remote-services/smbd`, `remote-services/mmbd`) +- network infrastructure (`remote-services/bgpd`) +- many others + +Many daemons used for `remote-services` are described in +'daemons.backgrounding.text'. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/ideas b/software/cinit/browse_source/cinit-0.3pre6/doc/user/ideas new file mode 100644 index 00000000..d3f13d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/ideas @@ -0,0 +1,3 @@ +- cinit-multi-machine-daemon: + coordinating bootup with several machines + diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/installing-cinit.text b/software/cinit/browse_source/cinit-0.3pre6/doc/user/installing-cinit.text new file mode 100644 index 00000000..34902057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/installing-cinit.text @@ -0,0 +1,63 @@ +cinit - Installing +================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-06-02 +:Author Initials: NS + +This documentes describes how to install cinit. + + +Installing +---------- +Installing cinit is not a big deal, so is this document. +Where possible I added a list of commands to execute at the +end of each section. + + +From source +~~~~~~~~~~~ +Retrieve the latest source from http://unix.schottelius.org/cinit/. +Then extract it, change to the source directory, adjust your OS in the +file "conf/os" and type "make all". + +To report success run scripts/report.compile and send the output +to nico-cinit-report |at| schottelius.org. I will use this information +to know how and where cinit is compiled. Personal values like hostnames +or your e-mail address will *not* be published. + +Code to install cinit: +---------------------------------------------------------------------- +# the program we use to retrieve the source (fetch on FreeBSD) +get=wget +# change to current version +version=0.3pre6 +url=http://unix.schottelius.org/cinit/cinit-${version}.tar.bz2 +# get it +$get "$url" +# exctract it +tar xvjf "cinit-${version}.tar.bz2" +# build it and report success +who=nico-cinit-report +where=schottelius.org +cd cinit-${version} && make all && \ +./scripts/report.compile | mail -s "cinit: compile report" "${who}@${where}" +---------------------------------------------------------------------- + +Warning: Currently the install target is missing. Simply copy +"src/cinit" to /sbin/cinit. + + +Changing compile time parameters +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +All compile time configurations are kept below the "conf" +directory. Please read 'conf-system.text' for more information. + + +Cross-compiling +--------------- +For cross compiling see 'cross-compiling.text'. + + +Continue reading +---------------- +After having installed cinit, continue reading the document "Configuring cinit". diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/main.text b/software/cinit/browse_source/cinit-0.3pre6/doc/user/main.text new file mode 100644 index 00000000..6308e4c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/main.text @@ -0,0 +1,113 @@ +cinit - a modern init system +============================= +Nico Schottelius +v0.1, for cinit-0.2.2, 2005-01-18 +:Author Initials: NS + + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/meta.dependencies b/software/cinit/browse_source/cinit-0.3pre6/doc/user/meta.dependencies new file mode 100644 index 00000000..fe743c48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/meta.dependencies @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, one would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation (see profile.support). + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +why it does not even need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ + +This way you have the indirection (meta-dependencies) in the filesystem +and cinit does not need any additional code. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/optimising.cinit b/software/cinit/browse_source/cinit-0.3pre6/doc/user/optimising.cinit new file mode 100644 index 00000000..4f4b5c02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/optimising.cinit @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options +2. striping + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + +The current standard for cinit is: (see CFLAGS in the Makefile). + + +2. striping + +With strip(1) you can remove specific sections of object files. +You have to find out, which ones you can remove safely +(for instance with objdump(1)). + +The current standard for cinit is: (see STRIP in the Makefile) diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/paths.text b/software/cinit/browse_source/cinit-0.3pre6/doc/user/paths.text new file mode 100644 index 00000000..d44bca61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/paths.text @@ -0,0 +1,121 @@ +cinit - Configuration +====================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Configuring cinit - the paths used + + +Main structure +--------------- +The base directory under which all configurations are found +is '/etc/cinit' (changable via conf/cinit_dir). + +The basic hierarchy is shown below: +---------------------------------------------------------------------- +/etc/cinit + svc -> services (adjustable: conf/svcdir) + conf -> general configuration (adjustable: conf/confdir) +---------------------------------------------------------------------- + + +The subdirectory 'conf' +~~~~~~~~~~~~~~~~~~~~~~~ +In this directory are general configurations located. +See below for the list of files that are located in this +directory. + + +The subdirectory 'svc' +~~~~~~~~~~~~~~~~~~~~~~ +This directory contains the services. A service is a directory. + + +Filenams for executable files +------------------------------ +When you create something that cinit should execute (like on +starting a service, on stopping a service, on panic, ...), cinit +will recognize the following extensions: + +. cinit executions extensions + - 'name' - the file that should be executed + - `'name'.params` - the parameter to pass to 'name' when executing + - `'name'.env` - the environment to pass to 'name' when executing + + +Name.params +~~~~~~~~~~~ +The 'params' file is a simple file containing one argument on each +line. + +Example: +---------------------------------------------------------------------- +[17:34] hydrogenium:cinit-0.3pre6% ls -l /etc/cinit/svc/init/on +lrwxrwxrwx 1 root root 9 2006-11-16 09:12 /etc/cinit/svc/init/on -> /bin/echo +[17:34] hydrogenium:cinit-0.3pre6% cat /etc/cinit/svc/init/on.params +The initial service has been started. (first parameter) +Some other useful information. (second parameter) +---------------------------------------------------------------------- + +Name.env +~~~~~~~~ +The 'env' file contains the environment definition. +Specify one assignment on each line, containing only "variable=value". + +Example: +---------------------------------------------------------------------- +[18:00] hydrogenium:% cat /etc/cinit/svc/remote-services/tinydns/on.env +IP=192.168.42.23 +---------------------------------------------------------------------- + +eof + +List of executable files +------------------------ +This list shows you what files are executable for cinit. + +on / off +~~~~~~~~~ +The files `on` and `off` are executed if found within a service +definition. `on` is called when starting the service, `off` +is called when stoping it. + + +conf/panic +~~~~~~~~~~ +This file will be executed by cinit if it has to panic. +Panic situation may occur, when there are heavy problems +like failing memory allocation in core areas. You can +change the name of the file in the pre-compilation settings +in `conf/c_panic`. + +If `conf/panic` is missing and cinit has to panic, a builtin +panic action will be called (see `conf/sulogin`). + + +conf/halt +~~~~~~~~~ +`conf/halt` will be called when cinit has shutdown all services +and wants to halt the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_halt`. + + +conf/poweroff +~~~~~~~~~~~~~ +`conf/poweroff` will be called when cinit has shutdown all services +and wants to poweroff the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_poweroff`. + + +conf/reboot +~~~~~~~~~~~ +`conf/reboot` will be called when cinit has shutdown all services +and wants to reboot the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_reboot`. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/profiles.text b/software/cinit/browse_source/cinit-0.3pre6/doc/user/profiles.text new file mode 100644 index 00000000..ab4d3c4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/profiles.text @@ -0,0 +1,79 @@ +cinit - Profiles +================ +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-06-04 +:Author Initials: NS + + +cinit profiles described. + + +What are profiles? +------------------ +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +How to use profiles? +--------------------- +Simply pass 'cprofile:PROFILENAME' (like cprofile:home) to cinit. + + +How to pass argumenents to cinit? +--------------------------------- +How to pass arguments to your init system depends on your operating +system and on your bootloader. + +Linux +~~~~~ +Under Linux the init-system gets the kernel arguments +(see linux.kernel.eats.arguments) as arguments. +So you can use + + kernel /usr/src/linux/vmlinuz cprofile:work (grub1,grub2) + append="cprofile:work" (LILO,yaboot) + +Other Unices should work like Linux, please consult your local +documentation. + + +How to configure profiles? +-------------------------- +It's very simple: Normally cinit would call /etc/cinit/svc/init as +the first service (with all its dependencies). If you pass 'cprofile=wireless' +to it, cinit will start from /etc/cinit/svc/wireless +instead. + +So the only thing you have to do is to create a service directory +below /etc/cinit/svc with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit/svc; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/svc/init; tar c . | (mkdir ../myprof; cd ../myprof; tar x ) + +That's it! + + +Some examples +------------- + +Here are some examples we found in #cLinux: + +-------------------------------------------------------------------------------- + profile name what it does + + musibox only start mp3blaster + terminal start only minicom, which opens the serial line + net-terminal start a respawning shell script, which starts + ssh to the selected host + video start X+mplayer, which plays the dvd/cdrom + wireless What to start when beeing in an unknown wlan + home/work selected services (nfs, ip, ...) for home or work +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/replacing.init b/software/cinit/browse_source/cinit-0.3pre6/doc/user/replacing.init new file mode 100644 index 00000000..2858c56c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/replacing.init @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and link, move or copy cinit to init (ln -s /sbin/cinit /sbin/init), reboot. + +That's everything in general, the biggest part will be to configuring cinit. + +See also doc/merging.other.initsystems. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/special-services.text b/software/cinit/browse_source/cinit-0.3pre6/doc/user/special-services.text new file mode 100644 index 00000000..4367bed1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/special-services.text @@ -0,0 +1,12 @@ +at: + no non-forking mode +fsck: + returns non-zero if it repaired something. + You have to wrap it into a shell-script :-( + + #!/bin/sh + fsck $@ + [ $? -le 1 ] && exit 0 + exit 1 + +Non-zero exit in general diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/updating.cinit b/software/cinit/browse_source/cinit-0.3pre6/doc/user/updating.cinit new file mode 100644 index 00000000..fc0d3fef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/updating.cinit @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. call cservice -u thilo (if you have cinit-0.1 or later) + + For older versions: + + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything running and restart as if you would just + have booted. diff --git a/software/cinit/browse_source/cinit-0.3pre6/doc/user/using.rescue b/software/cinit/browse_source/cinit-0.3pre6/doc/user/using.rescue new file mode 100644 index 00000000..f58ff512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/doc/user/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user"). + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.build-env b/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.build-env new file mode 100644 index 00000000..94e093e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.build-env @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: build environment to be used in scripts +# * Should be sourced by using scripts +# 2006-10-26 +# + +. $(dirname $0)/cinit.read-conf + +export BASEDIR=${DESTDIR}${CINIT_DIR} +export SERVICES=${BASEDIR}/${SVCDIR} +export CONFIG=${BASEDIR}/${CONFDIR} diff --git a/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.get-confdir b/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.get-confdir new file mode 100644 index 00000000..38d8572d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.get-confdir @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# Date: 2005-05-24 (Last Changed: 2005-08-08) + +# try environment first +if [ "$CINIT_CONF_DIR" ]; then + CONFDIR=$CINIT_CONF_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +else + echo 'Did not find cinit configuration!' >&2 + echo "Please set the variable CINIT_CONF_DIR" >&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.install.standard.dirs b/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.install.standard.dirs new file mode 100644 index 00000000..22cf273d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.install.standard.dirs @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install standard sub-configuration directories +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.build-env + +for svc in $SERVICE_CATEGORIES; do + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${SERVICES}/${svc}" +done + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.mkheader b/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.mkheader new file mode 100644 index 00000000..80e3f7cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.mkheader @@ -0,0 +1,32 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric: no quotes needed + is_numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + is_string="$(echo $value | grep '^"')" + + # + # Check for quote type + # + if [ ! "$is_numeric" -a ! "$is_string" ]; then + one_char=$(echo -n $value | wc -c) + + if [ "$one_char" -eq 1 ]; then + value="'$value'" + else + # is a string + value="\"$value\"" + fi + fi + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.read-conf b/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.read-conf new file mode 100644 index 00000000..80a32463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.read-conf @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# ~ 2005 +# + +CONFS=$($(dirname $0)/cinit.get-confdir) + +set -e + +for conf in ${CONFS}/*; do + NAME="$(basename $conf | tr a-z A-Z)" + if eval test -z \$$NAME; then + eval $NAME=\"$(head -n 1 $conf)\" + eval export $NAME + fi +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.release b/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.release new file mode 100644 index 00000000..d8b7c2a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/scripts/cinit.release @@ -0,0 +1,50 @@ +#!/bin/sh +# Nico Schottelius +# Build release tar +# Date: Sat Oct 15 21:38:29 CEST 2005 +# Last Changed: Fr Okt 28 01:24:58 CEST 2005 + +if [ $# -ne 2 ]; then + echo "This is a maintainer-only script to release cinit" + echo $(basename $0): source-dir version + exit 1 +fi + +cat << eof + Erinnerung: + + - Version in conf/version angepasst? + + Nein? Strg+C bitte... +eof +read a + + +DIR=$1 +VERSION=$2 +OUT_NAME=cinit-${VERSION}.tar.bz2 +D_HOST=home.schottelius.org +D_BASE=www/org/schottelius/unix/www/cinit +D_DIR=${D_BASE}/archives/ +D_SOURCE=${D_BASE}/browse_source/ +LINK=current + +if [ ! -d "$DIR" ]; then + echo "$DIR is not a directory" + exit 1 +fi + +( cd "$DIR" && make dist ) || exit 1 + +echo "Creating bzip2 compressed tar" +tar cj -X $DIR/.exclude -f "$OUT_NAME" "$DIR" +chmod 0644 "$OUT_NAME" +echo "Transfering to $D_HOST" +scp "$OUT_NAME" "$D_HOST:$D_DIR" +echo "Extracting to $D_SOURCE" +ssh "$D_HOST" "tar xfj $D_DIR/$OUT_NAME -C $D_SOURCE" +echo "Correcting paranoid permissions" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type f -exec chmod 0644 {} \\;" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type d -exec chmod 0755 {} \\;" +ssh "$D_HOST" "cd \"$D_SOURCE\" && rm -f \"$LINK\" && ln -s \"$DIR\" \"$LINK\"" +echo "Please do not forget to update the website..." diff --git a/software/cinit/browse_source/cinit-0.3pre6/scripts/create_baseconfig.sh b/software/cinit/browse_source/cinit-0.3pre6/scripts/create_baseconfig.sh new file mode 100644 index 00000000..7c9b69e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/scripts/create_baseconfig.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# 2006-10-23 +# cLinux/cinit + +. $(dirname $0)/cinit.build-env + +set -e + +mkdir -p "${BASEDIR}" + +mkdir -p "${SERVICES}" +mkdir -p "${SERVICES}/${C_INIT}" + +mkdir -p "${CONFIG}" diff --git a/software/cinit/browse_source/cinit-0.3pre6/scripts/report.compile b/software/cinit/browse_source/cinit-0.3pre6/scripts/report.compile new file mode 100644 index 00000000..ac591412 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/scripts/report.compile @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# 2006-12-08 +# Report compile success +# + +echo "cinit compile success report" +echo "----------------------------" +"$(dirname $0)/cinit.mkheader" +echo "----------------------------" +uname -a +echo "----------------------------" +. "$(dirname $0)/cinit.read-conf" +echo '$CC' +"$CC" -v +echo "----------------------------" +echo -n "Size: " +ls -l "$(dirname $0)/../src/cinit" diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-17-19:03:48 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-17-19:03:48 new file mode 100644 index 00000000..e379e004 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-17-19:03:48 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 17 19:03 cinit +-rwx------ 1 nico users 46760 Jun 17 19:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-20-12:16:40 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-20-12:16:40 new file mode 100644 index 00000000..1f0c3325 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-20-12:16:40 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 20 12:16 cinit +-rwx------ 1 nico users 50860 Jun 20 12:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-20-15:16:31 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-20-15:16:31 new file mode 100644 index 00000000..75dc3e7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-20-15:16:31 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 15:16 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-20-16:29:28 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-20-16:29:28 new file mode 100644 index 00000000..1294bde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-20-16:29:28 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-20-16:29:50 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-20-16:29:50 new file mode 100644 index 00000000..69fe7490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-20-16:29:50 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 16:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-21-11:53:35 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-21-11:53:35 new file mode 100644 index 00000000..4a1e7b6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-21-11:53:35 @@ -0,0 +1,3 @@ +total 192 +-rwx------ 1 nico users 102039 Jun 21 11:53 cinit +-rwx------ 1 nico users 87871 Jun 21 11:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-07:33:11 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-07:33:11 new file mode 100644 index 00000000..e6c8ff14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-07:33:11 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47544 Jun 22 07:33 cinit +-rwx------ 1 nico users 46760 Jun 22 07:33 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-07:57:13 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-07:57:13 new file mode 100644 index 00000000..17161d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-07:57:13 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47536 Jun 22 07:57 cinit +-rwx------ 1 nico users 46760 Jun 22 07:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-08:08:40 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-08:08:40 new file mode 100644 index 00000000..770083f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-08:08:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47424 Jun 22 08:08 cinit +-rwx------ 1 nico users 46760 Jun 22 08:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-08:30:42 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-08:30:42 new file mode 100644 index 00000000..aa95fb3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-08:30:42 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47360 Jun 22 08:30 cinit +-rwx------ 1 nico users 46760 Jun 22 08:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-09:19:42 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-09:19:42 new file mode 100644 index 00000000..70c261bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-09:19:42 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 09:19 cinit +-rwx------ 1 nico users 50860 Jun 22 09:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-10:43:24 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-10:43:24 new file mode 100644 index 00000000..b8bc4076 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-10:43:24 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 10:43 cinit +-rwx------ 1 nico users 50860 Jun 22 10:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-12:42:57 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-12:42:57 new file mode 100644 index 00000000..c8119859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-12:42:57 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 22 12:42 cinit +-rwx------ 1 nico users 46760 Jun 22 12:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-13:52:41 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-13:52:41 new file mode 100644 index 00000000..793b92fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-13:52:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:52 cinit +-rwx------ 1 nico users 46760 Jun 22 13:52 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-13:59:40 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-13:59:40 new file mode 100644 index 00000000..d114c557 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-13:59:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:59 cinit +-rwx------ 1 nico users 46760 Jun 22 13:59 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-14:19:41 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-14:19:41 new file mode 100644 index 00000000..8d56882f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-14:19:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47640 Jun 22 14:19 cinit +-rwx------ 1 nico users 46760 Jun 22 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-14:37:18 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-14:37:18 new file mode 100644 index 00000000..b7c3e4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-22-14:37:18 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 22 14:37 cinit +-rwx------ 1 nico users 46760 Jun 22 14:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-23-06:22:23 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-23-06:22:23 new file mode 100644 index 00000000..9e38a5e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-23-06:22:23 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 23 06:22 cinit +-rwx------ 1 nico users 46760 Jun 23 06:22 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-24-17:53:55 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-24-17:53:55 new file mode 100644 index 00000000..3b750eaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-24-17:53:55 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:53 cinit +-rwx------ 1 nico users 46760 Jun 24 17:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-24-17:55:29 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-24-17:55:29 new file mode 100644 index 00000000..c30dcaf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-24-17:55:29 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:55 cinit +-rwx------ 1 nico users 46760 Jun 24 17:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-26-13:19:49 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-26-13:19:49 new file mode 100644 index 00000000..a4de830b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-06-26-13:19:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 26 13:19 cinit +-rwx------ 1 nico users 50860 Jun 26 13:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:07:13 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:07:13 new file mode 100644 index 00000000..e2c59ddf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:07:13 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:07 cinit +-rwx------ 1 nico users 50860 Jul 6 08:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:12:20 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:12:20 new file mode 100644 index 00000000..e562350c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:12:20 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:12 cinit +-rwx------ 1 nico users 50860 Jul 6 08:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:13:39 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:13:39 new file mode 100644 index 00000000..32fd8268 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:13:39 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:13 cinit +-rwx------ 1 nico users 50860 Jul 6 08:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:14:19 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:14:19 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:14:19 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:14:59 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:14:59 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:14:59 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:15:56 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:15:56 new file mode 100644 index 00000000..cf26e6f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-08:15:56 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:15 cinit +-rwx------ 1 nico users 50860 Jul 6 08:15 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-10:12:22 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-10:12:22 new file mode 100644 index 00000000..d5f0f2c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-10:12:22 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:08 cinit +-rwx------ 1 nico users 50860 Jul 6 10:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-10:12:31 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-10:12:31 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-10:12:31 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-10:12:49 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-10:12:49 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-07-06-10:12:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-08-29-21:21:34 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-08-29-21:21:34 new file mode 100644 index 00000000..e651a8ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-08-29-21:21:34 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 root root 444508 2005-08-29 21:21 cinit +-rwx------ 1 root root 440412 2005-08-29 21:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-08-29-23:50:55 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-08-29-23:50:55 new file mode 100644 index 00000000..a279aee3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-08-29-23:50:55 @@ -0,0 +1,3 @@ +insgesamt 856 +-rwx------ 1 nico nico 437564 2005-08-29 23:50 cinit +-rwx------ 1 nico nico 436316 2005-08-29 23:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-03-03:36:59 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-03-03:36:59 new file mode 100644 index 00000000..01e555f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-03-03:36:59 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 nico nico 444508 2005-09-03 03:36 cinit +-rwx------ 1 nico nico 440412 2005-09-03 03:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-03-04:34:35 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-03-04:34:35 new file mode 100644 index 00000000..1832930a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-03-04:34:35 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 04:34 cinit +-rwx------ 1 nico nico 440412 Sep 3 04:34 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-03-05:51:17 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-03-05:51:17 new file mode 100644 index 00000000..4e465d06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-03-05:51:17 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 05:51 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-03-05:54:20 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-03-05:54:20 new file mode 100644 index 00000000..9c040d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-03-05:54:20 @@ -0,0 +1,4 @@ +total 1300 +-rwx------ 1 nico nico 440412 Sep 3 05:54 ccontrol +-rwx------ 1 nico nico 444508 Sep 3 05:54 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-03-09:01:59 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-03-09:01:59 new file mode 100644 index 00000000..880422a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-03-09:01:59 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 3 09:01 cinit +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-05-19:41:12 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-05-19:41:12 new file mode 100644 index 00000000..0f07d86e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-05-19:41:12 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 root root 440412 2005-09-05 19:41 ccontrol +-rwx------ 1 root root 444508 2005-09-05 19:41 cinit +-rwx------ 1 root root 440412 2005-09-05 19:41 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-05-19:50:35 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-05-19:50:35 new file mode 100644 index 00000000..32ff19fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-05-19:50:35 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 5 19:50 cinit +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-24-01:42:38 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-24-01:42:38 new file mode 100644 index 00000000..0da6126e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-24-01:42:38 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-09-24 01:42 ccontrol +-rwx------ 1 nico nico 437628 2005-09-24 01:42 cinit +-rwx------ 1 nico nico 436316 2005-09-24 01:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-30-22:50:50 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-30-22:50:50 new file mode 100644 index 00000000..0d510174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-30-22:50:50 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 22:50 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 22:50 cinit +-rwx------ 1 nico nico 436316 2005-09-30 22:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-30-23:06:39 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-30-23:06:39 new file mode 100644 index 00000000..23450914 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-09-30-23:06:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 23:06 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 23:06 cinit +-rwx------ 1 nico nico 436316 2005-09-30 23:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-01-22:09:13 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-01-22:09:13 new file mode 100644 index 00000000..a62b9eb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-01-22:09:13 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-10-01 22:09 ccontrol +-rwx------ 1 nico nico 437308 2005-10-01 22:09 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-01-22:17:39 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-01-22:17:39 new file mode 100644 index 00000000..b1d8b11b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-01-22:17:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-01 22:17 ccontrol +-rwx------ 1 nico nico 437532 2005-10-01 22:17 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-02-11:12:29 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-02-11:12:29 new file mode 100644 index 00000000..e5f7b13d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-02-11:12:29 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:12 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-02-11:13:35 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-02-11:13:35 new file mode 100644 index 00000000..d7c14471 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-02-11:13:35 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-02-11:13:43 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-02-11:13:43 new file mode 100644 index 00000000..1711d01a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-02-11:13:43 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 11:13 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 436316 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-02-16:00:24 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-02-16:00:24 new file mode 100644 index 00000000..ab23228c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-02-16:00:24 @@ -0,0 +1,4 @@ +total 1284 +-rwx------ 1 nico nico 436316 Oct 2 16:00 ccontrol +-rwx------ 1 nico nico 437884 Oct 2 16:00 cinit +-rwx------ 1 nico nico 436316 Oct 2 16:00 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-02-23:17:11 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-02-23:17:11 new file mode 100644 index 00000000..92041cd9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-02-23:17:11 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 23:17 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 23:17 cinit +-rwx------ 1 nico nico 436316 2005-10-02 23:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-03-00:54:39 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-03-00:54:39 new file mode 100644 index 00000000..df47a057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-03-00:54:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:54 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:54 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-03-00:56:29 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-03-00:56:29 new file mode 100644 index 00000000..08db7fec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-03-00:56:29 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:56 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:56 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:56 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-13-09:55:52 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-13-09:55:52 new file mode 100644 index 00000000..d54a7ff4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-13-09:55:52 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:55 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:55 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-13-09:57:11 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-13-09:57:11 new file mode 100644 index 00000000..3b1af9ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-13-09:57:11 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:57 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:57 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-13-10:07:28 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-13-10:07:28 new file mode 100644 index 00000000..58d25315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-13-10:07:28 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 10:07 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 10:07 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 10:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-15-15:26:52 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-15-15:26:52 new file mode 100644 index 00000000..a88291e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-15-15:26:52 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 root root 436316 2005-10-15 15:26 ccontrol +-rwx------ 1 root root 437916 2005-10-15 15:26 cinit +-rwx------ 1 root root 436316 2005-10-15 15:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-15-21:23:56 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-15-21:23:56 new file mode 100644 index 00000000..43a4504d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-10-15-21:23:56 @@ -0,0 +1,4 @@ +total 36 +-rwx------ 1 nico nico 9148 Oct 15 21:23 ccontrol +-rwx------ 1 nico nico 11872 Oct 15 21:23 cinit +-rwx------ 1 nico nico 9768 Oct 15 21:23 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2005-11-17-17:03:53 b/software/cinit/browse_source/cinit-0.3pre6/size/2005-11-17-17:03:53 new file mode 100644 index 00000000..78543f15 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2005-11-17-17:03:53 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2005-11-17 17:03 ccontrol +-rwx------ 1 nico nico 11872 2005-11-17 17:03 cinit +-rwx------ 1 nico nico 9768 2005-11-17 17:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-11-23:45:54 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-11-23:45:54 new file mode 100644 index 00000000..f4852c81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-11-23:45:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-11 23:45 cinit +-rwx------ 1 nico nico 9768 2006-02-11 23:45 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-12-00:06:11 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-12-00:06:11 new file mode 100644 index 00000000..2fe41351 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-12-00:06:11 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-12-00:06:42 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-12-00:06:42 new file mode 100644 index 00000000..bf2ddc36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-12-00:06:42 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:06 ccontrol +-rwx------ 1 nico nico 11560 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-12-00:08:24 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-12-00:08:24 new file mode 100644 index 00000000..e25a49ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-12-00:08:24 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:08 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:08 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-12-00:09:33 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-12-00:09:33 new file mode 100644 index 00000000..0b64fa00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-12-00:09:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:09 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:09 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-12-00:13:32 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-12-00:13:32 new file mode 100644 index 00000000..b6c5c38e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-12-00:13:32 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:13 ccontrol +-rwx------ 1 nico nico 11500 2006-02-12 00:13 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-16-23:57:29 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-16-23:57:29 new file mode 100644 index 00000000..86b9fda9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-16-23:57:29 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11620 2006-02-16 23:57 cinit +-rwx------ 1 nico nico 9768 2006-02-16 23:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-17-00:16:18 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-17-00:16:18 new file mode 100644 index 00000000..28c853a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-17-00:16:18 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 00:16 cinit +-rwx------ 1 nico nico 9768 2006-02-17 00:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-17-22:48:35 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-17-22:48:35 new file mode 100644 index 00000000..5935acfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-17-22:48:35 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-17 22:48 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 22:48 cinit +-rwx------ 1 nico nico 9768 2006-02-17 22:48 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:03:54 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:03:54 new file mode 100644 index 00000000..9222f0b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:03:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:03 cinit +-rwx------ 1 nico nico 9768 2006-02-20 19:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:04:33 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:04:33 new file mode 100644 index 00000000..c5797edc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:04:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:04:36 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:04:36 new file mode 100644 index 00000000..fbcf9fa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:04:36 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:07:47 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:07:47 new file mode 100644 index 00000000..7e1fe18f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:07:47 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:07 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:12:33 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:12:33 new file mode 100644 index 00000000..2b4fda40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:12:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:12 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:12 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:14:56 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:14:56 new file mode 100644 index 00000000..bccb5d65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-02-20-20:14:56 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:14 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:14 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-01-23:32:43 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-01-23:32:43 new file mode 100644 index 00000000..fcbaf372 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-01-23:32:43 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-01 23:32 ccontrol +-rwx------ 1 nico nico 11640 2006-06-01 23:32 cinit +-rwx------ 1 nico nico 9768 2006-06-01 23:32 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-01:08:28 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-01:08:28 new file mode 100644 index 00000000..7683546c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-01:08:28 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:08 ccontrol +-rwx------ 1 nico nico 11688 2006-06-02 01:08 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-01:29:13 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-01:29:13 new file mode 100644 index 00000000..adbc6846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-01:29:13 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:29 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 01:29 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-11:13:39 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-11:13:39 new file mode 100644 index 00000000..46eaef4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-11:13:39 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:13 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:13 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-11:36:37 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-11:36:37 new file mode 100644 index 00000000..306402f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-11:36:37 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:36 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:36 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-15:17:17 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-15:17:17 new file mode 100644 index 00000000..7bb59095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-15:17:17 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:17 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:17 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-15:19:52 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-15:19:52 new file mode 100644 index 00000000..ce65256f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-06-02-15:19:52 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:19 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:19 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-11-29-235834 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-11-29-235834 new file mode 100644 index 00000000..c2c83117 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-11-29-235834 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73645 2006-11-29 23:57 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-02-172536 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-02-172536 new file mode 100644 index 00000000..4079d5db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-02-172536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73617 2006-12-02 17:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-02-174429 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-02-174429 new file mode 100644 index 00000000..5506928d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-02-174429 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73497 2006-12-02 17:44 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-02-182536 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-02-182536 new file mode 100644 index 00000000..14526d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-02-182536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 72092 2006-12-02 18:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-03-173231 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-03-173231 new file mode 100644 index 00000000..aca9d380 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-03-173231 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71944 2006-12-03 17:32 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-03-174544 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-03-174544 new file mode 100644 index 00000000..3c1cfea2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-03-174544 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71952 2006-12-03 17:45 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-03-191215 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-03-191215 new file mode 100644 index 00000000..4f2a2fa1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-03-191215 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-03 19:12 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-06-084947 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-06-084947 new file mode 100644 index 00000000..487af844 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-06-084947 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-06 08:49 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-14-213559 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-14-213559 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-14-213559 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-14-213717 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-14-213717 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-14-213717 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-14-213739 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-14-213739 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-14-213739 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-14-215315 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-14-215315 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-14-215315 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-14-215334 b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-14-215334 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/size/2006-12-14-215334 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/.configured b/software/cinit/browse_source/cinit-0.3pre6/src/.configured new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/Makefile b/software/cinit/browse_source/cinit-0.3pre6/src/Makefile new file mode 100644 index 00000000..5e40f54a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/Makefile @@ -0,0 +1,130 @@ +# +# cinit +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +include Makefile.tests + +# Build tools / locations +CC=../tmpbin/cc +CFLAGS= +LD=../tmpbin/ld +LDFLAGS= +STRIP=../tmpbin/strip +SBIN=../sbin + +# directories and files +CONFIG_H=include/config.h + +BIN=cinit + +# +# All objects depend on headers. More or less. FIXME: use gcc -M +# +CINIT_HEADERS=$(shell cat include/listing) + +# NEW +CINIT_OBJ=$(shell cat object_lists/cinit) + +# +# Dependencies +# +$(CINIT_OBJ): $(CINIT_HEADERS) + +# +# Client modules +# +CLIENT=client/msg_svc_on_off.o client/msg_change_status.o client/run_svc.o \ + client/exec_svc.o client/respawn_svc.o client/run_run_svcs.o \ + client/connect_sock.o client/begin_msg.o client/sig_terminate.o + +COMMUNICATION=comm/do_change_status.o comm/do_result.o comm/do_svc_name.o + +BOTH=generic/set_signals.o generic/mini_printf.o generic/usage.o + +OBJ=$(SERV) $(SERV_OS) $(CLIENT) $(BOTH) $(COMMUNICATION) + +CSVC_OBJ=util/cservice.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +CCO_OBJ=util/ccontrol.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +%.o: %.c + $(CC) -c -o $@ $< + +# +# End user target +# +#all: cinit cservice ccontrol sizecheck docs +#all: $(BIN) +all: cinit + +# +# First do configuration, so we include the right variables +# +Makefile: .configured + +.configured: ../conf/* + @../bin/cinit.configure.os + @../bin/cinit.configure.tools + @../bin/cinit.configure.ipc + @../bin/cinit.configure.mark + +$(CINIT_OBJ): $(CONFIG_H) + + +$(CONFIG_H): ../conf/* + ../scripts/cinit.mkheader > $(CONFIG_H) + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +ccontrol: $(SBIN)/ccontrol + +$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) + $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ + $(STRIP) $@ + +install: install-dir cinit cservice ccontrol + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + + +################################################################################ +# +# Build targets +# +cinit: $(CINIT_OBJ) + $(LD) $^ -o $@ + +################################################################################ +# +# Generic targets +# + +.PHONY: dist +dist: distclean + +.PHONY: distclean +distclean: clean + rm -f os/current ipc/current + +.PHONY: clean +clean: + rm -f ../tmpbin/*.configured + rm -f $(BIN) diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/Makefile.tests b/software/cinit/browse_source/cinit-0.3pre6/src/Makefile.tests new file mode 100644 index 00000000..0f4b4626 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/Makefile.tests @@ -0,0 +1,27 @@ +# +# Makefile for cinit tests +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +TEST_BUILD_ARGV=test/test_build_argv.o core/build_argv.o + +PROGS=test_build_argv test_build_argv_link + +tests: $(PROGS) + +test_build_argv: test/test_build_argv.o core/build_argv.o +test_build_argv_link: test/test_build_argv+link.o core/build_argv.o + +test_gen_svc_tree: test/test_gen_svc_tree.o svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/gen_svc_tree.o \ + generic/mini_printf.o \ + svc/list_display_all.o + +test_openreadclose: test/test_openreadclose.o generic/openreadclose.o diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/ancient/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre6/src/ancient/run_init_svc.c new file mode 100644 index 00000000..f41c1f4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/ancient/run_init_svc.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/core/build_argv.c b/software/cinit/browse_source/cinit-0.3pre6/src/core/build_argv.c new file mode 100644 index 00000000..85238d47 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/core/build_argv.c @@ -0,0 +1,170 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Build **argv for execution in cinit way: + * 1. check whether cmd is a valid executable + * 2. try to read cmd.params and write parameters + * 3. try to read cmd.env and setup environment + * + * Returns: + * BA_OK: Everything went well, you can use the struct + * BA_NOTFOUND: Binary executable is not available + * BA_PARAMS: Reading the parameters failed (ignoring non-existence!) + * BA_ENV: Reading the environment failed (same as above) + * BA_OTHER: Other error + */ + +#include /* open() */ +#include /* *alloc() */ +#include /* readlink */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* NULL */ +#include /* strchr */ +#include /* stat() */ + +#include "cinit.h" +#include "build_argv.h" + + /* + * char *basename: something we should execute + * (*basename) + ".params" will be added as parameters + * (*basename) + ".env" will be added as environment + */ + +int cinit_build_argv(char *basename, struct ba_argv *bav) +{ + int tmp; + int argc; + char pathtmp[PATH_MAX+1]; + char *sbuf = NULL; + char *p; + + /* sane values */ + bav->argv = NULL; + bav->envp = NULL; + + mini_printf("CBA::",1); + mini_printf(basename,1); + mini_printf("\n",1); + + /*********************************************************************** + * Try to get realname (for links) + */ + if((tmp = readlink(basename,pathtmp,PATH_MAX)) == -1) { + /* nothing there? */ + if(errno == ENOENT) { + return BA_E_NOTFOUND; + } + if (errno != EINVAL) { + return BA_E_OTHER; + } + tmp=strlen(basename); + strncpy(pathtmp,basename,tmp); + } + pathtmp[tmp] = '\0'; + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /*********************************************************************** + * prepare argv0 + */ + bav->argv = malloc(sizeof(char *)); + if(bav->argv == NULL) return BA_E_MEM; + + *bav->argv = malloc(tmp); + if(*(bav->argv) == NULL) return BA_E_MEM; + + strncpy(*(bav->argv),pathtmp,tmp); + + /********************** read params *********************/ + /* FIXME check bounds! */ + strcpy(pathtmp,basename); + strcat(pathtmp,C_PARAMS); + /* ORC_ERR_NONEXISTENT: Ok, have sbuf set to NULL + * ORC_OK: Ok, have a filled buffer (perhaps NULL, too) + * other: Error, print errno + */ + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /*********************************************************************** + * Now split the string, converting \n to \0 + */ + argc = 1; /* argv0 */ + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = sbuf; /* here begins the current argument */ + + if(p != NULL) { /* found another \n */ + *p = '\0'; + sbuf = p+1; + } else { /* end of string */ + sbuf = NULL; + } + + ++argc; + } + + /************ close argv list **************/ + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,basename); + strcat(pathtmp,C_ENV); + + tmp = argc = 0; + sbuf = NULL; + + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /************** build environment string **************/ + argc = 0; + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) return BA_E_MEM; + + bav->envp[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + sbuf = p+1; + } else { + sbuf = NULL; + } + ++argc; + } + + /************ close env list **************/ + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) { + return BA_E_MEM; + } + bav->envp[argc] = NULL; + + return BA_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/core/cinit.c b/software/cinit/browse_source/cinit-0.3pre6/src/core/cinit.c new file mode 100644 index 00000000..d2e48e95 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/core/cinit.c @@ -0,0 +1,90 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The main file + * + */ + +#include /* getpid,chdir */ +#include /* str(ncmp,len,cpy,cat) */ +#include /* perror */ +#include /* malloc */ + +#include "cinit.h" /* general things */ +#include "messages.h" /* messages */ +#include "ipc.h" /* general ipc methods */ +#include "svc.h" /* gen_svc_tree */ + +struct listitem *svc_list = NULL; +struct dep *svc_init = NULL; + +int main(int argc, char **argv) +{ + char *initdir; +// pid_t cpid; + + initdir = CINIT_INIT; /* default init dir */ + + /* FIXME: RE-ENABLE as SOON AS PRODUCTIVE cpid = getpid(); + * Is this really needed or should we lock() ourselves? + if(cpid != 1) { + mini_printf(CINIT_VERSION,2); + mini_printf(MSG_USAGE,2); + return 0; + }*/ + + set_signals(ACT_SERV); + + /* Look whether we should start a profile */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_SVCDIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_SVCDIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* FIXME: do we really need three calls? */ + mini_printf(MSG_BOOTING,1); mini_printf(initdir,1); mini_printf("\n",1); + + if(chdir(initdir) == -1) { + print_errno(initdir); + panic(); + } + + /* initialize ipc method */ + if(!cinit_ipc_init()) { + panic(); + } + + /* pre-calculate service tree */ + gen_svc_tree(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* start tree from the bottom */ + if(!tree_exec(svc_init)) return 1; + + mini_printf("=> cinit started.\n",1); + + /* listen for incomming messages: should never return */ + if(!cinit_ipc_listen()) { + panic(); + } + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/core/do_reboot.c b/software/cinit/browse_source/cinit-0.3pre6/src/core/do_reboot.c new file mode 100644 index 00000000..99be5746 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/core/do_reboot.c @@ -0,0 +1,74 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "ipc.h" +#include "cinit.h" +#include "os.h" +#include "messages.h" + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void do_reboot(int signal) +{ + //struct listitem *tmp; + struct timespec ts; + //char **cmd; + //int i; + + /* shutdown all services: take care about the dependency tree */ + + /* do not listen to client requests anymore + * FIXME: perhaps before shutdown? */ + cinit_ipc_destroy(); + + /* now: all services are down, let's kill all other processes */ + if( kill(-1,SIGTERM) == -1) { + print_errno(MSG_TERMKILL); + } + + /* FIXME make SLEEP_KILL an optional configuration statement */ + ts.tv_sec = SLEEP_KILL; /* defined in conf/sleep_kill */ + ts.tv_nsec = 0; + nanosleep(&ts,NULL); + + if( kill(-1,SIGKILL) == -1) { + print_errno(MSG_KILLBILL); + } + + /* execute umount, as defined in conf/umount */ + + /* execute_sth(CINIT_UMOUNT); */ + + /* do what we really wanted to do */ + switch(signal) { + case SIGTERM: /* power off */ + LOG(MSG_POWER_OFF); + cinit_poweroff(); + break; + case SIGHUP: /* reboot */ + LOG(MSG_REBOOT); + cinit_reboot(); + break; + case SIGUSR1: /* halt */ + LOG(MSG_HALT); + cinit_halt(); + break; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/core/objects b/software/cinit/browse_source/cinit-0.3pre6/src/core/objects new file mode 100644 index 00000000..9596d171 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/core/objects @@ -0,0 +1,7 @@ +core/build_argv.o +core/cinit.o +core/panic.o +core/run_init_svc.o +core/set_signals.o +core/do_reboot.o +core/sig_child.o diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/core/panic.c b/software/cinit/browse_source/cinit-0.3pre6/src/core/panic.c new file mode 100644 index 00000000..2c4d8213 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/core/panic.c @@ -0,0 +1,30 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something + */ + +#include "cinit.h" +#include + +void panic(void) +{ + char *nargv[2]; + + execute_sth(CINIT_PANIC); + + /*********************************************************************** + * THIS SHOULD NOT HAPPEN, fallback to hardcoded sulogin + * (conf/sulogin) + */ + nargv[0] = SULOGIN; + nargv[1] = NULL; + + execv(SULOGIN,nargv); + + /* there's nothing todo, if everything fails */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/core/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre6/src/core/run_init_svc.c new file mode 100644 index 00000000..b613ed6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/core/run_init_svc.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include /* _exit, fork */ + +#include "cinit.h" +#include "messages.h" +#include "ipc.h" + +int run_svc(char *rpath) { rpath = "test"; return 0; } /* a hack to compile cinit for now */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + if(!cinit_ipc_logon()) _exit(1); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/core/run_svc.c b/software/cinit/browse_source/cinit-0.3pre6/src/core/run_svc.c new file mode 100644 index 00000000..95cc324d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/core/run_svc.c @@ -0,0 +1,131 @@ +/* + * (c) 2005 Nico Schottelius (nico-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +#error "needs to be cleaned up" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + print_errno(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + print_errno(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/core/set_signals.c b/software/cinit/browse_source/cinit-0.3pre6/src/core/set_signals.c new file mode 100644 index 00000000..fc744794 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/core/set_signals.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2006-2006 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Define signal handlers + */ + + +#include /* sigaction */ +#include /* NULL */ +#include "cinit.h" /* defines */ + +void set_signals(int action) +{ + struct sigaction sa; + + if(action == ACT_SERV) { + sa.sa_handler=sig_child; + } else { + sa.sa_handler=SIG_DFL; + } + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + if(action == ACT_SERV) { + sa.sa_handler=do_reboot; + } + sigaction(SIGHUP,&sa,NULL); /* reboot */ + sigaction(SIGTERM,&sa,NULL); /* poweroff */ + sigaction(SIGUSR1,&sa,NULL); /* halt */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/core/sig_child.c b/software/cinit/browse_source/cinit-0.3pre6/src/core/sig_child.c new file mode 100644 index 00000000..c31be094 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/core/sig_child.c @@ -0,0 +1,70 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The child handler + * + */ + +#include /* FIXME: check headers (->Posix!) */ +#include +#include /* NULL */ + +#include /* sigaction */ +#include "cinit.h" /* */ +#include "svc.h" /* list_search_pid */ +#include "messages.h" /* messages */ + +/*********************************************************************** + * sig_child: (c)collect the children + */ +void sig_child(int tmp) +{ + /* New code: + * - search for pid in service list + * * if (respawn) -> start new + * - insert delay? if exit code is non-zero? if uptime too less? + * * if (once) -> update service status + * * else ignore, but reap away + */ + struct listitem *svc; + struct sigaction sa; + + /* do not interrupt us or anything we might call */ + sa.sa_handler = SIG_IGN; + sigaction(SIGCHLD,&sa,NULL); + + while((tmp = waitpid(-1, &tmp, WNOHANG)) > 0) { + /* check if it's a watched child */ + svc = list_search_pid((pid_t) tmp); + + if(svc != NULL) { + /* Check, that we are operating on it =. that it is no normal child */ + if(svc->status & ST_ONCE_RUN + || svc->status & ST_SH_RESPAWN + || svc->status & ST_RESPAWNING) { + if(WIFEXITED(tmp) && !WEXITSTATUS(tmp)) { + svc_success(svc); + svc_report_status(svc->abs_path,MSG_SVC_OK,NULL); + } else { + svc_fail(svc); + svc_report_status(svc->abs_path,MSG_SVC_FAIL,NULL); + } + } + + /* respawn: restart */ + if(svc->status == ST_RESPAWNING) { + svc_report_status(svc->abs_path,MSG_SVC_RESTART,NULL); + svc_start(svc); + } + } else { + /* FIXME remove in production version */ + mini_printf("Cleanup: reparenting\n",1); + } + } + + sa.sa_handler = sig_child; + sigaction(SIGCHLD,&sa,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/generic/execute_sth.c b/software/cinit/browse_source/cinit-0.3pre6/src/generic/execute_sth.c new file mode 100644 index 00000000..7eea8d52 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/generic/execute_sth.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Executes something: replaces us + */ + +#include /* _exit */ +#include "cinit.h" +#include "build_argv.h" + +void execute_sth(char *basename) +{ + int tmp; + struct ba_argv bav; + + mini_printf("ES::",1); + mini_printf(basename,1); + mini_printf("\n",1); + + tmp = cinit_build_argv(basename,&bav); + if((tmp = cinit_build_argv(basename,&bav)) != BA_OK) { + if(tmp != BA_E_MEM) { /* do not print something on memory errors */ + print_errno(basename); + } + _exit(1); + } + + execve((bav.argv)[0],bav.argv,bav.envp); + print_errno(basename); + _exit(1); /* simply exit non-zero. That's enough for cinit to recognize + it as faulty */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/generic/file_exists.c b/software/cinit/browse_source/cinit-0.3pre6/src/generic/file_exists.c new file mode 100644 index 00000000..4327c715 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/generic/file_exists.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * check whether file exists and is a file + */ + +#include /* FIXME: check headers against posix */ +#include +#include + +#include /* errno */ +#include "cinit.h" + +int file_exists(char *filename) +{ + struct stat buf; + + if(stat(filename,&buf) == -1) { + if(errno == ENOENT) { + return FE_NOT; + } else { + print_errno(filename); + return FE_ERR; + } + } else { + if(!S_ISREG(buf.st_mode)) { + return FE_OTHER; + } + } + + return FE_FILE; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre6/src/generic/mini_printf.c new file mode 100644 index 00000000..b3139349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/generic/mini_printf.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Print the world! + * + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) return; + + p = str; + while ( *p ) p++; + + write(fd,str,(size_t) (p - str) ); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/generic/objects b/software/cinit/browse_source/cinit-0.3pre6/src/generic/objects new file mode 100644 index 00000000..f22ea6fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/generic/objects @@ -0,0 +1,7 @@ +generic/execute_sth.o +generic/mini_printf.o +generic/path_absolute.o +generic/path_append.o +generic/print_errno.o +generic/openreadclose.o +generic/strip_final_newline.o diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/generic/openreadclose.c b/software/cinit/browse_source/cinit-0.3pre6/src/generic/openreadclose.c new file mode 100644 index 00000000..63d8cf47 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/generic/openreadclose.c @@ -0,0 +1,71 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * read a file + * + */ + +#include /* open, read, close */ +#include /* strncpy */ +#include /* realloc */ +#include /* errno */ +#include /* NULL */ +#include /* open */ +#include "cinit.h" + +int openreadclose(char *filename, char **where) +{ + + int tmp; + int cnt; + int fd; + char buf[512]; + + mini_printf("ORC:",1); + mini_printf(filename,1); + mini_printf("\n",1); + *where = NULL; + + while((fd = open(filename,O_RDONLY)) == -1) { + if(errno == ENOENT) return ORC_ERR_NONEXISTENT; + if(errno != EINTR) return ORC_ERR_OPEN; + } + + cnt = 0; + while (1) { + tmp = read(fd,buf,512); + + if(tmp == -1) { + if(errno == EINTR) + continue; + else + return ORC_ERR_READ; + } else if(tmp == 0) { + break; + } + + cnt += tmp; + *where = realloc(*where,cnt + 1); + if(*where == NULL) return ORC_ERR_MEM; + + /* FIXME check correctness of copied buffer... + * and get some sleep..soon, very soon! */ + strncpy(&(*where)[cnt-tmp],buf,tmp); + mini_printf("ORC: ",1); + mini_printf(buf,1); + mini_printf("\n",1); + } + + while((fd = close(fd)) == -1) { + if(errno == EINTR) continue; + return ORC_ERR_CLOSE; + } + + /* terminate string! */ + (*where)[cnt] = '\0'; + + return ORC_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/generic/path_absolute.c b/software/cinit/browse_source/cinit-0.3pre6/src/generic/path_absolute.c new file mode 100644 index 00000000..691a3a38 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/generic/path_absolute.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create an absulte path + */ + +#include /* chdir(),getcwd */ +#include /* PATH_MAX */ +#include "cinit.h" /* print_errno */ +#include "messages.h" /* print_errno */ + +int path_absolute(char *relpath, char *newpath, size_t size) +{ + char oldpath[PATH_MAX+1]; + + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + if(chdir(relpath) == -1) { + print_errno(relpath); + return 0; + } + + if(!getcwd(newpath,size)) { + print_errno(relpath); + return 0; + } + + if(chdir(oldpath) == -1) { + print_errno(oldpath); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/generic/path_append.c b/software/cinit/browse_source/cinit-0.3pre6/src/generic/path_append.c new file mode 100644 index 00000000..c6617ba9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/generic/path_append.c @@ -0,0 +1,28 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create path to needs + */ + +#include /* strlen */ +#include /* PATH_MAX */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +int path_append(char *path, char *append) +{ + size_t end = strlen(path); + + if(strcmp(&path[end-1],SLASH)) { + if((end + strlen(SLASH) + strlen(append)) > PATH_MAX) return 0; + strcat(path,SLASH); + } else { + if((end + strlen(append)) > PATH_MAX) return 0; + } + strcat(path,append); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/generic/print_errno.c b/software/cinit/browse_source/cinit-0.3pre6/src/generic/print_errno.c new file mode 100644 index 00000000..7415d556 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/generic/print_errno.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * stolen from tcpserver_blocker + * + * Author: Nico Schottelius + * Date: 2006-08-24 + * + * Print the error found in errno + */ + +#include /* strerror */ +#include /* errno */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +void print_errno(char *msg) +{ + if(msg) { + mini_printf(msg, FD_ERR); + mini_printf(": ", FD_ERR); + } + mini_printf(strerror(errno), FD_ERR); + mini_printf("\n", FD_ERR); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/generic/strip_final_newline.c b/software/cinit/browse_source/cinit-0.3pre6/src/generic/strip_final_newline.c new file mode 100644 index 00000000..d9c12f05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/generic/strip_final_newline.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * If the last character is \n, shrink the memory and remove it + * + */ + +#include /* NULL */ +#include /* strchr */ +#include /* alloc */ +#include "cinit.h" /* FIXME debug */ + +char *strip_final_newline(char *str) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) { + mini_printf("SFN: NULL\n",1); + return NULL; + } + + p = strrchr(str,'\n'); + if(p) { + if(*(p+1) == '\0') { + str = realloc(str,(p-str)); + } + } + + return str; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/generic/usage.c b/software/cinit/browse_source/cinit-0.3pre6/src/generic/usage.c new file mode 100644 index 00000000..87d62c73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/generic/usage.c @@ -0,0 +1,23 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * usage: tell the world what we want - seriously no capitalism + * + */ + +#include +#include "cinit.h" + +/*********************************************************************** + * usage: tell the user what's wrong and a help text + */ +void usage(char *banner, char *text) +{ + /* print banner + error message */ + mini_printf(banner,1); + mini_printf(text,1); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/include/build_argv.h b/software/cinit/browse_source/cinit-0.3pre6/src/include/build_argv.h new file mode 100644 index 00000000..b61b27a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/include/build_argv.h @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * build **argv + */ + +#ifndef CINIT_BA_HEADER +#define CINIT_BA_HEADER + +/***************************************************************************** + * Defines: return values + */ +enum { + BA_OK, + BA_E_NOTFOUND, + BA_E_PARAMS, + BA_E_ENV, + BA_E_MEM, + BA_E_OTHER +}; + +/***************************************************************************** + * Structures + */ +struct ba_argv { + char **argv; + char **envp; +}; + +/***************************************************************************** + * Functions + */ +int cinit_build_argv(char *basename, struct ba_argv *bav); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/include/cinit.h b/software/cinit/browse_source/cinit-0.3pre6/src/include/cinit.h new file mode 100644 index 00000000..80289acd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/include/cinit.h @@ -0,0 +1,109 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_H +#define _CINIT_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/*********************************************************************** + * Defines + */ +#define SLASH "/" +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC + +enum { /* FIXME: there are some default defines somewhere for that */ + FD_IN=0, + FD_OUT=1, + FD_ERR=2 +}; + +enum { /* returns of openreadclose */ + ORC_OK, + ORC_ERR_NONEXISTENT, + ORC_ERR_OPEN, + ORC_ERR_READ, + ORC_ERR_CLOSE, + ORC_ERR_MEM +}; + +/* values for execute_sth: + * STRICT: print and error, if .../on does not exist + * NOSTRICT: no .../on is fine + */ +enum { + EXEC_STRICT, + EXEC_NOSTRICT +}; + +enum { + FE_FILE, /* file exists and is a file */ + FE_OTHER, /* file exists, but is no file */ + FE_NOT, /* file does not exist */ + FE_ERR /* some error occured */ +}; + +/*********************************************************************** + * Paths + */ +#define CINIT_SVCDIR CINIT_DIR SLASH SVCDIR +#define CINIT_INIT CINIT_SVCDIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK +#define CINIT_BIN PREFIX SLASH "sbin" SLASH "cinit" + +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC +#define CINIT_UMOUNT CINIT_CONFDIR SLASH C_UMOUNT + +/* actions for i/o handlers (see comm/do_*) */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* functions (used by server and client) */ +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +void usage(char *banner, char *stext); + +int do_svc_name(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* core functions */ +void do_reboot(int signal); +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +int msg_svc_on_off(char *svc, char action); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +pid_t respawn_svc(char *abspath); +char **read_file(char *file); +void sig_terminate(int signal); + +/* generic */ +void execute_sth(char *basename); +int path_append(char *path, char *append); +int path_absolute(char *relpath, char *buf, size_t size); +int openreadclose(char *filename, char **where); +char *strip_final_newline(char *str); +int file_exists(char *filename); + +/* util */ +int msg_reboot(char cmd); +void print_errno(char *text); + +/* os-functions */ +void cinit_reboot(void); +void cinit_halt(void); +void cinit_poweroff(void); + +#endif /* _CINIT_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/include/comm.h b/software/cinit/browse_source/cinit-0.3pre6/src/include/comm.h new file mode 100644 index 00000000..b9aaf60f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/include/comm.h @@ -0,0 +1,69 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#ifndef CINIT_COMM_HEADER +#define CINIT_COMM_HEADER + +#include /* PATH_MAX */ + +/*********************************************************************** + * Commands the clients may issue to us + * maximum number of commands: 2^8 = 256 + */ +enum commands { + CMD_START_SVC=1, /* the client wants US to start a service */ + CMD_START_SVC_ONLY, /* start this service without dependencies */ + CMD_STOP_SVC, /* stop svc and all svcs that need it */ + CMD_STOP_SVC_ONLY, /* we should stop _only_ this service */ + CMD_STOP_SVC_WANTS, /* stop svc, all svcs that need or want it */ + CMD_CHG_STAT, /* the client reports a status change */ + CMD_RESCUE, /* we should start the rescue mode */ + CMD_HALT, /* halt the system */ + CMD_REBOOT, /* reboot the system */ + CMD_POWEROFF, /* poweroff the system */ + CMD_WBOOT, /* shutdown and restart everything */ + CMD_INFO /* send information about that service */ +}; + +/* old + RT_ERR_COMM, * communication failed * + RT_ERR, * service starting failed * + RT_UNSPEC, * some kind of error, unspecified * + RT_SUCCESS, * successfully started: respawning or once * + RT_SVC_FAILED, * tried earlier, service failed, won't retry * + +*/ + +/*********************************************************************** + * messages from the client + * Prefix: qst_ (question) + */ +struct msg_client { + pid_t pid; /* pid of the telling client */ + char cmd; /* which cmd is issued to us */ + char status; /* status of the service */ + char svc[PATH_MAX]; /* name of the service */ + char svc_orig[PATH_MAX]; /* the service, which wants to start us */ +}; + +/*********************************************************************** + * messages from the server + * Prefix: asw_ (answer) + */ + +/*********************************************************************** + * return short status + */ +struct asw_sstatus { + long mtype; + char status; + char msg[PATH_MAX]; +}; + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/include/ipc.h b/software/cinit/browse_source/cinit-0.3pre6/src/include/ipc.h new file mode 100644 index 00000000..66b3bc86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/include/ipc.h @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Prototypes for ipc handler + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +/***************************************************************************** + * Functions: in server + */ +int cinit_ipc_init(void); /* init in init */ +int cinit_ipc_listen(void); /* listen in init */ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + +/***************************************************************************** + * Functions: in clients + */ +int cinit_ipc_logon(void); /* logon to init (client init) */ +int cinit_ipc_connect(void); /* connect to init */ +int cinit_ipc_csend(void *data); /* send to the server from a client */ + +/***************************************************************************** + * Functions: shared + */ + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/include/listing b/software/cinit/browse_source/cinit-0.3pre6/src/include/listing new file mode 100644 index 00000000..df30f408 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/include/listing @@ -0,0 +1,5 @@ +include/cinit.h +include/config.h +include/ipc.h +include/messages.h +include/os.h diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/include/messages.h b/software/cinit/browse_source/cinit-0.3pre6/src/include/messages.h new file mode 100644 index 00000000..e74d5b0a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/include/messages.h @@ -0,0 +1,113 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_MSG_H +#define _CINIT_MSG_H + +/* version */ +#define CINIT_VERSION "cinit-" VERSION +#define MSG_BOOTING CINIT_VERSION ": Booting from " + +#define MSG_DP ": " + +/* Messages to the outside */ +#define MSG_BIND "bind" +#define MSG_CONNECT "connect" +#define MSG_FCNTL "fcntl" +#define MSG_KILLBILL "sigkill" +#define MSG_LISTEN "listen" +#define MSG_SOCKET "socket" +#define MSG_TERMKILL "sigterm" +#define MSG_USAGE_1 ": fast executing, small and simple init " +#define MSG_USAGE_2 "with support for profiles\n" +#define MSG_USAGE_3 "\nError: cinit must be started as PID 1.\n" +#define MSG_USAGE MSG_USAGE_1 MSG_USAGE_2 MSG_USAGE_3 +#define MSG_ERR_FORK "fork" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_OPEN "open" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_READ "read" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" + +#define MSG_ERR_DEPS "Too many dependencies" +#define MSG_ERR_ACCEPT "accept" +#define MSG_ERR_WAITPID "waitpid" +#define MSG_ERR_POLL "poll" +#define MSG_ERR_MODIFY "modify list failed" +#define MSG_ERR_COMM "Communication failed" + +#define MSG_ERR_LESS_ARGS "Too less arguments!" +#define MSG_ERR_BAD_ARGS "Wrong arguments / parameter" +#define MSG_ERR_ARGS_LEN "Wrong parameter length" + +#define LOG_SVC_STOPED "Service stoped" +#define LOG_SVC_ONCE "Started once" +#define LOG_SVC_RESPAWN "Respawns now" +#define LOG_NEED_FAIL "One or more need failed" +#define LOG_SVC_FAILED "Service already failed, not starting." +#define LOG_SVC_NOTEXIST "Service does not exist" + +#define MSG_START_SVC "Starting " +#define MSG_STOP_SVC "Stoping " +#define MSG_EXEC_FAILED "Failed to execute " + +#define MSG_POWER_OFF "Powering off..." +#define MSG_HALT "Halting system ..." +#define MSG_REBOOT "Rebooting ..." +#define MSG_RESCUE "Switching to rescue mode ..." +#define MSG_UPDATE "Updating cinit ..." +#define MSG_HOT_REBOOT "Hot reboot in progress ..." + +#define MSG_SHOULD_NOT_HAPPEN "This should not happen, I do not know what todo!" + +/* DEBUG */ +#ifdef DEBUG +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) +#endif + +/* macros */ +#define SERVICE_LOG(svc,message) { \ + mini_printf(svc,1); \ + mini_printf(MSG_DP,1); \ + mini_printf(message,1); \ + mini_printf("\n",1); \ +} +#define LOG(s) { \ + mini_printf(s,1); \ + mini_printf("\n",1); \ +} +#define P_START_SERVICE(name) { mini_printf(MSG_START_SVC,1); mini_printf(name,1); mini_printf("\n",1); } +#define P_EXEC_FAILED(name) { mini_printf(MSG_EXEC_FAILED,1); mini_printf(name,1); mini_printf("\n",1); } + +/* NEW (clean) Service status: Messages to the outside */ +#define MSG_INTRO_OK "[SUCCESS] " +#define MSG_INTRO_FAIL "[FAILED] " +#define MSG_INTRO_CINIT "[CINIT] " +#define MSG_INTRO_RESPAWN "[RESPAWN] " +#define MSG_INTRO_SVC "[SERVICE] " + +#define MSG_SVC_FORK "fork() failed" +#define MSG_SVC_NEED_FAIL MSG_INTRO_FAIL "Needs failed for service" +#define MSG_SVC_FAIL MSG_INTRO_FAIL "Service failed!" +#define MSG_SVC_OK MSG_INTRO_OK "Service successfully executed." +#define MSG_SVC_RESTART MSG_INTRO_RESPAWN "Restarting service." +#define MSG_SVC_START "Starting service." + +#define MSG_TREE_EXEC MSG_INTRO_CINIT "Execution of reverse service tree\n" +//#define MSG_GEN_TREE MSG_INTRO_CINIT "Generating service tree...\n" + +/* general errors */ +#define MSG_GETCWD "Getcwd failed! Your system is most likely broken!" + +#endif /* _CINIT_MSG_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/include/os.h b/software/cinit/browse_source/cinit-0.3pre6/src/include/os.h new file mode 100644 index 00000000..e36d5a8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/include/os.h @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * os specific functions + */ + +#ifndef CINIT_OS_HEADER +#define CINIT_OS_HEADER + +/***************************************************************************** + * Functions + */ +void cinit_halt(void); +void cinit_poweroff(void); +void cinit_reboot(void); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/include/svc.h b/software/cinit/browse_source/cinit-0.3pre6/src/include/svc.h new file mode 100644 index 00000000..d7459be7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/include/svc.h @@ -0,0 +1,128 @@ +/*********************************************************************** + * + * 2006,2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + + +#ifndef _CINIT_SVC_H +#define _CINIT_SVC_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* service list */ +struct listitem { + struct listitem *prev; /* previous item */ + struct listitem *next; /* next item */ + + char *abs_path; /* name of service */ + long int status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + + + struct dep *wanted; /* list of services that want this service */ + struct dep *needed; /* list of services that need this service */ + + struct dep *wants; /* list of services that this service wants */ + struct dep *needs; /* list of services that this service needs */ +}; + +/* list of dependencies */ +struct dep { + struct dep *prev; + struct dep *next; + struct listitem *svc; +}; + +/* variables */ +extern struct dep *svc_init; /* the services to start */ +extern struct listitem *svc_list; /* the list of services */ + +/* list functions */ +struct listitem *list_insert(char *path, int status); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); +struct listitem *list_search(char *path); +struct listitem *list_search_pid(pid_t pid); +int list_display_all(); + + +/* service */ +struct listitem *svc_create(char *svc); +struct listitem *gen_svc_tree(char *svc); +int check_add_deps(struct listitem *svc, int type); +void dep_entry_add(struct dep **list, struct dep *new); +struct dep *dep_entry_del(struct dep *del); +int tree_exec(struct dep *start); +int svc_set_status(struct listitem *li, int status); +int svc_should_respawn(struct listitem *li); +int svc_needs_status(struct listitem *li); +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type); +struct dep *dep_create(struct listitem *svc); +void svc_success(struct listitem *li); +void svc_fail(struct listitem *li); +void svc_report_status(char *svc, char *msg, char *err); +void svc_start(struct listitem *li); + + + +/*********************************************************************** + * to decide whether to operate on needs or wants + */ +enum dep_types { + DEP_WANTS, + DEP_NEEDS +}; + +/*********************************************************************** + * status of a service and return codes - errors and success + */ +enum svc_status_old { + ST_TMPNOW=1, /* the client is now starting the service NEEDED??? */ + ST_NOTEXIST, /* service does not exist */ + + ST_NEED_FAIL, /* failed to start a need for this service */ + ST_FAIL, /* failed to start service */ + + ST_OFF, /* service is off */ + ST_OFF_ALL, /* service and those that need it are off */ + ST_OFF_ALL_F, /* same, but something failed */ + ST_OFF_WANTS, /* service + those that need or want it are off */ + ST_OFF_WANTS_F, /* same, but something failed */ + + ST_TMP, /* currently working on it */ + ST_ONCE, /* executed once */ + ST_RESPAWN /* running and respawning */ +}; + +/*********************************************************************** + * The real status types a service may have (ignore above) + * We have 32 Bits, we should use them ;-) + */ +enum svc_status { + /* first define basics */ + ST_SH_ONCE = 0x1, /* service SHould be started once */ + ST_SH_RESPAWN = 0x2, /* service SHould respawn */ + ST_ONCE_OK = 0x4, /* service was successfully started once */ + ST_ONCE_FAIL = 0x8, /* service failed to start */ + ST_RESPAWNING = 0x10, /* service is respawning */ + ST_NEED_FAILD = 0x20, /* this service is not started, need failed */ + ST_IN_LIST = 0x40, /* this service is being started (= in list) */ + ST_BAD_ERR = 0x80, /* some kind of error that SHOULD NOT happen */ + ST_ONCE_RUN = 0x100 /* the once process is currently running */ +}; + +/*********************************************************************** + * Possibilities the needs of a service may have + */ +enum svc_needs_status { + SNS_NEEDS_STARTED = 1, /* all needs are started. We may start, too */ + SNS_NEEDS_FAILED, /* one ore more needs failed */ + SNS_NEEDS_UNFINISHED /* one ore more needs are not yet started */ +}; +#endif /* _CINIT_SVC_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/README.text b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/README.text new file mode 100644 index 00000000..c9a1acf2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/README.text @@ -0,0 +1,20 @@ +cinit/src/ipc/msgq: About this msqg implementation +=================================================== +Nico Schottelius +0.1, Initial Version from 2006-08-04 +:Author Initials: NS + +Intro here + +Introduction +------------ + +cinit opens a + +Files +----- +- README.text: This file +- cinit_init_ipc.c: Init +msgq.h +objects + diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_connect.c b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_connect.c new file mode 100644 index 00000000..a744980c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_connect.c @@ -0,0 +1,70 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel */ + k_in = ftok(IPC_KEY,IPC_IN); + k_out = ftok(IPC_KEY,IPC_OUT); + + if(k_in == -1 || k_out == -1) { + perror("ftok"); + exit(1); + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + perror("msgget"); + exit(1); + } + + /* wrong tabsto ;-) */ +while (1) { + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror("msgrcv"); + exit(1); + } + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_csend.c b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_csend.c new file mode 100644 index 00000000..43a0012f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_csend.c @@ -0,0 +1,62 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_logon(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(IPC_KEY,IPC_OUT); + k_out = ftok(IPC_KEY,IPC_IN); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_destroy.c b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_destroy.c new file mode 100644 index 00000000..299885c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_destroy.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Destory ipc mechanism, cinit is gonna die soon. + * + */ + +#include /* msgget */ +#include /* NULL */ + +#include "msgq.h" /* mq_in, mq_out */ +#include "cinit.h" /* print_errno */ + +void cinit_ipc_destroy(void) +{ + if(msgctl(mq_in,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } + if(msgctl(mq_out,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_init.c new file mode 100644 index 00000000..9ae072a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_init.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include /* ftok */ +#include /* msgget */ +#include /* msgget */ + +#include "cinit.h" +#include "config.h" +#include "msgq.h" + +int cinit_ipc_init(void) +{ + key_t k_tmp; + + /* to_server */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + if(k_tmp == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + mq_in = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_in == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + /* to_client */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + if(k_tmp == -1) { + perror(MSG_MSGQ_FTOK); + return 0; + } + mq_out = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_out == -1) { + perror(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_listen.c new file mode 100644 index 00000000..d21e561e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_listen.c @@ -0,0 +1,47 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ +#include /* perror */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + + struct msg_client m_client; + + while (1) { + /* FIXME: change msg structure */ + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror(MSG_MSGQ_MSGRCV); + } + + printf("pid: %d, m_client\n",m_client.pid); + + /* use pid as the message type + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + return 0; + } */ + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_logoff.c b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_logoff.c new file mode 100644 index 00000000..a744980c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_logoff.c @@ -0,0 +1,70 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + key_t k_in, k_out; + int mq_in = 0, mq_out = 0; + int tmp = 0; + + struct msg_client m_client; + struct msg_server m_serv; + + /* generiere nen schluessel */ + k_in = ftok(IPC_KEY,IPC_IN); + k_out = ftok(IPC_KEY,IPC_OUT); + + if(k_in == -1 || k_out == -1) { + perror("ftok"); + exit(1); + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + perror("msgget"); + exit(1); + } + + /* wrong tabsto ;-) */ +while (1) { + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + perror("msgrcv"); + exit(1); + } + + printf("pid: %d, m_client: %s\n",m_client.pid,m_client.text); + + /* use pid as the message type */ + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + exit(1); + } +} /* while */ + + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_logon.c b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_logon.c new file mode 100644 index 00000000..08c0e252 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_logon.c @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "cinit.h" /* print_errno */ +#include "msgq.h" + +int cinit_ipc_logon(void) +{ + key_t k_in, k_out; /* FIXME: remove one variable */ + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + k_out = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_sclose.c b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_sclose.c new file mode 100644 index 00000000..69165e4d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/cinit_ipc_sclose.c @@ -0,0 +1,14 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Close the ressources from the server, clean state for forks. + * + */ + +int cinit_ipc_sclose(void) +{ + return 1; /* nothing to do when using message queues */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/msgq.h b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/msgq.h new file mode 100644 index 00000000..01c6e769 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/msgq.h @@ -0,0 +1,52 @@ +/* + * (c) 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * part of cinit + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +#include /* structures */ + +/*********************************************************************** + * configuration + */ + +#define MSGQ_PATHNAME "/bin/sh" /* should be on every *nix */ +#define MSGQ_TO_SERVER 'i' /* also for ftok */ +#define MSGQ_TO_CLIENT 'o' /* also for ftok */ +#define MSGQ_PERMS 0660 /* queue permissions */ + +/*********************************************************************** + * global variables + */ +int mq_in; /* input */ +int mq_out; /* output */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + pid_t pid; + struct msg_client msg; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server_short { + long mtype; + struct asw_sstatus answer; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_FTOK "ftok" +#define MSG_MSGQ_MSGGET "msgget" +#define MSG_MSGQ_MSGRCV "msgrcv" +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/objects b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/objects new file mode 100644 index 00000000..7c99d09f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/msgq/objects @@ -0,0 +1,5 @@ +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c new file mode 100644 index 00000000..88c310f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c @@ -0,0 +1,125 @@ +/* + * (c) 2005, 2006 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * create a socket, when we recieved a signal + */ +int main(int argc, char **argv) +{ + struct sockaddr_un addr; + struct pollfd plist; + char *initdir; + + list = NULL; /* list of services is empty currently */ + initdir = CINIT_INIT; /* default init dir */ + + cpid = getpid(); + if(cpid != 1) { + usage(MSG_USAGE,MSG_NOT_ONE); + } + + set_signals(ACT_SERV); /* set signal handlers */ + + /* read args, profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* tell the world we are there FIXME: do we really need three calls? */ + mini_printf(MSG_CINIT,1); mini_printf(initdir,1); mini_printf("\n",1); + + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c new file mode 100644 index 00000000..a174d78d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c @@ -0,0 +1,141 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int socket) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + while ( (nsock = accept(socket,(struct sockaddr *) NULL, + (socklen_t *) NULL)) != -1) { + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = ST_FAIL; + } else { + status = RT_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP (RESPAWNING) *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; + list_tmp = list_search(buf); + + /* FIXME: + - handle off + - handle switching off once services + - perhaps remove old cinit code, which has respawing childs + */ + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + /* kill cinit watcher, which kills the real process */ + kill(list_tmp->pid,SIGTERM); + + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + } + + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + status = ST_FAIL; + } else { /* return status */ + status = list_tmp->status; + } + } else { /* no service there */ + status = RT_NOTEXIST; + } + do_result(nsock,&status); + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + SERVICE_LOG(buf,MSG_ERR_MODIFY); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + case CMD_UPDATE: + sig_reboot(SIGCONT); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } + + /* hier kommt man haeufiger herein, interrupted system call */ + if( errno != EAGAIN && errno != EINTR) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/object_lists/cinit b/software/cinit/browse_source/cinit-0.3pre6/src/object_lists/cinit new file mode 100644 index 00000000..544f267f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/object_lists/cinit @@ -0,0 +1,50 @@ +core/build_argv.o +core/cinit.o +core/panic.o +core/run_init_svc.o +core/set_signals.o +core/do_reboot.o +core/sig_child.o +generic/execute_sth.o +generic/file_exists.o +generic/mini_printf.o +generic/path_absolute.o +generic/path_append.o +generic/print_errno.o +generic/openreadclose.o +generic/strip_final_newline.o +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +svc/gen_svc_tree.o +svc/list_delete.o +svc/list_display_all.o +svc/list_insert.o +svc/list_modify.o +svc/list_search.o +svc/list_search_pid.o +svc/svc_create.o +svc/check_add_deps.o +svc/dep_entry_add.o +svc/dep_entry_del.o +svc/tree_exec.o +svc/svc_set_status.o +svc/svc_should_respawn.o +svc/svc_needs_status.o +svc/dep_needs_wants_add.o +svc/dep_create.o +svc/svc_success.o +svc/svc_report_status.o +svc/svc_start.o +svc/svc_fail.o diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/os/freebsd/halt.c b/software/cinit/browse_source/cinit-0.3pre6/src/os/freebsd/halt.c new file mode 100644 index 00000000..cd4dda1f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/os/freebsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/os/freebsd/objects b/software/cinit/browse_source/cinit-0.3pre6/src/os/freebsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/os/freebsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/os/freebsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre6/src/os/freebsd/poweroff.c new file mode 100644 index 00000000..61e5ef5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/os/freebsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWEROFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/os/freebsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre6/src/os/freebsd/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/os/freebsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/os/linux/halt.c b/software/cinit/browse_source/cinit-0.3pre6/src/os/linux/halt.c new file mode 100644 index 00000000..0ecf8ced --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/os/linux/halt.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * How to halt the system + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT_SYSTEM); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/os/linux/objects b/software/cinit/browse_source/cinit-0.3pre6/src/os/linux/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/os/linux/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/os/linux/poweroff.c b/software/cinit/browse_source/cinit-0.3pre6/src/os/linux/poweroff.c new file mode 100644 index 00000000..5f503678 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/os/linux/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff the system + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWER_OFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/os/linux/reboot.c b/software/cinit/browse_source/cinit-0.3pre6/src/os/linux/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/os/linux/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/os/openbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre6/src/os/openbsd/halt.c new file mode 100644 index 00000000..cd4dda1f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/os/openbsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/os/openbsd/objects b/software/cinit/browse_source/cinit-0.3pre6/src/os/openbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/os/openbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/os/openbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre6/src/os/openbsd/poweroff.c new file mode 100644 index 00000000..45168122 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/os/openbsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_HALT | RB_POWERDOWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/os/openbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre6/src/os/openbsd/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/os/openbsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/check_add_deps.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/check_add_deps.c new file mode 100644 index 00000000..a32a0fe7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/check_add_deps.c @@ -0,0 +1,127 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +/* FIXME: clean headers, check: + * getcwd */ +#include + +#include +#include +#include +#include +#include +#include +#include + + +#include /* PATH_MAX */ +#include /* malloc */ +#include /* strcpy */ + +#include "cinit.h" /* mini_printf */ +#include "messages.h" +#include "svc.h" + +int check_add_deps(struct listitem *svc, int type) +{ + char buf[PATH_MAX+1]; + char oldpath[PATH_MAX+1]; + struct dirent *tdirent; + struct dep *deps = NULL; + struct listitem *new_svc; + DIR *d_tmp; + + /* remember where we started */ + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + mini_printf("CAD::",1); + mini_printf(svc->abs_path,1); + mini_printf("\n",1); + + /* Create path */ + strcpy(buf,svc->abs_path); + if(type == DEP_NEEDS) { + if(!path_append(buf,C_NEEDS)) return 0; + } else { + if(!path_append(buf,C_WANTS)) return 0; + } + + d_tmp = opendir(buf); + if(d_tmp == NULL) { + if(errno != ENOENT) { + print_errno(buf); + return 0; + } + return 1; /* it's fine when there's no dependencies */ + } + + if(chdir(buf) == -1) { /* change to needs or wants */ + print_errno(buf); + return 0; + } + + while((tdirent=readdir(d_tmp))!=NULL) { + if(*(tdirent->d_name) == '.') continue; /* ignore .* */ + + /* skip non-working directories / broken links + * path_absolute reports errors on failure */ + if(!path_absolute(tdirent->d_name,buf,PATH_MAX+1)) continue; + + /* 1. create the service we depend on + * 2. initialize its dependencies + */ + if(!(new_svc = gen_svc_tree(buf))) return 0; + + /* We need ALL dependencies, as we are called only once + * per service; no need to test that first! + * + * And the other service CANNOT know anything about us yet, + * so we always add us to its list. + */ + + /* Dependencies: + * - a.needs b; add b to the list of dependencies. + * - a.needs b; add a to the list of needed by b. + * + * 1. check whether the dependency already exists + * 2. otherwise add it + * 3. do it once for needs, once for needed_by + */ + + /* create a dependency entry containing us */ + deps = dep_create(svc); + if(!deps) return 0; + + if(type == DEP_NEEDS) { + dep_entry_add(&(new_svc->needed),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->needs),deps); + } else { + dep_entry_add(&(new_svc->wanted),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->wants),deps); + } + } + if(chdir(oldpath) == -1) { + print_errno(buf); + return 0; + } + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/dep_create.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/dep_create.c new file mode 100644 index 00000000..691d66b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/dep_create.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Create dependency + */ + +#include /* NULL */ +#include /* malloc() */ +#include "svc.h" /* structs */ + +/* search for an entry by path, reverse: from end to the beginning */ +struct dep *dep_create(struct listitem *svc) +{ + struct dep *entry; + + entry = malloc(sizeof(struct dep)); + if(!entry) return NULL; + entry->svc = svc; + + return entry; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/dep_entry_add.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/dep_entry_add.c new file mode 100644 index 00000000..abdce146 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/dep_entry_add.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include "svc.h" /* types */ + +/* + * list: pointer to the list + * new: pointer to data to insert (already filled up) + * + * We add the new element BEFORE the existing element! + */ +void dep_entry_add(struct dep **deplist, struct dep *new) +{ + if(*deplist == NULL) { /* new list */ + *deplist = new; + (*deplist)->prev = *deplist; + (*deplist)->next = *deplist; + } else { /* already existing */ + new->next = *deplist; /* new-> first */ + new->prev = (*deplist)->prev; /* last <- new */ + (*deplist)->prev->next = new; /* last -> new */ + (*deplist)->prev = new; /* new <- first */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/dep_entry_del.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/dep_entry_del.c new file mode 100644 index 00000000..fd9fbab6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/dep_entry_del.c @@ -0,0 +1,36 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include /* free() */ +#include "svc.h" + +/* + * tmp: pointer to data to remove (must not be NULL) + * + * Returns either the next object or NULL if there's no next object + */ +struct dep *dep_entry_del(struct dep *del) +{ + struct dep *tmp; + + /* last service in the list */ + if(del->next == del && del->prev == del) { + tmp=NULL; + } else { + /* remove from list */ + del->prev->next = del->next; + del->next->prev = del->prev; + tmp = del->next; + } + + free(del); + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/dep_needs_wants_add.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/dep_needs_wants_add.c new file mode 100644 index 00000000..b7afb02b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/dep_needs_wants_add.c @@ -0,0 +1,64 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Add all wants or needs from a specific service to dep list + * -> this builds the needs and needed_by and + * -> or this builds the wants and wanted_by and + * + * This function is used to fillup the starting list with dependencies + * after a service has sucessfully been executed. + */ + +#include /* NULL */ +#include "svc.h" + +/* + * list: pointer to the list + * svc: pointer to data to the service + */ + +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type) +{ + struct dep *tmp, *new, *end; + + if(type == DEP_NEEDS) { + end = svc->needed; + } else { + end = svc->wanted; + } + + /* Place to the first dependency of this service */ + tmp = end; + if(tmp != NULL) { + do { + /* Add service to the starter list, which + * - should be started once + * - should be respawned (both VIRGIN services!) + * - and which are not already in the list! + */ + if(((tmp->svc->status & ST_SH_ONCE) || + (tmp->svc->status & ST_SH_RESPAWN)) && + !(tmp->svc->status & ST_IN_LIST)) { + new = dep_create(tmp->svc); + if(!new) return 0; + tmp->svc->status |= ST_IN_LIST; + dep_entry_add(list,new); + } + /* FIXME: Clearify if we should go forward or backwards? + * this decision will influence starting order + * and may thereby add a minimal mount of speed enhancement + * + * As far as I can see it is not predictable, which way is + * better, because it heavily depends on the other services. + * + * If you know better, provide me with a patch ;-) + */ + tmp = tmp->next; + } while(tmp != end); + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/gen_svc_tree.c new file mode 100644 index 00000000..65f4028f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/gen_svc_tree.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +#include +#include "cinit.h" +#include "svc.h" + +struct listitem *gen_svc_tree(char *svc) +{ + struct listitem *li; + struct dep *deps; + + /* only do something if the service is not already known */ + if((li=list_search(svc))) return li; + + /* create a template, so other instances won't try to recreate us */ + if(!(li=svc_create(svc))) return NULL; + + if(!check_add_deps(li,DEP_NEEDS)) return NULL; + if(!check_add_deps(li,DEP_WANTS)) return NULL; + + /* no dependencies? then you are a start service */ + if(!li->wants && !li->needs) { + deps = dep_create(li); + if(!deps) return NULL; + dep_entry_add(&svc_init,deps); + + /* Mark it as being in the startup list, so it does not + * get added again in a dep_needs_wants_add call */ + li->status |= ST_IN_LIST; + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_delete.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_delete.c new file mode 100644 index 00000000..10a7e218 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_delete.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "svc.h" + +/* ... */ +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if( tmp == NULL ) { + return 0; + } + + tmp->next->prev = tmp->prev; + tmp->prev->next = tmp->next; + free(tmp->abs_path); + free(tmp); + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_display_all.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_display_all.c new file mode 100644 index 00000000..65c7b3a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_display_all.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Show all list elements - mainly for debugging + */ + +#include /* NULL */ +#include "cinit.h" +#include "svc.h" + +int list_display_all() +{ + struct listitem *tmp; + + if( svc_list == NULL ) { + return 0; + } else { + tmp = svc_list; + } + + do { + mini_printf("Service: ",1); + mini_printf(tmp->abs_path,1); + mini_printf("\n",1); + tmp = tmp->prev; + } while(tmp != svc_list); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_insert.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_insert.c new file mode 100644 index 00000000..f31d4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_insert.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* malloc */ +#include /* bzero / memset */ +#include "svc.h" /* the list pointer */ + +struct listitem *list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc(sizeof(struct listitem)); + if(tmp == NULL) return NULL; + memset( tmp, '\0', sizeof(struct listitem)); + + if(svc_list == NULL) { /* list is empty, we have to init it */ + svc_list = tmp; + svc_list->next = svc_list; + svc_list->prev = svc_list; + } else { /* list has members,add this one */ + tmp->next = svc_list; /* begin after the new element */ + tmp->prev = svc_list->prev; /* change to the ex-last */ + svc_list->prev->next = tmp; /* change last element */ + svc_list->prev = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc(strlen(path) + 1); + if(tmp->abs_path == NULL) return NULL; + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_modify.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_modify.c new file mode 100644 index 00000000..4a93c41c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_modify.c @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "comm.h" /* for ST_OFF */ +#include "svc.h" /* for ST_OFF */ + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + +// D_PRINTF(path); + + tmp = list_search(path); + if( tmp == NULL ) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_search.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_search.c new file mode 100644 index 00000000..b40fae23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_search.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* NULL */ +#include /* strcmp */ +#include "cinit.h" +#include "svc.h" + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if(svc_list == NULL) { /* think positive */ + return NULL; + } else { + tmp = svc_list; + } + + do { + if(!strcmp(path, tmp->abs_path)) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_search_pid.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_search_pid.c new file mode 100644 index 00000000..f8731bec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/list_search_pid.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Search by pid + */ + +#include /* NULL */ +#include /* pid_t */ +#include "svc.h" /* struct listitem */ + +struct listitem *list_search_pid(pid_t pid) +{ + struct listitem *tmp; + + if(svc_list == NULL) { + return NULL; + } else { + tmp = svc_list; + } + + do { + if(pid == tmp->pid) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/objects b/software/cinit/browse_source/cinit-0.3pre6/src/svc/objects new file mode 100644 index 00000000..cf0ee36b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/objects @@ -0,0 +1,21 @@ +svc/gen_svc_tree.o +svc/list_delete.o +svc/list_display_all.o +svc/list_insert.o +svc/list_modify.o +svc/list_search.o +svc/list_search_pid.o +svc/svc_create.o +svc/check_add_deps.o +svc/dep_entry_add.o +svc/dep_entry_del.o +svc/tree_exec.o +svc/svc_set_status.o +svc/svc_should_respawn.o +svc/svc_needs_status.o +svc/dep_needs_wants_add.o +svc/dep_create.o +svc/svc_success.o +svc/svc_report_status.o +svc/svc_start.o +svc/svc_fail.o diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_add_needs.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_add_needs.c new file mode 100644 index 00000000..cc03727d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_add_needs.c @@ -0,0 +1,67 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +//#include +//#include +#include "cinit.h" +#include "messages.h" + +int svc_add_needs(char *needs, char *is_needed) +{ + struct listitem *svc_needs, *svc_is_needed; + + + /* retrieve service entries in global service list */ + svc_needs = svc_is_needed = NULL; + svc_needs = list_search(needs); + svc_is_needed = list_search(is_needed); + + /* and exit if one is missing */ + if( !svc_needs || !svc_is_needed ) { + return 0; + } + + /* first add needs */ + + /* now add needed_by */ + + malloc... /* for adding */ + + if(svc->needs == NULL) { + svc->needs = neu; + } else { + svc->next = neu; + } + + /* write generic function for dependencies or even all lists */ + dep_entry_add(list_pointer,new_entry); + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members,add this one */ + tmp->after = list; /* begin after the new element */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_create.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_create.c new file mode 100644 index 00000000..85f3d940 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_create.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* strcpy */ +#include /* stat */ +#include /* stat */ +#include /* PATH_MAX */ +#include /* errno */ +#include "svc.h" /* listitem */ +#include "cinit.h" /* path_append */ + +/* checking for existence is done before! */ +/* FIXME: check heedars for conformance with POSIX */ +struct listitem *svc_create(char *svc) +{ + char buf[PATH_MAX+1]; + struct stat statbuf; + struct listitem *li; + + li = list_insert(svc,-1); + if(!li) return NULL; + + /* FIXME: add two path length checks? svc and svc+strlen(C_RESPAWN)? */ + strcpy(buf,svc); + if(!path_append(buf,C_RESPAWN)) return NULL; + + if(stat(buf,&statbuf) == -1) { + if(errno == ENOENT) { + svc_set_status(li,ST_SH_ONCE); + } else { + return NULL; + } + } else { + mini_printf("respawn: ",1); + mini_printf(li->abs_path,1); + mini_printf("\n",1); + svc_set_status(li,ST_SH_RESPAWN); + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_fail.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_fail.c new file mode 100644 index 00000000..7c150c85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_fail.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Mark the service as being failed + */ + +#include "svc.h" + +void svc_fail(struct listitem *li) +{ + if(li->status & ST_ONCE_RUN) + li->status = ST_ONCE_FAIL; + else { + /* FIXME: do something senseful, record time of dead? */ + li->status = ST_RESPAWNING; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_needs_status.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_needs_status.c new file mode 100644 index 00000000..d9d54a81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_needs_status.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return status of the needs of this service + */ + +#include /* NULL */ +#include "svc.h" /* service information */ + +// DEBUG #include "cinit.h" /* service information */ + +int svc_needs_status(struct listitem *svc) +{ + int retval = SNS_NEEDS_STARTED; + struct dep *deps = svc->needs; + +/* DEBUG mini_printf("sns: ",1); + mini_printf(svc->abs_path,1); + mini_printf("\n",1); */ + + if(deps == NULL) return SNS_NEEDS_STARTED; /* no needs, everything fine */ + + do { + /* worst case: need failed */ + if((deps->svc->status & ST_NEED_FAILD) || + (deps->svc->status & ST_ONCE_FAIL)) { + retval = SNS_NEEDS_FAILED; + break; + } + /* services are being started */ + if((deps->svc->status & ST_SH_ONCE) || + (deps->svc->status & ST_SH_RESPAWN)) { + retval = SNS_NEEDS_UNFINISHED; + } + deps = deps->next; + } while(deps != svc->needs); + + return retval; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_report_status.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_report_status.c new file mode 100644 index 00000000..4cc1edf8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_report_status.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Tell the world what happened to the service + */ + +#include "cinit.h" /* mini_printf */ +#include "messages.h" /* MSG_INTRO_SVC */ + +void svc_report_status(char *svc, char *msg, char *err) +{ + mini_printf(MSG_INTRO_SVC,1); + mini_printf(svc,1); + mini_printf(": ",1); + mini_printf(msg,1); + if(err) { + mini_printf(" (",1); + mini_printf(err,1); + mini_printf(")",1); + } + mini_printf("\n",1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_respawn_check.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_respawn_check.c new file mode 100644 index 00000000..2ed44de8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_respawn_check.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* PATH_MAX */ +#include "svc.h" + +/* checking for existence is done before! */ +int svc_respawn_check(struct listitem *svc) +{ + char buf[PATH_MAX+1]; + + strcpy(buf,svc->abs_path); + if(!path_append(buf,C_RESPAWN)) return 0 +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_set_status.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_set_status.c new file mode 100644 index 00000000..36b61795 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_set_status.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_set_status(struct listitem *li, int status) +{ + return (li->status = status); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_should_respawn.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_should_respawn.c new file mode 100644 index 00000000..1c401024 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_should_respawn.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return whether should respawn or not + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_should_respawn(struct listitem *li) +{ + return (li->status & ST_SH_RESPAWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_start.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_start.c new file mode 100644 index 00000000..a631bc9a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_start.c @@ -0,0 +1,68 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start a service + */ + +#include /* NULL */ +#include /* fork */ +#include /* strerror */ +#include /* errno */ +#include /* PATH_MAX */ +#include "svc.h" /* struct * */ +#include "messages.h" /* MSG_* */ +#include "cinit.h" /* execute_sth */ + +//void svc_start(struct listitem *li, int strict) +void svc_start(struct listitem *li) +{ + char buf[PATH_MAX+1]; + + /* FIXME: All cleanup must go here + * close(fds); + * reset signals + * reset env? + * + * FIXME: Add logging possibility to here + * open (0,1,2) to other processes, if specified */ + li->pid = fork(); + + if(li->pid < 0) { + svc_report_status(li->abs_path,MSG_SVC_FORK,strerror(errno)); + svc_set_status(li,ST_BAD_ERR); + return; + } + if(li->pid > 0) { + if(li->status & ST_SH_ONCE) + li->status = ST_ONCE_RUN; + else + li->status = ST_RESPAWNING; + return; + } + + /********************** Client / fork() ************************/ + svc_report_status(li->abs_path,MSG_SVC_START,NULL); + + /* length check is done by path_append */ + strcpy(buf,li->abs_path); + if(!path_append(buf,C_ON)) return; + + /* Check for existence */ + li->status = file_exists(buf); + + if(li->status == FE_NOT) _exit(0); /* nothing there? fine! */ + + if(li->status == FE_FILE) { + /* FIXME: reset signals: Is this necessary? Or does fork clean it anyway? */ + set_signals(ACT_CLIENT); + + /* and now, fire it up */ + execute_sth(buf); + } else { + /* either no file or an error */ + _exit(1); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_success.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_success.c new file mode 100644 index 00000000..bc1d0721 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/svc_success.c @@ -0,0 +1,18 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include "svc.h" + +void svc_success(struct listitem *li) +{ + if(li->status & ST_ONCE_RUN) + li->status = ST_ONCE_OK; + else + li->status = ST_RESPAWNING; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/svc/tree_exec.c b/software/cinit/browse_source/cinit-0.3pre6/src/svc/tree_exec.c new file mode 100644 index 00000000..88c80083 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/svc/tree_exec.c @@ -0,0 +1,65 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + +#include /* NULL */ +#include "cinit.h" /* mini_printf */ +#include "svc.h" /* svc_init */ +#include "messages.h" /* messages */ + +/* some thoughts... + * + * - we already generated the tree, we now need to start it from + * the ends + * + * - after starting the first service we have to care about SIG_CHILD + * to record changes + * + * - we execute all services in parallel without problems, because of + * SIG_CHILD notification + * + * - After successfully starting the service we start the services that + * need or want that service + */ +int tree_exec(struct dep *start) +{ + struct dep *tmp = start; + + mini_printf(MSG_TREE_EXEC,1); + + /* the main starting loop: All services in this list should be + * started, but it is possible that dependent services are in the + * list. In this case simply skip the current service + */ + do { + switch(svc_needs_status(tmp->svc)) { + case SNS_NEEDS_STARTED: + /* execute service, add dependencies, remowe from list */ + svc_start(tmp->svc); + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_NEEDS)) return 0; + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_WANTS)) return 0; + tmp = dep_entry_del(tmp); + break; + + case SNS_NEEDS_FAILED: + /* mark service as NEED_FAILD and delete from list */ + svc_report_status(tmp->svc->abs_path,MSG_SVC_NEED_FAIL,NULL); + svc_set_status(tmp->svc,ST_NEED_FAILD); + tmp = dep_entry_del(tmp); + break; + + case SNS_NEEDS_UNFINISHED: + /* continue with the next item */ + tmp = tmp->next; + break; + } + + } while(tmp != NULL); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/test/test_build_argv+link.c b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_build_argv+link.c new file mode 100644 index 00000000..e37169fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_build_argv+link.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec_link"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/test/test_build_argv.c b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_build_argv.c new file mode 100644 index 00000000..0b2678be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_build_argv.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec new file mode 100644 index 00000000..e5cf3f01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec @@ -0,0 +1,7 @@ +#!/bin/sh +# Nico Schottelius +# Test-skript for cinit + +echo '$0': "$0" +echo '$@': "$@" +echo 'cinit_is_great:' $cinit_is_great diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec.env b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec.env new file mode 100644 index 00000000..853e0663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec.env @@ -0,0 +1 @@ +cinit_is_great=yes diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec.params b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec.params new file mode 100644 index 00000000..afe0f2ef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec.params @@ -0,0 +1 @@ +Let's see if we read the arguments....YES! diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec_link b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec_link new file mode 120000 index 00000000..c2ec9306 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec_link @@ -0,0 +1 @@ +test_exec \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec_link.env b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec_link.env new file mode 120000 index 00000000..30ea4990 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec_link.env @@ -0,0 +1 @@ +test_exec.env \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec_link.params b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec_link.params new file mode 120000 index 00000000..0b77c256 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_exec_link.params @@ -0,0 +1 @@ +test_exec.params \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/test/test_gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_gen_svc_tree.c new file mode 100644 index 00000000..93ad54ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_gen_svc_tree.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test gen_svc_tree + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + gen_svc_tree("/etc/cinit/svc/init"); + list_display_all(); +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/src/test/test_openreadclose.c b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_openreadclose.c new file mode 100644 index 00000000..2f722da5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/src/test/test_openreadclose.c @@ -0,0 +1,16 @@ +#include + +int openreadclose(char *filename, char **where); + +int main() +{ + char *data; + char *file = "test_openreadclose.c"; + + openreadclose(file,&data); + + printf("%s\n",data); + + return 1; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre6/util/README b/software/cinit/browse_source/cinit-0.3pre6/util/README new file mode 100644 index 00000000..782cdc8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/util/README @@ -0,0 +1,2 @@ +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.3pre6/util/ccontrol.c b/software/cinit/browse_source/cinit-0.3pre6/util/ccontrol.c new file mode 100644 index 00000000..95bc5212 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/util/ccontrol.c @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * ccontrol: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define USAGE_TEXT "ccontrol - control cinit\n\n" \ + "Usage:\n\nccontrol -[phurs]\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-u\t- (update) Reboot (warm) and update cinit\n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n\n" \ + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * ccontrol: control cinit + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 2) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + + switch(argv[1][1]) { + case 'p': /* power off */ + LOG(MSG_POWER_OFF); + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + LOG(MSG_HALT); + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + LOG(MSG_REBOOT); + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + LOG(MSG_RESCUE); + msg_reboot(CMD_RESCUE); + break; + + case 'u': /* update */ + LOG(MSG_UPDATE); + msg_reboot(CMD_UPDATE); + break; + + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* cinit-0.2 return codes implemented - nothing changed*/ diff --git a/software/cinit/browse_source/cinit-0.3pre6/util/cservice.c b/software/cinit/browse_source/cinit-0.3pre6/util/cservice.c new file mode 100644 index 00000000..66be6563 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/util/cservice.c @@ -0,0 +1,164 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * cservice: control cinit services + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit services + */ + +#define USAGE_TEXT "cservice - start and stop cinit services\n\n" \ + "cservice -[ear] \n" \ + "\t-e\t- (ein,on ) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n" \ + "\t-r\t- (restart) stop and start a service\n" + +/*********************************************************************** + * fuzzy_path: allow other kinds of path specification .. + */ +char *fuzzy_path(char *rpath) +{ + char pathtmp[PATH_MAX]; + char *re = NULL; + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return NULL; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(rpath); + return NULL; + } + + re = malloc( strlen(pathtmp) + 1); + + if(re != NULL) { + strcpy(re,pathtmp); + } + + return re; +} + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + char *real_name = NULL; + + /* argv */ + if(argc != 3) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + if(strlen(argv[1]) != 2) C_USAGE(MSG_ERR_ARGS_LEN); + + real_name = fuzzy_path(argv[2]); + + /* fuzzy path failed, exit! */ + if(real_name == NULL) { + return 1; + } + switch(argv[1][1]) { + case 'a': /* aus */ + case 'r': /* restart */ + switch( msg_svc_on_off(real_name,CMD_STOP_SVC) ) { + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_OFF: + SERVICE_LOG(real_name,LOG_SVC_STOPED); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + /* FIX THIS AFTER cinit-0.2 */ + case RT_TMPNOW: + case RT_ERR: + case RT_SVC_FAILED: + case RT_UNSPEC: + case RT_SUCCESS: + case ST_NEED_FAIL: + case ST_TMP: + case ST_ONCE: + case RT_NOTEXIST: + case ST_RESPAWN: +// SERVICE_LOG(real_name,"Ein bekanntest ding"); + break; +/* default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; */ + } + if( argv[1][1] == 'a') break; /* only continue if restarting */ + + case 'e': /* ein */ + switch (run_svc(real_name)) { /* run_svc fuzzys itself */ + case RT_NOTEXIST: + SERVICE_LOG(real_name,LOG_SVC_NOTEXIST); + break; + case RT_SVC_FAILED: + SERVICE_LOG(real_name,LOG_SVC_FAILED); + break; + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_ONCE: + SERVICE_LOG(real_name,LOG_SVC_ONCE); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + case ST_RESPAWN: + SERVICE_LOG(real_name,LOG_SVC_RESPAWN); + break; + case ST_NEED_FAIL: + SERVICE_LOG(real_name,LOG_NEED_FAIL); + break; + default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; + } + break; + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* uses cinit-0.2 return code style */ diff --git a/software/cinit/browse_source/cinit-0.3pre6/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.3pre6/util/msg_reboot.c new file mode 100644 index 00000000..efe78ec6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre6/util/msg_reboot.c @@ -0,0 +1,21 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + if(!begin_msg(cmd)) return 0; + close(sock); + return 1; +} +/* clean for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre7/ b/software/cinit/browse_source/cinit-0.3pre7/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.3pre7/.exclude b/software/cinit/browse_source/cinit-0.3pre7/.exclude new file mode 100644 index 00000000..1a2d31e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/.exclude @@ -0,0 +1,2 @@ +tmp +.git diff --git a/software/cinit/browse_source/cinit-0.3pre7/.gitignore b/software/cinit/browse_source/cinit-0.3pre7/.gitignore new file mode 100644 index 00000000..6d4d9d65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/.gitignore @@ -0,0 +1,18 @@ +*.o +*.a +*0? +MT +ddoc +contrib+tools/cinit.graph.text +config.h +sbin +tmp +os/current +tmpbin +src/os/current +src/ipc/current +src/cinit +doc/*/*.html +doc/*/*.htm +doc/*/*.man +doc/*/*.texi diff --git a/software/cinit/browse_source/cinit-0.3pre7/CHANGES b/software/cinit/browse_source/cinit-0.3pre7/CHANGES new file mode 100644 index 00000000..b51636b2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/CHANGES @@ -0,0 +1,58 @@ +cinit-0.3pre7: 2007-02-17 + - Many code cleanups + - Fixed glibc problem with sigaction (for details view src/core/set_signals.c) + - Added general shutdown support (will *NOT* yet stop services, + but still stop your system) + +cinit-0.3pre6: + - Many code cleanups + - Added user documentation and cleaned up documentation in general + +cinit-0.3pre5: + - Finished new SIGCHLD handler + - First cleanups for real release. + - This version is the first 0.3pre version that can handle respawn! + +cinit-0.3pre4: + - Re-implemented execution of services. + - This version is the first 0.3pre version that COULD bootup your system! + +cinit-0.3pre3: + - Finished execution all services via the reversed service tree. + +cinit-0.3pre2: + - Finished generation of the dependency tree. + +cinit-0.3pre1: + - cinit should now compile on mostly all unices + - introduced much new code + - THIS IS A DEVELOPER RELEASE, NOT USABLE IN PRODUCTION ENVIRONMENTS. + +cinit-0.2.1: (Bugfix release) + - Fixed problem in contrib+tools/Makefile when installing + - added many new scripts to convert sys-v-init, which are still early beta + (see bin/cinit.merge.sysvinit-debian-sid) + +cinit-0.2: + - Much more verbose error reporting + - You can now also disable 'once ran' services, + - You can restart services with csevice -r + - Online speech in German is available + - C_DELAY support - variable delay for sending SIGKILL after SIGTERM + - First /etc/csys configuration example (wasserstoff) is available + - a Mailing list was created + - Added tools to analyze cinit configuration + (cinit-vis.pl, cinit.graph.text.c) + - Added tools to import and export configuration to XML + (make.cconfig.from.xml.rb,cconfig.graph.xml.rb) + - Removed unecessary signalling + - Added many helper scripts to install services (cinit.install.service*) + - Fixed many small bugs in old helper scripts (cinit.add.getty, cinit.get-conf, ...) + - Added ccontrol, which allows to control cinit + - Added update (-u) via ccontrol + - Stripped cservice, which now "only" controls services + - Removed swapoff from cinit code, should be handled by off + - Much better error and processing descriptions + - A bit more verbose reporting + - Restructured run_svc, now with better error detection + - Removed Kernel panic, when halting system diff --git a/software/cinit/browse_source/cinit-0.3pre7/COPYING b/software/cinit/browse_source/cinit-0.3pre7/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.3pre7/CREDITS b/software/cinit/browse_source/cinit-0.3pre7/CREDITS new file mode 100644 index 00000000..b009a48c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/CREDITS @@ -0,0 +1,23 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: 2005-09-25) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete + * providing cinit-vs.pl to visualize the cinit-tree +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) +Sandro Koechli + * testing, testing and testing cinit and cinit documentation +Marcus Wagner + * building and maintaining the Debian package +Peter Portmann + * testing cinit and documentation, writing cinit.graph.text in C, other coding diff --git a/software/cinit/browse_source/cinit-0.3pre7/Changelog b/software/cinit/browse_source/cinit-0.3pre7/Changelog new file mode 100644 index 00000000..0fbf76f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/Changelog @@ -0,0 +1,10 @@ +Mo Okt 3 00:19:40 CEST 2005 + *Changelog can now be found in git database (cg-log) +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.3pre7/Makefile b/software/cinit/browse_source/cinit-0.3pre7/Makefile new file mode 100644 index 00000000..8c8381a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/Makefile @@ -0,0 +1,103 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# Directories and files +CDIRS=src doc + +# +# Targets +# + +# +# Warn per default, make sure the user knows what she does +# +warn: + @cat doc/.buildwarn + +all: sources documentation sizecheck + +install clean dist distclean: + @for subdir in $(CDIRS); do \ + echo "Making $@ in $$subdir"; \ + (cd $$subdir && $(MAKE) $(MAKEFLAGS) $@); \ + done; + +.PHONY: sources +sources: + $(MAKE) -C src all + +.PHONY: documentation +documentation: + $(MAKE) -C doc documentation + +sizecheck: sources + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l src/cinit > $$FILE; cat $$FILE; \ + cg-add $$FILE + +source-size: clean + @echo -n "Source size (in KiB): " + @du -s src/ | awk '{ sum+=$$1 } END { print sum }' + + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + +config: + @./bin/cinit.configure.os + @./bin/cinit.configure.tools + @./bin/cinit.configure.ipc + @touch src/.configured + + +################################################################################ +# Tests +# +tests: + ./scripts/internal/test_on_hosts.sh ./scripts/internal/compile_test.sh + +################################################################################ +# old +#DDOC=ddoc +#SDIRS=bin client conf comm doc generic serv util +# DO NOT CHANGE THIS. +#SBIN=sbin +#CINIT_BIN=$(SBIN)/cinit +# +#%.o: %.c +# $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< +#$(DDOC): +# mkdir $(DDOC) +# +#$(SBIN): +# mkdir $(SBIN) +# +#docs: $(DDOC) bin/cdoc-man.sh +# ./bin/cdoc-man.sh doc/cinit-doc > $(DDOC)/cinit.8 +# ./bin/cdoc-man.sh doc/cservice-doc > $(DDOC)/cservice.8 +#$(CSVC_OBJ) $(OBJ): $(CONFIG_H) +#clean: +# $(MAKE) -C src clean +# rm -f tmpbin/* +################################################################################ +#cservice: $(SBIN)/cservice +# +#$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) +# $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ +# $(STRIP) $@ +# +#ccontrol: $(SBIN)/ccontrol +# +#$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) +# $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ +# $(STRIP) $@ +# +#install:: install-dir cinit cservice ccontrol +# @echo '*** Installing cinit ***' +# ./bin/cinit.install.binary diff --git a/software/cinit/browse_source/cinit-0.3pre7/NEXTTODO b/software/cinit/browse_source/cinit-0.3pre7/NEXTTODO new file mode 100644 index 00000000..8b0c1a72 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/NEXTTODO @@ -0,0 +1,2 @@ +- create uml instance, create some boot profiles +- cinit.install.standard.dirs.argv diff --git a/software/cinit/browse_source/cinit-0.3pre7/README b/software/cinit/browse_source/cinit-0.3pre7/README new file mode 100644 index 00000000..00f2651b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/README @@ -0,0 +1,106 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Unix +- true dependencies (soft and hard!) +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +FIXME: Add mailing list here + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre7/ROADMAP b/software/cinit/browse_source/cinit-0.3pre7/ROADMAP new file mode 100644 index 00000000..b26ccb36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/ROADMAP @@ -0,0 +1,117 @@ +-------------------------------------------------------------------------------- +THIS DOCUMENT SHOULD VANISH AS SOON AS EVERYTHING IS FINE +-------------------------------------------------------------------------------- + +Timeline +--------- + * ~ End of October 2006: Reunderstand the code, manifest changes [DONE] + * ~ Mid of November 2006: Have a compile-able cinit [DONE] + * ~ End of November 2006: Have a testsystem booting cinit + * ~ Mid of December 2006: Have production stable cinit + - Begin with migration scripts + - publish installable pre-releases + * ~ End of December 2006: Have some generic migration scripts + - Have (different) understanable documents + * ~ Mid of January 2007: Begin official release of cinit-0.3 + + + + +Versions +--------- + +0.3: +~~~ + code: Make cinit compile again :) [DONE] + code: double check to remove Linux specific source from general tree + code: seperate ipc from the rest [DONE] + code: fix / check signal handlers + code: cleanup makefile + code: add porting code: add support for any unix in general [DONE] + code: stabilize code, remove experimenting parts + code: remove delay support, let off/off.params do that. + code: add special directory (/etc/cinit/special?) for os specific binaries + -> halt, poweroff, reboot (NOTHING MORE THEY CAN DO) + -> SHOULD NOT BE IN THE PATH + code: move production code to src/ + end user doc: add warning for special binaries and hint for r/o only + amiga alike systems + + doc: begin to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.1: + devel doc: how to write merging scripts + devel doc: merging framework: + - minimal (do not look at the current configuration, build minimal) + - use current system (slowly, may use old scripts) + - rebuilt current system (recommened) + + tools: general framework for merging + end user doc: merging old init to cinit + + code: add porting code: add support for freebsd + code: better readable output: + -> starting + [ started once ] + [ respawning ] + [ failed ] (+ REASON!) + [ needs failed ] (which ones) + + -> stopping + [ stopping ] (for dependencies) + [ stopped ] ? + [ not running ] ? + + code: export profile information (CINIT_PROFILE) + end user doc: using different profiles in user space + end user doc: write examples for profiles: + o switch ssh known_hosts based on profile + o different proxy settings in browsers + - environment + - mozilla settings + o start samba (for lan) + o start samba (for company lan) + o use nis and nfs (company profile) + + doc: continue to merge old documents into new structure and move them + to the doc/ancient directory +0.3.2: + end user doc: what to read to use cinit + end user doc: installing cinit + end user doc: configuring cinit + tools: writing cinit-config (graphical (dialog based?) configuration tool) + code: add porting code: add support for openbsd + + code: add reverse dependency chain (or earlier?) + code: better support for external tools + o neustarten + o mit herunterfahren + o mit herunterfahren und allen Diensten, die abhaengen + o ohne herunterfahren + o Statische Daten + o pid vom Daemon + o pid vom einmal ausgefuehrten Programm + + + doc: end to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.3: + devel doc: writing an init system + devel doc: the conf/-configuration system + + code: check conf/ and perhaps rewrite b0rken english sentences + + code / doc: add logging support for services -> use multilog? + code: add porting code: add support for netbsd + +0.4: + first stable, tested, well documented version. + + code: check for optimisation + + other: compare with other init systems + +0.4.x: + code: add porting code: add support for other unices diff --git a/software/cinit/browse_source/cinit-0.3pre7/TODO b/software/cinit/browse_source/cinit-0.3pre7/TODO new file mode 100644 index 00000000..e9e9f47a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/TODO @@ -0,0 +1,339 @@ +-------------------------------------------------------------------------------- +define coding guidelines + -> general, with url? +-------------------------------------------------------------------------------- +- define how it should work (doc/braindums/big-picture.text) +- define service status in one document, so repeatition stops! +-------------------------------------------------------------------------------- +- rename headers/ -> includes/ +- remove client/ from top level +-------------------------------------------------------------------------------- +Generate automatic asciidoc from conf/* +-------------------------------------------------------------------------------- +Add handler for ctrl+alt+delete + * document in paths +-------------------------------------------------------------------------------- +pre-compile config: conf/* + +-------------------------------------------------------------------------------- +comm: + tmpnow: search for pid in list, + save the pid in the list, so we know whether our executer died! +-------------------------------------------------------------------------------- +Logging / cinit: + fuer unsere eigenen ausgaben auch multilog? + + Logger: shared memory? +-------------------------------------------------------------------------------- + Ausgaben nach Beendigung vom Starten des Services. + + [ on ] %s + Ergebnis + [ off ] %s + + Rekursives herunter/rauffahren +-------------------------------------------------------------------------------- +- add error handling to cinit.install.binary +- cleanup serv/sig_reboot.c:7: + o implement os-specific reboot function +-------------------------------------------------------------------------------- +1. Entfernung mount + -> Example configuration + -> was man alles machen muss +-------------------------------------------------------------------------------- +- add code do implement stopping / restarting with dependency tree +-------------------------------------------------------------------------------- +Documentation: + - Installing cinit + o compiling cinit from source + o debian / gentoo + - Configuring +-------------------------------------------------------------------------------- +Check whether we also get notified about stopped children, if so, ignore. +-------------------------------------------------------------------------------- +- perhaps use dnotify? +- recheck warm reboot +- fix cservice +- print service name or cinit: before _everything_ WE print + +TESTING: + - is the reporting ok? + - does cservice and ccontrol what's expected? + +# cinit.create.empty.service: can only be started from the bin directory + +- compile cinit static and other tools dynamically per default + +- Fix Switching services off !! +- Remove RUN_RUN_SVCs, move code to run_svc so one can determine which + services failed? + --> sequentieller ablauf! + --> parallel ablauf, struct-array mit namen und ergebnis? + --> for dep in deps/*; do fork(run_svc() ); done + -----> while(any_is_running) { sleep } + -------> array durchsuchen, ergebnis nutzen. + - ueberpruefen von wo aus run_svc() aufgerufen wird + +- do not kill respawing service, if off exists +- ccontrol +- manpages +- Error codes when shutting down a service? +- Delay dokumentieren +- no_kill dokumentieren + + +- on.out, on.err, on.in? + -> reading/writing from/to files + +- implement "no_kill" until cinit-0.2 or 0.3? + + +-------------------------------------------------------------------------------- +- Source Logic issues + - remove FIXME entries (and what should be fixed, too) + - memset for timespecs? + - move umount, swapoff and remount to off of init? + -> cleanup sig_reboot.c +-------------------------------------------------------------------------------- +- Documentation + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml +-------------------------------------------------------------------------------- +[OLD BUGS] +- execve() fails -> no sleep!! +- cservice! + - prozess nur einmal -> WARTET! cinit auch! +doku: + cservice einmal starten -> wartet auf ende + cint ersetzt init bei gentoo + an error occuerd-> verbose + +possible BUGS: + +[14:44] freelsd:cinit-0.2.2% ./sbin/cservice -e ein + +ein: No such file or directory +Bad address +: Service does not exist + +/etc/cinit/specials/... rein + + +--> cinit-0.3-rc1 +-------------------------------------------------------------------------------- +Helper scripts, rausgenommen aus Der Doku, muessen fuer +cinit-0.3 ueberprueft werden: + +Configure help scripts +~~~~~~~~~~~~~~~~~~~~~~ +cinit-conf later +Using prepared scripts + +In the bin/ directory of this tarball you'll find at least: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +Optimisations +------------- + +tree_exec +~~~~~~~~~ +- only check dependencies (=needs) after the basic run? + +Documentation +------------- + +developer +~~~~~~~~~ +- ST_IN_LIST == startup marker, used to (NOT) insert services into startup +- dep_needs_wants_add is used to add dependencies of a service to the general + starter list + + +user +---- +- do we really need swapoff? remove umount, swapoff! + * to services! +- dependencies with leading '.' (dot) are ignored. +- about cinit-configuration structure + * cconfig + * svc/ + * special/ (or however we called it) + - panic + - halt + - poweroff + - reboot + +-------------------------------------------------------------------------------- +Doc +--- +Doku!!! +- MANPAGE! + +FAQ +~~~ +- DOKU: what happens when a service does not terminate.... + und er als once drin ist +--> Wenn kein ReSPAWN und der Prozess beendet sich nicht, + dann haengt init! + +- multuicall probleme -> busysbox --> GIBT ES NICHT!! + ---> DOKU DAZU! mit links, doppelt links, aus test + ---> erklaeren, dass es unproblematisch ist! + +-------------------------------------------------------------------------------- +csvc: +11:09 < folken23> telmich: oder service allready started. +-------------------------------------------------------------------------------- +cinit: +11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet + werden konnte. +11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0 + zurueckgeworfen. + ---> errno in execute_sth! + +Child handlin +~~~~~~~~~~~~~g +- free() everything before starting child + +Later +~~~~~ + +- close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? + -> yep, clean environment! +- logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +- Doc + * main.text -> cleanup / remove / split + * config-dirs + * FAQ + * ideas + * meta.dependencies + - config/hints/meta depps + * optimising + - integrate into other + * README.text + - update + * replacing.init + - update / integrate + * special-services.text + - into configuring/hints? + * TODO + - into paths, if necessary + * updating.cinit + - update as soon as update is possible? + * using.rescue + - update as soon as update is possible? + * 'os-integration.text' + * 'daemons.backgrounding' + * There are some hints on how to migrate to cinit in general and also + some os specific help in the file 'migrating-init-systems.text', +- CODECHECK: + * what happens with the wants of the last services? + - are they added? + - are they added at the correct position? +- scripts + * `cinit.check.config` (doc/user/configuring.cinit.text) + -> circular depedencies! +- Doc.next: + - installing: report! + -> write report script. +- Doc later + * current-init-problems.text + - current-init-problems.text explains why cinit does not use nor recommends the use of shell scripts. + * special-services.text + +- Begin documentation + * Check Makefile + * Integrate Makefile into main Makefile + * create manpage + * Write a small manual + - install + - configure + - boot (different OS) + * generate asciidoc! +- report broken links in needs/wants +- Doc way: + * installing + * configuring + - testconfig! + * booting + - different OS / bootloader + * debugging +- Shutdomn code: + * begin at init, then shutdown wants/needs, ... +- check free on dep_del! +- check that the new wants and need elements are nserted the other way round + * we go to next, elements must be put before us! +- implement do_reboot() + * so not only booting with cinit works, but also the shutdown +- define messages + a) human readable + b) binary data? +- replace cinit_ipc_logon with cinit_ipc_init... + * delay ipc code -> after start! +- Remove old code + * remove run_svc + * remove run_init_svc + +Finally: +- test and release cinit-0.3rc1 + +- Cleanup object lists + object-lists/ + cinit + cservice + ccontrol + cinit.halt + cinit.reboot + cinit.shutdown (shell script?!?) + +TODO.pre7: + + Done: + check cinit_ipc_destroy + - Segfault, when there is only init -> problem in glibc2.3.6 + - Added general shutdown support (via kill -TERM, -HUP, -USR1) + - write sleep_before_kill + reads config, sleeps + Tests: + - test reboot functionality + -> kill -X 1 + -> what happens? + +TODO.pre8: + remove old object listings + take care of ipc/ and os/ + merge codingstyle and codingguide + double check all initialisations! + Use sa.mask in sigaction! + + Document the define of the following: + conf/umount = called before all shutdown procedures + + - test sleep code (sleep_before_kill()) + + do_reboot.c: + write cinit_svc_shutdown + +TODO.pre9: + include locking via shm, remove test on pid1 diff --git a/software/cinit/browse_source/cinit-0.3pre7/TODO.doc b/software/cinit/browse_source/cinit-0.3pre7/TODO.doc new file mode 100644 index 00000000..a170a50d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/TODO.doc @@ -0,0 +1,29 @@ +- doc/user/paths.text + * finish + * add examples +- add cross-compilation howto +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + +caveats +------- + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- cinit ignores the Keyboard request +- Currently there is no support to react on 'ctr+alt+del': +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + diff --git a/software/cinit/browse_source/cinit-0.3pre7/TODO.optimisations b/software/cinit/browse_source/cinit-0.3pre7/TODO.optimisations new file mode 100644 index 00000000..8a686b4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/TODO.optimisations @@ -0,0 +1,19 @@ +This file describes enhancements or optimisations that +could be done / checked. + + +Code +---- + +fork() +~~~~~~ + +Security +^^^^^^^^^ +- Closed fds? +- Close other things? +- IPC? + +Cleanup +^^^^^^^ +- Do we have to reset signals or is that done anyway by fork()? diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cdoc-man.sh b/software/cinit/browse_source/cinit-0.3pre7/bin/cdoc-man.sh new file mode 100644 index 00000000..fc1adde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cdoc-man.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Nico Schottelius +# Date: 21-Aug-2005 +# Last Modified: - +# + +set -e + +[ $# -ne 1 ] && exit 23 + +SRC=$1 + +cd "$SRC" + +# +# Title heading +# +echo .TH $(cat "meta/name" "meta/man_section" "meta/date") + +# +# Name +# +echo .SH NAME +echo $(cat meta/name) - $(cat meta/short_description) + +# +# Synopsis +# +echo .SH SYNOPSIS +echo $(cat path) $(cat parameters) + +# +# description +# +echo .SH DESCRIPTION +echo $(cat long_description) + +# +# availability +# +for section in availability examples "see also" author; do + if [ -f "$section" ]; then + echo .SH $section | tr '[a-z]' '[A-Z]' + cat "$section" + fi +done + +# +# files +# +if [ -f files ]; then + echo .SH FILES + cat files | sed 's/\(.*\)/.IP "\1" /' +fi + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.add.dependency new file mode 100644 index 00000000..7bc9cc65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.add.dependency @@ -0,0 +1,51 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or wants Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +# adding 'wishes' for x-mas and requires for 'the mass' and 'tv' +case $DEP in + wishes|wants) DEP=$C_WANTS ;; + needs|requires) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could someone PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEP_DIR="${BASEDIR}/${SVC_A}/${DEP}" + +if [ ! -d "$DEP_DIR" ]; then + echo "$DEP_DIR does not exist, creating..." + mkdir "$DEP_DIR" + if [ $? -ne 0 ]; then + echo "Error occured due to creating directory. Exiting." + exit 1 + fi +fi + +DEST="${DEP_DIR}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.add.getty new file mode 100644 index 00000000..987a5bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.add.getty @@ -0,0 +1,75 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# Date: 2005-05-24 (Last changed: 2005-08-07) +# + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | sort -n | tail -n 1) + +[ ! "$LAST_NUMBER" ] && LAST_NUMBER=0 + +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +#echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + */mgetty) + mygetty=$getty + params="38400 tty${NUMBER}" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +# check input +if [ ! "$mygetty" ]; then + read -p "Getty to use [$mygetty]: " rgetty +fi +if [ ! "$params" ]; then + read -p "Parameters to pass [$params]: " rparams +fi +if [ ! "$params" -o ! "$mygetty" ]; then + echo "Sorry, either getty or parameters are not supplied." + exit 23 +fi + +echo -n "Creating $mygetty ($params) in $DDIR ... " +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DDIR" +ln -s "$mygetty" "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.configure.ipc b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.configure.ipc new file mode 100644 index 00000000..65190baa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.configure.ipc @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius, 2006-07-28 +# +# cinit: configure the ipc method to use +# + +HIER=$(dirname $0) +DDIR=$HIER/../src/ipc +DFILE=${DDIR}/current +IPC_METHOD=$(head -n 1 "$HIER/../conf/ipc_method") + +echo "Configure: IPC: Using \"$IPC_METHOD\" as IPC method" + +# always remove link before, as ln seems to be broken +# Doing ln -sf src/ipc/$method current twice, will create the file +# "current" _BELOW_ src/ipc/$method and not overwrite the link +# src/ipc/current + +rm -f "${DFILE}" +ln -sf "${IPC_METHOD}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.configure.mark b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.configure.mark new file mode 100644 index 00000000..62454c7f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.configure.mark @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: touch a file to mark everything configured +# 2006-08-27 +# + +echo "Configure: MK: Marking directory as configured" +touch .configured diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.configure.os b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.configure.os new file mode 100644 index 00000000..d5b8e6e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.configure.os @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups symlinks for the os +# + +DDIR=$(dirname $0)/../src/os +DFILE="$DDIR/current" +OSCONFIG=$(dirname $0)/../conf/os + +OS=$(head -n 1 "$OSCONFIG") + +echo "Configure: OS: Binaries are created for $OS ..." + +rm -f "${DFILE}" +ln -sf "${OS}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.configure.tools b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.configure.tools new file mode 100644 index 00000000..43242a01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.configure.tools @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups scripts for compiling and linking +# + +HIER=$(dirname $0) +DDIR=$HIER/../tmpbin/ +CC=$(head -n 1 "$HIER/../conf/cc") +CFLAGS=$(head -n 1 "$HIER/../conf/cflags") +LD=$(head -n 1 "$HIER/../conf/ld") +LDFLAGS=$(head -n 1 "$HIER/../conf/ldflags") +STRIP=$(head -n 1 "$HIER/../conf/strip") + +echo "Configure: CC: Creating cc, ld and strip ..." + +mkdir -p "$DDIR" +cd "$DDIR" + +echo "$CC $CFLAGS \"\$@\"" > cc +echo "$LD $LDFLAGS \"\$@\"" > ld +echo "$STRIP \"\$@\"" > strip + +# set correct permissions +chmod 0700 * diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.create.empty.service new file mode 100644 index 00000000..365c4bc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.create.empty.service @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.binary new file mode 100644 index 00000000..a368ac23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.binary @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: - +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice +"$INSTALL_PROG" sbin/ccontrol $DESTDIR/$PREFIX/sbin/ccontrol +"$INSTALL_PROG" bin/cinit.reboot $DESTDIR/$PREFIX/sbin/cinit.reboot +"$INSTALL_PROG" bin/cinit.shutdown $DESTDIR/$PREFIX/sbin/cinit.shutdown +"$INSTALL_PROG" bin/cinit.wait.for.daemon \ + $DESTDIR/$PREFIX/sbin/cinit.wait.for.daemon + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi + +# install as /sbin/shutdown, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/shutdown ]; then + ln -s $PREFIX/sbin/cinit.shutdown $DESTDIR/$PREFIX/sbin/shutdown +fi + +# install as /sbin/reboot, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/reboot ]; then + ln -s $PREFIX/sbin/cinit.reboot $DESTDIR/$PREFIX/sbin/reboot +fi diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.config-dir b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.config-dir new file mode 100644 index 00000000..c9adb70f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.config-dir @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.dir new file mode 100644 index 00000000..5e16f690 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.dir @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/sbin" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.fsck b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.fsck new file mode 100644 index 00000000..4508860a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.fsck @@ -0,0 +1,36 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 3 ]; then + echo "$(basename $0): name device filesystem-type" + exit 1 +fi + +NAME=$1 +DEVICE=$2 +FS_TYPE=$3 + +FSCK=/sbin/fsck.$FS_TYPE + +if [ ! -f "$FSCK" ]; then + echo "Missing $FSCK, abort." + exit 1 +fi + +if [ ! -e "$DEVICE" ]; then + echo "Missing $DEVICE abort." + exit 1 +fi + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME" +ln -sf "$FSCK" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON" +echo "$DEVICE" > "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.miniconf b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.miniconf new file mode 100644 index 00000000..45dcc632 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.miniconf @@ -0,0 +1,103 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: 2005-08-07 +# + + +. $(dirname $0)/cinit.read-conf + +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" +echo "" +echo "This will install a minimal cinit configuration." +echo "This configuration _SHOULD_ be able to run on _MOST_ systems." +echo "Still, it's highly EXPERIEMENTAL, use with CAUTION." +echo "" +echo "Please make sure, that" +echo " - you are using a journaling filesystem (fsck is not used)" +echo " - you have agetty, fgetty or mingetty installed" +echo " - you are runnig Linux 2.6 (sysfs is used)" +echo " - you have udev or static device nodes (you need /dev/tty*)" +echo " - getties will run on tty2-tty7, tty1 is used or logging" +echo "" +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" + +notosoftwarepatents="Please keep an eye on software patents, they are evil." +read -p "Do you really want to continue? [y/N] " notosoftwarepatents + +if [ "$notosoftwarepatents" = "y" -o "$notosoftwarepatents" = "Y" ]; then + echo "Let us try it ..." +else + echo 'Bye bye!' + exit 0 +fi + +set -e + +# Create basic layout +$(dirname $0)/cinit.install.standard-dirs + +# Install services: +# - mount root r/w +# - mount /proc +# - mount /sys +# - install getties on tty2-tty7 +# - add cleanup for /etc/mtab +# - add loopback device +# - init service + echo + +################################### mount ##################################### +# mount root read/write +$(dirname $0)/cinit.install.service.mount-root + +# - mount /proc +$(dirname $0)/cinit.install.service.mount-proc + +# - mount /sys +$(dirname $0)/cinit.install.service.mount-sys + +# mount needs everything below it +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/root" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/proc" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/sys" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" + +################################### getty ##################################### +# mount root read/write +# install getties +begin_getty=2 +end_getty=7 +i=$begin_getty + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" +while [ "$i" -le "$end_getty" ]; do + $(dirname $0)/cinit.add.getty + ln -sf "${DESTDIR}/${CINIT_DIR}/getty/$i" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" + i=$(($i+1)) +done + +################################### mtab ##################################### +# - add cleanup for /etc/mtab +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" +$(dirname $0)/cinit.install.service.cleanup-mtab +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" + +################################### lo ##################################### +# - add loopback device +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" +$(dirname $0)/cinit.install.service.network-lo +ln -sf "${DESTDIR}/${CINIT_DIR}/network/lo" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" + +# - init service + echo +# init depends on mount, getty -> everything from base-layout +$(dirname $0)/cinit.install.service.init +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" + +ln -sf "${DESTDIR}/${CINIT_DIR}/local-services/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/getty/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/network/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.cleanup-mtab b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.cleanup-mtab new file mode 100644 index 00000000..30a8dd48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.cleanup-mtab @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: cleanup mtab +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" +echo '#!/bin/sh' > "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'rm -f /etc/mtab' >>"${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'ln -s /proc/mounts /etc/mtab' \ + >> "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +chmod 0700 "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.hostname.generic b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.hostname.generic new file mode 100644 index 00000000..2d72f50e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.hostname.generic @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service, which sets the hostname +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): hostname" + exit 1 +fi + +HOSTNAME=$1 +HOSTNAME_BIN=${HOSTNAME_BIN:-/bin/hostname} + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/network/hostname" +ln -sf "$HOSTNAME_BIN" "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON" +echo "$HOSTNAME" > "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.init b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.init new file mode 100644 index 00000000..c3a10931 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.init @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +ln -sf /bin/echo "${DESTDIR}/${CINIT_DIR}/${C_INIT}/$C_ON" +echo '*** cinit initial service successfully started ***' \ + > "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.keymap.c_keymap b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.keymap.c_keymap new file mode 100644 index 00000000..235a329e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.keymap.c_keymap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install keymap from environment setting +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +if [ -z "$C_KEYMAP" ]; then + echo "Set C_KEPMAP to the wanted keymap." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" ]; then + echo "Service keymap already exists." + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find loadkeys) + +if [ $? -ne 0 ]; then + echo "Did not find binary loadkeys." + exit 1 +fi + +echo -n "Installing keymap to ${DESTDIR}/${CINIT_DIR}/local-tuning/keymap ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON" + +echo "$C_KEYMAP" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.mount-proc b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.mount-proc new file mode 100644 index 00000000..024847a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.mount-proc @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /proc +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/proc" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/proc/$C_ON" +echo proc > "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo /proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.mount-root b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.mount-root new file mode 100644 index 00000000..a1bd56ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.mount-root @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount root r/w +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# mount root read/write +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/root" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/root/$C_ON" +echo -n > "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo -o >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo remount,rw >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo / >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.mount-sys b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.mount-sys new file mode 100644 index 00000000..8c8191aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.mount-sys @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /sys +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /sys +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/sys" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/sys/$C_ON" +echo sys > "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo sysfs >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo /sys >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.network-lo b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.network-lo new file mode 100644 index 00000000..45bff6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.network-lo @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: loopback device +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/lo" +ln -sf /sbin/ifconfig "${DESTDIR}/${CINIT_DIR}/network/lo/$C_ON" +echo lo > "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo 127.0.0.1/8 >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo up >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.ntpdate.debian b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.ntpdate.debian new file mode 100644 index 00000000..2af2ee4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.ntpdate.debian @@ -0,0 +1,47 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install ntpdate +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +. /etc/default/ntpdate + +if [ -z "$NTPSERVERS" ]; then + echo "No ntp servers found, aborting" + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find ntpdate) + +if [ $? -ne 0 ]; then + echo "Did not find binary ntpdate." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" ]; then + echo "Service ntpdate already exists." + exit 1 +fi + +echo -n "Installing ntpdate to ${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON" + +for server in $NTPSERVERS; do + echo "$server" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON$C_PARAMS" +done + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.udev b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.udev new file mode 100644 index 00000000..d91f01cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.service.udev @@ -0,0 +1,64 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install udev +# Date: 2005-10-15 +# Comment: DO NOT RSYNC TO THE WRONG SIDE! +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BIN_UDEVSEND=$($(dirname $0)/cinit.path-find udevsend) +BIN_UDEVSTART=$($(dirname $0)/cinit.path-find udevstart) +BIN_SYSCTL=$($(dirname $0)/cinit.path-find sysctl) +BIN_MOUNT=$($(dirname $0)/cinit.path-find mount) +SERVICE="local-tuning/udev" + +if [ -z "$BIN_UDEVSEND" -o -z "$BIN_UDEVSTART" -o -z "$BIN_SYSCTL" -o -z "$BIN_MOUNT" ]; then + echo "Did not find a binary." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo "Installing ${SERVICE} to ${DESTDIR}/${CINIT_DIR}/ ..." + +# 0. general udev +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}" +# 1. udevmount +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/mount/udev" +ln -sf "$BIN_MOUNT" "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON" +echo "udev" > "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "-t" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "tmpfs" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "/dev" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" + +# 2. udevstart +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart" +ln -sf "$BIN_UDEVSTART" "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart/$C_ON" + +# dependencies +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/sys +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/udev + +# 3. udev to hotplug +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug" +ln -sf "$BIN_SYSCTL" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug/$C_ON" +echo "$BIN_UDEVSEND" > "${DESTDIR}${CINIT_DIR}/${SERVICE}/hotplug/$C_ON$C_PARAMS" + +$(dirname $0)/cinit.add.dependency ${SERVICE}/hotplug needs mount/proc + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.standard.init.deps b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.standard.init.deps new file mode 100644 index 00000000..dcc5cd07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.standard.init.deps @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add standard sub-configuration directories to init wants +# Date: 2005-10-11 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.standard.mounts b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.standard.mounts new file mode 100644 index 00000000..bb1fc0c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.standard.mounts @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create normal mounts +# Date: 2005-10-16 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.swap b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.swap new file mode 100644 index 00000000..84e6c928 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.swap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install swap +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +SERVICE=mount/swap + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BINARY=swapon +BINARY_PATH=$($(dirname $0)/cinit.path-find $BINARY) +if [ $? -ne 0 ]; then + echo "Did not find binary $BINARY." + exit 1 +fi + +HAS_SWAP=$(awk '$3 ~ /swap/ { print $3 }' /etc/fstab) +if [ -z "$HAS_SWAP" ]; then + echo "Seems you have no swap, service not installing" + exit 1 +fi +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo -n "Installing ${SERVICE} to ${DESTDIR}${CINIT_DIR}/${SERVICE} ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON" + +echo "-a" >> "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.merge.sysvinit-debian-sid b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.merge.sysvinit-debian-sid new file mode 100644 index 00000000..3ef0ce03 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.merge.sysvinit-debian-sid @@ -0,0 +1,137 @@ +#!/bin/sh +# Nico Schottelius +# Date: Sun Oct 16 16:57:03 CEST 2005 +# cLinux/cinit +# Automagically convert Debian-Sysv-Iinit +# THIS IS NOT CLEAN. +# THIS IS NOT EVEN INTENTED TO BE CLEAN. +# This is just a small hack, because my girlfriend wants her notebook back. + +echo "***> $(basename $0): converting Debian-Sys-V-Init" + +# read standard values, may be overwritten from outside +. $(dirname $0)/cinit.read-conf + +echo "***> Finding standard config ..." +# variables, which can be set from the outside +ROOT_DEV=${ROOT_DEV:-$(awk '$2 ~ /^\/$/ { print $1 }' /etc/fstab)} +ROOT_FSCK=${ROOT_FSCK:-$(awk '$2 ~ /^\/$/ { print $6 }' /etc/fstab)} +ROOT_FS=${ROOT_FS:-$(awk '$2 ~ /^\/$/ { print $3 }' /etc/fstab)} +RUNLEVEL=${RUNLEVEL:-$(runlevel | awk '{ print $2 }')} + +echo "***> Detecting keymap (this may take some time)" + +if [ -z "$C_KEYMAP" ]; then + echo "Please set the variable C_KEYMAP to your keymap." + echo "It is impossible to detect reliable your keymap in Debian." + exit 1 +fi + + +echo "***> Configuration" +echo "Hostname (\$HOSTNAME): $HOSTNAME" +echo "Keymap (\$C_KEYMAP): $C_KEYMAP" +echo "Root device (\$ROOT_DEV): $ROOT_DEV" +echo "Root fsck (\$ROOT_FSCK): $ROOT_FSCK" +echo "Root FS (\$ROOT_FS): $ROOT_FS" +echo "Runlevel (\$RUNLEVEL): $RUNLEVEL" +echo "Destdir: (\$DESTDIR): $DESTDIR" +echo "Config-Dir: (\$CINIT_DIR): $CINIT_DIR" +read -p "Is this correct (Y/n) " correct + +if [ "$correct" != "y" -a "$correct" != "Y" ]; then + echo "***> Abort." + exit 1 +fi + +if [ -d "${DESTDIR}${CINIT_DIR}" ]; then + echo "ERROR: Configuration already exists at ${DESTDIR}${CINIT_DIR}." + exit 1 +fi + +echo "***> Installing standard structure and dependencies" +set -e +$(dirname $0)/cinit.install.config-dir +$(dirname $0)/cinit.install.standard.dirs +$(dirname $0)/cinit.install.standard.init.deps + +echo "***> Adding mount / r/w" +$(dirname $0)/cinit.install.service.mount-root + +if [ "$ROOT_FSCK" = "1" ]; then + echo "***> Adding fsck for $ROOT_DEV ..." + $(dirname $0)/cinit.install.fsck root "$ROOT_DEV" "$ROOT_FS" + echo "***> Adding dependency" + $(dirname $0)/cinit.add.dependency mount/root needs fsck/root +else + echo "***> Skipping fsck for $ROOT_DEV ..." +fi + +echo "***> Setting up standard mounts ..." +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up hostname: $HOSTNAME" +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up keymap" +$(dirname $0)/cinit.install.service.keymap.c_keymap + +echo "***> Creating getties (tty1-8)" +for i in `seq 1 8`; do + $(dirname $0)/cinit.add.getty + + # each getty needs: + # - root r/w + $(dirname $0)/cinit.add.dependency getty/$i needs mount/root + # - hostname + $(dirname $0)/cinit.add.dependency getty/$i needs network/hostname +done + +echo "***> Enabling getties (tty2-8)" +for i in `seq 2 8`; do + # add getties to getty/ + $(dirname $0)/cinit.add.dependency getty wants getty/$i +done + +# +# Convert services: check /etc/rcS.d and /etc/rcX.d +# +echo "***> Converting services ..." +for script in $(cd /etc/rcS.d/; ls S*; cd /etc/rc${RUNLEVEL}.d/; ls S*); do + echo -n "$script: " + case $script in + # SCRIPTS READY + *ntpdate) + $(dirname $0)/cinit.install.service.ntpdate.debian + $(dirname $0)/cinit.add.dependency local-tuning/ntpdate needs network + ;; + *udev*) + $(dirname $0)/cinit.install.service.udev + + # SCRIPTS NEVER READY + *glibc.sh|*module-init-tools|*modutils|*procps.sh|*hotplug-net|*bootmisc.sh|*nviboot|*screen-cleanup|*x11-common|*sudo|*makedev|*rmnologin) + echo "Ignoring (useless)." + ;; + + # SCRIPTS NOT YET READY + *mountvirtfs|*checkroot.sh|*ifupdown-clean|*checkfs.sh|*mountall.sh|*ifupdown|*hostname*|*mountnfs.sh|*alsa|*rsync|*ssh|*fam|*cron|*gdm) + echo "converting planned later." + ;; + + # SCRIPTS LATER TO DO + *bootlogd|*keymap.sh|*hwclock*|*discover|*pppd-dns|*dns-clean|*networking|*portmap|*console-screen.sh|*urandom|*klogd|*apmd|*dbus-1|*exim4|*pcmcia|*nfs-common|*stop-bootlogd) + echo "unsupported currently (FIXME PLEASE)." + ;; + *sysklogd|*ppp|*inetd|*lpd|*aumix|*atd) + echo "unsupported (choose a better alternative)." + ;; + *initrd-tools.sh|*libdevmapper*|*hotplug) + echo "Ignoring (general or bloated script)." + ;; + *) + echo "Ignoring (unknown)" + ;; + esac +done + +echo "***> Finished." diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.path-find b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.path-find new file mode 100644 index 00000000..0d0f362b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.path-find @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: find binary in path +# Date: 2005-10-15 +# + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): searched binary" + exit 1 +fi + +binary=$1 + +# this is NOT really clean, paths can also contain spaces +for pfad in $(echo $PATH | sed 's/:/ /g'); do + fullname=$pfad/$binary + if [ -f "$fullname" ]; then + echo "$fullname" + exit 0 + fi +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.remove.getty new file mode 100644 index 00000000..4950eeed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.remove.getty @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + +if [ ! "$NUMBER" ]; then + echo "There is no getty to remove." + exit 1 +fi + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r "$DDIR" +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.shutdown new file mode 100644 index 00000000..702c8a17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.shutdown @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# TODO: use ccontrol! +# 2005-05-24 (Last changed: 2005-06-18) + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -p|--power-off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " -s|--rescue: Rescue mode" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -p|--power-off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + -s|--rescue) kill -USR2 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.uml.test new file mode 100644 index 00000000..f6ea7fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.1 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG umid=cinit$$ init=/sbin/cinit" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..7f027455 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 (Last Changed: 2005-06-17) + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +PIDFILE=$1; shift +DAEMON=$1; shift + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.3pre7/client/README b/software/cinit/browse_source/cinit-0.3pre7/client/README new file mode 100644 index 00000000..0a5b8d0c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/client/README @@ -0,0 +1,2 @@ +client/ + These sources are used by the children which are spawned by cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre7/client/begin_msg.c b/software/cinit/browse_source/cinit-0.3pre7/client/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/client/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/client/connect_sock.c b/software/cinit/browse_source/cinit-0.3pre7/client/connect_sock.c new file mode 100644 index 00000000..2c2d45de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/client/connect_sock.c @@ -0,0 +1,38 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include /* memset, strcpy */ + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/client/exec_svc.c b/software/cinit/browse_source/cinit-0.3pre7/client/exec_svc.c new file mode 100644 index 00000000..f217f9e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/client/exec_svc.c @@ -0,0 +1,264 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +inline pid_t exec_svc(char *abspath, int action) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + SERVICE_LOG(abspath,LOG_SVC_FAIL); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + P_EXEC_FAILED(nargv[0]); + perror(MSG_ERR_EXECVE); + /* FIXME: remove debug, remove double printing without loosing info */ + sleep(3); /* debug */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/client/msg_change_status.c b/software/cinit/browse_source/cinit-0.3pre7/client/msg_change_status.c new file mode 100644 index 00000000..836a0fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/client/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* FIXME: change return code validation */ + +int msg_change_status(char *svc, char status, pid_t pid) +{ + if(!begin_msg(CMD_CHG_STATUS)) { + return RT_ERR_COMM; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/client/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.3pre7/client/msg_svc_on_off.c new file mode 100644 index 00000000..02948f2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/client/msg_svc_on_off.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, char action) +{ + if(!begin_msg(action)) return RT_ERR_COMM; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return RT_ERR_COMM; + return (int) do_result(sock,NULL); +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre7/client/respawn_svc.c b/software/cinit/browse_source/cinit-0.3pre7/client/respawn_svc.c new file mode 100644 index 00000000..5c350045 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/client/respawn_svc.c @@ -0,0 +1,99 @@ +/* + * (c) 2005,2006 Nico Schottelius (nico-linux at schottelius.org) + * respawn_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + D_PRINTF(abspath); + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, CMD_START_SVC) ) { + if(cpid != 0) { + D_PRINTF("sloefen"); + sleep(SLEEP_SVC); + D_PRINTF("Zuende geschlafen"); + } + } + } while(cpid); /* cpid is reset by sig_terminate() */ + + /* FIXME: put most code of sig_terminate here, look for no_kill */ + + /* start off task */ + exec_svc(abspath,CMD_STOP_SVC); + + D_PRINTF("jetzt weg"); + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/client/run_run_svcs.c b/software/cinit/browse_source/cinit-0.3pre7/client/run_run_svcs.c new file mode 100644 index 00000000..6486c76f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/client/run_run_svcs.c @@ -0,0 +1,86 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/client/run_svc.c b/software/cinit/browse_source/cinit-0.3pre7/client/run_svc.c new file mode 100644 index 00000000..7fea6a92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/client/run_svc.c @@ -0,0 +1,129 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre7/client/sig_terminate.c b/software/cinit/browse_source/cinit-0.3pre7/client/sig_terminate.c new file mode 100644 index 00000000..9b23e349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/client/sig_terminate.c @@ -0,0 +1,60 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + /* FIXME: only send SIGTERM, if not_kill does not exist */ + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + status = kill(cpid,SIGKILL); + if( status == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + D_PRINTF("muesste weg sein"); + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/comm/README b/software/cinit/browse_source/cinit-0.3pre7/comm/README new file mode 100644 index 00000000..840c9742 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/comm/README @@ -0,0 +1,3 @@ +comm/ + The communication part of cinit. + The functions are used in client and in server code. diff --git a/software/cinit/browse_source/cinit-0.3pre7/comm/do_change_status.c b/software/cinit/browse_source/cinit-0.3pre7/comm/do_change_status.c new file mode 100644 index 00000000..94b9be76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/comm/do_change_status.c @@ -0,0 +1,70 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/comm/do_result.c b/software/cinit/browse_source/cinit-0.3pre7/comm/do_result.c new file mode 100644 index 00000000..cb51161b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/comm/do_result.c @@ -0,0 +1,33 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return RT_ERR_COMM; + } + + return *value; +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre7/comm/do_svc_name.c b/software/cinit/browse_source/cinit-0.3pre7/comm/do_svc_name.c new file mode 100644 index 00000000..d427365f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/comm/do_svc_name.c @@ -0,0 +1,51 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/.README b/software/cinit/browse_source/cinit-0.3pre7/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_confdir b/software/cinit/browse_source/cinit-0.3pre7/conf/c_confdir new file mode 100644 index 00000000..091e6192 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_confdir @@ -0,0 +1,3 @@ +conf + +The directory below cinit_dir for cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_delay b/software/cinit/browse_source/cinit-0.3pre7/conf/c_delay new file mode 100644 index 00000000..dc30f147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGTERM for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_env b/software/cinit/browse_source/cinit-0.3pre7/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_halt b/software/cinit/browse_source/cinit-0.3pre7/conf/c_halt new file mode 100644 index 00000000..4eed340f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_halt @@ -0,0 +1,4 @@ +halt + +Name of the link belowe c_special, which links to the program +to be executed right before halting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_init b/software/cinit/browse_source/cinit-0.3pre7/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_needs b/software/cinit/browse_source/cinit-0.3pre7/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_off b/software/cinit/browse_source/cinit-0.3pre7/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_on b/software/cinit/browse_source/cinit-0.3pre7/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_panic b/software/cinit/browse_source/cinit-0.3pre7/conf/c_panic new file mode 100644 index 00000000..7fdb77b3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_panic @@ -0,0 +1,5 @@ +panic + +Name of the file below cinit_dir/c_confdir/ to execute on panic. +This name .params (normally panic.params) will be passed as parameters/ +argumunts to panic. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_params b/software/cinit/browse_source/cinit-0.3pre7/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_poweroff b/software/cinit/browse_source/cinit-0.3pre7/conf/c_poweroff new file mode 100644 index 00000000..5b5c9c9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_poweroff @@ -0,0 +1,4 @@ +poweroff + +Name of the link belowe c_special, which links to the program +to be executed right before powering off the system. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_reboot b/software/cinit/browse_source/cinit-0.3pre7/conf/c_reboot new file mode 100644 index 00000000..8702388f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_reboot @@ -0,0 +1,4 @@ +reboot + +Name of the link belowe c_special, which links to the program +to be executed right before rebooting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_respawn b/software/cinit/browse_source/cinit-0.3pre7/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_sock b/software/cinit/browse_source/cinit-0.3pre7/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_tmp b/software/cinit/browse_source/cinit-0.3pre7/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.3pre7/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.3pre7/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_umount b/software/cinit/browse_source/cinit-0.3pre7/conf/c_umount new file mode 100644 index 00000000..ab96b0a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_umount @@ -0,0 +1,6 @@ +umount + +Name of the file below cinit_dir/c_confdir/ to execute right before +reboot/halt/poweroff. + +It should normally be a shellscript with the OS-specific umount procedure. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/c_wants b/software/cinit/browse_source/cinit-0.3pre7/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/cc b/software/cinit/browse_source/cinit-0.3pre7/conf/cc new file mode 100644 index 00000000..b168ae6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/cc @@ -0,0 +1,3 @@ +gcc + +The c-compiler to use. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/cflags b/software/cinit/browse_source/cinit-0.3pre7/conf/cflags new file mode 100644 index 00000000..f205afb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/cflags @@ -0,0 +1,6 @@ +-pipe -W -Wall -Werror -Iinclude -g -D_XOPEN_SOURCE=600 -D_USE_POSIX + +Standard flags to pass to (g)cc. + +-D_XOPEN_SOURCE=600 must be used on glibc to select the right standard. +-D_USE_POSIX is needed for sigemptyset on glibc diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/cinit_dir b/software/cinit/browse_source/cinit-0.3pre7/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/confdir b/software/cinit/browse_source/cinit-0.3pre7/conf/confdir new file mode 100644 index 00000000..55fb65e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/confdir @@ -0,0 +1,3 @@ +conf + +The subdirectory below /etc/cinit to be used for general configurations. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/destdir b/software/cinit/browse_source/cinit-0.3pre7/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/getty_dir b/software/cinit/browse_source/cinit-0.3pre7/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/install_directory b/software/cinit/browse_source/cinit-0.3pre7/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/install_prog b/software/cinit/browse_source/cinit-0.3pre7/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/ipc_method b/software/cinit/browse_source/cinit-0.3pre7/conf/ipc_method new file mode 100644 index 00000000..fc75e273 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/ipc_method @@ -0,0 +1,5 @@ +msgq + +The type of IPC (inter process communication) to use. +Valid values can be optained by issuing `ls src/ipc/`. + diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/ld b/software/cinit/browse_source/cinit-0.3pre7/conf/ld new file mode 100644 index 00000000..b60e4836 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/ld @@ -0,0 +1,3 @@ +gcc + +Comment missing. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/ldflags b/software/cinit/browse_source/cinit-0.3pre7/conf/ldflags new file mode 100644 index 00000000..fc214daf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/ldflags @@ -0,0 +1,3 @@ + + +No flags specified normally. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/max_delay b/software/cinit/browse_source/cinit-0.3pre7/conf/max_delay new file mode 100644 index 00000000..149fa16c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/max_delay @@ -0,0 +1,7 @@ +4 + +Maximum number of digits which may be in the delay file. +If there are more, the string "12345678901" will be cut to the +right length "1234567890". I don't think you'll ever need +a timeout greater 4 digits (9999 seconds are 166,65~ minutes, are +2 hours, 46 minutes and 39 seconds). See doc/configuring.cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/max_deps b/software/cinit/browse_source/cinit-0.3pre7/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/msgq_pathname b/software/cinit/browse_source/cinit-0.3pre7/conf/msgq_pathname new file mode 100644 index 00000000..1bef0b6b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/msgq_pathname @@ -0,0 +1,4 @@ +/bin/sh + +Used to generate an unique identifier for the message queue. +See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/msgq_to_clients b/software/cinit/browse_source/cinit-0.3pre7/conf/msgq_to_clients new file mode 100644 index 00000000..dd15808a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/msgq_to_clients @@ -0,0 +1,4 @@ +o + +This is use in ftok to generate a key_t for the message queue use to write +to the clients. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/msgq_to_server b/software/cinit/browse_source/cinit-0.3pre7/conf/msgq_to_server new file mode 100644 index 00000000..f87ae3f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/msgq_to_server @@ -0,0 +1,4 @@ +i + +This is use in ftok to generate a key_t for the message queue use to write +to the server. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/os b/software/cinit/browse_source/cinit-0.3pre7/conf/os new file mode 100644 index 00000000..ddbf8f9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/os @@ -0,0 +1,14 @@ +linux + +Select the operating system compiling for. + +Current possibilities: + + - linux + + +Currently Planned possibilities: + + - freebsd + - openbsd + - netbsd diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/p_asciidoc b/software/cinit/browse_source/cinit-0.3pre7/conf/p_asciidoc new file mode 100644 index 00000000..52485c86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/p_asciidoc @@ -0,0 +1,6 @@ +asciidoc + +The binary on your system (with or without path) which does what I expect +asciidoc todo. + +Default: asciidoc diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/p_docbooktoman b/software/cinit/browse_source/cinit-0.3pre7/conf/p_docbooktoman new file mode 100644 index 00000000..d62c9015 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/p_docbooktoman @@ -0,0 +1,6 @@ +docbook2x-man + +The binary on your system (with or without path) which converts +docbook to manpages. + +Default: docbook2x-man diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/p_docbooktotexi b/software/cinit/browse_source/cinit-0.3pre7/conf/p_docbooktotexi new file mode 100644 index 00000000..278f6805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/p_docbooktotexi @@ -0,0 +1,6 @@ +docbook2x-texi + +The binary on your system (with or without path) which converts +docbook to texinfo. + +Default: docbook2x-texi diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/prefix b/software/cinit/browse_source/cinit-0.3pre7/conf/prefix new file mode 100644 index 00000000..6b90469f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/prefix @@ -0,0 +1,5 @@ + + +Where to install cinit. Normally this will be /, but you can put it anywhere. +The subdirectory 'sbin' under this prefix must be readable by the kernel. +This is normally either empty or "/". diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/profile b/software/cinit/browse_source/cinit-0.3pre7/conf/profile new file mode 100644 index 00000000..b9104bf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/profile @@ -0,0 +1,9 @@ +cprofile: + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile:" is the standard, as +the Linux kernel eats everything in the form 'var=parm'. +The old (pre cinit-0.1) option "cprofile=" should therefore +NOT be used. + +Under Linux you tell it the bootloader like grub or LILO. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/service_categories b/software/cinit/browse_source/cinit-0.3pre7/conf/service_categories new file mode 100644 index 00000000..2216ea97 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/service_categories @@ -0,0 +1,7 @@ +getty init local-tuning local-services mount network remote-services + +List of directories normally created below /etc/cinit/svc/ as +'pseudo-services'. + +Btw, 'init' is the first service and has always to be there, but it does not really +fit into here, because it's a real one, compraed to the pseudo services. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/sleep_before_kill b/software/cinit/browse_source/cinit-0.3pre7/conf/sleep_before_kill new file mode 100644 index 00000000..2671f22d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/sleep_before_kill @@ -0,0 +1,7 @@ +sleep_before_kill + +The file that specifies how long to sleep after sending SIGTERM, before sending +SIGKILL to every process. If this file is non-existing the builtin value from +'sleep_kill'. + +The file should be located below conf/ diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/sleep_kill b/software/cinit/browse_source/cinit-0.3pre7/conf/sleep_kill new file mode 100644 index 00000000..b419241a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/sleep_kill @@ -0,0 +1,8 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. + +Note: This does NOT affect terminating services, they are shutdown by +their own 'off' functions. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.3pre7/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.3pre7/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/sleep_svc b/software/cinit/browse_source/cinit-0.3pre7/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/sock_queue b/software/cinit/browse_source/cinit-0.3pre7/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/strip b/software/cinit/browse_source/cinit-0.3pre7/conf/strip new file mode 100644 index 00000000..08736418 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/strip @@ -0,0 +1,3 @@ +strip -R .comment -R .note + +Strip out unecessary parts of the binaries. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/sulogin b/software/cinit/browse_source/cinit-0.3pre7/conf/sulogin new file mode 100644 index 00000000..24859afc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/sulogin @@ -0,0 +1,6 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it, if the standard panic +action fails (as specified in cinit_dir/c_confdir/panic). + +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/svcdir b/software/cinit/browse_source/cinit-0.3pre7/conf/svcdir new file mode 100644 index 00000000..087a3848 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/svcdir @@ -0,0 +1,3 @@ +svc + +Directory below /etc/cinit that contains the services. diff --git a/software/cinit/browse_source/cinit-0.3pre7/conf/version b/software/cinit/browse_source/cinit-0.3pre7/conf/version new file mode 100644 index 00000000..82451a9a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/conf/version @@ -0,0 +1,3 @@ +"0.3pre7" + +The version. diff --git a/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/Makefile b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/Makefile new file mode 100644 index 00000000..8441c90b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/Makefile @@ -0,0 +1,70 @@ +# +# (c) 2005 Peter Portmann (pp at bluewin.ch) +# cinit/contrib+tools +# +# This script is written for the clinux-System and published +# under the terms of GPL 2.0 +# +# Version: 0.2 +# clean with a single command instead of two commands. +# +# ChangeLog: +# 0.1 initial version +# +# Todo: +# +# Features: + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +DEBUG=-g -DDEBUG +#OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! +LDFLAGS= + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. -I../ +LD=gcc +STRIP=strip -R .comment -R .note + +INSTALL = install + +prefix = /usr +bindir = $(prefix)/bin + +# objects + +CLIENT=cinit.graph.text.o + +COMMUNICATION=error.o ../generic/usage.o ../generic/mini_printf.o + +OBJ=$(CLIENT) $(COMMUNICATION) + +# +PROGRAMS=cinit.graph.text +SCRIPTS=cconfig.graph.xml.rb \ + make.cconfig.from.xml.rb \ + cinit-vis.pl + +# targets +all: $(PROGRAMS) + +cinit.graph.text: $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +clean: + rm -f *.o $(PROGRAMS) + +install: all + @echo '*** Installing contrib+tools ***' + $(INSTALL) -d -m755 $(DESTDIR)$(bindir) + for bin in $(SCRIPTS) $(PROGRAMS); do \ + $(INSTALL) $$bin $(DESTDIR)/$(bindir); \ + done diff --git a/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/README b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/README new file mode 100644 index 00000000..85fa2f5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/README @@ -0,0 +1,11 @@ +contrib+tools/ + programs written by others and external tools not necessary + needed but (very) nice to have + + + cinit-vis.pl - draw an ascii graph of cinit configuration [perl] + cinit.graph.text - draw an ascii graph of cinit configuration [c] + + cconfig.graph.xml.rb - creates a xml file from a cconfig [ruby] + make.cconfig.from.xml.rb - creates a cconfig from a xml file [ruby] + diff --git a/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/README.ruby b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/README.ruby new file mode 100644 index 00000000..ed210cee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/README.ruby @@ -0,0 +1,7 @@ +The ruby tools for general cconfig [0] are written by René Nussbaumer [1]. +You can find the documentation for them at [2]. + + +[0]: http://nico.schotteli.us/papers/linux/cconfig/ +[1]: http://killerfox.forkbomb.ch/ +[2]: http://killerfox.forkbomb.ch/articles/cconfig/tools diff --git a/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/cconfig.graph.xml.rb b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/cconfig.graph.xml.rb new file mode 100644 index 00000000..d18ba422 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/cconfig.graph.xml.rb @@ -0,0 +1,117 @@ +#!/usr/bin/env ruby + +=begin + + Writes an XML-Tree for a cconfig directory + Idea by Nico Schottelius aka telmich + Implemented and (C) by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added support for binary files + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Changed checking order: symlink, directory, file. Because of + a logical bug -> directory follows symlink so, when a symlink + points to a directory no «link» element is created. + + Version 0.1 (René Nussbaumer): + * Holy hack for directory scanning (needs to be optimized) + * Hack for rexml to print out «lost» tags. This rexml sux. + + Todo: + * Optimize scanning. + * Use another xml library instead of rexml crap. + Problem: Produce dependencies -> no std-lib + + Features: + * Create a flat (no deepnes without directory) and 1:1 image + of an cconfig directory + +=end + +require 'rexml/document' +require 'base64' +require 'digest/sha1' + +require 'filemagic' + +@version = '0.3' + +def determineTarget(entry) + return 'external' if(!File.expand_path(entry).index(@initpath)) + return 'link' if(FileTest.symlink?(entry)) + return 'object' if(FileTest.directory?(entry)) + return 'attribute' if(FileTest.file?(entry)) + return 'unknown' # Should never be reached +end + +def createTree(dir, parent) + dir.each { |entry| + next if(entry =~ /^(\.|\.\.)$/) + + if(FileTest.symlink?(entry)) + e = parent.add_element('link') + + # Much fun with links + e.add_attributes( { 'name' => entry, 'target' => determineTarget(File.readlink(entry)) } ) + e.add_text(File.readlink(entry)) + elsif(FileTest.directory?(entry)) + e = parent.add_element('object') + e.add_attribute('name', entry) + + # Bad, that we need to change the directory every time. + oldPwd = Dir.pwd + Dir.chdir(entry) + createTree(Dir.new('.'), e) + Dir.chdir(oldPwd) + elsif(FileTest.file?(entry)) + e = parent.add_element('attribute') + e.add_attribute('name', entry) + if(File.stat(entry).size?) + # Yeah, we got one WITH content! W00h00, let's party. + + fm = FileMagic.new(FileMagic::MAGIC_MIME) + if(fm.file(entry) =~ /executable/) + e.add_attribute('type', 'binary') + text = File.new(entry).read + e.add_attribute('sha1', Digest::SHA1.hexdigest(text)) + e.add_text(Base64.encode64(text)) + else + e.add_text(File.new(entry).read) + end + fm.close() + end + end + } +end + + +if(!ARGV[0] || !FileTest.directory?(ARGV[0])) + puts 'You need to specify a directory' + Kernel.exit(-1) +end + +doc = REXML::Document.new + +e = doc.add_element('cconfig') +e.add_attribute('name', File.basename(ARGV[0])) +e.add_attribute('version', @version) + +@initpath = File.expand_path(ARGV[0]) +Dir.chdir(ARGV[0]) +createTree(Dir.new('.'), doc.root) + +out = '' +doc.write(out, 0, false, true) + +REXML::XMLDecl.new('1.0', 'utf-8').write($stdout) # This should automatically printed by rexml. Damn bugs. +puts '' +puts out # Workaround for a buggy rexml + diff --git a/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/cinit-vis.pl b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/cinit-vis.pl new file mode 100644 index 00000000..3956ff47 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/cinit-vis.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# (c) by Marcus Przyklink (downhill-clinux@burningchaos.org) +# written for cinit and published under GPL +# beautified a bit by Nico Schottelius +# optimized by René Nussbaumer +# Version: 0.1 + +use strict; +use warnings; + +# +# Variables for location and output +# +# cinit-directory +my $path = "/etc/cinit/"; +# started profile +my $starting_point = "init"; +# the spaces for each level (integer: amount of spaces) +my $space = 3; +# marker for need +my $need = "-->"; +# marker for want +my $want = "==>"; + +# +# main function, recursively list the components of the cinit system +# +if (@ARGV) { + if( $ARGV[0] =~ /-(h|-help)/ ) { + print "Usage: " . __FILE__ . " without parameters for standard-use (check variables in file)\n"; + print " Parameters:\n"; + print " -h for this help\n"; + print " profile-name for a profile\n"; + exit(0); + } + else { + $starting_point = $ARGV[0]; + } +} + +# +# start first instance +# +sub get_deeper { + my ($point, $tmp_counter, $need_want) = splice @_; + + print " " x ($space * $tmp_counter) . ($need_want ? $need : $want) . " " . $point . "\n"; + + opendir(DIR, "${path}${point}/needs") and + my @next_need = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + opendir(DIR, "${path}${point}/wants") and + my @next_want = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + + for(@next_need) { + get_deeper($_, $tmp_counter + 1, 1); + } + for(@next_want) { + get_deeper($_, $tmp_counter + 1, 0); + } +} + +# +# start first instance +# +get_deeper($starting_point, 0, 0); + +# +# work done, go home +# +exit(0); diff --git a/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/cinit.graph.text.c b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/cinit.graph.text.c new file mode 100644 index 00000000..bc6fb6ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/cinit.graph.text.c @@ -0,0 +1,200 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + cinit.graph.text.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.2 + + ChangeLog: + Version 0.2 (Peter Portmann): + * Not assigned link destinies are marked by (!). + * Not readable directories are marked by "directory not readable". + + Version 0.1 (Peter Portmann): + * Print of the directory structure of the contained files and links + without following the links. + + Todo: + + Features: +*/ + +//#include +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" +#include "error.h" + +#define FTW_F 1 /* file isn't a directory */ +#define FTW_D 2 /* file is a directory */ +#define FTW_DNR 3 /* not readable directory */ +#define FTW_NS 4 /* unsuccesfully stat on this file */ +#define MAX_CHAR 4096 + +/*********************************************************************** + * cinit.gaph.text - textual representation of the cinit directory + */ + +#define CSERVICE_BANNER "cinit.gaph.text - textual representatio of the cinitdirectory\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncinit.gaph.text \n" \ + "\tpath\t- cinit installationpath\n" + +typedef int EACH_ENTRY(const char *, const struct stat *, int); +typedef enum { FALSE=0, TRUE=1 } bool; + +static char dirpath[PATH_MAX]; +static int depth = 0; +static long int filecount = 0; + +static EACH_ENTRY each_entry; +static int pp_ftw(char *, EACH_ENTRY *); +static int each_getinfo(EACH_ENTRY *); + +/*********************************************************************** + * pp_ftw: file tree walk + */ +static int pp_ftw(char *filepath, EACH_ENTRY *function) +{ + int n; + + if(chdir(filepath) < 0) /* In angegebenen Pfad wechseln */ + err_msg(FATAL_SYS, "can't change to %s", filepath); + + if(getcwd(dirpath, PATH_MAX) == 0) /* Absoluten Pfadnamen ermitteln */ + err_msg(FATAL_SYS, "error using getcwd for %s", filepath); + + n = each_getinfo(function); + + return(n); +} + +/*********************************************************************** + * each_getinfo: get more info for each file. + */ +static int each_getinfo(EACH_ENTRY *function) +{ + struct stat statpuff; + struct dirent *direntz; + DIR *dirz; + int n; + char *zgr; + + if(lstat(dirpath, &statpuff) < 0) + return(function(dirpath, &statpuff, FTW_NS)); /* Error on stat */ + + if(S_ISDIR(statpuff.st_mode) == 0) + return(function(dirpath, &statpuff, FTW_F)); /* no directory */ + + /* It's a directory. + * Call function() for it. After that handel each file in the directory. */ + + if((dirz = opendir(dirpath)) == NULL) { /* Directory not readable */ + closedir(dirz); + return(function(dirpath, &statpuff, FTW_DNR)); + } + + if((n = function(dirpath, &statpuff, FTW_D)) != 0) /* return the directorydirpath */ + return(n); + + zgr = dirpath + strlen(dirpath); /* append slash to the dirpathname */ + *zgr++ = '/'; + *zgr = '\0'; + + while((direntz = readdir(dirz)) != NULL) { + /* ignor . and .. */ + if(strcmp(direntz->d_name, ".") && strcmp(direntz->d_name, "..")) { + strcpy(zgr, direntz->d_name); /* append filename after slash */ + depth++; + if(each_getinfo(function) != 0) { /* Recursion */ + depth--; + break; + } + depth--; + } + } + *(zgr-1) = '\0'; /* deleting evrything after the slash */ + + if(closedir(dirz) < 0) + err_msg(WARNING, "closedir for %s failed", dirpath); + + return(n); +} + +/*********************************************************************** + * each_entry: handling each file and build the graph step by step. + */ +static int each_entry(const char *filepath, const struct stat *statzgr, int filetype) +{ + struct stat statpuff; + static bool erstemal=TRUE; + int i; + + char link[MAX_CHAR]; + + filecount++; + if(!erstemal) { + for(i=1 ; i<=depth ; i++) + printf("%4c|", ' '); + printf("----%s", strrchr(filepath, '/')+1); + } else { + printf("%s", filepath); + erstemal = FALSE; + } + + switch(filetype) { + case FTW_F: + switch(statzgr->st_mode & S_IFMT) { + case S_IFREG: break; + case S_IFCHR: printf(" c"); break; + case S_IFBLK: printf(" b"); break; + case S_IFIFO: printf(" f"); break; + case S_IFLNK: + printf(" -> "); + if(( i=readlink(filepath, link, MAX_CHAR)) != -1) + printf("%.*s", i, link); + if(stat(filepath, &statpuff) < 0) + printf(" (!)"); + break; + case S_IFSOCK: printf(" s"); break; + default: printf(" ?"); break; + } + printf("\n"); + break; + + case FTW_D: + printf("/\n"); + break; + + case FTW_DNR: + printf("/ directory not readable\n"); + break; + + case FTW_NS: + err_msg(WARNING_SYS, "Error using 'stat' on file %s", filepath); + break; + + default: + err_msg(FATAL_SYS, "Unknown Filetype (%d) by file %s", filetype, filepath); + break; + } + + return(0); +} + +/*********************************************************************** + * main: + */ +int main(int argc, char *argv[]) +{ + if(argc != 2) + usage(CSERVICE_BANNER, USAGE_TEXT); + + exit(pp_ftw(argv[1], each_entry)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/error.c b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/error.c new file mode 100644 index 00000000..8174c702 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/error.c @@ -0,0 +1,124 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#include "error.h" +#include +#include +#include +#include +#include +#include + +#define MAX_CHAR 4096 + +int debug; /* Aufrufer von log_msg oder log_open muss debug setzen: + 0, wenn interaktiv; 1, wenn Daemon-Prozess */ + +/*---- Lokale Routinen zur Abarbeitung der Argumentliste --------------------*/ +static void msg_err(int sys_msg, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + return; +} + +static void msg_log(int sys_msg, int prio, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + if (debug) { + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + } else { + strcat(puffer, "\n"); + syslog(prio, puffer); + } + return; +} + +/*---- Global aufrufbare Fehlerroutinen -------------------------------------*/ +void err_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_err(0, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + case DUMP: + msg_err(1, fmt, az); + break; + default: + msg_err(1, "Falscher Aufruf von err_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + else if (kennung==DUMP) + abort(); /* core dump */ + exit(1); +} + +void log_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_log(0, LOG_ERR, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + msg_log(1, LOG_ERR, fmt, az); + break; + default: + msg_log(1, LOG_ERR, "Falscher Aufruf von log_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + exit(2); +} + +/*---- log_open --------------------------------------------------------------- + initialisiert syslog() bei einem Daemon-Prozess */ +void log_open(const char *kennung, int option, int facility) +{ + if (debug==0) + openlog(kennung, option, facility); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/error.h b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/error.h new file mode 100644 index 00000000..a55690fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/error.h @@ -0,0 +1,29 @@ +#ifndef ERROR_H +#define ERROR_H +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.h + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#define WARNING 0 +#define WARNING_SYS 1 +#define FATAL 2 +#define FATAL_SYS 3 +#define DUMP 4 + +void log_msg(int kennung, const char *fmt, ...); +void err_msg(int kennung, const char *fmt, ...); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/make.cconfig.from.xml.rb b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/make.cconfig.from.xml.rb new file mode 100644 index 00000000..05f35cc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/contrib+tools/make.cconfig.from.xml.rb @@ -0,0 +1,227 @@ +#!/usr/bin/env ruby + +=begin + + Create a cconfig directory based on a xml input. + (C) 2005 by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added binary file support + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Added some commandline options + * Added «level» so control the restrictivity of the program + * Added more «intelligence» to the program, to detect internal broken dependcies. + * Support «debug»-Levels. + * Print statistic at the end of the programs about warnings and errors. + + Version 0.1 (René Nussbaumer): + * Initial + + Todo: + * Use an rexml alternative + * Some cleanup + * Optimize + * Testing? + + Features: + * Create a cconfig directory based on a xml + +=end + +require 'rexml/document' +require 'getoptlong' +require 'base64' +require 'digest/sha1' + +@verbose = 0 +@level = 1 +@version = '0.3' + +@warnings = 0 +@errors = 0 +@checklist = Array.new + +def printMsg(prefix, msg) + puts '%-12s %s' % [prefix + ':', msg] +end + +def error(msg, fatal = 0) + @errors += 1 + fatal = 0 if(@level < 1) + fatal = 255 if(@level > 1 && !fatal) + printMsg(fatal != 0 ? 'PANIC' : 'ERROR', msg) + Kernel.exit(-fatal) if(fatal != 0) +end + +def warn(msg) + error(msg, 1) if(@level > 1) + @warnings += 1 + printMsg('WARNING', msg) +end + +def info(msg) + printMsg('INFO', msg) +end + +def debug(msg, verbosity = 1) + if(@verbose >= verbosity) + printMsg("DEBUG(#{verbosity})", msg) + end +end + +def createObject(name) + error("#{name} already exists.", 1) if(FileTest.exists?(name)) + begin + Dir.mkdir(name) + rescue + error("Could not create directory #{name}: #{$!}. Abort.", 7) + end + debug("Object #{File.expand_path(name)} has been created.", 4) +end + +def createAttribute(name, content = nil) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + begin + file = File.new(name, 'w') + file.print content if(content && !content.empty?) + file.close + debug("Attribute #{File.expand_path(name)} has been created", 4) + rescue + error("Could not create file #{name}: #{$!}. Skipped.") + end +end + +def createLink(name, target, type) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + error("Broken dependencies! Please take a look if #{target} exists on your system", 2) if(type == 'external' && !FileTest.exists?(target)) + if(!FileTest.exists?(target) && type != 'external') + #info("Possible break. But maybe the target #{target} does not yet exists. Checking later.") + exptarget = File.expand_path(target) + @checklist << exptarget + debug("Adding #{target} to the list of internal dependcies to check.", 2) + end + begin + error('You\'ve a system which does not support symbolic links. Abort.', 3) if(File.symlink(target, name) != 0) + rescue + error("Could not create symlink #{name} => #{target}: #{$!}.", 3) + end + debug("Link #{File.expand_path(name)} has been created", 4) +end + +def doWork(elm) + name = elm.name + attrname = elm.attributes['name'] + error("XML Tag with missing name attribute!", 5) if(!attrname) + if(name =~ /(object|cconfig)/) + if(name == 'cconfig') + if(elm.attributes['version']) + info("Found a version string: #{elm.attributes['version']}") + warn("This XML is maybe incompatible with this programm. I'm a version #{@version} script. The XML is generated with a version #{elm.attributes['version']} script. Please update.") if(elm.attributes['version'] > @version) + end + end + createObject(attrname) + if(elm.has_elements?) + pwd = Dir.pwd + Dir.chdir(attrname) + elm.each_element { |e| + doWork(e) + } + Dir.chdir(pwd) + end + elsif(name == 'attribute') + text = nil + e = nil + text = e.value if((e = elm.get_text)) + if(text && elm.attributes['type'] && elm.attributes['type'] == 'binary') + text = Base64.decode64(text) + if(Digest::SHA1.hexdigest(text) != elm.attributes['sha1']) + warn("SHA1 differs from file: #{Dir.pwd}#{attrname}") + end + end + createAttribute(attrname, text) + elsif(name == 'link') + error("link-Tag without content.", 6) if(!elm.has_text?) + error("link with missing target. Skipped.") if(!elm.attributes['target']) + createLink(attrname, elm.get_text.value, elm.attributes['target']) + end +end + +puts "This is #{File.basename(__FILE__)} v#{@version} by René Nussbaumer" +puts + +opts = GetoptLong.new( + ['--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT], + ['--level', '-l', GetoptLong::REQUIRED_ARGUMENT], + ['--version', '-V', GetoptLong::NO_ARGUMENT] +) + +opts.each { |arg,value| + case arg + when '--verbose' + @verbose += 1 + value.each_byte { |x| + if(x.chr == 'v') + @verbose += 1 + end + } + debug("Verbosity set to: #{@verbose}") + when '--level' + debug("Setting level to: #{value}", 3) + case value + when 'low' + @level = 0 + when 'normal' + @level = 1 + when 'paranoid' + @level = 2 + else + warn('Unknown level: ' + value) + end + when '--version' + Kernel.exit(0) + else + warn("Unknown option #{arg}#{value && !value.empty? ? ('with value ' + value) : ''}") + end +} + +if(!ARGV[0]) + puts 'Need at least one argument' + puts "Usage: #{__FILE__} " + Kernel.exit(1) +end + + +filedesc = $stdin + +if(ARGV[0] != '-') + filedesc = File.new(ARGV[0]) +end + +doc = REXML::Document.new filedesc + +doWork(doc.root) + +if(!@checklist.empty?) + info('Now checking all broken internal dependcies again') + broken = 0 + @checklist.each { |path| + debug("Checking #{path}.", 2) + if(!FileTest.exists?(path)) + broken += 1 + warn("Broken dependcies. #{path} does not exist. Please fix.") + end + } + info('Looks good.') if(broken == 0) + info('Bad, bad.') if(broken > 0) +end + +info("Successed. #{@warnings} warnings, #{@errors} errors") + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/.buildwarn b/software/cinit/browse_source/cinit-0.3pre7/doc/.buildwarn new file mode 100644 index 00000000..3a0354dd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/.buildwarn @@ -0,0 +1,23 @@ +**************************************************************************** +Welcome, cinit greets you. +**************************************************************************** + +Hints: +------ + - Settings used for compiling (not only) can be found in conf/* + - The boot configuration normally resides below /etc/cinit + +Documentation +------------- +The documentation can be found in doc/: + + - doc/user/ contains documentation for users + - doc/devel/ contains documentation for developers + + Please read doc/user/installing-cinit.text _BEFORE_ installing. + +Building cinit +-------------- + + "make all" - to build cinit + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/Makefile b/software/cinit/browse_source/cinit-0.3pre7/doc/Makefile new file mode 100644 index 00000000..12b3b92f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/Makefile @@ -0,0 +1,95 @@ +# +# Makefile stolen from ccollect +# Nico Schottelius, Fri Jan 13 12:13:08 CET 2006 +# + +ASCIIDOC=asciidoc +DOCBOOKTOTEXI=docbook2x-texi +DOCBOOKTOMAN=docbook2x-man +XSLTPROC=xsltproc +XSL=/usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl + +# +# Asciidoc will be used to generate other formats later +# +MANDOCS = man/cinit.text +USERDOCS = user/compiles.on.text user/configuring.cinit.text \ + user/conf-system.text \ + user/cross-compiling.text user/current-init-problems.text \ + user/daemons.backgrounding.text user/dependencies.text \ + user/example-directory-structure.text \ + user/installing-cinit.text user/paths.text \ + user/profiles.text user/README.text +DOCS = $(MANDOCS) $(USERDOCS) + +# +# Doku +# +HTMLDOCS = $(DOCS:.text=.html) +DBHTMLDOCS = $(DOCS:.text=.htm) + +TEXIDOCS = $(DOCS:.text=.texi) + +MANPDOCS = $(MANDOCS:.text=.man) + +DOCBDOCS = $(DOCS:.text=.docbook) + +DOC_ALL = $(HTMLDOCS) $(DBHTMLDOCS) $(TEXIDOCS) $(MANPDOCS) + +# +# End user targets +# +help: + @echo "----------- documentation make targets --------------" + @echo "documentation: generate HTML, Texinfo and manpage" + @echo "html: only generate HTML (via asciidoc/docbook/xsltproc)" + @echo "htm: only generate HTML (via asciidoc)" + @echo "info: only generate Texinfo" + @echo "man: only generate manpage(s)" + +install: + +# +# Internal targets +# +html: $(HTMLDOCS) +htm: $(DBHTMLDOCS) +info: $(TEXIDOCS) +man: $(MANPDOCS) +documentation: $(DOC_ALL) + + +# +# Generic targets +# + +# docbook gets .htm, asciidoc directly .html (or the other way round) +%.html: %.docbook + ${XSLTPROC} -o $@ ${XSL} $< + +%.htm: %.text + ${ASCIIDOC} -n -o $@ $< + +%.docbook: %.text + ${ASCIIDOC} -n -b docbook -o $@ $< + +%.texi: %.docbook + ${DOCBOOKTOTEXI} --to-stdout $< > $@ + +%.mandocbook: %.text + ${ASCIIDOC} -b docbook -d manpage -o $@ $< + +%.man: %.mandocbook + ${DOCBOOKTOMAN} --to-stdout $< > $@ + +# +# Distribution +# +clean distclean: + rm -f $(DOC_ALL) + +# +# Be nice with the users and generate documentation for them +# +dist: distclean documentation + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/README.text b/software/cinit/browse_source/cinit-0.3pre7/doc/README.text new file mode 100644 index 00000000..46fe59fe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/README.text @@ -0,0 +1,57 @@ +cinit/doc +========= +Nico Schottelius +0.1, Initial Version from 2006-11-30 +:Author Initials: NS + +This directory contains the cinit documentation. + +Files and directories in this directory +---------------------------------------- + +ancient +~~~~~~~ +Old documents, only thought to irritate you. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +braindumps +~~~~~~~~~~ +Files I used to make the situation clear to myself. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +devel +~~~~~ +Developer related documents. Contains information for adding code, +for developing external tools to cinit or code guidelines for writing +patches to cinit. + + +logs +~~~~ +Logfiles or raw data dumps. + + +Makefile +~~~~~~~~ +The makefile used to generate the documentation. + + +man +~~~ +Manpages. + + +README.text +~~~~~~~~~~~ +This file + + +user +~~~~ +The most important part: Documentation for users (aka sysadmins, +hackers, endusers?): Explains howto install, configure, use and +debug cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/README b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/README new file mode 100644 index 00000000..45e193f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/README @@ -0,0 +1,16 @@ +Ancient +======= +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 + + +These files may be incorrect, outdated, totally wrong or even trying +to take over world dominance. + + +Why are they still there? +------------------------- + +Just because to document the early days of cinit. If you are +a software archaeologist in the year 2423, you'll be happy that +I saved those files. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/caveats b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/caveats new file mode 100644 index 00000000..5ab123e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/caveats @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/author b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/availability b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/availability new file mode 100644 index 00000000..cfb3f8a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/availability @@ -0,0 +1 @@ +cinit is currently Linux-specific. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/examples b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/examples new file mode 100644 index 00000000..1a7d2dcb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/examples @@ -0,0 +1 @@ +See http://linux.schottelius.org/cinit/#config diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/files b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/files new file mode 100644 index 00000000..4d6c0921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/files @@ -0,0 +1,5 @@ +/sbin/cinit - the init system +/sbin/cservice - control cinit +/sbin/cinit.reboot (/sbin/reboot if non-existent before) +/sbin/cinit.shutdown (/sbin/shutdown if non-existent before) +/etc/cinit - configuration directory diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/long_description b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/long_description new file mode 100644 index 00000000..18c3c082 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/long_description @@ -0,0 +1,5 @@ +cinit is a fast executing, small and simple init with support for profiles. It +minds dependencies (hard and soft, 'needs' and 'wants') and executes processes +in parallel. And it has a simple configuration, which makes many shell-scripts +unecessary (but you still could use them if you really want), which leads to +better performance and less memory using. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/meta/name new file mode 100644 index 00000000..b853da25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/meta/name @@ -0,0 +1 @@ +cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/parameters b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/parameters new file mode 100644 index 00000000..54df4727 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/parameters @@ -0,0 +1 @@ +cprofile: diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/path b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/path new file mode 100644 index 00000000..37edf339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/path @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/see also b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit.commands b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit.commands new file mode 100644 index 00000000..d34d13bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cinit.commands @@ -0,0 +1,73 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (using SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. +CMD_UPDATE: Update cinit, hot-reboot the system. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/author b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/long_description b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/long_description new file mode 100644 index 00000000..82818a93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/long_description @@ -0,0 +1 @@ +cservice controls cinit. Please use cservice -h for help. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/meta/name new file mode 100644 index 00000000..49c847bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/meta/name @@ -0,0 +1 @@ +cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/parameters b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/parameters new file mode 100644 index 00000000..605b08b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/parameters @@ -0,0 +1 @@ +[-eaphru] [thilo] diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/path b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/path new file mode 100644 index 00000000..85b0cb56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/path @@ -0,0 +1 @@ +/sbin/cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/see also b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/cservice-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/extern/README b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/extern/README new file mode 100644 index 00000000..e734d6d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/extern/README @@ -0,0 +1,2 @@ +doc/extern/ + Some things related to cinit from the outside world. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/extern/ipc.thoughts b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/extern/ipc.thoughts new file mode 100644 index 00000000..e2619d34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/extern/ipc.thoughts @@ -0,0 +1,83 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2 ), +1024 is the maximum opened file deskriptors, +minus 3 (stdin/stdout/stderr) already opened, divided +by two, because two fds needed per client. + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt, + - poweroff, + - update itself (hot-reboot) + - and to start a rescue mode (see using.rescue). + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + CONT: update + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/extern/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/extern/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/extern/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/extern/linux.kernel.eats.arguments b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/extern/linux.kernel.eats.arguments new file mode 100644 index 00000000..dbaf57d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/extern/linux.kernel.eats.arguments @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +Linux, the kernel, eats arguments +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +If you specify + + variable=value + +to the Linux kernel, the argument will NOT be passed to cinit. + +Here's the relevant code block from init/main.c of the Linux kernel: + +------------------------------------------------------------------------------- + +From init(void * unused) the function run_init_process(char *init_filename) +is called, which passes argv_init (char * argv_init[MAX_INIT_ARGS+2]) to init. + +First init_setup(char *str) resets all elements of the argv_init to NULL. + +The function unknown_bootoption(char *param, char *val) fills the +argv_init array, but only with parameters, which have no value +(val). + +The function parse_args calls unknown_bootoption with the unknown options. + +------------------------------------------------------------------------------- + +This way the profile support in all cinit versions below cinit-0.1 will +only work if you change conf/profile, because "cprofile=value" will +not be given to cinit, because it's not treated as a command line option. + +The original value "cprofile=" is replaced by "cprofile:" as of cinit-0.1. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/extern/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/extern/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/extern/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/fun-testing b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/fun-testing new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/fun-testing @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/how_it_works_internally b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/init-idea-first b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/init-idea-first new file mode 100644 index 00000000..2d677d8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/init-idea-first @@ -0,0 +1,38 @@ +- restarting/respawning + touch respawn +- dependencies + a needs started b +- clean multiply dependencies +- start & stop dependencies + start_depends + stop_depends +- parallel executation +- start and stop commands + start -> link + start_param -> parameters, like minit + stop -> link + stop_param -> parameters, like minit + + if no stop command is available, try to kill the pid we started at stop + +/startup/ + start_depends=gettys +/shutdown/ + stop_depends=power_off + + +gettys/ + start_depends=getty/1 + start_depends=getty/2 + start_depends=getty/3 + start_depends=getty/4 ... + +getty/1/ + start=/sbin/fgetty + respawn + +power_off/ + stop_depend=umount + +umount/ + stop_depend= diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/porting.to.other.os b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/porting.to.other.os new file mode 100644 index 00000000..65fdc07b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will perhaps become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/removing.zombies b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/removing.zombies new file mode 100644 index 00000000..9527e652 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + cinit in general will keep the behaviour of reaping the vestiges, + which broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/security b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/security new file mode 100644 index 00000000..f1dac591 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/security @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation, which will not accept connect() +by others than root. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console then! + +For extra parnoid settings you can do the following: + + ei # chmod 700 /etc/cinit/tmp/coala + ei # chown root:root /etc/cinit/tmp/coala diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/socket.poll_vs_o_async b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/socket.poll_vs_o_async new file mode 100644 index 00000000..477f2bff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/socket.poll_vs_o_async @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------------- +Socket: poll(2) vs. O_ASYNC, +Nico Schottelius 2005-06-22 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +0. General problem +1. O_ASYNC +2. poll(2) + + +0. General problem + +cinit has to react, as soon as there's data on the socket. + +1. O_ASYNC + +When you open a socket with O_ASYNC (or specify it with fcntl(2)) under +Linux, your process recieves the SIGIO signal from the kernel, as soon +as data is available. + +The problem is the handling of signals seems not to be serialised: + +The function, which is called on the SIGIO signal (called sigio() here) +calls other functions. Those functions way recieve SIGIO while working, +so the first data stream is not yet finished, though the next +stream is beeing read. + +This gives very nice race-conditions, which are very nice to debug. + +2. poll(2) + +poll(2) is a standard Unix-call (XPG4-UNIX), which waits a specific +timeout (or infinite time if you specify a value less that zero) for +the socket (or the fd in general) to be in a state where +data is available to read (in fact poll can do much more, but we are +not interested only in POLLIN and POLLPRI). + +While poll(2) seems to be a very bit slower than sigio it works reliable. + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/thoughts.closed b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/thoughts.closed new file mode 100644 index 00000000..91a8e080 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/ancient/thoughts.closed @@ -0,0 +1,52 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c + +7. Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. As this is not needed + currently, it's not implemented. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/README.text b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/README.text new file mode 100644 index 00000000..c4947a13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/README.text @@ -0,0 +1,2 @@ +DO NOT READ CONTENT IN THIS DIRECTORY. +(or at least do not blame me, if you get really confused after reading it) diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/big-picture.text b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/big-picture.text new file mode 100644 index 00000000..4426c236 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/big-picture.text @@ -0,0 +1,122 @@ +Just a small hint-file for me to see how cinit works: + + - cinit starts + * cinit executes either init or a profile + - the dependency-tree begins + + - now cinit begins to try to execute the dependencies + * first the needs (if those fail, wants are never called) + - fork() for every dependency? + +-------------------------------------------------------------------------------- +another idea: + + - cinit starts + - cinit reads the full depedency tree + * it builds n-depth trees + * it begins at the set init service (profile or init!) + * init is the first entry. always. + * read full service information (like on/off/params/respawn) + * design of each tree element: see below + - add a tree for the needs + - add a tree for the wants + - the elements have links, one service is created only once + - after the tree is created, execution begins + * begin from the bottom + * save a pointer to the last level somehow before? + +Pre calculation: + - need to act on changes (some kind of file watcher) + * need to keep status (?) + * what with now missing needs / wants? + - missing needs: shutdown now missing needs? + - simply ignore them? + - shut them down if not needed (no one has a link in needs?) + * +-------------------------------------------------------------------------------- +Sample dependency tree: + + init + / \ + needs wants + / | \ / | \ + a b c d e f + / | \ / | \ + needs needs needs END needs END + / | \ \ | | | | + b c d c f a e a +-------------------------------------------------------------------------------- +How this would be sorted:: + init: + needs: a b c + wants: d e f + a: + needs: b c d + b: + needs: c f + c: + needs: a e + d: + - + e: + needs: a + f: + - +-------------------------------------------------------------------------------- +So in this case, cinit may start services the following way: + d f + -> Wouldn't be possible in pre-calculation, because of circular dependencies. +-------------------------------------------------------------------------------- + Try a 'real' dependency tree: + a needs b c d + b needs c d + c and d do not need other stuff +-------------------------------------------------------------------------------- +Now cinit would it do the following way: + start c, start d + b will be started, as soon as c and d successfully finish + as soon as b is finished, a will be started +-------------------------------------------------------------------------------- +Now let's think about how this could look like in code... +- when we built up the tree, we have some ends (n to say) +- we can / must start starting (;-) at the end +- we would have more than one line back (z may be needed by c, i, and a) + * like in "c is needed by s, c, o" + * maxdepth counter? + * asynchronous rollback? + +--> to think more about it! +-------------------------------------------------------------------------------- + +tree elements: + * name (= path) + * on, off, +params + * respawn_delay + - -1 if not respawning + - >= 0 time to wait between restart + * status + - NOT STARTED (status on initialisation) + - RESPAWNING (running, respawning) + - RESPAWN_DELAY (waiting to respawn it) + - ONCE (started once) + * errormsg + - pointer to an error message in case of failure + * needs + - List of services we need + * wants + - List of services we want + * used_by + - List of services which use this service +-------------------------------------------------------------------------------- + +Conclusions +------------ + +cinit as the main executor +~~~~~~~~~~~~~~~~~~~~~~~~~~ +If cinit should start all services directly and manage dependencies +only internally, it will need to have build a reverse dependency tree, +so it begins starting at the end. + +cinit could execute all possible parallel running services in parallel +and open pipes to the (dumb) service executors. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/circular-dependencies.text b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/circular-dependencies.text new file mode 100644 index 00000000..dcc91ea7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/circular-dependencies.text @@ -0,0 +1,35 @@ +What todo with circular dependencies? + a needs b + b needs a + + - try to start them? + status a: is_starting + status b: not_set + a wants b, so a service starter for b starts + status a: is_starting, waiting for b + status b: is_starting + service starter for b sees that a is needed + service starter for b sees that a is already being started + service starter for b begins to execute b + status a: is_starting, waiting for b + status b: is_starting, executing "on" + service starter b finishes + status a: is_starting, waiting for b + status b: FAILED | RESPAWN | ONCE + service a continues + b successful: execute on + b failed: register / print that we do not start, because + b failed + + -> this would only catch possible deadlocks, if the dependency + tree / status check is done dynamically + -> in case of pre-building the dep-tree this situation must + be concerned: + - start both a and b? + - or stop due to circular dependency? + + - Abort on detection of a circular dependency + * possible without pre-calculating? + - perhaps only with direct communication possible? + * pre calculate + - do not start that services? diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/coding-style b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/coding-style new file mode 100644 index 00000000..1b164b9e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/coding-style @@ -0,0 +1,49 @@ +Coding style +============ +Nico Schottelius +0.1, for cinit, Initial version from 2006-11-13 +:Author Initials: NS + +This document describes the coding style used in cinit. + + +Indent +------ +Indent the code by 3 spaces for each level. + + +Unsorted +--------- +Linebreaks: + + +if(...) { + +} else { +} + + +do { +} while(); + +no spaces + - within braces and code "(!test)", + - before braces "if(code)" + +spaces + - after braces "if(test) return 0;" + - spaces before and after '=' (a = b); + +curly braces: + functions: + int func(int params) + { + body + } + +comments: + where necessery, do not state the obvious in comments: + + /* this code increments tmp */ + ++tmp; + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/converting-debian b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/converting-debian new file mode 100644 index 00000000..ee40fdff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/converting-debian @@ -0,0 +1,30 @@ +# If you would like to automatically convert a debian system, you could +# use this script as a start point +# +# how it could look like +# + +# create cinit base configuration + +# analyse enabled services +level=$(awk -F: '/^id/ { print $2 }' /etc/inittab) +rcdir="/etc/rc${level}.d/" +initdir=/etc/init.d + +cd "$rcdir" +for svc in *; do + if [ -d "${debian_map_dir}/${svc}" ]; then + echo "Adding $svc" + else + + fi +done + +# Also add existing services in /etc/init.d +for ... + if [ ! -e $rcdir/$svc ] + if [ -d "${debian_map_dir}/${svc}" ]; then + echo "Adding, but not enabling" + fi + fi +done diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/converting-general b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/converting-general new file mode 100644 index 00000000..8a0a2e40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/converting-general @@ -0,0 +1,10 @@ +kern=$(uname -s) + +case "${kern}" in + $known_kern) + $scriptdir/$kern + ;; + *) + echo "Unknown system" + ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/creating-new-configurations b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/creating-new-configurations new file mode 100644 index 00000000..a251de5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/creating-new-configurations @@ -0,0 +1,6 @@ +scripts/create_baseconfig.sh # create base +scripts/cinit.install.standard.dirs # create common categories + +- create fsck +- set hostname +- create getty(s) diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/messages.text b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/messages.text new file mode 100644 index 00000000..f4ef769e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/messages.text @@ -0,0 +1,6 @@ +This document describes the messages used between cinit and its +"clients" (i.e. ccontrol, cservice, cinit.halt, ...): + +Signal messages +--------------- +As signals diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/possible_service_pre_calculation.text b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/possible_service_pre_calculation.text new file mode 100644 index 00000000..96ec3a73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/possible_service_pre_calculation.text @@ -0,0 +1,19 @@ +- start at + * create a new service entry (if not exists) <--- + * reads needs | + - follow dependencies ------------------------ + * only if service does not yet exist! | + * read wants | + - follow dependencies ------------------------ + * only if service does not yet exist! + * create + - needed by entry in dependencies + - needs entry in service + - wanted by entry in dependencies + - wants entry in service + + * record + - (on,off)(,.env,.params)? + - alternatively put that code into service starter + * add services without further needs into a special + "begin" structure to be reused at fireing of the services? diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/possible_service_status.text b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/possible_service_status.text new file mode 100644 index 00000000..eb0f21e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/possible_service_status.text @@ -0,0 +1,14 @@ + + - NOT_SET: this service has not yet been initialized + - RESPAWNING: happily respawning + - RESPAWN_DELAY: waiting delay before restarting + * HINT: using alarm()? + - senseful for single process service watcher + * HINT: using nanosleep()? + - senseful for per service process watcher + - NEED_FAILED + * add a (somehow terminated) list of services that failed? + * use global status to checkout which services failed? + - WANT_FAILED? + * NOT NECESSARY, it is a simple want, we do not need it. + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/registering_needs_wants.text b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/registering_needs_wants.text new file mode 100644 index 00000000..ededbd41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/registering_needs_wants.text @@ -0,0 +1,55 @@ +Each service has a list of services it + - needs + - is needed by + - wants + - is wanted by + + +Each entry is a service pointer. +The simplest list could look like this: + + service a: + needs: + b f g NULL + +So the needs pointer is NULL terminated: + needs = realloc(count_links) + -> how to get the count? + 0x02 + 0x + + Better: A double linked list (like the main service list)? + +Could look like: + service a: + needs: + *service + *next + *prev + +This design could also be used for wants. + +On the other hand, we've to register us at the needed/wanted service: + + service b: + needed_by: + *service + *next + *prev + + +So each service needs four pointers: + needs + needed_by + wants + wanted_by + +And on each request both lists have to be modified! + +Example: + + Service "a" adds "b" as needed: + + - add "a" needs "b" + - add "b" needed_by "a" + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/shutdown.text b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/shutdown.text new file mode 100644 index 00000000..8b286e0b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/braindumps/shutdown.text @@ -0,0 +1,40 @@ +cinit - braindumps - shutdown +============================= +Nico Schottelius +v0.1, for cinit-0.3, 2007-01-11 +:Author Initials: NS + +Just some braindumps. Do not read. + +Introduction +------------ +Shutting down the system. + +When? +----- +- reboot +- halt +- power off +- further needed? + +How / What? +------------ +- Stop services in the correct order + * reuse the service tree / needs / needed_by! + * call off, if existent + * if respawning, send SIGTERM? + - not if off is existent? + * give some variables to off? + - $RESPAWN_PID: if respawning +- send SIGTERM to other apps? + * or put that into special? special/post_svc_shutdown +- call special/{halt,poweroff,reboot} +- implement timely controlled shutdown: + * cinit.shutdown forks (?) itself and waits, then sends a signal + to cinit to initiate the shutdown process +- also implement halt + * kill -TERM 1 +- also implement reboot + * kill -HUP 1 +- also implement reboot + * kill -USR1 1 diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/devel/README.text b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/README.text new file mode 100644 index 00000000..20524651 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/README.text @@ -0,0 +1,18 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit development documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +(cinit-)developers. + +Content +------- diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/devel/cinit-0.4.text b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/cinit-0.4.text new file mode 100644 index 00000000..61b718f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/cinit-0.4.text @@ -0,0 +1,115 @@ +cinit 0.4 - Redesign of cinit +============================================ +Nico Schottelius +0.4.0, for cinit 0.4, Initial Version from 2006-03-11 +:Author Initials: NS + + +cinit 0.2 ran fine and the general project of developing a +parallel executing init system is finished. +With cinit 0.4 there are new aims to reach. + + +Introduction +------------ + +. AIMS + - portability: no Linux-dependency anymore + - cleaner signal handling + - better documentation so more people can use it + + +Current problems +---------------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The mount(2) system call is os-specific. +The temporary fs is os-specific. + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Race conditions when multiple signals arrive + + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +serv/sig_reboot.c contains umount, remount hard coded. + + +Solutions +--------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Remove +- the mount call +- do not create an initial socket + +Wait until we recieve a signal, then we create a socket +under the configured socket directory (see `conf/sockdir`). + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +Misc +~~~~ + +- Configuration + /etc/cinit/config/ + init -> link to initial service + pre_boot + pre_boot_args + post_boot + post_boot_args + /etc/cinit/services/ + /etc/cinit/profiles/ + links to the starting services + + + +cinit - Internals +================= +Nico Schottelius +0.1 for cinit-0.3, Initial version: So Feb 19 10:25:46 CET 2006 +:Author Initials: NS + + +Introduction +------------ +This document describes the internals of cinit. It is thought +to be read by developers. + + +Child handler code in cinit-0.3 +------------------------------- + +In cinit versions <= cinit-0.2.1 the respawning services where +handled by an extra child handler, which was a fork of cinit. This +had some problems: + + - We allocated more memory than necessary, unecessary parts of + cinit were copied + - The SIG_CHILD-handler was not written very clean, in some versions + it was completly missing. + + +. So in `cinit-0.3` we changed it the following way: + - no extra child handlers + - handle everything in the SIG_CHILD handling function + - when sig_child is recieved do: + - check against respawn list + - if it is a respawning service, [do the following in a seperate fork?] + check whether it successfully stoped + - if yes: restart immediatly + - if no: sleep $sleep_time and then restart diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/devel/codingguideline b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/codingguideline new file mode 100644 index 00000000..f2e6abdb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/codingguideline @@ -0,0 +1,32 @@ +When to place spaces? + After and before comments: + /* text */ + o +Where to put curly braces? + functions: at the beginning of the line: + + void func(char *what, int where) + { + + } + + Before and after '=', '==', '!='', '>=', '<=' + + After ')', ',' + No space before ), so if '))', do not put a space after the first ')'. + +Header: + Put a header into each file, containing: + - date of file being put into existence (year is enough) + - Name and E-mail of Author + - Description of the function + +Includes: + System includes first, + own headers later + +Indent: + Three spaces. No tabs. + + Indent variable names, so the names begin all at the same position. Use three spaces + to place them. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/devel/communication.text b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/communication.text new file mode 100644 index 00000000..82f77774 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/communication.text @@ -0,0 +1,221 @@ +cinit - communication +===================== +Nico Schottelius +0.1 for cinit-0.3, Initial version: 2006-08-11 +:Author Initials: NS + +This document describes the internal communication of cinit. +It is thought to be read by developers. + + +Introduction +------------ +This document describes the messages used between cinit, cinit forks +and other programs that want to talk to cinit. It does NOT +describe the communication method, but only the messages sent +(for the communication method read "ipc.text"). + +Document status +~~~~~~~~~~~~~~~ +This document is still being written, it is not finished. + + +About Messages +-------------- + +Order +~~~~~ +The client always initiates the communication. +cinit will begin listening to messages directly after its start. + +Data +~~~~~ +A message always conists of a predefined structure (see src/headers/comm.h). +The byte order is host specific (may be little or big endian). + + +The messages +------------ +The client always uses the same structure (struct msg_client) to contact +cinit. This way cinit does not need to handle dynamic data structures. + +cinit in contrast delivers different data structures to its clients, +depending on the question. + +The questions are issued by any type of client, the internal command used is +noted in square brackets ([]). + +The answers are given by cinit. + + +Question: Start a service (and its dependencies) [CMD_START_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to start the service and its dependencies. + +The client must provide cinit with the following information: +. Name of the service to be started +. Reason why to start it +. eventually additional information (see below) + +The reason +^^^^^^^^^^ +Can be one of: +- RS_NONE (it's a manual start request) +- RS_WANTS (a currently starting service wants to start this service) +- RS_NEEDS (a currently starting service needs to start this service) + +If the reason is RS_WANTS or RS_NEEDS the client must supply the name +of the service, which wants it to be started. + + +Question: Start a service (nothing else) [CMD_START_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to start the service and which will +report the status back. + + +Question: Stop a service (and its dependencies) [CMD_STOP_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to stop the service and each service +that 'needs' it. + +This function works recursively, thus also killing those services, that +need the service that need the current service. + + +Question: Stop a service (nothing else) [CMD_STOP_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to stop this service and which will +report the status back. + + +Question: Stop a service (plus 'needs' and 'wants') [CMD_STOP_SVC_WANTS] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Same as 'Stop a service (and its dependencies)', but also stop the +services that want to have this service. + +This function works recursively, thus also killing those services, that +'need' or 'want' the service that 'need' or 'want' the current service. + + +Question: Could you change the status? [CMD_CHG_STAT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A cinit fork reports the new status of a service. + + +Question: Could you start the rescue mode? [CMD_RESCUE] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +spawn the rescue program. + + +Question: Could you halt the system? [CMD_HALT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +halt the system. + + +Question: Could you reboot the system? [CMD_REBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +reboot the system. + + +Question: Could you poweroff the system? [CMD_POWEROFF] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +poweroff the system. If poweroff is not possible, the system will +be halted. + + +Question: Could you warmboot the system? [CMD_WBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +restart itself and the bootup process. + + +Question: Could you send information about a service? [CMD_INFO] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will respond with detailled information about the service +to the client. + + +Answer: Return short status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Start a service (and its dependencies) + - Question: Start a service (nothing else) + - Question: Stop a service (and its dependencies) + - Question: Stop a service (nothing else) + - Question: Stop a service (plus 'needs' and 'wants') + - Question: Could you change the status? + +cinit only responds the status of the asked service. +The structure send is "asw_sstatus", which only include a status byte. + + +Answer: Return long status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Could you send information about a service? + + +old Messages (to be transferred into this document) +--------------------------------------------------- + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Service status: + +-------------------------------------------------------------------------------- +service status (cinit), +Nico Schottelius 2005-09-29 (Last Modified: -) +-------------------------------------------------------------------------------- + +There are service status and service returns. Service status is a status +a service can have. A service return is a value from a function that +describes what happened with the service. + +Status has ST_ prefix, return has RT_ prefix. +See cinit.h for most up to date versions. + + +ST_NEED_FAIL - this service will not be started, until the needs are started +ST_FAIL - this service failed to start +ST_UNSPEC - some unknown error. This should never happen. +ST_ERR - ??? /* tried earlier, service failed, won't retry */ + +ST_SUCCESS - service was successfully started - senseful? +ST_TMP - some instance is currently working on it +ST_ONCE - executed once sucessfully +ST_RESPAWN - service is running and respawning + +ST_TMPNOW 55 /* now you are on it - only for clients */ +#define ST_OFF 56 /* Switching service off */ + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/devel/configuring.text b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/configuring.text new file mode 100644 index 00000000..405a4d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/configuring.text @@ -0,0 +1,18 @@ +cinit/doc/devel/using-conf.text +================================ +Nico Schottelius +0.1, Initial Version from 2006-07-28 +:Author Initials: NS + +About conf/* and how to use the configurations. + +Introduction +------------ + +Who should read those documents? +-------------------------------- + +Content +------- + + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/devel/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/cross-compiling.text new file mode 100644 index 00000000..fdf70564 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/cross-compiling.text @@ -0,0 +1,36 @@ +TODO: + - merge into "Cross compiling" + +cinit - Problems that may arise +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Max open files + OS dependent + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/devel/ipc.text b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/ipc.text new file mode 100644 index 00000000..7013a985 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/ipc.text @@ -0,0 +1,108 @@ +IPC - in cinit and in general +============================= +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +IPC - Inter process communication + +Introduction +------------ +This document describes the IPC methods used and/or tested for +cinit. + +It does not describe in detail, how the different methods work +(this is already done many times, there's great documentation +available online), but more the advantages and disadvantages +(especially for an init system). + +What is IPC? +~~~~~~~~~~~~ +IPC describes methods to communicate between different processes +(programs). + +IPC as described by SUSV3 (The Single UNIX Specification Version 3) +aka IEEE Std 1003.1, 2004 Edition aka POSIX only defines +MSQ, SHM and Semaphores as IPC. This document also covers +Sockets and FIFOs. + + +What is not (yet) covered by this document? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Speed of different IPC methods, different behaviour on different +unices. + + +Why do you need IPC for an init system? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +cinit IPC history + analysis +---------------------------- + + +FIFOs +~~~~~ +First in - first out +File on the filesystem +Always need two files for two way communication + +Hints +^^^^^ +The first idea for IPC in cinit was to use two FIFOs, like minit does. +Wrong assumption: +runit also uses fifos, but two fifos for each services. That way +more parallel transmissions is possible. +You have to pay attention: Maximum number of opened files! +(On Linux 2.6 this is 1024, which makes a maximum of 512 services. +This limit is most likely never reached, but you have to keep it +in mind). + +Sockets +~~~~~~~ +Clean and beautiful. They allow easy two way communication. + +If you created a socket, fs is r/o, you cannot use it, although +there is SO_REUSE. + +First method: Using memory mapped part (tmpfs). +Second method: use interal communication (pipes!) and external after +/etc/cinit/ becomes writable. + + +Current IPC configuration +-------------------------- + +- switchable (conf/ipc_method) +- each ipc implementation needs: + + ipc.h -> for global variables and ipc specific things + prefix variables with ipc_ + int cinit_ipc_init(void); -> general initialization + return 1 on success, 0 on failure + int cinit_ipc_listen(void); -> begin to listen for messages + int cinit_ipc_send(void *data) -> send data to a client + +-------------------------------------------------------------------------------- +TO SORT: + +1. message queues + o clients schreiben rein + o datenpaket gross genug fuer antwort? + +2. shared memory + o client kann direkt rauslesen, was gestartet werden muss + o client kann direkt abhaengigkeiten starten, muss diese aber + eintragen + +Ausprobieren: + - Mutexe + - Message Queues + - + +Ideen: + Message queue + 1. Client geht auf die normale + als id = pid (cast!) + dann rueck via anderer queue + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/devel/lists.text b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/lists.text new file mode 100644 index 00000000..6360acb3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/lists.text @@ -0,0 +1,22 @@ +Lists in cinit-0.3 are generalized, all have the same general layout: + + - double linked + - have 'prev' and 'next' as pointers + + Add an element to a list + + /--------------------------\ + |<->first<->middle<->last<->| + + + After insert: + + /-------------------------------\ + |<->first<->middle<->last<->new<->| + + We alway have 'first'. + Need to adjust: + - new->prev = last (= first->next) + - new->next = first + - first->prev = new + - first->prev->next (= last->next) = new diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/devel/merging.other.initsystems.text b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/merging.other.initsystems.text new file mode 100644 index 00000000..0baa4789 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/merging.other.initsystems.text @@ -0,0 +1,68 @@ +TODO: + - rewrite to asciidoc + - implement a sample merge + +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not mean that he does not accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated! + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/devel/optimising.cinit b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/optimising.cinit new file mode 100644 index 00000000..4f4b5c02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/optimising.cinit @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options +2. striping + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + +The current standard for cinit is: (see CFLAGS in the Makefile). + + +2. striping + +With strip(1) you can remove specific sections of object files. +You have to find out, which ones you can remove safely +(for instance with objdump(1)). + +The current standard for cinit is: (see STRIP in the Makefile) diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/devel/testing.text b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/testing.text new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/devel/testing.text @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/logs/2006-10-25.config.wasserstoff b/software/cinit/browse_source/cinit-0.3pre7/doc/logs/2006-10-25.config.wasserstoff new file mode 100644 index 00000000..f28bd71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/logs/2006-10-25.config.wasserstoff @@ -0,0 +1,16 @@ +[17:12] wasserstoff:svc# pwd +/etc/cinit/svc +[17:12] wasserstoff:svc# ls +init +17:12] wasserstoff:svc# mkdir getty +[17:12] wasserstoff:svc# mkdir getty/2/ +[17:12] wasserstoff:svc# cd getty/2 +[17:12] wasserstoff:2# ln -s /sbin/getty on +17:12] wasserstoff:2# echo 38400 > on.params +[17:13] wasserstoff:2# echo tty2 >> on.params +[17:13] wasserstoff:2# cd ../../init +[17:14] wasserstoff:init# mkdir needs +[17:14] wasserstoff:init# cd needs +[17:14] wasserstoff:needs# ln -s ../../getty/2 getty-2 +[17:14] wasserstoff:needs# + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/logs/2006-11-22.startup-with-debug b/software/cinit/browse_source/cinit-0.3pre7/doc/logs/2006-11-22.startup-with-debug new file mode 100644 index 00000000..44121cf4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/logs/2006-11-22.startup-with-debug @@ -0,0 +1,55 @@ +[0:08] wasserstoff:cinit-0.3pre3% ./src/cinit +cinit-0.3pre3: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty:: +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2:: +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout:: +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3:: +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning:: +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount:: +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root:: +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network:: +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0:: +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback:: +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::/etc/cinit/svc/init +========> tree_exec() +/etc/cinit/svc/local-tuning/keyboard-layout:::abhaengigkeiten gestartet, exec; add wants, needsdep_needs_wants_add::/etc/cinit/svc/local-tuning/keyboard-layout add: (/etc/cinit/svc/getty/2) + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/logs/2006-11-30.startup-0.3pre5 b/software/cinit/browse_source/cinit-0.3pre7/doc/logs/2006-11-30.startup-0.3pre5 new file mode 100644 index 00000000..2ded7712 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/logs/2006-11-30.startup-0.3pre5 @@ -0,0 +1,1821 @@ +cinit-0.3pre4: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2 +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3 +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0 +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/test +gen_tree::/etc/cinit/svc/test +CAD::/etc/cinit/svc/test +CAD::NEW::/etc/cinit/svc/test::/etc/cinit/svc/test/env +gen_tree::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +START::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test +CAD::/etc/cinit/svc/init +========> tree_exec() +TEX::/etc/cinit/svc/local-tuning/keyboard-layout +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout::/etc/cinit/svc/getty/2::(A)::::/etc/cinit/svc/getty/3::(A)::::/etc/cinit/svc/local-tuning::(A):: +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout +TEX::/etc/cinit/svc/mount/root +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +DNWA::/etc/cinit/svc/mount/root::/etc/cinit/svc/mount::(A):: +DNWA::/etc/cinit/svc/mount/root +TEX::/etc/cinit/svc/network/eth0 +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +DNWA::/etc/cinit/svc/network/eth0::/etc/cinit/svc/network::(A):: +DNWA::/etc/cinit/svc/network/eth0 +TEX::/etc/cinit/svc/network/loopback +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +DNWA::/etc/cinit/svc/network/loopback::/etc/cinit/svc/network +DNWA::/etc/cinit/svc/network/loopback +TEX::/etc/cinit/svc/test/env +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +DNWA::/etc/cinit/svc/test/env::/etc/cinit/svc/test::(A):: +DNWA::/etc/cinit/svc/test/env +TEX::/etc/cinit/svc/getty/2 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/2/on +CBA::/etc/cinit/svc/getty/2/on +DNWA::/etc/cinit/svc/getty/2::/etc/cinit/svc/getty::(A):: +DNWA::/etc/cinit/svc/getty/2 +TEX::/etc/cinit/svc/getty/3 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/3/on +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +DNWA::/etc/cinit/svc/getty/3::/etc/cinit/svc/getty +DNWA::/etc/cinit/svc/getty/3 +TEX::/etc/cinit/svc/local-tuning +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +/etc/cinit/svc/local-tuning/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/local-tuning::/etc/cinit/svc/init::(A):: +DNWA::/etc/cinit/svc/local-tuning +TEX::/etc/cinit/svc/mount +::/etc/cinit/svc/mount/root +/etc/cinit/svc/mount/root: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +/etc/cinit/svc/mount/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/mount::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/mount +TEX::/etc/cinit/svc/network +::/etc/cinit/svc/network/eth0 +/etc/cinit/svc/network/eth0: <<16>> +::/etc/cinit/svc/network/loopback +/etc/cinit/svc/network/loopback: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +/etc/cinit/svc/network/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/network::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/network +TEX::/etc/cinit/svc/test +::/etc/cinit/svc/test/env +/etc/cinit/svc/test/env: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +/etc/cinit/svc/test/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/test::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/test +TEX::/etc/cinit/svc/getty +::/etc/cinit/svc/getty/2 +/etc/cinit/svc/getty/2: <<4>> +::/etc/cinit/svc/getty/3 +/etc/cinit/svc/getty/3: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +/etc/cinit/svc/getty/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/getty::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/getty +TEX::/etc/cinit/svc/init +::/etc/cinit/svc/getty +/etc/cinit/svc/getty: <<4>> +::/etc/cinit/svc/local-tuning +/etc/cinit/svc/local-tuning: <<4>> +::/etc/cinit/svc/mount +/etc/cinit/svc/mount: <<4>> +::/etc/cinit/svc/network +/etc/cinit/svc/network: <<4>> +::/etc/cinit/svc/test +/etc/cinit/svc/test: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +DNWA::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/init +=> cinit started. +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +ORC:/etc/cinit/svc/init/on.params +ORC:/etc/cinit/svc/getty/2/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test +SC::/etc/cinit/svc/test/env::FAILED::::RESPAWN::ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test + +msgrcv: Interrupted system call +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/2/on +ORC:/etc/cinit/svc/getty/2/on.params +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted +SC::/etc/cinit/svc/network/eth0::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted + +msgrcv: Interrupted system call +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. +SC::/etc/cinit/svc/init::FAILED::::RESPAWN::ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. + +msgrcv: Interrupted system call +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. +SC::/etc/cinit/svc/network/loopback::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. + +msgrcv: Interrupted system call +mount: only root can do that +SC::/etc/cinit/svc/mount/root::FAILED::::RESPAWN::ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +mount: only root can do that + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +LSP:: 32705: /etc/cinit/svc/init:1 (0) +LSP:: 32705: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32705: /etc/cinit/svc/test:65 (0) +LSP:: 32705: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32705: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32705: /etc/cinit/svc/network:65 (0) +LSP:: 32705: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32705: /etc/cinit/svc/mount:65 (0) +LSP:: 32705: /etc/cinit/svc/local-tuning:65 (0) +LSP:: 32705: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32705: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32705: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32705: /etc/cinit/svc/getty:65 (0) +LSP:: 32706: /etc/cinit/svc/init:65 (0) +LSP:: 32706: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32706: /etc/cinit/svc/test:65 (0) +LSP:: 32706: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32706: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32706: /etc/cinit/svc/network:65 (0) +LSP:: 32706: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32706: /etc/cinit/svc/mount:65 (0) +LSP:: 32706: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32706: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32706: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32706: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32706: /etc/cinit/svc/getty:65 (0) +LSP:: 32707: /etc/cinit/svc/init:65 (0) +LSP:: 32707: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32707: /etc/cinit/svc/test:65 (0) +LSP:: 32707: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32707: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32707: /etc/cinit/svc/network:65 (0) +LSP:: 32707: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32707: /etc/cinit/svc/mount:4 (32706) +LSP:: 32707: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32707: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32707: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32707: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32707: /etc/cinit/svc/getty:65 (0) +LSP:: 32708: /etc/cinit/svc/init:65 (0) +LSP:: 32708: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32708: /etc/cinit/svc/test:65 (0) +LSP:: 32708: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32708: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32708: /etc/cinit/svc/network:4 (32707) +LSP:: 32708: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32708: /etc/cinit/svc/mount:4 (32706) +LSP:: 32708: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32708: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32708: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32708: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32708: /etc/cinit/svc/getty:65 (0) +LSP:: 32709: /etc/cinit/svc/init:65 (0) +LSP:: 32709: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32709: /etc/cinit/svc/test:4 (32708) +LSP:: 32709: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32709: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32709: /etc/cinit/svc/network:4 (32707) +LSP:: 32709: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32709: /etc/cinit/svc/mount:4 (32706) +LSP:: 32709: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32709: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32709: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32709: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32709: /etc/cinit/svc/getty:65 (0) +LSP:: 32702: /etc/cinit/svc/init:4 (32710) +LSP:: 32702: /etc/cinit/svc/test/env:4 (32702) +pid: 0, m_client +LSP:: 32700: /etc/cinit/svc/init:4 (32710) +LSP:: 32700: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32700: /etc/cinit/svc/test:4 (32708) +LSP:: 32700: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32700: /etc/cinit/svc/network/eth0:16 (32700) +pid: 0, m_client +LSP:: 32710: /etc/cinit/svc/init:4 (32710) +pid: 0, m_client +LSP:: 32701: /etc/cinit/svc/init:16 (32719) +LSP:: 32701: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32701: /etc/cinit/svc/test:4 (32708) +LSP:: 32701: /etc/cinit/svc/network/loopback:4 (32701) +pid: 0, m_client +LSP:: 32699: /etc/cinit/svc/init:16 (32719) +LSP:: 32699: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32699: /etc/cinit/svc/test:4 (32708) +LSP:: 32699: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32699: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32699: /etc/cinit/svc/network:4 (32707) +LSP:: 32699: /etc/cinit/svc/mount/root:4 (32699) +pid: 0, m_client +LSP::SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz + 32698: /etc/cinit/svc/init:16 (32719) +LSP:: 32698: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32698: /etc/cinit/svc/test:4 (32708) +LSP:: 32698: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32698: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32698: /etc/cinit/svc/network:4 (32707) +LSP:: 32698: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32698: /etc/cinit/svc/mount:4 (32706) +LSP:: 32698: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32698: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32698: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +pid: 0, m_client +LSP:: 32728: /etc/cinit/svc/init:16 (32719) +LSP:: 32728: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32728: /etc/cinit/svc/test:4 (32708) +LSP:: 32728: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32728: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32728: /etc/cinit/svc/network:4 (32707) +LSP:: 32728: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32728: /etc/cinit/svc/mount:4 (32706) +LSP:: 32728: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32728: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32728: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32728) +pid: 0, m_client +LSP:: 32735: /etc/cinit/svc/init:16 (32719) +LSP:: 32735: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32735: /etc/cinit/svc/test:4 (32708) +LSP:: 32735: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32735: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32735: /etc/cinit/svc/network:4 (32707) +LSP:: 32735: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32735: /etc/cinit/svc/mount:4 (32706) +LSP:: 32735: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32735: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32735: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32735) +pid: 0, m_client +LSP:: 32742: /etc/cinit/svc/init:16 (32719) +LSP:: 32742: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32742: /etc/cinit/svc/test:4 (32708) +LSP:: 32742: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32742: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32742: /etc/cinit/svc/network:4 (32707) +LSP:: 32742: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32742: /etc/cinit/svc/mount:4 (32706) +LSP:: 32742: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32742: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32742: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32742) +pid: 0, m_client +LSP:: 32749: /etc/cinit/svc/init:16 (32719) +LSP:: 32749: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32749: /etc/cinit/svc/test:4 (32708) +LSP:: 32749: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32749: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32749: /etc/cinit/svc/network:4 (32707) +LSP:: 32749: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32749: /etc/cinit/svc/mount:4 (32706) +LSP:: 32749: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32749: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32749: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32749) +pid: 0, m_client +LSP:: 32756: /etc/cinit/svc/init:16 (32719) +LSP:: 32756: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32756: /etc/cinit/svc/test:4 (32708) +LSP:: 32756: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32756: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32756: /etc/cinit/svc/network:4 (32707) +LSP:: 32756: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32756: /etc/cinit/svc/mount:4 (32706) +LSP:: 32756: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32756: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32756: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32756) +pid: 0, m_client +LSP:: 32763: /etc/cinit/svc/init:16 (32719) +LSP:: 32763: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32763: /etc/cinit/svc/test:4 (32708) +LSP:: 32763: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32763: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32763: /etc/cinit/svc/network:4 (32707) +LSP:: 32763: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32763: /etc/cinit/svc/mount:4 (32706) +LSP:: 32763: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32763: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32763: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32763) +pid: 0, m_client +LSP:: 302: /etc/cinit/svc/init:16 (32719) +LSP:: 302: /etc/cinit/svc/test/env:16 (32717) +LSP:: 302: /etc/cinit/svc/test:4 (32708) +LSP:: 302: /etc/ciSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN:: +msgrcv: Interrupted system call +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +nit/svc/network/loopback:16 (32720) +LSP:: 302: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 302: /etc/cinit/svc/network:4 (32707) +LSP:: 302: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 302: /etc/cinit/svc/mount:4 (32706) +LSP:: 302: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 302: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 302: /etc/cinit/svc/local-tuning/keyboard-layout:16 (302) +pid: 0, m_client +LSP:: 312: /etc/cinit/svc/init:16 (32719) +LSP:: 312: /etc/cinit/svc/test/env:16 (32717) +LSP:: 312: /etc/cinit/svc/test:4 (32708) +LSP:: 312: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 312: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 312: /etc/cinit/svc/network:4 (32707) +LSP:: 312: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 312: /etc/cinit/svc/mount:4 (32706) +LSP:: 312: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 312: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 312: /etc/cinit/svc/local-tuning/keyboard-layout:16 (312) +pid: 0, m_client +LSP:: 326: /etc/cinit/svc/init:16 (32719) +LSP:: 326: /etc/cinit/svc/test/env:16 (32717) +LSP:: 326: /etc/cinit/svc/test:4 (32708) +LSP:: 326: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 326: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 326: /etc/cinit/svc/network:4 (32707) +LSP:: 326: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 326: /etc/cinit/svc/mount:4 (32706) +LSP:: 326: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 326: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 326: /etc/cinit/svc/local-tuning/keyboard-layout:16 (326) +pid: 0, m_client +LSP:: 333: /etc/cinit/svc/init:16 (32719) +LSP:: 333: /etc/cinit/svc/test/env:16 (32717) +LSP:: 333: /etc/cinit/svc/test:4 (32708) +LSP:: 333: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 333: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 333: /etc/cinit/svc/network:4 (32707) +LSP:: 333: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 333: /etc/cinit/svc/mount:4 (32706) +LSP:: 333: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 333: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 333: /etc/cinit/svc/local-tuning/keyboard-layout:16 (333) +pid: 0, m_client +LSP:: 340: /etc/cinit/svc/init:16 (32719) +LSP:: 340: /etc/cinit/svc/test/env:16 (32717) +LSP:: 340: /etc/cinit/svc/test:4 (32708) +LSP:: 340: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 340: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 340: /etc/cinit/svc/network:4 (32707) +LSP:: 340: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 340: /etc/cinit/svc/mount:4 (32706) +LSP:: 340: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 340: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 340: /etc/cinit/svc/local-tuning/keyboard-layout:16 (340) +pid: 0, m_client +LSP:: 347: /etc/cinit/svc/init:16 (32719) +LSP:: 347: /etc/cinit/svc/test/env:16 (32717) +LSP:: 347: /etc/cinit/svc/test:4 (32708) +LSP:: 347: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 347: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 347: /etc/cinit/svc/network:4 (32707) +LSP:: 347: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 347: /etc/cinit/svc/mount:4 (32706) +LSP:: 347: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 347: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 347: /etc/cinit/svc/local-tuning/keyboard-layout:16 (347) +pid: 0, m_client +LSP:: 354: /etc/cinit/svc/init:16 (32719) +LSP:: 354: /etc/cinit/svc/test/env:16 (32717) +LSP:: 354: /etc/cinit/svc/test:4 (32708) +LSP:: 354: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 354: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 354: /etc/cinit/svc/network:4 (32707) +LSP:: 354: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 354: /etc/cinit/svc/mount:4 (32706) +LSP:: 354: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 354: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 354: /etc/cinit/svc/local-tuning/keyboard-layout:16 (354) +pid: 0, m_client +LSP:: 372: /etc/cinit/svc/init:16 (32719) +LSP:: 372: /etc/cinit/svc/test/env:16 (32717) +LSP:: 372: /etc/cinit/svc/test:4 (32708) +LSP:: 372: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 372: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 372: /etc/cinit/svc/network:4 (32707) +LSP:: 372: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 372: /etc/cinit/svc/mount:4 (32706) +LSP:: 372: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 372: /etc/cinit/svc/getty/3:4 (327SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +04) +LSP:: 372: /etc/cinit/svc/local-tuning/keyboard-layout:16 (372) +pid: 0, m_client +LSP:: 379: /etc/cinit/svc/init:16 (32719) +LSP:: 379: /etc/cinit/svc/test/env:16 (32717) +LSP:: 379: /etc/cinit/svc/test:4 (32708) +LSP:: 379: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 379: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 379: /etc/cinit/svc/network:4 (32707) +LSP:: 379: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 379: /etc/cinit/svc/mount:4 (32706) +LSP:: 379: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 379: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 379: /etc/cinit/svc/local-tuning/keyboard-layout:16 (379) +pid: 0, m_client +LSP:: 386: /etc/cinit/svc/init:16 (32719) +LSP:: 386: /etc/cinit/svc/test/env:16 (32717) +LSP:: 386: /etc/cinit/svc/test:4 (32708) +LSP:: 386: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 386: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 386: /etc/cinit/svc/network:4 (32707) +LSP:: 386: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 386: /etc/cinit/svc/mount:4 (32706) +LSP:: 386: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 386: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 386: /etc/cinit/svc/local-tuning/keyboard-layout:16 (386) +pid: 0, m_client +LSP:: 393: /etc/cinit/svc/init:16 (32719) +LSP:: 393: /etc/cinit/svc/test/env:16 (32717) +LSP:: 393: /etc/cinit/svc/test:4 (32708) +LSP:: 393: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 393: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 393: /etc/cinit/svc/network:4 (32707) +LSP:: 393: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 393: /etc/cinit/svc/mount:4 (32706) +LSP:: 393: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 393: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 393: /etc/cinit/svc/local-tuning/keyboard-layout:16 (393) +pid: 0, m_client +LSP:: 400: /etc/cinit/svc/init:16 (32719) +LSP:: 400: /etc/cinit/svc/test/env:16 (32717) +LSP:: 400: /etc/cinit/svc/test:4 (32708) +LSP:: 400: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 400: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 400: /etc/cinit/svc/network:4 (32707) +LSP:: 400: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 400: /etc/cinit/svc/mount:4 (32706) +LSP:: 400: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 400: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 400: /etc/cinit/svc/local-tuning/keyboard-layout:16 (400) +pid: 0, m_client +LSP:: 407: /etc/cinit/svc/init:16 (32719) +LSP:: 407: /etc/cinit/svc/test/env:16 (32717) +LSP:: 407: /etc/cinit/svc/test:4 (32708) +LSP:: 407: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 407: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 407: /etc/cinit/svc/network:4 (32707) +LSP:: 407: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 407: /etc/cinit/svc/mount:4 (32706) +LSP:: 407: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 407: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 407: /etc/cinit/svc/local-tuning/keyboard-layout:16 (407) +pid: 0, m_client +LSP:: 414: /etc/cinit/svc/init:16 (32719) +LSP:: 414: /etc/cinit/svc/test/env:16 (32717) +LSP:: 414: /etc/cinit/svc/test:4 (32708) +LSP:: 414: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 414: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 414: /etc/cinit/svc/network:4 (32707) +LSP:: 414: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 414: /etc/cinit/svc/mount:4 (32706) +LSP:: 414: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 414: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 414: /etc/cinit/svc/local-tuning/keyboard-layout:16 (414) +pid: 0, m_client +LSP:: 421: /etc/cinit/svc/init:16 (32719) +LSP:: 421: /etc/cinit/svc/test/env:16 (32717) +LSP:: 421: /etc/cinit/svc/test:4 (32708) +LSP:: 421: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 421: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 421: /etc/cinit/svc/network:4 (32707) +LSP:: 421: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 421: /etc/cinit/svc/mount:4 (32706) +LSP:: 421: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 421: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 421: /etc/cinit/svc/local-tuning/keyboard-layout:16 (421) +pid: 0, m_client +LSP:: 428: /etc/cinit/svc/init:16 (32719) +LSP:: 428: /etc/cinit/svc/test/env:16 (32717) +LSP:: 428: /etc/cinit/svc/test:4 (32708) +LSP:: 428: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 428: /etc/cinit/svc/network/eth0:16SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call + (32718) +LSP:: 428: /etc/cinit/svc/network:4 (32707) +LSP:: 428: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 428: /etc/cinit/svc/mount:4 (32706) +LSP:: 428: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 428: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 428: /etc/cinit/svc/local-tuning/keyboard-layout:16 (428) +pid: 0, m_client +LSP:: 435: /etc/cinit/svc/init:16 (32719) +LSP:: 435: /etc/cinit/svc/test/env:16 (32717) +LSP:: 435: /etc/cinit/svc/test:4 (32708) +LSP:: 435: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 435: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 435: /etc/cinit/svc/network:4 (32707) +LSP:: 435: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 435: /etc/cinit/svc/mount:4 (32706) +LSP:: 435: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 435: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 435: /etc/cinit/svc/local-tuning/keyboard-layout:16 (435) +pid: 0, m_client +LSP:: 452: /etc/cinit/svc/init:16 (32719) +LSP:: 452: /etc/cinit/svc/test/env:16 (32717) +LSP:: 452: /etc/cinit/svc/test:4 (32708) +LSP:: 452: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 452: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 452: /etc/cinit/svc/network:4 (32707) +LSP:: 452: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 452: /etc/cinit/svc/mount:4 (32706) +LSP:: 452: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 452: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 452: /etc/cinit/svc/local-tuning/keyboard-layout:16 (452) +pid: 0, m_client +LSP:: 459: /etc/cinit/svc/init:16 (32719) +LSP:: 459: /etc/cinit/svc/test/env:16 (32717) +LSP:: 459: /etc/cinit/svc/test:4 (32708) +LSP:: 459: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 459: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 459: /etc/cinit/svc/network:4 (32707) +LSP:: 459: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 459: /etc/cinit/svc/mount:4 (32706) +LSP:: 459: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 459: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 459: /etc/cinit/svc/local-tuning/keyboard-layout:16 (459) +pid: 0, m_client +LSP:: 466: /etc/cinit/svc/init:16 (32719) +LSP:: 466: /etc/cinit/svc/test/env:16 (32717) +LSP:: 466: /etc/cinit/svc/test:4 (32708) +LSP:: 466: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 466: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 466: /etc/cinit/svc/network:4 (32707) +LSP:: 466: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 466: /etc/cinit/svc/mount:4 (32706) +LSP:: 466: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 466: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 466: /etc/cinit/svc/local-tuning/keyboard-layout:16 (466) +pid: 0, m_client +LSP:: 473: /etc/cinit/svc/init:16 (32719) +LSP:: 473: /etc/cinit/svc/test/env:16 (32717) +LSP:: 473: /etc/cinit/svc/test:4 (32708) +LSP:: 473: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 473: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 473: /etc/cinit/svc/network:4 (32707) +LSP:: 473: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 473: /etc/cinit/svc/mount:4 (32706) +LSP:: 473: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 473: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 473: /etc/cinit/svc/local-tuning/keyboard-layout:16 (473) +pid: 0, m_client +LSP:: 480: /etc/cinit/svc/init:16 (32719) +LSP:: 480: /etc/cinit/svc/test/env:16 (32717) +LSP:: 480: /etc/cinit/svc/test:4 (32708) +LSP:: 480: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 480: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 480: /etc/cinit/svc/network:4 (32707) +LSP:: 480: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 480: /etc/cinit/svc/mount:4 (32706) +LSP:: 480: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 480: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 480: /etc/cinit/svc/local-tuning/keyboard-layout:16 (480) +pid: 0, m_client +LSP:: 487: /etc/cinit/svc/init:16 (32719) +LSP:: 487: /etc/cinit/svc/test/env:16 (32717) +LSP:: 487: /etc/cinit/svc/test:4 (32708) +LSP:: 487: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 487: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 487: /etc/cinit/svc/network:4 (32707) +LSP:: 487: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 487: /etc/cinit/svc/mount:4 (32706) +LSP:: 487: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 487: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 487: /etc/cinit/svc/local-tuning/keyboard-layout:16 (487) +pid: 0, mLoading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +_client +LSP:: 494: /etc/cinit/svc/init:16 (32719) +LSP:: 494: /etc/cinit/svc/test/env:16 (32717) +LSP:: 494: /etc/cinit/svc/test:4 (32708) +LSP:: 494: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 494: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 494: /etc/cinit/svc/network:4 (32707) +LSP:: 494: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 494: /etc/cinit/svc/mount:4 (32706) +LSP:: 494: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 494: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 494: /etc/cinit/svc/local-tuning/keyboard-layout:16 (494) +pid: 0, m_client +LSP:: 501: /etc/cinit/svc/init:16 (32719) +LSP:: 501: /etc/cinit/svc/test/env:16 (32717) +LSP:: 501: /etc/cinit/svc/test:4 (32708) +LSP:: 501: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 501: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 501: /etc/cinit/svc/network:4 (32707) +LSP:: 501: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 501: /etc/cinit/svc/mount:4 (32706) +LSP:: 501: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 501: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 501: /etc/cinit/svc/local-tuning/keyboard-layout:16 (501) +pid: 0, m_client +LSP:: 510: /etc/cinit/svc/init:16 (32719) +LSP:: 510: /etc/cinit/svc/test/env:16 (32717) +LSP:: 510: /etc/cinit/svc/test:4 (32708) +LSP:: 510: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 510: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 510: /etc/cinit/svc/network:4 (32707) +LSP:: 510: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 510: /etc/cinit/svc/mount:4 (32706) +LSP:: 510: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 510: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 510: /etc/cinit/svc/local-tuning/keyboard-layout:16 (510) +pid: 0, m_client +LSP:: 520: /etc/cinit/svc/init:16 (32719) +LSP:: 520: /etc/cinit/svc/test/env:16 (32717) +LSP:: 520: /etc/cinit/svc/test:4 (32708) +LSP:: 520: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 520: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 520: /etc/cinit/svc/network:4 (32707) +LSP:: 520: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 520: /etc/cinit/svc/mount:4 (32706) +LSP:: 520: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 520: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 520: /etc/cinit/svc/local-tuning/keyboard-layout:16 (520) +pid: 0, m_client +LSP:: 533: /etc/cinit/svc/init:16 (32719) +LSP:: 533: /etc/cinit/svc/test/env:16 (32717) +LSP:: 533: /etc/cinit/svc/test:4 (32708) +LSP:: 533: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 533: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 533: /etc/cinit/svc/network:4 (32707) +LSP:: 533: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 533: /etc/cinit/svc/mount:4 (32706) +LSP:: 533: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 533: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 533: /etc/cinit/svc/local-tuning/keyboard-layout:16 (533) +pid: 0, m_client +LSP:: 541: /etc/cinit/svc/init:16 (32719) +LSP:: 541: /etc/cinit/svc/test/env:16 (32717) +LSP:: 541: /etc/cinit/svc/test:4 (32708) +LSP:: 541: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 541: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 541: /etc/cinit/svc/network:4 (32707) +LSP:: 541: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 541: /etc/cinit/svc/mount:4 (32706) +LSP:: 541: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 541: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 541: /etc/cinit/svc/local-tuning/keyboard-layout:16 (541) +pid: 0, m_client +LSP:: 548: /etc/cinit/svc/init:16 (32719) +LSP:: 548: /etc/cinit/svc/test/env:16 (32717) +LSP:: 548: /etc/cinit/svc/test:4 (32708) +LSP:: 548: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 548: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 548: /etc/cinit/svc/network:4 (32707) +LSP:: 548: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 548: /etc/cinit/svc/mount:4 (32706) +LSP:: 548: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 548: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 548: /etc/cinit/svc/local-tuning/keyboard-layout:16 (548) +pid: 0, m_client +LSP:: 555: /etc/cinit/svc/init:16 (32719) +LSP:: 555: /etc/cinit/svc/test/env:16 (32717) +LSP:: 555: /etc/cinit/svc/test:4 (32708) +LSP:: 555: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 555: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 555: /etc/cinit/svc/network:4 (32707) +LSP:: 555: /etc/cinit/svSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/man/cinit.text b/software/cinit/browse_source/cinit-0.3pre7/doc/man/cinit.text new file mode 100644 index 00000000..bd9bd0ab --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/man/cinit.text @@ -0,0 +1,64 @@ +cinit(8) +======== +Nico Schottelius + + +NAME +---- +cinit - fast executing, small and simple init with support for profiles + + +SYNOPSIS +-------- +'cinit' [cprofile:name_of_profile] + + +DESCRIPTION +----------- +Cinit is an init system. It normally gets started by the operating +system (Linux, *BSD, ...) directly after the kernel has been loaded. + +Cinit uses parallel execution of services as far as possible. To +ensure the correct boot order you need to specify which service +'needs' or 'wants' another service. The resulting dependency tree +is used at startup to determine which service to start when. + +This may result in different boot orders depending on whether +one service is one time faster or slower. Due to the dependencies +this is not a problem, but allowed and wished per design. + +For more information refer to the texinfo or html documentation. + + +OPTIONS +------- + +cprofile:name_of_profile:: + If specified, cinit will start the named profile instead of the + standard 'init' service + + +BUGS +---- +cinit is not tested nor documented very well currently. + +The porting to other OS is not finished yet (mainly missing +system level binaries: shutdown, reboot, halt). + +Both is work in progress. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + + +COPYING +------- +Copyright \(C) 2006 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/man/cservice b/software/cinit/browse_source/cinit-0.3pre7/doc/man/cservice new file mode 100644 index 00000000..26a472b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/man/cservice @@ -0,0 +1,37 @@ +WARNING: + cservice is not yet ready for cinit-0.3! + +-------------------------------------------------------------------------------- +cservice, +Nico Schottelius, 2005-06-10 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +cservice - control cinit + +cservice -[phearsu] + -e - (ein) start a service (including all needed dependencies) + -a - (aus) stop a respawing service, don't care about other services + + -r - reboot + -h - halt + -p - poweroff (on some systems the same as halt) + -s - reScue mode - only a shell + + -u - update: hot reboot - shutdown system and execute /sbin/cinit + +A service may be specified either as relative or as absolute path. + +-h, -p, -r, -s and -u need the "Magic Word" to do their work: "thilo" + +-------------------------------------------------------------------------------- + +Some examples: + + cservice -e /etc/cinit/getty/8 # fire up getty/8 + cd /etc/cinit/getty; cservice -a ./8 # shut down getty/8 + cservice -h thilo # halt + cservice -r thilo # reboot + cservice -s thilo # rescue + cservice -u thilo # update + +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/FAQ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/FAQ new file mode 100644 index 00000000..53494f73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile:home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/README.text b/software/cinit/browse_source/cinit-0.3pre7/doc/user/README.text new file mode 100644 index 00000000..3467ba63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/README.text @@ -0,0 +1,21 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit user documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +People using cinit. + +Content +------- + +hints.text: Some general hints +tuning.text: Some tuning hints diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/TODO b/software/cinit/browse_source/cinit-0.3pre7/doc/user/TODO new file mode 100644 index 00000000..6044e97a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/TODO @@ -0,0 +1,4 @@ +All the content in this file is unsorted. Reading may harm you. + +Confdir: /etc/cinit/conf/ +panic: /etc/cinit/conf/panic, /etc/cinit/conf/panic.params diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/compiles.on.text b/software/cinit/browse_source/cinit-0.3pre7/doc/user/compiles.on.text new file mode 100644 index 00000000..ad467d38 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/compiles.on.text @@ -0,0 +1,19 @@ +cinit - known configurations cinit compiles on +============================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-12-08 +:Author Initials: NS + + +This document lists all the configuration known to me on that +cinit compiles. If you compiled cinit with another configuration, +drop a mail to nico-cinit-report [at] schottelius.org. + +The list +-------- +cinit is known to compile on: + +- x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +- x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/conf-system.text b/software/cinit/browse_source/cinit-0.3pre7/doc/user/conf-system.text new file mode 100644 index 00000000..600112c3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/conf-system.text @@ -0,0 +1,34 @@ +The conf/ system +================= +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-08 +:Author Initials: NS + +This documentes describes the configuration system used by cinit. + + +What is the conf/ system? +------------------------- +The conf/ system is the configuration system for the cinit build. +The first line of each file below conf/ is a configuration value +with the name of the file: + +---------------------------------------------------------------------- +[9:00] hydrogenium:cinit-0.3pre6% head -n 1 conf/cc +gcc +---------------------------------------------------------------------- + +This means that the variable "cc" has the value "gcc". + + +What is the reason for conf/? +----------------------------- +I needed a small and simple configuration system, which may be included +in the full build process. + + +Is conf/ also usable for other projects? +---------------------------------------- +In its current state conf/ is just a prototype, with which I experiement +a lot. But it is possible that the future aim is to provide a simele +configuration and autoconfiguraton mechanism. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/config-dirs b/software/cinit/browse_source/cinit-0.3pre7/doc/user/config-dirs new file mode 100644 index 00000000..4a8fbb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/config-dirs @@ -0,0 +1,19 @@ +configuring + + /etc/cinit/defaults/panic -> link to something to execute on panic + (most likely /sbin/sulogin) + + /etc/cinit/defaults/tmp -> link to a directory where + the socket should be created, + after finishing boot + + What todo right before halting/rebooting/powering off + /etc/cinit/special/ + -> halt + -> reboot + -> poweroff + +Configuration +------------- + +Send kill signal diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/configuring.cinit.text b/software/cinit/browse_source/cinit-0.3pre7/doc/user/configuring.cinit.text new file mode 100644 index 00000000..ce23866e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/configuring.cinit.text @@ -0,0 +1,287 @@ +cinit - Configuring +=================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2005-05-28 +:Author Initials: NS + + +This documentes describes how to configure cinit. +You should already have cinit installed, otherwise read +"cinit - Installing" first. + + +General configuration layout +---------------------------- +Cinit uses the <<>> configuration syntax, which means that +the configuration is kept as simple as possible. The following +sections will show you what that means. + + +Paths +----- +Normally the configuration is kept below '/etc/cinit' +(though you can change this before compiling in conf/cinit_dir). + +The full description of the path layout of cinit and how to change it +can be found in 'paths.text'. + + +Services +-------- +cinit is service based. Other init systems use shell +scripts (for instance /etc/rc, /etc/init.d/rc as starters +and /etc/rc*.d/* as "service definitions"). + +'current-init-problems.text' explains why cinit does *not* +use nor recommends the use of shell scripts. + +A service is simply a directory. This directory contains information about + +- what should be started when starting the service +- what should be started when stoping the service +- what dependencies the service has +- whether to restart it, when it exits + + +Full service definition +~~~~~~~~~~~~~~~~~~~~~~~ +. A service consists of + - a base directory (like /etc/cinit/svc/mount/root/) + - dependency configuration (`needs` and `wants`) + - start/stop programs (`on` and `off`) + - respawn flag (`respawn`) + + +Base directory +^^^^^^^^^^^^^^ +You can create the base directory everywhere below /etc/cinit/svc. +You may and it is recommened to create a directory structure +(see 'example-directory-structure.text'). + + +Dependencies +^^^^^^^^^^^^ +The subdirectories + +- `wants` +- and `needs` + +contain the dependencies for the service. + +Read 'dependencies.text' for more information. + + +Respawning +^^^^^^^^^^^ +If you create the empty file 'respawn' (adjustable via conf/c_respawn) +the service will be restarted after it exits. + +-------------------------------------------------------------------------------- +# Tell cinit to respawn the eth0.udhcpc service +touch /etc/cinit/svc/network/eth0.udhcpc +-------------------------------------------------------------------------------- + + +Execution: on and off +^^^^^^^^^^^^^^^^^^^^^ +When a service starts, the file `on` in the service +directory is executed. It is ok, if this file is not existing. +When a service stops, the file `off` in the service +directory is executed. + +The file with the extension `.params` is used to specify the arguments +to pass. Each line contains exactly one parameter. + +The file with the extension `.env` is used to specify the environment +to pass. Each line contains exactly one variable definition in the form +'variable=value'. + +. The following six files are possibly used on starting/stoping: + - ./on (the program called on startup) + - ./on.params (the parameters to pass to the program, see conf/c_params) + - ./on.env (the environment to pass to the program, see conf/c_env) + - ./off (the program called when shutting down the service) + - ./off.params (the parameters to pass to the program) + - ./on.env (the environment to pass to the program) + +Some examples: +---------------------------------------------------------------------- + /etc/cinit/svc/init: + ./wants -> services it wants + ./needs -> services it needs +---------------------------------------------------------------------- + +A more or less normal service without dependencies: +---------------------------------------------------------------------- + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it +---------------------------------------------------------------------- + +A service with all options used: +---------------------------------------------------------------------- + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn service + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting +---------------------------------------------------------------------- + + +Profiles +-------- +Profiles allow you to define different startup scenarios and select +those before bootup. Read 'profiles.text' for more information about +profiles. + +The profile support was added in cinit-0.0.6. + + +Service execution order +------------------------ +The first service executed is '/etc/cinit/svc/init'. +If a profile is selected '/etc/cinit/svc/`profilename`' is used +instead. + +Cinit builds a full service dependency tree through the `wants` +and `needs` of the first service and its dependencies +(recursively). + +After the tree is generated, cinit begins to start the services +at the end of the tree. These services have no `needs`. + +If you manage to create circular dependencies your system will not startup. +You can verify the correctness your configuration with the script +`cinit.check.config`. + + +Hints +----- + +Service executing / parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The on and off files can and should be links to the programs you want +to execute instead of a shell script. This way you save yourself the overhead +of loading a shell. The speed enhancement is very big if you have shells +like bash installed as /bin/sh (which is *not* senseful anyway, I would +recommend dash or ksh for /bin/sh). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. +The service could look like this: +---------------------------------------------------------------------- + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). +---------------------------------------------------------------------- + + +Daemons +~~~~~~~~ +Daemons are programs that go away to the background (using fork()) after +start. + +The fork-away strategy seems to be some illness introduced by traditional +init systems, that are dependent on the fact, that a process exits on +startup. + +cinit in contrast remembers the process ID (pid) of the services it +restarts (those with `respawn` enabled). + +So when the daemon fork()s away and the parent process exits it looks to +cinit like the watched service died and cinit will restart it. + +Happily, most processes can be taught not to go to background. +Some processes even do that by default and very less are broken that +one cannot tell them not to background. + +A list of known processes that are normally used in respawn +processes can be found in 'daemons.backgrounding.text'. + +If your process is not listed in `daemons.backgrounding.text', +check the documentation of your daemon program, if may have a +switch to disable forking. + +But, with a small hack it is even possible to respawn those broken processes: + +We start a program, that + - starts the daemon, + - monitors the pidfile of the daemon, + - waits until that pid does not exist anymore + - and then exits. + +Such a program is included into the cinit source tarball, +though I do not recommend using it. The better way is to implement +non forking mode into your process. + +The name of the program (actually a shell script) is 'cinit.wait.for.daemon'. + +You can use it as the `on` part of a service and add + + - the pidfile, + - the process binary + - and the process parameters + +to `on.params`. + +Thus the service could look like: +---------------------------------------------------------------------- + svc-broken-daemon/ + on -> /sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL +---------------------------------------------------------------------- +(This is not a so good example, because Apache supports non-forking mode). + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + + +Logging +~~~~~~~ +Currently there's no special logging support. +When a process writes to stdout, it will be displayed on +the same stdout cinit is connected to. + +In newer versions cinit (perhaps cinit-0.4) will also support logging +stdout and stderr of a service. + + +How to migrate your old init-system configuration to cinit +---------------------------------------------------------- +This is highly dependent on your actual system, your system +configuration and your own ideas. + +Cinit is able to replace all other init systems I know about. + +So the only question is "How to do it?". + +There are some hints on how to migrate to cinit in general and also +some os specific help in the file 'migrating-init-systems.text', + +Examples +-------- +Currently there are no example configurations available. +As soon as they are, you will be able to download them at +cinit's homepage. + +--> configuration.example.text + + +References +---------- ++ [[[cconfig]]] http://nico.schotteli.us/papers/linux/cconfig/ diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre7/doc/user/cross-compiling.text new file mode 100644 index 00000000..67208534 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/cross-compiling.text @@ -0,0 +1,6 @@ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/current-init-problems.text b/software/cinit/browse_source/cinit-0.3pre7/doc/user/current-init-problems.text new file mode 100644 index 00000000..529c2f84 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/current-init-problems.text @@ -0,0 +1,170 @@ +Currently available init systems and their problems +=================================================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-11 +:Author Initials: NS + + +This document describes some other init systems, especially +the "traditional" ones and describes their problems. + + +Introduction +------------- +some history, sysv, bsd, + +minit, runit, initng, cinit, upstart + + +Implementations +--------------- +List of current implementations as of 2006-12-12. + + +Linux Sys-V-Init +~~~~~~~~~~~~~~~~ +Debian Sid + +/etc/inittab + +"First script" /etc/init.d/rcS (specified +/etc/init.d/rcS: Bourne shell script text executable + +Runlevels: 0-6, different states + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% /sbin/runlevel +N 2 +-------------------------------------------------------------------------------- + + +Depending on runlevel, the init calls /etc/init.d/rc $runlevel. + +This is manually configured in /etc/inittab + +/etc/init.d/rc: Bourne shell script text executable + +/etc/init.d/rc + +Calls symlinks in /etc/rc?.d. Each runlevel a directory: + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% ls -ld /etc/rc*.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc0.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc1.d +drwxr-xr-x 3 root root 4096 2006-12-01 16:56 /etc/rc2.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc3.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc4.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc5.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc6.d +drwxr-xr-x 2 root root 4096 2006-11-28 23:17 /etc/rcS.d +-------------------------------------------------------------------------------- + + + +rlmanager: sys-v-init hack +~~~~~~~~~~~~~~~~~~~~~~~~~~ +rlmanager: one script to be executed, sources +simply configuration + +Gentoo Linux +~~~~~~~~~~~~ +no content yet + +BSD init +~~~~~~~~ +Analyzed on FreeBSD. +/etc/rc +/etc/rc.d/ system services +/usr/local/etc/rc.d/ user installed services +Scripts may use values from /etc/rc.conf to check whether +they should be started or not. + +runit +~~~~~ +Three stages: Script1, dependencies, Script3 + + +Initng +~~~~~~ +no content yet + +minit +~~~~~ +Focus on being small. Needs libowfat. +Log support through pipe. + + + + + +Problems overview +----------------- + +Scripts +~~~~~~~ +Scripts are slow. Startup time. Execution time. Unecessary overhead. + + +Sequential startup +~~~~~~~~~~~~~~~~~~ +In the 'old' init systems there is no support of parallel execution. +So if one services hangs at startup, the whole system has to wait +(for instance a dhcp request). In the worst case this may result in +a non-booting system. Systems with dependencies can start the gettys +for login before, in parallel to or even after blocking services are +started. The fact, that they *are* started means you can interact with +the system, you can end looping or blocking services. + +So sequential startup may not only be the reason for a pretty +slow system, but also for an unmaintainable one. + +Unecessary services +~~~~~~~~~~~~~~~~~~~ +Many implementations try to do whatever-is-possible on boot, trying to +cover every possible and impossible situation. + +Portmap without any program that needs it. + +Starting all installed services per default (Debian) vs. let the +user choose what to start (Gentoo). + +Nicht entfernte Altlasten ab und zu. + + +No dependencies +~~~~~~~~~~~~~~~ +Systems without dependencies may result in a chaos state after booting up. + + +Only soft dependencies +~~~~~~~~~~~~~~~~~~~~~~~ +The dependencies are used, but because of soft dependencies, services +may be started although their dependency is missing. + + +Parallel init system debugging +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In contrast to the old init systems, parallel executing init systems +are much harder to debug. If the starting init systems does not have +proper logging / reporting to the user (like cinit-0.2 has), the user +may never find out, what happened and why. + + +Parallel / dependency checking init system with variable boot order +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The boot order may be different each time you boot and is dependent +on the success or failure of services. This way you can never tell +exactly how and in which order they are executed. On multiprocessor +machines, where processes may be truely executed in parallel, there +is no order anymore, but there are n orders on n processors. + +To solve this issue, init systems which support parallel execution +should ship with some testing tools, that simulate a startup. + +cinit will ship with such a tool in cinit-0.4. + + +References +---------- +no content yet diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/daemons.backgrounding.text b/software/cinit/browse_source/cinit-0.3pre7/doc/user/daemons.backgrounding.text new file mode 100644 index 00000000..1b553a7b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/daemons.backgrounding.text @@ -0,0 +1,80 @@ +cinit - Daemons backgrounding +============================= +Nico Schottelius +0.1, for cinit 0.3, Initial versinon from 2005-06-12 + + +This document describes the backgrounding process and how to disable it. + + + +Definition +----------- +A daemon is a program which runs in the background. +Running in the background means you cannot access the process +directly (like you can press a key in a shell). + + +Daemons and cinit +------------------ +cinit normally watches system services and restarts them +(`respawn` flag in the configuration). If the process goes to background, +cinit cannot control it directly anymore. + +List of daemons and non-forking parameters +------------------------------------------- + +The following daemons / servers are known to avoid backgrounding easily: + +- acpid [x86 power management]: -f (undocumentated but works) +- apache [webserver]: -DFOREGROUND +- asterisk [pbx]: -f +- bind [dns server/caching]: -f +- cardmgr [pcmcia/cardbus]: -f +- cron (vixie) [schedular]: -f +- cupsd [printer server]: -f or -F +- dhclient [dhcp client]: -d +- dhcp3 (isc) [dhcp server]: -f +- distccd [compile server]: normal behaviour +- fam [file alteration monitor]:-f +- fcron [schedular]: -f +- frox [ftp proxy]: "NoDetach" in config +- gdm [display manager]: -nodaemon +- hybrid [irc server]: -foreground +- icecast2 [sound streamer]: normal behaviour +- mini-lpd [printer server]: normal behaviour +- metalog [log server]: normal behaviour +- monotone [vcs]: normal behaviour +- mpd [music server]: --no-daemon +- nessusd ["security server"]: normal behaviour +- ntpd [time server]: -n +- nylon [socks proxy]: -f (prints output to terminal) +- oidentd [identd server]: -i +- oops [http proxy]: normal behaviour +- openssh [ssh server]: -D +- openvpn [vpn server]: normal behaviour +- pbbuttonsd [power management]:normal behaviour +- portmap [portmapper]: -f +- proftpd [ftp server]: -n +- qmail [mta]: normal behaviour +- rsync ["file server"]: --no-detach +- silcd ["secure chat server"]: -F, --foreground +- slapd [ldap]: -d +- snmpd [snmp daemon]: -f +- stunnel [ssl wrapper]: "foreground = yes" in config +- svnserve [vcs]: --foreground +- syslogd [log server]: -n +- syslog-ng [log server]: -F +- tcpserver [super server]: normal behaviour +- udhcpc [dhcp client]: normal behaviour +- vsftpd [ftp server]: normal behaviour (or: config: background=no) +- xinetd [super server]: -dontfork + + +Problematic daemons +------------------- +Those are the daemons that do not offer the possibility (as of release 0.2): + +- atd (no switch, no configuraton option) +- inetd (some variants) +- nscd (no switch, no configuraton option) diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/debugging.configuration b/software/cinit/browse_source/cinit-0.3pre7/doc/user/debugging.configuration new file mode 100644 index 00000000..1289865e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/debugging.configuration @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +Debugging your init configuration, +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +As writing an init configuration is not the easiest thing, +here are some problems (P) and debugging hints (H): + +P: There's no output! +H: If you don't start a service which outputs something there won't be any, + cinit starts up silently. + +P: Service XYZ seems not to work? +H: Try the following in your shell: + cd /etc/cinit/the-service; ./on "$(on.params)" + If that succeeds it has perhaps something missing which should have been + started before. +H: Create a test-service, which contains the following: + on: link to /bin/echo + on.params: "A test string" (with or without the quotes) + Now add the test-service to the needs directory of service XYZ. + If you see output the next time, the service is started. + Otherwise you forgot to make another service dependent on service + XYZ. + +P: How can I test if a non-outputting service successfully started? +H: Create another service, which depends on your service and make + it echo something. + +P: Does that profile support really work? +H: Try that: cprofile:NONEXISTENT and you'll see. + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/dependencies.text b/software/cinit/browse_source/cinit-0.3pre7/doc/user/dependencies.text new file mode 100644 index 00000000..e1154a54 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/dependencies.text @@ -0,0 +1,68 @@ +cinit - Dependencies +==================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-13 +:Author Initials: NS + +This document describes the different dependency types of cinit. + + +Dependencies in general +----------------------- +Each service may have two types (non-exclusive) types of dependencies: +The so called `needs` or `wants`. These are directories below the service +directory and contain symbolic links to the dependencies. +The name of the link can be freely chosen. + +An example: + +The service '/etc/cinit/svc/getty/2' needs the service +'/etc/cinit/svc/local-tuning/keyboard-layout': +-------------------------------------------------------------------------------- +[21:35] hydrogenium:needs# cd /etc/cinit/svc/getty/2/needs +[21:35] hydrogenium:needs# ls -l +insgesamt 0 +lrwxrwxrwx 1 root root 37 2006-10-26 17:51 keyboard-layout -> ../../../local-tuning/keyboard-layout +[21:35] hydrogenium:needs# cd keyboard-layout/ +[21:35] hydrogenium:keyboard-layout# pwd -P +/etc/cinit/svc/local-tuning/keyboard-layout +-------------------------------------------------------------------------------- +(Warning: This is an incomplete example, it misses at least `mount/root` +as dependency) + +This service could additionally want something else, too. It is also +possible that a service only `wants` another service or that a service +has no dependencies. + + +Absolute versus relative links +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +cinit does not care whether a link is relative or absolute. And +as far as I can see it does not make any difference to usability. + +In general, it seems to be a little bit 'easier' to use relative links +when manually configuring cinit ('ln -s ../../../service' versus +'ln -s /etc/cinit/svc/category/service'), but easier readable when +analysing them (with `ls -l'). + + +The two types +------------- + +needs +~~~~~ +`Needs` are the 'hard dependencies': If a services fails to start that +is linked in the `needs` directory, the service will not be started. + + +wants +~~~~~ +`Wants` are the 'soft dependencies': cinit will try to start the dependencies +found in `wants` before the service, but the service will also be started, +indenpendend of success of the dependencies. + + +Circular dependency problem +---------------------------- +If you manage to create circular dependencies cinit will fall into an +endless loop. Use `cinit.check.config` to verify your configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/example-directory-structure.text b/software/cinit/browse_source/cinit-0.3pre7/doc/user/example-directory-structure.text new file mode 100644 index 00000000..d19ac1fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/example-directory-structure.text @@ -0,0 +1,140 @@ +cinit - Example directory structure +=================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-12 +:Author Initials: NS + + +This document describes a tested directory hierarchy that +you could adapt for your setup. But this is no need, you +are free to design your own layout and/or improve this one. + + +Main idea +--------- +The main reason for this layout is that all services directly located +in /etc/cinit/svc/ would create a not-so-easy maintainable chaos. + + +Categories +---------- +When thinking about grouping some parts together, there came some categories +to my mind: + +- init: This must be there. It is no real choice (well, working with profiles + is an alternative) +- we need to mount things +- things that are used to 'configure' my local system +- network connectivity +- services only locally reachable +- services remote reachable +- something that let me login + +With these requirements the following categories (=directories) were created: + + +getty +~~~~~ +Gettys are those little and nice programs that allow you to login. +As we normally want to have more than one it seems to be senseful +to create a category for it. + +For the creation of the getty services itself, an extremly simply +scheme is used: Simply create services with the number of the getty +that is running. This results in the following setup: + +-------------------------------------------------------------------------------- + /etc/cinit/svc/getty/ + 2/ + 3/ + 4/ + ... +-------------------------------------------------------------------------------- + +The number '1' is skipped, because cinit normally logs to stdout that is +connected to the first console. + +`/etc/cinit/svc/getty/needs/` contains all enabled gettys. This way +`/etc/cinit/svc/init/needs/` can refer to `/etc/cinit/svc/getty/` only +but will catch all gettys. + +If you want to allow users to login via a graphical login screen +(also known as X11 with xdm/gdm/kdm) you could add this service as +`getty/gdm` for instance, because gdm is just another getty (just with +more colours). + + +init +~~~~ +`init` is the service everything begins with. You simply put all other +categories into the `needs` (or if soft-dependencies to `wants`) of this +service. + + +local-services +~~~~~~~~~~~~~~ +This directory contains all the services that are only locally reachable. +This may contain local webserver, a MTA that only accepts mails +via /usr/sbin/sendmail (like qmail is capable of) or some other local +only available services. + + +local-tuning +~~~~~~~~~~~~ +This directory is used for local configuration. It contains services, +that setup the keyboard layout (perhaps called `local-tuning/keyboard-layout` +needed by `getty`!), adjust system to hardware time, cleans /tmp +(`local-tuning/tmpclean`), ... + + +mount +~~~~~ +This directory contains the service to remount the root filesystem +read-write (`mount/root`) which is dependend on the filesystem +check (`mount/root/fsck`, also have a look at 'special-services.text'). +It also contains the services that mount the pseudo filesystems +(`mount/proc` (FreeBSD, Linux) and `mount/sys` (Linux)) and all +other partitions (`mount/home`, `mount/usr`,...) which again contain +a dependency to the filesystem check, if necessary. + + +network +~~~~~~~ +The `network` directory should cover all of the network basics. +This includes setting the hostname (`network/hostname`) configuring +network devices (`network/eth0.static`, `network.ath0.master`) limiting +network accesses (`network/firewall`), enable packet forwarding +(`network/ip-forward`), adjusting the available bandwith +(`network/traffic-shaping`), ... + + +If there are too many network devices, you could create a subfolder named +`network/devices/`. + +I used to suffix the network devices with the mode they run, so I can +use different modes in different profiles (setup the wireless card in +master mode at home, in ad-hoc mode at a friend and in managed mode at +work). + + +remote-services +~~~~~~~~~~~~~~~~ +Remote-services are all services that are reachable from remote hosts. +This includes ssh (`remote-services/opensshd`), webserver +(`remote-services/lighttpd` or `remote-services/apache22`). + +Most servers `need` a working network interface, before they can be +started, but mostly it is enough to have the loopback interface up. + +This results in the possible `needs` dependency for `network/loopback` +and soft dependencies, what we call `wants` on `network`. + +Other examples for remote services are +- dns (`remote-services/dnscache`, `remote-services/tinydns`, + `remote-services/bind`) +- fileserver (`remote-services/smbd`, `remote-services/mmbd`) +- network infrastructure (`remote-services/bgpd`) +- many others + +Many daemons used for `remote-services` are described in +'daemons.backgrounding.text'. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/ideas b/software/cinit/browse_source/cinit-0.3pre7/doc/user/ideas new file mode 100644 index 00000000..d3f13d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/ideas @@ -0,0 +1,3 @@ +- cinit-multi-machine-daemon: + coordinating bootup with several machines + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/installing-cinit.text b/software/cinit/browse_source/cinit-0.3pre7/doc/user/installing-cinit.text new file mode 100644 index 00000000..34902057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/installing-cinit.text @@ -0,0 +1,63 @@ +cinit - Installing +================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-06-02 +:Author Initials: NS + +This documentes describes how to install cinit. + + +Installing +---------- +Installing cinit is not a big deal, so is this document. +Where possible I added a list of commands to execute at the +end of each section. + + +From source +~~~~~~~~~~~ +Retrieve the latest source from http://unix.schottelius.org/cinit/. +Then extract it, change to the source directory, adjust your OS in the +file "conf/os" and type "make all". + +To report success run scripts/report.compile and send the output +to nico-cinit-report |at| schottelius.org. I will use this information +to know how and where cinit is compiled. Personal values like hostnames +or your e-mail address will *not* be published. + +Code to install cinit: +---------------------------------------------------------------------- +# the program we use to retrieve the source (fetch on FreeBSD) +get=wget +# change to current version +version=0.3pre6 +url=http://unix.schottelius.org/cinit/cinit-${version}.tar.bz2 +# get it +$get "$url" +# exctract it +tar xvjf "cinit-${version}.tar.bz2" +# build it and report success +who=nico-cinit-report +where=schottelius.org +cd cinit-${version} && make all && \ +./scripts/report.compile | mail -s "cinit: compile report" "${who}@${where}" +---------------------------------------------------------------------- + +Warning: Currently the install target is missing. Simply copy +"src/cinit" to /sbin/cinit. + + +Changing compile time parameters +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +All compile time configurations are kept below the "conf" +directory. Please read 'conf-system.text' for more information. + + +Cross-compiling +--------------- +For cross compiling see 'cross-compiling.text'. + + +Continue reading +---------------- +After having installed cinit, continue reading the document "Configuring cinit". diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/main.text b/software/cinit/browse_source/cinit-0.3pre7/doc/user/main.text new file mode 100644 index 00000000..ddf88304 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/main.text @@ -0,0 +1,113 @@ +cinit - a modern init system +============================= +Nico Schottelius +v0.1, for cinit-0.2.2, 2005-01-18 +:Author Initials: NS + + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/meta.dependencies b/software/cinit/browse_source/cinit-0.3pre7/doc/user/meta.dependencies new file mode 100644 index 00000000..fe743c48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/meta.dependencies @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, one would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation (see profile.support). + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +why it does not even need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ + +This way you have the indirection (meta-dependencies) in the filesystem +and cinit does not need any additional code. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/paths.text b/software/cinit/browse_source/cinit-0.3pre7/doc/user/paths.text new file mode 100644 index 00000000..d44bca61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/paths.text @@ -0,0 +1,121 @@ +cinit - Configuration +====================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Configuring cinit - the paths used + + +Main structure +--------------- +The base directory under which all configurations are found +is '/etc/cinit' (changable via conf/cinit_dir). + +The basic hierarchy is shown below: +---------------------------------------------------------------------- +/etc/cinit + svc -> services (adjustable: conf/svcdir) + conf -> general configuration (adjustable: conf/confdir) +---------------------------------------------------------------------- + + +The subdirectory 'conf' +~~~~~~~~~~~~~~~~~~~~~~~ +In this directory are general configurations located. +See below for the list of files that are located in this +directory. + + +The subdirectory 'svc' +~~~~~~~~~~~~~~~~~~~~~~ +This directory contains the services. A service is a directory. + + +Filenams for executable files +------------------------------ +When you create something that cinit should execute (like on +starting a service, on stopping a service, on panic, ...), cinit +will recognize the following extensions: + +. cinit executions extensions + - 'name' - the file that should be executed + - `'name'.params` - the parameter to pass to 'name' when executing + - `'name'.env` - the environment to pass to 'name' when executing + + +Name.params +~~~~~~~~~~~ +The 'params' file is a simple file containing one argument on each +line. + +Example: +---------------------------------------------------------------------- +[17:34] hydrogenium:cinit-0.3pre6% ls -l /etc/cinit/svc/init/on +lrwxrwxrwx 1 root root 9 2006-11-16 09:12 /etc/cinit/svc/init/on -> /bin/echo +[17:34] hydrogenium:cinit-0.3pre6% cat /etc/cinit/svc/init/on.params +The initial service has been started. (first parameter) +Some other useful information. (second parameter) +---------------------------------------------------------------------- + +Name.env +~~~~~~~~ +The 'env' file contains the environment definition. +Specify one assignment on each line, containing only "variable=value". + +Example: +---------------------------------------------------------------------- +[18:00] hydrogenium:% cat /etc/cinit/svc/remote-services/tinydns/on.env +IP=192.168.42.23 +---------------------------------------------------------------------- + +eof + +List of executable files +------------------------ +This list shows you what files are executable for cinit. + +on / off +~~~~~~~~~ +The files `on` and `off` are executed if found within a service +definition. `on` is called when starting the service, `off` +is called when stoping it. + + +conf/panic +~~~~~~~~~~ +This file will be executed by cinit if it has to panic. +Panic situation may occur, when there are heavy problems +like failing memory allocation in core areas. You can +change the name of the file in the pre-compilation settings +in `conf/c_panic`. + +If `conf/panic` is missing and cinit has to panic, a builtin +panic action will be called (see `conf/sulogin`). + + +conf/halt +~~~~~~~~~ +`conf/halt` will be called when cinit has shutdown all services +and wants to halt the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_halt`. + + +conf/poweroff +~~~~~~~~~~~~~ +`conf/poweroff` will be called when cinit has shutdown all services +and wants to poweroff the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_poweroff`. + + +conf/reboot +~~~~~~~~~~~ +`conf/reboot` will be called when cinit has shutdown all services +and wants to reboot the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_reboot`. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/profiles.text b/software/cinit/browse_source/cinit-0.3pre7/doc/user/profiles.text new file mode 100644 index 00000000..ab4d3c4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/profiles.text @@ -0,0 +1,79 @@ +cinit - Profiles +================ +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-06-04 +:Author Initials: NS + + +cinit profiles described. + + +What are profiles? +------------------ +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +How to use profiles? +--------------------- +Simply pass 'cprofile:PROFILENAME' (like cprofile:home) to cinit. + + +How to pass argumenents to cinit? +--------------------------------- +How to pass arguments to your init system depends on your operating +system and on your bootloader. + +Linux +~~~~~ +Under Linux the init-system gets the kernel arguments +(see linux.kernel.eats.arguments) as arguments. +So you can use + + kernel /usr/src/linux/vmlinuz cprofile:work (grub1,grub2) + append="cprofile:work" (LILO,yaboot) + +Other Unices should work like Linux, please consult your local +documentation. + + +How to configure profiles? +-------------------------- +It's very simple: Normally cinit would call /etc/cinit/svc/init as +the first service (with all its dependencies). If you pass 'cprofile=wireless' +to it, cinit will start from /etc/cinit/svc/wireless +instead. + +So the only thing you have to do is to create a service directory +below /etc/cinit/svc with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit/svc; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/svc/init; tar c . | (mkdir ../myprof; cd ../myprof; tar x ) + +That's it! + + +Some examples +------------- + +Here are some examples we found in #cLinux: + +-------------------------------------------------------------------------------- + profile name what it does + + musibox only start mp3blaster + terminal start only minicom, which opens the serial line + net-terminal start a respawning shell script, which starts + ssh to the selected host + video start X+mplayer, which plays the dvd/cdrom + wireless What to start when beeing in an unknown wlan + home/work selected services (nfs, ip, ...) for home or work +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/replacing.init b/software/cinit/browse_source/cinit-0.3pre7/doc/user/replacing.init new file mode 100644 index 00000000..2858c56c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/replacing.init @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and link, move or copy cinit to init (ln -s /sbin/cinit /sbin/init), reboot. + +That's everything in general, the biggest part will be to configuring cinit. + +See also doc/merging.other.initsystems. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/special-services.text b/software/cinit/browse_source/cinit-0.3pre7/doc/user/special-services.text new file mode 100644 index 00000000..4367bed1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/special-services.text @@ -0,0 +1,12 @@ +at: + no non-forking mode +fsck: + returns non-zero if it repaired something. + You have to wrap it into a shell-script :-( + + #!/bin/sh + fsck $@ + [ $? -le 1 ] && exit 0 + exit 1 + +Non-zero exit in general diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/supported-os.text b/software/cinit/browse_source/cinit-0.3pre7/doc/user/supported-os.text new file mode 100644 index 00000000..97b29506 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/supported-os.text @@ -0,0 +1,32 @@ +Supported operating systems +=============== +Nico Schottelius +0.1, Initial Version from 2007-02-15 +:Author Initials: NS + +This document lists the supported operating systems. + + +Supported OS +------------ +This means currently that cinit compiles on that system + +Tested by the author +~~~~~~~~~~~~~~~~~~~~ +- GNU/Linux +- FreeBSD +- NetBSD + +Reported by others +~~~~~~~~~~~~~~~~~~ +[none] + +Unsupported OS +-------------- + +OpenBSD +~~~~~~~ +Seems to not comply to Posix / XSI. Have a look at +http://home.schottelius.org/~nico/unix/openbsd/ftok-sys-ipc.h-problem. +This is a demo of the problem on OpenBSD 4.0 with cinit-0.3pre7-git. + diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/updating.cinit b/software/cinit/browse_source/cinit-0.3pre7/doc/user/updating.cinit new file mode 100644 index 00000000..fc0d3fef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/updating.cinit @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. call cservice -u thilo (if you have cinit-0.1 or later) + + For older versions: + + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything running and restart as if you would just + have booted. diff --git a/software/cinit/browse_source/cinit-0.3pre7/doc/user/using.rescue b/software/cinit/browse_source/cinit-0.3pre7/doc/user/using.rescue new file mode 100644 index 00000000..f58ff512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/doc/user/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user"). + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.build-env b/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.build-env new file mode 100644 index 00000000..94e093e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.build-env @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: build environment to be used in scripts +# * Should be sourced by using scripts +# 2006-10-26 +# + +. $(dirname $0)/cinit.read-conf + +export BASEDIR=${DESTDIR}${CINIT_DIR} +export SERVICES=${BASEDIR}/${SVCDIR} +export CONFIG=${BASEDIR}/${CONFDIR} diff --git a/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.get-confdir b/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.get-confdir new file mode 100644 index 00000000..38d8572d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.get-confdir @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# Date: 2005-05-24 (Last Changed: 2005-08-08) + +# try environment first +if [ "$CINIT_CONF_DIR" ]; then + CONFDIR=$CINIT_CONF_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +else + echo 'Did not find cinit configuration!' >&2 + echo "Please set the variable CINIT_CONF_DIR" >&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.install.standard.dirs b/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.install.standard.dirs new file mode 100644 index 00000000..22cf273d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.install.standard.dirs @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install standard sub-configuration directories +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.build-env + +for svc in $SERVICE_CATEGORIES; do + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${SERVICES}/${svc}" +done + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.mkheader b/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.mkheader new file mode 100644 index 00000000..80e3f7cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.mkheader @@ -0,0 +1,32 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric: no quotes needed + is_numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + is_string="$(echo $value | grep '^"')" + + # + # Check for quote type + # + if [ ! "$is_numeric" -a ! "$is_string" ]; then + one_char=$(echo -n $value | wc -c) + + if [ "$one_char" -eq 1 ]; then + value="'$value'" + else + # is a string + value="\"$value\"" + fi + fi + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.read-conf b/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.read-conf new file mode 100644 index 00000000..80a32463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.read-conf @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# ~ 2005 +# + +CONFS=$($(dirname $0)/cinit.get-confdir) + +set -e + +for conf in ${CONFS}/*; do + NAME="$(basename $conf | tr a-z A-Z)" + if eval test -z \$$NAME; then + eval $NAME=\"$(head -n 1 $conf)\" + eval export $NAME + fi +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.release b/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.release new file mode 100644 index 00000000..17a5b2d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/scripts/cinit.release @@ -0,0 +1,51 @@ +#!/bin/sh +# Nico Schottelius +# Build release tar +# Date: Sat Oct 15 21:38:29 CEST 2005 +# Last Changed: Fr Okt 28 01:24:58 CEST 2005 + +if [ $# -ne 2 ]; then + echo "This is a maintainer-only script to release cinit" + echo $(basename $0): source-dir version + exit 1 +fi + +cat << eof + Erinnerung: + + - Version in conf/version angepasst? + - CHANGES angepasst? + + Nein? Strg+C bitte... +eof +read a + + +DIR=$1 +VERSION=$2 +OUT_NAME=cinit-${VERSION}.tar.bz2 +D_HOST=home.schottelius.org +D_BASE=www/org/schottelius/unix/www/cinit +D_DIR=${D_BASE}/archives/ +D_SOURCE=${D_BASE}/browse_source/ +LINK=current + +if [ ! -d "$DIR" ]; then + echo "$DIR is not a directory" + exit 1 +fi + +( cd "$DIR" && make dist ) || exit 1 + +echo "Creating bzip2 compressed tar" +tar cj -X $DIR/.exclude -f "$OUT_NAME" "$DIR" +chmod 0644 "$OUT_NAME" +echo "Transfering to $D_HOST" +scp "$OUT_NAME" "$D_HOST:$D_DIR" +echo "Extracting to $D_SOURCE" +ssh "$D_HOST" "tar xfj $D_DIR/$OUT_NAME -C $D_SOURCE" +echo "Correcting paranoid permissions" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type f -exec chmod 0644 {} \\;" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type d -exec chmod 0755 {} \\;" +ssh "$D_HOST" "cd \"$D_SOURCE\" && rm -f \"$LINK\" && ln -s \"$DIR\" \"$LINK\"" +echo "Please do not forget to update the website..." diff --git a/software/cinit/browse_source/cinit-0.3pre7/scripts/create_baseconfig.sh b/software/cinit/browse_source/cinit-0.3pre7/scripts/create_baseconfig.sh new file mode 100644 index 00000000..7c9b69e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/scripts/create_baseconfig.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# 2006-10-23 +# cLinux/cinit + +. $(dirname $0)/cinit.build-env + +set -e + +mkdir -p "${BASEDIR}" + +mkdir -p "${SERVICES}" +mkdir -p "${SERVICES}/${C_INIT}" + +mkdir -p "${CONFIG}" diff --git a/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/README b/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/README new file mode 100644 index 00000000..2162b6b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/README @@ -0,0 +1 @@ +Only to be used by Nico Schottelius. diff --git a/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/compile+run.sh b/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/compile+run.sh new file mode 100644 index 00000000..b0daad25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/compile+run.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# yah - yet another hack + +host="$1" + +hier=$(dirname $0) + +$hier/compile_test.sh "$1" + +if [ $? -ne 0 ]; then + echo "aborting, did not compile on $1" + exit 1 +fi + +ssh "${host}" './cinit/src/cinit & (sleep 30; kill -9 $(pgrep cinit))' diff --git a/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/compile_local.sh b/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/compile_local.sh new file mode 100644 index 00000000..e2bfce5e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/compile_local.sh @@ -0,0 +1,24 @@ +# just a hack + +dir=$(dirname $0) + +sys=$(uname -s) +sys_small=$(echo $sys | tr '[A-Z]' '[a-z]') + +case $(uname -s) in + NetBSD|OpenBSD) + make=gmake + ;; + *) + make=make + ;; +esac + +cd "${dir}/../../" +echo $sys_small > conf/os +# automatically called by make.. +#./bin/cinit.configure.os + +cd "src" +$make clean +$make cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/compile_test.sh b/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/compile_test.sh new file mode 100644 index 00000000..335f31ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/compile_test.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# yah - yet another hack + +host="$1" +what=$(dirname $0)/../../ + +rsync --exclude .git --exclude \*.o -av "${what}" "${host}:cinit" +ssh "${host}" "./cinit/scripts/internal/compile_local.sh" diff --git a/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/create_test_config.sh b/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/create_test_config.sh new file mode 100644 index 00000000..720ce969 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/create_test_config.sh @@ -0,0 +1,18 @@ +hier=$(dirname $0) + +set -e +${hier}/../cinit.install.standard.dirs +cat > /etc/cinit/svc/init/on << eof +#!/bin/sh +echo test1 +sleep 4 +echo test2 - \$@ +eof +chmod 0755 /etc/cinit/svc/init/on + +cat > /etc/cinit/svc/init/on.params << eof +es +scheint +zu +gehen +eof diff --git a/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/find_right_version.sh b/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/find_right_version.sh new file mode 100644 index 00000000..759f23c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/find_right_version.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +src="$(dirname $0)/../../" +src_abs=$(cd "$src" && pwd -P) + +for commit in $( git log --pretty=short | awk '/^commit/ { print $2 }'); do + set -e + cd "$src_abs" + temp=$(mktemp -d /tmp/cinit.XXXXXXXXXX) + git-archive --format=tar "$commit" | ( cd "$temp"; tar x ) + cd "${temp}/src" + set +e + make clean && make cinit && ./cinit + if [ "$?" -eq 0 ]; then + echo "Commit $commit is ok" + exit 0 + fi + echo "Broken $commit" + sleep 1 + set -e + rm -rf "$temp" +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/test_on_hosts.sh b/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/test_on_hosts.sh new file mode 100644 index 00000000..a4695134 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/test_on_hosts.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# yah + +hosts="penrose.bsdprojects.net bot.unixkiste.org suckz.eu" + +set -e + +for host in $hosts; do + echo "$1 on $host" + "$1" "$host" | sed "s/^/${host}: /" + echo "==> Finished $host" +done diff --git a/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/valgrind b/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/valgrind new file mode 100644 index 00000000..f769f9da --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/scripts/internal/valgrind @@ -0,0 +1 @@ +valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes --leak-resolution=high ./cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/scripts/report.compile b/software/cinit/browse_source/cinit-0.3pre7/scripts/report.compile new file mode 100644 index 00000000..ac591412 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/scripts/report.compile @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# 2006-12-08 +# Report compile success +# + +echo "cinit compile success report" +echo "----------------------------" +"$(dirname $0)/cinit.mkheader" +echo "----------------------------" +uname -a +echo "----------------------------" +. "$(dirname $0)/cinit.read-conf" +echo '$CC' +"$CC" -v +echo "----------------------------" +echo -n "Size: " +ls -l "$(dirname $0)/../src/cinit" diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-17-19:03:48 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-17-19:03:48 new file mode 100644 index 00000000..e379e004 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-17-19:03:48 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 17 19:03 cinit +-rwx------ 1 nico users 46760 Jun 17 19:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-20-12:16:40 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-20-12:16:40 new file mode 100644 index 00000000..1f0c3325 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-20-12:16:40 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 20 12:16 cinit +-rwx------ 1 nico users 50860 Jun 20 12:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-20-15:16:31 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-20-15:16:31 new file mode 100644 index 00000000..75dc3e7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-20-15:16:31 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 15:16 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-20-16:29:28 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-20-16:29:28 new file mode 100644 index 00000000..1294bde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-20-16:29:28 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-20-16:29:50 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-20-16:29:50 new file mode 100644 index 00000000..69fe7490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-20-16:29:50 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 16:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-21-11:53:35 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-21-11:53:35 new file mode 100644 index 00000000..4a1e7b6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-21-11:53:35 @@ -0,0 +1,3 @@ +total 192 +-rwx------ 1 nico users 102039 Jun 21 11:53 cinit +-rwx------ 1 nico users 87871 Jun 21 11:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-07:33:11 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-07:33:11 new file mode 100644 index 00000000..e6c8ff14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-07:33:11 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47544 Jun 22 07:33 cinit +-rwx------ 1 nico users 46760 Jun 22 07:33 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-07:57:13 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-07:57:13 new file mode 100644 index 00000000..17161d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-07:57:13 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47536 Jun 22 07:57 cinit +-rwx------ 1 nico users 46760 Jun 22 07:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-08:08:40 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-08:08:40 new file mode 100644 index 00000000..770083f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-08:08:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47424 Jun 22 08:08 cinit +-rwx------ 1 nico users 46760 Jun 22 08:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-08:30:42 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-08:30:42 new file mode 100644 index 00000000..aa95fb3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-08:30:42 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47360 Jun 22 08:30 cinit +-rwx------ 1 nico users 46760 Jun 22 08:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-09:19:42 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-09:19:42 new file mode 100644 index 00000000..70c261bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-09:19:42 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 09:19 cinit +-rwx------ 1 nico users 50860 Jun 22 09:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-10:43:24 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-10:43:24 new file mode 100644 index 00000000..b8bc4076 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-10:43:24 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 10:43 cinit +-rwx------ 1 nico users 50860 Jun 22 10:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-12:42:57 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-12:42:57 new file mode 100644 index 00000000..c8119859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-12:42:57 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 22 12:42 cinit +-rwx------ 1 nico users 46760 Jun 22 12:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-13:52:41 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-13:52:41 new file mode 100644 index 00000000..793b92fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-13:52:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:52 cinit +-rwx------ 1 nico users 46760 Jun 22 13:52 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-13:59:40 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-13:59:40 new file mode 100644 index 00000000..d114c557 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-13:59:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:59 cinit +-rwx------ 1 nico users 46760 Jun 22 13:59 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-14:19:41 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-14:19:41 new file mode 100644 index 00000000..8d56882f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-14:19:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47640 Jun 22 14:19 cinit +-rwx------ 1 nico users 46760 Jun 22 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-14:37:18 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-14:37:18 new file mode 100644 index 00000000..b7c3e4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-22-14:37:18 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 22 14:37 cinit +-rwx------ 1 nico users 46760 Jun 22 14:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-23-06:22:23 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-23-06:22:23 new file mode 100644 index 00000000..9e38a5e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-23-06:22:23 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 23 06:22 cinit +-rwx------ 1 nico users 46760 Jun 23 06:22 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-24-17:53:55 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-24-17:53:55 new file mode 100644 index 00000000..3b750eaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-24-17:53:55 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:53 cinit +-rwx------ 1 nico users 46760 Jun 24 17:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-24-17:55:29 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-24-17:55:29 new file mode 100644 index 00000000..c30dcaf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-24-17:55:29 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:55 cinit +-rwx------ 1 nico users 46760 Jun 24 17:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-26-13:19:49 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-26-13:19:49 new file mode 100644 index 00000000..a4de830b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-06-26-13:19:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 26 13:19 cinit +-rwx------ 1 nico users 50860 Jun 26 13:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:07:13 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:07:13 new file mode 100644 index 00000000..e2c59ddf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:07:13 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:07 cinit +-rwx------ 1 nico users 50860 Jul 6 08:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:12:20 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:12:20 new file mode 100644 index 00000000..e562350c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:12:20 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:12 cinit +-rwx------ 1 nico users 50860 Jul 6 08:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:13:39 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:13:39 new file mode 100644 index 00000000..32fd8268 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:13:39 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:13 cinit +-rwx------ 1 nico users 50860 Jul 6 08:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:14:19 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:14:19 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:14:19 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:14:59 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:14:59 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:14:59 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:15:56 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:15:56 new file mode 100644 index 00000000..cf26e6f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-08:15:56 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:15 cinit +-rwx------ 1 nico users 50860 Jul 6 08:15 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-10:12:22 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-10:12:22 new file mode 100644 index 00000000..d5f0f2c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-10:12:22 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:08 cinit +-rwx------ 1 nico users 50860 Jul 6 10:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-10:12:31 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-10:12:31 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-10:12:31 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-10:12:49 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-10:12:49 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-07-06-10:12:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-08-29-21:21:34 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-08-29-21:21:34 new file mode 100644 index 00000000..e651a8ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-08-29-21:21:34 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 root root 444508 2005-08-29 21:21 cinit +-rwx------ 1 root root 440412 2005-08-29 21:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-08-29-23:50:55 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-08-29-23:50:55 new file mode 100644 index 00000000..a279aee3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-08-29-23:50:55 @@ -0,0 +1,3 @@ +insgesamt 856 +-rwx------ 1 nico nico 437564 2005-08-29 23:50 cinit +-rwx------ 1 nico nico 436316 2005-08-29 23:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-03-03:36:59 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-03-03:36:59 new file mode 100644 index 00000000..01e555f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-03-03:36:59 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 nico nico 444508 2005-09-03 03:36 cinit +-rwx------ 1 nico nico 440412 2005-09-03 03:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-03-04:34:35 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-03-04:34:35 new file mode 100644 index 00000000..1832930a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-03-04:34:35 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 04:34 cinit +-rwx------ 1 nico nico 440412 Sep 3 04:34 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-03-05:51:17 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-03-05:51:17 new file mode 100644 index 00000000..4e465d06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-03-05:51:17 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 05:51 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-03-05:54:20 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-03-05:54:20 new file mode 100644 index 00000000..9c040d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-03-05:54:20 @@ -0,0 +1,4 @@ +total 1300 +-rwx------ 1 nico nico 440412 Sep 3 05:54 ccontrol +-rwx------ 1 nico nico 444508 Sep 3 05:54 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-03-09:01:59 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-03-09:01:59 new file mode 100644 index 00000000..880422a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-03-09:01:59 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 3 09:01 cinit +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-05-19:41:12 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-05-19:41:12 new file mode 100644 index 00000000..0f07d86e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-05-19:41:12 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 root root 440412 2005-09-05 19:41 ccontrol +-rwx------ 1 root root 444508 2005-09-05 19:41 cinit +-rwx------ 1 root root 440412 2005-09-05 19:41 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-05-19:50:35 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-05-19:50:35 new file mode 100644 index 00000000..32ff19fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-05-19:50:35 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 5 19:50 cinit +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-24-01:42:38 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-24-01:42:38 new file mode 100644 index 00000000..0da6126e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-24-01:42:38 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-09-24 01:42 ccontrol +-rwx------ 1 nico nico 437628 2005-09-24 01:42 cinit +-rwx------ 1 nico nico 436316 2005-09-24 01:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-30-22:50:50 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-30-22:50:50 new file mode 100644 index 00000000..0d510174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-30-22:50:50 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 22:50 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 22:50 cinit +-rwx------ 1 nico nico 436316 2005-09-30 22:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-30-23:06:39 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-30-23:06:39 new file mode 100644 index 00000000..23450914 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-09-30-23:06:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 23:06 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 23:06 cinit +-rwx------ 1 nico nico 436316 2005-09-30 23:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-01-22:09:13 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-01-22:09:13 new file mode 100644 index 00000000..a62b9eb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-01-22:09:13 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-10-01 22:09 ccontrol +-rwx------ 1 nico nico 437308 2005-10-01 22:09 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-01-22:17:39 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-01-22:17:39 new file mode 100644 index 00000000..b1d8b11b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-01-22:17:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-01 22:17 ccontrol +-rwx------ 1 nico nico 437532 2005-10-01 22:17 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-02-11:12:29 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-02-11:12:29 new file mode 100644 index 00000000..e5f7b13d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-02-11:12:29 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:12 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-02-11:13:35 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-02-11:13:35 new file mode 100644 index 00000000..d7c14471 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-02-11:13:35 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-02-11:13:43 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-02-11:13:43 new file mode 100644 index 00000000..1711d01a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-02-11:13:43 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 11:13 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 436316 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-02-16:00:24 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-02-16:00:24 new file mode 100644 index 00000000..ab23228c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-02-16:00:24 @@ -0,0 +1,4 @@ +total 1284 +-rwx------ 1 nico nico 436316 Oct 2 16:00 ccontrol +-rwx------ 1 nico nico 437884 Oct 2 16:00 cinit +-rwx------ 1 nico nico 436316 Oct 2 16:00 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-02-23:17:11 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-02-23:17:11 new file mode 100644 index 00000000..92041cd9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-02-23:17:11 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 23:17 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 23:17 cinit +-rwx------ 1 nico nico 436316 2005-10-02 23:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-03-00:54:39 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-03-00:54:39 new file mode 100644 index 00000000..df47a057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-03-00:54:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:54 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:54 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-03-00:56:29 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-03-00:56:29 new file mode 100644 index 00000000..08db7fec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-03-00:56:29 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:56 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:56 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:56 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-13-09:55:52 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-13-09:55:52 new file mode 100644 index 00000000..d54a7ff4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-13-09:55:52 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:55 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:55 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-13-09:57:11 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-13-09:57:11 new file mode 100644 index 00000000..3b1af9ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-13-09:57:11 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:57 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:57 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-13-10:07:28 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-13-10:07:28 new file mode 100644 index 00000000..58d25315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-13-10:07:28 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 10:07 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 10:07 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 10:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-15-15:26:52 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-15-15:26:52 new file mode 100644 index 00000000..a88291e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-15-15:26:52 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 root root 436316 2005-10-15 15:26 ccontrol +-rwx------ 1 root root 437916 2005-10-15 15:26 cinit +-rwx------ 1 root root 436316 2005-10-15 15:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-15-21:23:56 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-15-21:23:56 new file mode 100644 index 00000000..43a4504d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-10-15-21:23:56 @@ -0,0 +1,4 @@ +total 36 +-rwx------ 1 nico nico 9148 Oct 15 21:23 ccontrol +-rwx------ 1 nico nico 11872 Oct 15 21:23 cinit +-rwx------ 1 nico nico 9768 Oct 15 21:23 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2005-11-17-17:03:53 b/software/cinit/browse_source/cinit-0.3pre7/size/2005-11-17-17:03:53 new file mode 100644 index 00000000..78543f15 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2005-11-17-17:03:53 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2005-11-17 17:03 ccontrol +-rwx------ 1 nico nico 11872 2005-11-17 17:03 cinit +-rwx------ 1 nico nico 9768 2005-11-17 17:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-11-23:45:54 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-11-23:45:54 new file mode 100644 index 00000000..f4852c81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-11-23:45:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-11 23:45 cinit +-rwx------ 1 nico nico 9768 2006-02-11 23:45 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-12-00:06:11 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-12-00:06:11 new file mode 100644 index 00000000..2fe41351 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-12-00:06:11 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-12-00:06:42 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-12-00:06:42 new file mode 100644 index 00000000..bf2ddc36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-12-00:06:42 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:06 ccontrol +-rwx------ 1 nico nico 11560 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-12-00:08:24 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-12-00:08:24 new file mode 100644 index 00000000..e25a49ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-12-00:08:24 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:08 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:08 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-12-00:09:33 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-12-00:09:33 new file mode 100644 index 00000000..0b64fa00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-12-00:09:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:09 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:09 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-12-00:13:32 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-12-00:13:32 new file mode 100644 index 00000000..b6c5c38e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-12-00:13:32 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:13 ccontrol +-rwx------ 1 nico nico 11500 2006-02-12 00:13 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-16-23:57:29 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-16-23:57:29 new file mode 100644 index 00000000..86b9fda9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-16-23:57:29 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11620 2006-02-16 23:57 cinit +-rwx------ 1 nico nico 9768 2006-02-16 23:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-17-00:16:18 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-17-00:16:18 new file mode 100644 index 00000000..28c853a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-17-00:16:18 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 00:16 cinit +-rwx------ 1 nico nico 9768 2006-02-17 00:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-17-22:48:35 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-17-22:48:35 new file mode 100644 index 00000000..5935acfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-17-22:48:35 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-17 22:48 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 22:48 cinit +-rwx------ 1 nico nico 9768 2006-02-17 22:48 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:03:54 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:03:54 new file mode 100644 index 00000000..9222f0b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:03:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:03 cinit +-rwx------ 1 nico nico 9768 2006-02-20 19:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:04:33 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:04:33 new file mode 100644 index 00000000..c5797edc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:04:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:04:36 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:04:36 new file mode 100644 index 00000000..fbcf9fa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:04:36 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:07:47 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:07:47 new file mode 100644 index 00000000..7e1fe18f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:07:47 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:07 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:12:33 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:12:33 new file mode 100644 index 00000000..2b4fda40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:12:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:12 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:12 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:14:56 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:14:56 new file mode 100644 index 00000000..bccb5d65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-02-20-20:14:56 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:14 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:14 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-01-23:32:43 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-01-23:32:43 new file mode 100644 index 00000000..fcbaf372 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-01-23:32:43 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-01 23:32 ccontrol +-rwx------ 1 nico nico 11640 2006-06-01 23:32 cinit +-rwx------ 1 nico nico 9768 2006-06-01 23:32 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-01:08:28 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-01:08:28 new file mode 100644 index 00000000..7683546c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-01:08:28 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:08 ccontrol +-rwx------ 1 nico nico 11688 2006-06-02 01:08 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-01:29:13 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-01:29:13 new file mode 100644 index 00000000..adbc6846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-01:29:13 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:29 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 01:29 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-11:13:39 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-11:13:39 new file mode 100644 index 00000000..46eaef4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-11:13:39 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:13 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:13 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-11:36:37 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-11:36:37 new file mode 100644 index 00000000..306402f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-11:36:37 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:36 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:36 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-15:17:17 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-15:17:17 new file mode 100644 index 00000000..7bb59095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-15:17:17 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:17 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:17 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-15:19:52 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-15:19:52 new file mode 100644 index 00000000..ce65256f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-06-02-15:19:52 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:19 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:19 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-11-29-235834 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-11-29-235834 new file mode 100644 index 00000000..c2c83117 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-11-29-235834 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73645 2006-11-29 23:57 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-02-172536 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-02-172536 new file mode 100644 index 00000000..4079d5db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-02-172536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73617 2006-12-02 17:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-02-174429 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-02-174429 new file mode 100644 index 00000000..5506928d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-02-174429 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73497 2006-12-02 17:44 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-02-182536 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-02-182536 new file mode 100644 index 00000000..14526d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-02-182536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 72092 2006-12-02 18:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-03-173231 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-03-173231 new file mode 100644 index 00000000..aca9d380 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-03-173231 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71944 2006-12-03 17:32 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-03-174544 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-03-174544 new file mode 100644 index 00000000..3c1cfea2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-03-174544 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71952 2006-12-03 17:45 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-03-191215 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-03-191215 new file mode 100644 index 00000000..4f2a2fa1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-03-191215 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-03 19:12 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-06-084947 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-06-084947 new file mode 100644 index 00000000..487af844 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-06-084947 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-06 08:49 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-14-213559 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-14-213559 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-14-213559 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-14-213717 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-14-213717 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-14-213717 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-14-213739 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-14-213739 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-14-213739 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-14-215315 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-14-215315 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-14-215315 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-14-215334 b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-14-215334 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2006-12-14-215334 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/size/2007-02-17-210059 b/software/cinit/browse_source/cinit-0.3pre7/size/2007-02-17-210059 new file mode 100644 index 00000000..69179604 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/size/2007-02-17-210059 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 75783 2007-02-17 20:59 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/.configured b/software/cinit/browse_source/cinit-0.3pre7/src/.configured new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/Makefile b/software/cinit/browse_source/cinit-0.3pre7/src/Makefile new file mode 100644 index 00000000..08ea9d3b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/Makefile @@ -0,0 +1,131 @@ +# +# cinit +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +#include Makefile.tests + +# Build tools / locations +CC=../tmpbin/cc +CFLAGS= +LD=../tmpbin/ld +LDFLAGS= +STRIP=../tmpbin/strip +SBIN=../sbin + +# directories and files +CONFIG_H=include/config.h + +BIN=cinit + +# +# All objects depend on headers. More or less. FIXME: use gcc -M +# +CINIT_HEADERS=$(shell cat include/listing) + +# NEW +CINIT_OBJ=$(shell cat object_lists/cinit) + +# +# Client modules +# +CLIENT=client/msg_svc_on_off.o client/msg_change_status.o client/run_svc.o \ + client/exec_svc.o client/respawn_svc.o client/run_run_svcs.o \ + client/connect_sock.o client/begin_msg.o client/sig_terminate.o + +COMMUNICATION=comm/do_change_status.o comm/do_result.o comm/do_svc_name.o + +OBJ=$(SERV) $(SERV_OS) $(CLIENT) $(BOTH) $(COMMUNICATION) + +CSVC_OBJ=util/cservice.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +CCO_OBJ=util/ccontrol.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) +# +# End user target +# +#all: cinit cservice ccontrol sizecheck docs +#all: $(BIN) +all: cinit + + +# +# Generic +# +$(CINIT_OBJ): $(CINIT_HEADERS) + +%.o: %.c + $(CC) -c -o $@ $< + + + +# +# First do configuration, so we include the right variables +# +Makefile: .configured + +.configured: ../conf/* + @../bin/cinit.configure.os + @../bin/cinit.configure.tools + @../bin/cinit.configure.ipc + @../bin/cinit.configure.mark + +$(CINIT_OBJ): $(CONFIG_H) + + +$(CONFIG_H): ../conf/* + ../scripts/cinit.mkheader > $(CONFIG_H) + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +ccontrol: $(SBIN)/ccontrol + +$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) + $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ + $(STRIP) $@ + +install: install-dir cinit cservice ccontrol + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + + +################################################################################ +# +# Build targets +# +cinit: $(CINIT_OBJ) + $(LD) $^ -o $@ + +################################################################################ +# +# Generic targets +# + +.PHONY: dist +dist: distclean + +.PHONY: distclean +distclean: clean + rm -f os/current ipc/current + +.PHONY: clean +clean: + rm -f ../tmpbin/*.configured + rm -f $(BIN) $(CINIT_OBJ) + rm -f test/*.o diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/Makefile.tests b/software/cinit/browse_source/cinit-0.3pre7/src/Makefile.tests new file mode 100644 index 00000000..0f4b4626 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/Makefile.tests @@ -0,0 +1,27 @@ +# +# Makefile for cinit tests +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +TEST_BUILD_ARGV=test/test_build_argv.o core/build_argv.o + +PROGS=test_build_argv test_build_argv_link + +tests: $(PROGS) + +test_build_argv: test/test_build_argv.o core/build_argv.o +test_build_argv_link: test/test_build_argv+link.o core/build_argv.o + +test_gen_svc_tree: test/test_gen_svc_tree.o svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/gen_svc_tree.o \ + generic/mini_printf.o \ + svc/list_display_all.o + +test_openreadclose: test/test_openreadclose.o generic/openreadclose.o diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/ancient/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre7/src/ancient/run_init_svc.c new file mode 100644 index 00000000..f41c1f4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/ancient/run_init_svc.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/core/build_argv.c b/software/cinit/browse_source/cinit-0.3pre7/src/core/build_argv.c new file mode 100644 index 00000000..85238d47 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/core/build_argv.c @@ -0,0 +1,170 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Build **argv for execution in cinit way: + * 1. check whether cmd is a valid executable + * 2. try to read cmd.params and write parameters + * 3. try to read cmd.env and setup environment + * + * Returns: + * BA_OK: Everything went well, you can use the struct + * BA_NOTFOUND: Binary executable is not available + * BA_PARAMS: Reading the parameters failed (ignoring non-existence!) + * BA_ENV: Reading the environment failed (same as above) + * BA_OTHER: Other error + */ + +#include /* open() */ +#include /* *alloc() */ +#include /* readlink */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* NULL */ +#include /* strchr */ +#include /* stat() */ + +#include "cinit.h" +#include "build_argv.h" + + /* + * char *basename: something we should execute + * (*basename) + ".params" will be added as parameters + * (*basename) + ".env" will be added as environment + */ + +int cinit_build_argv(char *basename, struct ba_argv *bav) +{ + int tmp; + int argc; + char pathtmp[PATH_MAX+1]; + char *sbuf = NULL; + char *p; + + /* sane values */ + bav->argv = NULL; + bav->envp = NULL; + + mini_printf("CBA::",1); + mini_printf(basename,1); + mini_printf("\n",1); + + /*********************************************************************** + * Try to get realname (for links) + */ + if((tmp = readlink(basename,pathtmp,PATH_MAX)) == -1) { + /* nothing there? */ + if(errno == ENOENT) { + return BA_E_NOTFOUND; + } + if (errno != EINVAL) { + return BA_E_OTHER; + } + tmp=strlen(basename); + strncpy(pathtmp,basename,tmp); + } + pathtmp[tmp] = '\0'; + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /*********************************************************************** + * prepare argv0 + */ + bav->argv = malloc(sizeof(char *)); + if(bav->argv == NULL) return BA_E_MEM; + + *bav->argv = malloc(tmp); + if(*(bav->argv) == NULL) return BA_E_MEM; + + strncpy(*(bav->argv),pathtmp,tmp); + + /********************** read params *********************/ + /* FIXME check bounds! */ + strcpy(pathtmp,basename); + strcat(pathtmp,C_PARAMS); + /* ORC_ERR_NONEXISTENT: Ok, have sbuf set to NULL + * ORC_OK: Ok, have a filled buffer (perhaps NULL, too) + * other: Error, print errno + */ + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /*********************************************************************** + * Now split the string, converting \n to \0 + */ + argc = 1; /* argv0 */ + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = sbuf; /* here begins the current argument */ + + if(p != NULL) { /* found another \n */ + *p = '\0'; + sbuf = p+1; + } else { /* end of string */ + sbuf = NULL; + } + + ++argc; + } + + /************ close argv list **************/ + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,basename); + strcat(pathtmp,C_ENV); + + tmp = argc = 0; + sbuf = NULL; + + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /************** build environment string **************/ + argc = 0; + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) return BA_E_MEM; + + bav->envp[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + sbuf = p+1; + } else { + sbuf = NULL; + } + ++argc; + } + + /************ close env list **************/ + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) { + return BA_E_MEM; + } + bav->envp[argc] = NULL; + + return BA_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/core/cinit.c b/software/cinit/browse_source/cinit-0.3pre7/src/core/cinit.c new file mode 100644 index 00000000..87fa0bbd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/core/cinit.c @@ -0,0 +1,94 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The main file + * + */ + +#include /* getpid,chdir */ +#include /* str(ncmp,len,cpy,cat) */ +#include /* perror */ +#include /* malloc */ + +#include "cinit.h" /* general things */ +#include "messages.h" /* messages */ +#include "ipc.h" /* general ipc methods */ +#include "svc.h" /* gen_svc_tree */ + +struct listitem *svc_list = NULL; +struct dep *svc_init = NULL; + +int main(int argc, char **argv) +{ + char *initdir = CINIT_INIT; /* default init dir */ +// pid_t cpid; + + + //set_signals(ACT_SERV); + + /* FIXME: RE-ENABLE as SOON AS PRODUCTIVE cpid = getpid(); + * Is this really needed or should we lock() ourselves? + if(cpid != 1) { + mini_printf(CINIT_VERSION,2); + mini_printf(MSG_USAGE,2); + return 0; + }*/ + + /* Look whether we should start a profile */ + while(argc > 1) { + if(!strncmp(PROFILE, argv[argc-1], strlen(PROFILE) ) ) { + initdir = (char *) malloc( + strlen(CINIT_SVCDIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2); + if(initdir == NULL) { + panic(); + } + strcpy(initdir, CINIT_SVCDIR); + strcat(initdir, SLASH); + strcat(initdir, &argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* Bootup "logo" */ + mini_printf(MSG_BOOTING,1); mini_printf(initdir,1); mini_printf("\n",1); + + if(chdir(initdir) == -1) { + print_errno(initdir); + panic(); + } + + /* initialize ipc method */ + if(!cinit_ipc_init()) { + panic(); + } + + /* listen to signals */ + // MOVE TO UPPER TO TEST SEGFAULT set_signals(ACT_SERV); + set_signals(ACT_SERV); + + /* pre-calculate service tree */ + gen_svc_tree(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* start tree from the bottom */ + /* FIXME: use panic() instead? */ + if(!tree_exec(svc_init)) return 1; + + mini_printf("=> cinit started.\n",1); + + /* listen for incomming messages: should never return */ + if(!cinit_ipc_listen()) { + panic(); + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/core/do_reboot.c b/software/cinit/browse_source/cinit-0.3pre7/src/core/do_reboot.c new file mode 100644 index 00000000..1e71aca9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/core/do_reboot.c @@ -0,0 +1,90 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#include +#include +#include +#include +#include +#include + +#include "ipc.h" +#include "cinit.h" +#include "os.h" +#include "messages.h" + +/* cleaned headers */ +#include /* kill() */ + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void do_reboot(int signal) +{ + //struct listitem *tmp; + //char **cmd; + //int i; + + /* + * New code: + * 0. close user ipc + * - notify user! + * - do not allow user interupt anymore + * 1. shutdown services + * - notify user! + * 2. kill -TERM all processes + * - notify user! + * 3. kill -KILL all processes + * - notify user! + * 4. execute /etc/cinit/conf/{halt,reboot,poweroff} + * - notify user! + */ + + /* FIXME: pre-shutdown? not senseful, can be implemented outside. */ + + /* do not listen to client requests anymore */ + cinit_ipc_destroy(); + + /* FIXME: ignore signals now! */ + + /* shutdown all services: take care about the dependency tree */ + //cinit_svc_shutdown(); + + /* now: all services are down, let's kill all other processes */ + if(kill(-1,SIGTERM) == -1) { + print_errno(MSG_TERMKILL); + } + + sleep_before_kill(); + + if(kill(-1,SIGKILL) == -1) { + print_errno(MSG_KILLBILL); + } + + /* Execute umount and wait for its termination */ + execute_and_wait(CINIT_UMOUNT); + + /* do what we really wanted to do */ + switch(signal) { + case SIGTERM: /* power off */ + LOG(MSG_POWER_OFF); + cinit_poweroff(); + break; + case SIGHUP: /* reboot */ + LOG(MSG_REBOOT); + cinit_reboot(); + break; + case SIGUSR1: /* halt */ + LOG(MSG_HALT); + cinit_halt(); + break; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/core/objects b/software/cinit/browse_source/cinit-0.3pre7/src/core/objects new file mode 100644 index 00000000..9596d171 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/core/objects @@ -0,0 +1,7 @@ +core/build_argv.o +core/cinit.o +core/panic.o +core/run_init_svc.o +core/set_signals.o +core/do_reboot.o +core/sig_child.o diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/core/panic.c b/software/cinit/browse_source/cinit-0.3pre7/src/core/panic.c new file mode 100644 index 00000000..48a5d17f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/core/panic.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something + */ + +#include /* execv */ + +#include "cinit.h" +#include "messages.h" + +void panic(void) +{ + char *nargv[2]; + + if(execute_and_wait(CINIT_PANIC)) _exit(0); + + /*********************************************************************** + * THIS SHOULD NOT HAPPEN, fallback to hardcoded sulogin + * (conf/sulogin) + */ + nargv[0] = SULOGIN; + nargv[1] = NULL; + + if(execv(SULOGIN,nargv) == -1) { + print_errno(MSG_FATAL_PANIC); + } + + /* there's nothing todo, if everything fails */ + _exit(23); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/core/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre7/src/core/run_init_svc.c new file mode 100644 index 00000000..b613ed6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/core/run_init_svc.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include /* _exit, fork */ + +#include "cinit.h" +#include "messages.h" +#include "ipc.h" + +int run_svc(char *rpath) { rpath = "test"; return 0; } /* a hack to compile cinit for now */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + if(!cinit_ipc_logon()) _exit(1); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/core/run_svc.c b/software/cinit/browse_source/cinit-0.3pre7/src/core/run_svc.c new file mode 100644 index 00000000..95cc324d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/core/run_svc.c @@ -0,0 +1,131 @@ +/* + * (c) 2005 Nico Schottelius (nico-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +#error "needs to be cleaned up" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + print_errno(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + print_errno(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/core/set_signals.c b/software/cinit/browse_source/cinit-0.3pre7/src/core/set_signals.c new file mode 100644 index 00000000..ae38cf8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/core/set_signals.c @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006-2006 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Define signal handlers + */ + + +#include /* sigaction, sigemtpyset */ +#include /* NULL */ +#include "cinit.h" /* defines */ + +void set_signals(int action) +{ + struct sigaction sa; + + /* If you want to have fun with glibc, comment out the three lines that + * initialise sa.sa_flags and cinit will segfault when sig_child + * exits. "Works" on glibc 2.3-2.5 ;-) + */ + if(action == ACT_SERV) { + sa.sa_handler = sig_child; + sa.sa_flags = SA_NOCLDSTOP; + } else { + sa.sa_handler = SIG_DFL; + sa.sa_flags = 0; + } + sigemptyset(&sa.sa_mask); + + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + sa.sa_flags = 0; /* reset flags */ + if(action == ACT_SERV) { + sa.sa_handler = do_reboot; + } + sigaction(SIGHUP, &sa, NULL); /* reboot */ + sigaction(SIGTERM, &sa, NULL); /* poweroff */ + sigaction(SIGUSR1, &sa, NULL); /* halt */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/core/sig_child.c b/software/cinit/browse_source/cinit-0.3pre7/src/core/sig_child.c new file mode 100644 index 00000000..8223571b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/core/sig_child.c @@ -0,0 +1,71 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The child handler + * + */ + +#include /* FIXME: check headers (->Posix!) */ +#include +#include /* NULL */ + +#include /* sigaction */ +#include "cinit.h" /* */ +#include "svc.h" /* list_search_pid */ +#include "messages.h" /* messages */ + +/*********************************************************************** + * sig_child: (c)collect the children + */ +void sig_child(int tmp) +{ + /* New code: + * - search for pid in service list + * * if (respawn) -> start new + * - insert delay? if exit code is non-zero? if uptime too less? + * * if (once) -> update service status + * * else ignore, but reap away + */ + struct listitem *svc; + struct sigaction sa; + + /* do not interrupt us or anything we might call */ + sa.sa_handler = SIG_IGN; + sigaction(SIGCHLD,&sa,NULL); + + while((tmp = waitpid(-1, &tmp, WNOHANG)) > 0) { + /* check if it's a watched child */ + svc = list_search_pid((pid_t) tmp); + + if(svc != NULL) { + /* Check, that we are operating on it =. that it is no normal child */ + if(svc->status & ST_ONCE_RUN + || svc->status & ST_SH_RESPAWN + || svc->status & ST_RESPAWNING) { + if(WIFEXITED(tmp) && !WEXITSTATUS(tmp)) { + svc_success(svc); + svc_report_status(svc->abs_path,MSG_SVC_OK,NULL); + } else { + svc_fail(svc); + svc_report_status(svc->abs_path,MSG_SVC_FAIL,NULL); + } + } + + /* respawn: restart: FIXME Delay for regular dying services */ + if(svc->status == ST_RESPAWNING) { + svc_report_status(svc->abs_path,MSG_SVC_RESTART,NULL); + svc_start(svc); + } + } else { + /* FIXME remove in production version */ + mini_printf("Cleanup: reparenting\n",1); + } + } + + sa.sa_handler = sig_child; + sigaction(SIGCHLD,&sa,NULL); + mini_printf("Finished CHILD catcher\n",1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/generic/execute_and_wait.c b/software/cinit/browse_source/cinit-0.3pre7/src/generic/execute_and_wait.c new file mode 100644 index 00000000..9cc78475 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/generic/execute_and_wait.c @@ -0,0 +1,44 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something, but fork() before + * + */ + +#include /* pid_t */ +#include /* waitpid */ +#include /* fork */ +#include "messages.h" /* MSG_* */ +#include "cinit.h" /* print_errno, execute_sth */ + +int execute_and_wait(char *svc) +{ + pid_t pid; + int status; + + /* fork */ + pid = fork(); + + if(pid == -1) { + print_errno(MSG_ERR_FORK); + return 0; + } + + /* exec / child */ + if(pid == 0) { + execute_sth(svc); /* exits itself */ + } + + /* wait / parent */ + waitpid(pid,&status,0); + + if(WIFEXITED(status)) { + if(WEXITSTATUS(status) == 0) { + return 1; + } + } + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/generic/execute_sth.c b/software/cinit/browse_source/cinit-0.3pre7/src/generic/execute_sth.c new file mode 100644 index 00000000..ab6bf890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/generic/execute_sth.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Executes something: replaces us + */ + +#include /* _exit */ +#include "cinit.h" +#include "build_argv.h" + +void execute_sth(char *basename) +{ + int tmp; + struct ba_argv bav; + + mini_printf("ES::",1); + mini_printf(basename,1); + mini_printf("\n",1); + + tmp = cinit_build_argv(basename,&bav); + if((tmp = cinit_build_argv(basename,&bav)) != BA_OK) { + if(tmp != BA_E_MEM) { /* do not print something on memory errors */ + print_errno(basename); + } + _exit(1); + } + + execve((bav.argv)[0], bav.argv, bav.envp); + print_errno(basename); + _exit(1); /* simply exit non-zero. That's enough for cinit to recognize + it as faulty */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/generic/file_exists.c b/software/cinit/browse_source/cinit-0.3pre7/src/generic/file_exists.c new file mode 100644 index 00000000..4327c715 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/generic/file_exists.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * check whether file exists and is a file + */ + +#include /* FIXME: check headers against posix */ +#include +#include + +#include /* errno */ +#include "cinit.h" + +int file_exists(char *filename) +{ + struct stat buf; + + if(stat(filename,&buf) == -1) { + if(errno == ENOENT) { + return FE_NOT; + } else { + print_errno(filename); + return FE_ERR; + } + } else { + if(!S_ISREG(buf.st_mode)) { + return FE_OTHER; + } + } + + return FE_FILE; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre7/src/generic/mini_printf.c new file mode 100644 index 00000000..af81aa4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/generic/mini_printf.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Print the world! + * + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) return; + + p = str; + while(*p) p++; + + write(fd,str,(size_t) (p - str)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/generic/objects b/software/cinit/browse_source/cinit-0.3pre7/src/generic/objects new file mode 100644 index 00000000..7cdf5172 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/generic/objects @@ -0,0 +1,9 @@ +generic/execute_sth.o +generic/execute_and_wait.o +generic/mini_printf.o +generic/path_absolute.o +generic/path_append.o +generic/print_errno.o +generic/openreadclose.o +generic/strip_final_newline.o +generic/sleep_before_kill.o diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/generic/openreadclose.c b/software/cinit/browse_source/cinit-0.3pre7/src/generic/openreadclose.c new file mode 100644 index 00000000..e24bf081 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/generic/openreadclose.c @@ -0,0 +1,72 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * read a file + * + */ + +#include /* open, read, close */ +#include /* strncpy */ +#include /* realloc */ +#include /* errno */ +#include /* NULL */ +#include /* open */ +#include "cinit.h" + +int openreadclose(char *filename, char **where) +{ + + int tmp; + int cnt; + int fd; + char buf[512]; + + mini_printf("ORC:",1); + mini_printf(filename,1); + mini_printf("\n",1); + *where = NULL; + + /* what a wonderful loop */ + while((fd = open(filename,O_RDONLY)) == -1) { + if(errno == ENOENT) return ORC_ERR_NONEXISTENT; + if(errno != EINTR) return ORC_ERR_OPEN; + } + + cnt = 0; + while (1) { + tmp = read(fd,buf,512); + + if(tmp == -1) { + if(errno == EINTR) + continue; + else + return ORC_ERR_READ; + } else if(tmp == 0) { + break; + } + + cnt += tmp; + *where = realloc(*where,cnt + 1); + if(*where == NULL) return ORC_ERR_MEM; + + /* FIXME check correctness of copied buffer... + * and get some sleep..soon, very soon! */ + strncpy(&(*where)[cnt-tmp],buf,tmp); + mini_printf("ORC: ",1); + mini_printf(buf,1); + mini_printf("\n",1); + } + + while((fd = close(fd)) == -1) { + if(errno == EINTR) continue; + return ORC_ERR_CLOSE; + } + + /* terminate string! */ + (*where)[cnt] = '\0'; + + return ORC_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/generic/path_absolute.c b/software/cinit/browse_source/cinit-0.3pre7/src/generic/path_absolute.c new file mode 100644 index 00000000..691a3a38 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/generic/path_absolute.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create an absulte path + */ + +#include /* chdir(),getcwd */ +#include /* PATH_MAX */ +#include "cinit.h" /* print_errno */ +#include "messages.h" /* print_errno */ + +int path_absolute(char *relpath, char *newpath, size_t size) +{ + char oldpath[PATH_MAX+1]; + + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + if(chdir(relpath) == -1) { + print_errno(relpath); + return 0; + } + + if(!getcwd(newpath,size)) { + print_errno(relpath); + return 0; + } + + if(chdir(oldpath) == -1) { + print_errno(oldpath); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/generic/path_append.c b/software/cinit/browse_source/cinit-0.3pre7/src/generic/path_append.c new file mode 100644 index 00000000..c6617ba9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/generic/path_append.c @@ -0,0 +1,28 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create path to needs + */ + +#include /* strlen */ +#include /* PATH_MAX */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +int path_append(char *path, char *append) +{ + size_t end = strlen(path); + + if(strcmp(&path[end-1],SLASH)) { + if((end + strlen(SLASH) + strlen(append)) > PATH_MAX) return 0; + strcat(path,SLASH); + } else { + if((end + strlen(append)) > PATH_MAX) return 0; + } + strcat(path,append); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/generic/print_errno.c b/software/cinit/browse_source/cinit-0.3pre7/src/generic/print_errno.c new file mode 100644 index 00000000..7415d556 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/generic/print_errno.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * stolen from tcpserver_blocker + * + * Author: Nico Schottelius + * Date: 2006-08-24 + * + * Print the error found in errno + */ + +#include /* strerror */ +#include /* errno */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +void print_errno(char *msg) +{ + if(msg) { + mini_printf(msg, FD_ERR); + mini_printf(": ", FD_ERR); + } + mini_printf(strerror(errno), FD_ERR); + mini_printf("\n", FD_ERR); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/generic/sleep_before_kill.c b/software/cinit/browse_source/cinit-0.3pre7/src/generic/sleep_before_kill.c new file mode 100644 index 00000000..ebe6914d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/generic/sleep_before_kill.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Sleep: + * read configuration, + * fallback to builtin value if not possible, + * sleep. + * + */ + +#include /* nanosleep */ +#include /* strtol() */ +#include /* errno */ + +#include "cinit.h" /* print_errno */ +#include "messages.h" /* messages */ + +void sleep_before_kill() +{ + char *content; + int tmp; + struct timespec ts; + + if(openreadclose(CINIT_SLEEPFILE,&content) == ORC_OK) { + errno = 0; + tmp = strtol(content, NULL, 10); + if(errno != 0) tmp = SLEEP_KILL; + free(content); + } else { + tmp = SLEEP_KILL; + } + + ts.tv_sec = tmp; + ts.tv_nsec = 0; + + if(nanosleep(&ts,NULL) == -1) { + print_errno(MSG_GEN_SLEEP); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/generic/strip_final_newline.c b/software/cinit/browse_source/cinit-0.3pre7/src/generic/strip_final_newline.c new file mode 100644 index 00000000..d9c12f05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/generic/strip_final_newline.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * If the last character is \n, shrink the memory and remove it + * + */ + +#include /* NULL */ +#include /* strchr */ +#include /* alloc */ +#include "cinit.h" /* FIXME debug */ + +char *strip_final_newline(char *str) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) { + mini_printf("SFN: NULL\n",1); + return NULL; + } + + p = strrchr(str,'\n'); + if(p) { + if(*(p+1) == '\0') { + str = realloc(str,(p-str)); + } + } + + return str; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/generic/usage.c b/software/cinit/browse_source/cinit-0.3pre7/src/generic/usage.c new file mode 100644 index 00000000..87d62c73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/generic/usage.c @@ -0,0 +1,23 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * usage: tell the world what we want - seriously no capitalism + * + */ + +#include +#include "cinit.h" + +/*********************************************************************** + * usage: tell the user what's wrong and a help text + */ +void usage(char *banner, char *text) +{ + /* print banner + error message */ + mini_printf(banner,1); + mini_printf(text,1); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/include/build_argv.h b/software/cinit/browse_source/cinit-0.3pre7/src/include/build_argv.h new file mode 100644 index 00000000..b61b27a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/include/build_argv.h @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * build **argv + */ + +#ifndef CINIT_BA_HEADER +#define CINIT_BA_HEADER + +/***************************************************************************** + * Defines: return values + */ +enum { + BA_OK, + BA_E_NOTFOUND, + BA_E_PARAMS, + BA_E_ENV, + BA_E_MEM, + BA_E_OTHER +}; + +/***************************************************************************** + * Structures + */ +struct ba_argv { + char **argv; + char **envp; +}; + +/***************************************************************************** + * Functions + */ +int cinit_build_argv(char *basename, struct ba_argv *bav); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/include/cinit.h b/software/cinit/browse_source/cinit-0.3pre7/src/include/cinit.h new file mode 100644 index 00000000..39dba99f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/include/cinit.h @@ -0,0 +1,112 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_H +#define _CINIT_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/*********************************************************************** + * Defines + */ +#define SLASH "/" +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC + +enum { /* FIXME: there are some default defines somewhere for that */ + FD_IN=0, + FD_OUT=1, + FD_ERR=2 +}; + +enum { /* returns of openreadclose */ + ORC_OK, /* everything went fine */ + ORC_ERR_NONEXISTENT, /* file does not exist */ + ORC_ERR_OPEN, /* error opening the file */ + ORC_ERR_READ, + ORC_ERR_CLOSE, + ORC_ERR_MEM +}; + +/* values for execute_sth: + * STRICT: print and error, if .../on does not exist + * NOSTRICT: no .../on is fine + */ +enum { + EXEC_STRICT, + EXEC_NOSTRICT +}; + +enum { + FE_FILE, /* file exists and is a file */ + FE_OTHER, /* file exists, but is no file */ + FE_NOT, /* file does not exist */ + FE_ERR /* some error occured */ +}; + +/*********************************************************************** + * Paths + */ +#define CINIT_SVCDIR CINIT_DIR SLASH SVCDIR +#define CINIT_INIT CINIT_SVCDIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK +#define CINIT_BIN PREFIX SLASH "sbin" SLASH "cinit" + +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC +#define CINIT_UMOUNT CINIT_CONFDIR SLASH C_UMOUNT +#define CINIT_SLEEPFILE CINIT_CONFDIR SLASH SLEEP_BEFORE_KILL + +/* actions for i/o handlers (see comm/do_*) */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* functions (used by server and client) */ +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +void usage(char *banner, char *stext); + +int do_svc_name(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* core functions */ +void do_reboot(int signal); +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +int msg_svc_on_off(char *svc, char action); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +pid_t respawn_svc(char *abspath); +char **read_file(char *file); +void sig_terminate(int signal); + +/* generic */ +void execute_sth(char *basename); +int execute_and_wait(char *svc); +int path_append(char *path, char *append); +int path_absolute(char *relpath, char *buf, size_t size); +int openreadclose(char *filename, char **where); +char *strip_final_newline(char *str); +int file_exists(char *filename); +void sleep_before_kill(); + +/* util */ +int msg_reboot(char cmd); +void print_errno(char *text); + +/* os-functions */ +void cinit_reboot(void); +void cinit_halt(void); +void cinit_poweroff(void); + +#endif /* _CINIT_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/include/comm.h b/software/cinit/browse_source/cinit-0.3pre7/src/include/comm.h new file mode 100644 index 00000000..b9aaf60f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/include/comm.h @@ -0,0 +1,69 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#ifndef CINIT_COMM_HEADER +#define CINIT_COMM_HEADER + +#include /* PATH_MAX */ + +/*********************************************************************** + * Commands the clients may issue to us + * maximum number of commands: 2^8 = 256 + */ +enum commands { + CMD_START_SVC=1, /* the client wants US to start a service */ + CMD_START_SVC_ONLY, /* start this service without dependencies */ + CMD_STOP_SVC, /* stop svc and all svcs that need it */ + CMD_STOP_SVC_ONLY, /* we should stop _only_ this service */ + CMD_STOP_SVC_WANTS, /* stop svc, all svcs that need or want it */ + CMD_CHG_STAT, /* the client reports a status change */ + CMD_RESCUE, /* we should start the rescue mode */ + CMD_HALT, /* halt the system */ + CMD_REBOOT, /* reboot the system */ + CMD_POWEROFF, /* poweroff the system */ + CMD_WBOOT, /* shutdown and restart everything */ + CMD_INFO /* send information about that service */ +}; + +/* old + RT_ERR_COMM, * communication failed * + RT_ERR, * service starting failed * + RT_UNSPEC, * some kind of error, unspecified * + RT_SUCCESS, * successfully started: respawning or once * + RT_SVC_FAILED, * tried earlier, service failed, won't retry * + +*/ + +/*********************************************************************** + * messages from the client + * Prefix: qst_ (question) + */ +struct msg_client { + pid_t pid; /* pid of the telling client */ + char cmd; /* which cmd is issued to us */ + char status; /* status of the service */ + char svc[PATH_MAX]; /* name of the service */ + char svc_orig[PATH_MAX]; /* the service, which wants to start us */ +}; + +/*********************************************************************** + * messages from the server + * Prefix: asw_ (answer) + */ + +/*********************************************************************** + * return short status + */ +struct asw_sstatus { + long mtype; + char status; + char msg[PATH_MAX]; +}; + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/include/ipc.h b/software/cinit/browse_source/cinit-0.3pre7/src/include/ipc.h new file mode 100644 index 00000000..66b3bc86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/include/ipc.h @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Prototypes for ipc handler + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +/***************************************************************************** + * Functions: in server + */ +int cinit_ipc_init(void); /* init in init */ +int cinit_ipc_listen(void); /* listen in init */ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + +/***************************************************************************** + * Functions: in clients + */ +int cinit_ipc_logon(void); /* logon to init (client init) */ +int cinit_ipc_connect(void); /* connect to init */ +int cinit_ipc_csend(void *data); /* send to the server from a client */ + +/***************************************************************************** + * Functions: shared + */ + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/include/listing b/software/cinit/browse_source/cinit-0.3pre7/src/include/listing new file mode 100644 index 00000000..df30f408 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/include/listing @@ -0,0 +1,5 @@ +include/cinit.h +include/config.h +include/ipc.h +include/messages.h +include/os.h diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/include/messages.h b/software/cinit/browse_source/cinit-0.3pre7/src/include/messages.h new file mode 100644 index 00000000..f220de32 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/include/messages.h @@ -0,0 +1,114 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_MSG_H +#define _CINIT_MSG_H + +/* version */ +#define CINIT_VERSION "cinit-" VERSION +#define MSG_BOOTING CINIT_VERSION ": Booting from " + +#define MSG_DP ": " + +/* Messages to the outside */ +#define MSG_BIND "bind" +#define MSG_CONNECT "connect" +#define MSG_FCNTL "fcntl" +#define MSG_KILLBILL "sigkill" +#define MSG_LISTEN "listen" +#define MSG_SOCKET "socket" +#define MSG_TERMKILL "sigterm" +#define MSG_USAGE_1 ": fast executing, small and simple init " +#define MSG_USAGE_2 "with support for profiles\n" +#define MSG_USAGE_3 "\nError: cinit must be started as PID 1.\n" +#define MSG_USAGE MSG_USAGE_1 MSG_USAGE_2 MSG_USAGE_3 +#define MSG_ERR_FORK "fork" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_OPEN "open" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_READ "read" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" + +#define MSG_ERR_DEPS "Too many dependencies" +#define MSG_ERR_ACCEPT "accept" +#define MSG_ERR_WAITPID "waitpid" +#define MSG_ERR_POLL "poll" +#define MSG_ERR_MODIFY "modify list failed" +#define MSG_ERR_COMM "Communication failed" + +#define MSG_ERR_LESS_ARGS "Too less arguments!" +#define MSG_ERR_BAD_ARGS "Wrong arguments / parameter" +#define MSG_ERR_ARGS_LEN "Wrong parameter length" + +#define LOG_SVC_STOPED "Service stoped" +#define LOG_SVC_ONCE "Started once" +#define LOG_SVC_RESPAWN "Respawns now" +#define LOG_NEED_FAIL "One or more need failed" +#define LOG_SVC_FAILED "Service already failed, not starting." +#define LOG_SVC_NOTEXIST "Service does not exist" + +#define MSG_START_SVC "Starting " +#define MSG_STOP_SVC "Stoping " +#define MSG_EXEC_FAILED "Failed to execute " + +#define MSG_POWER_OFF "Powering off..." +#define MSG_HALT "Halting system ..." +#define MSG_REBOOT "Rebooting ..." +#define MSG_RESCUE "Switching to rescue mode ..." +#define MSG_UPDATE "Updating cinit ..." +#define MSG_HOT_REBOOT "Hot reboot in progress ..." + +#define MSG_SHOULD_NOT_HAPPEN "This should not happen, I do not know what todo!" + +/* DEBUG */ +#ifdef DEBUG +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) +#endif + +/* macros */ +#define SERVICE_LOG(svc,message) { \ + mini_printf(svc,1); \ + mini_printf(MSG_DP,1); \ + mini_printf(message,1); \ + mini_printf("\n",1); \ +} +#define LOG(s) { \ + mini_printf(s,1); \ + mini_printf("\n",1); \ +} +#define P_START_SERVICE(name) { mini_printf(MSG_START_SVC,1); mini_printf(name,1); mini_printf("\n",1); } +#define P_EXEC_FAILED(name) { mini_printf(MSG_EXEC_FAILED,1); mini_printf(name,1); mini_printf("\n",1); } + +/* NEW (clean) Service status: Messages to the outside */ +#define MSG_INTRO_OK "[SUCCESS] " +#define MSG_INTRO_FAIL "[ FAILED] " +#define MSG_INTRO_CINIT "[ CINIT] " +#define MSG_INTRO_RESPAWN "[RESPAWN] " +#define MSG_INTRO_SVC "[SERVICE] " + +#define MSG_SVC_FORK "fork() failed" +#define MSG_SVC_NEED_FAIL MSG_INTRO_FAIL "Needs failed for service" +#define MSG_SVC_FAIL MSG_INTRO_FAIL "Service failed!" +#define MSG_SVC_OK MSG_INTRO_OK "Service successfully executed." +#define MSG_SVC_RESTART MSG_INTRO_RESPAWN "Restarting service." +#define MSG_SVC_START "Starting service." + +#define MSG_TREE_EXEC MSG_INTRO_CINIT "Execution of reverse service tree\n" + +/* general errors */ +#define MSG_GETCWD "Getcwd failed! Your system is most likely broken!" +#define MSG_GEN_SLEEP "sleep" +#define MSG_FATAL_PANIC MSG_INTRO_FAIL "I tried everything, but even panic() failed: " + +#endif /* _CINIT_MSG_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/include/os.h b/software/cinit/browse_source/cinit-0.3pre7/src/include/os.h new file mode 100644 index 00000000..b3320c0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/include/os.h @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * os specific functions + */ + +#ifndef CINIT_OS_HEADER +#define CINIT_OS_HEADER + +/***************************************************************************** + * Functions + */ +void cinit_halt(void); +void cinit_poweroff(void); +void cinit_reboot(void); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/include/svc.h b/software/cinit/browse_source/cinit-0.3pre7/src/include/svc.h new file mode 100644 index 00000000..d7459be7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/include/svc.h @@ -0,0 +1,128 @@ +/*********************************************************************** + * + * 2006,2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + + +#ifndef _CINIT_SVC_H +#define _CINIT_SVC_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* service list */ +struct listitem { + struct listitem *prev; /* previous item */ + struct listitem *next; /* next item */ + + char *abs_path; /* name of service */ + long int status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + + + struct dep *wanted; /* list of services that want this service */ + struct dep *needed; /* list of services that need this service */ + + struct dep *wants; /* list of services that this service wants */ + struct dep *needs; /* list of services that this service needs */ +}; + +/* list of dependencies */ +struct dep { + struct dep *prev; + struct dep *next; + struct listitem *svc; +}; + +/* variables */ +extern struct dep *svc_init; /* the services to start */ +extern struct listitem *svc_list; /* the list of services */ + +/* list functions */ +struct listitem *list_insert(char *path, int status); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); +struct listitem *list_search(char *path); +struct listitem *list_search_pid(pid_t pid); +int list_display_all(); + + +/* service */ +struct listitem *svc_create(char *svc); +struct listitem *gen_svc_tree(char *svc); +int check_add_deps(struct listitem *svc, int type); +void dep_entry_add(struct dep **list, struct dep *new); +struct dep *dep_entry_del(struct dep *del); +int tree_exec(struct dep *start); +int svc_set_status(struct listitem *li, int status); +int svc_should_respawn(struct listitem *li); +int svc_needs_status(struct listitem *li); +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type); +struct dep *dep_create(struct listitem *svc); +void svc_success(struct listitem *li); +void svc_fail(struct listitem *li); +void svc_report_status(char *svc, char *msg, char *err); +void svc_start(struct listitem *li); + + + +/*********************************************************************** + * to decide whether to operate on needs or wants + */ +enum dep_types { + DEP_WANTS, + DEP_NEEDS +}; + +/*********************************************************************** + * status of a service and return codes - errors and success + */ +enum svc_status_old { + ST_TMPNOW=1, /* the client is now starting the service NEEDED??? */ + ST_NOTEXIST, /* service does not exist */ + + ST_NEED_FAIL, /* failed to start a need for this service */ + ST_FAIL, /* failed to start service */ + + ST_OFF, /* service is off */ + ST_OFF_ALL, /* service and those that need it are off */ + ST_OFF_ALL_F, /* same, but something failed */ + ST_OFF_WANTS, /* service + those that need or want it are off */ + ST_OFF_WANTS_F, /* same, but something failed */ + + ST_TMP, /* currently working on it */ + ST_ONCE, /* executed once */ + ST_RESPAWN /* running and respawning */ +}; + +/*********************************************************************** + * The real status types a service may have (ignore above) + * We have 32 Bits, we should use them ;-) + */ +enum svc_status { + /* first define basics */ + ST_SH_ONCE = 0x1, /* service SHould be started once */ + ST_SH_RESPAWN = 0x2, /* service SHould respawn */ + ST_ONCE_OK = 0x4, /* service was successfully started once */ + ST_ONCE_FAIL = 0x8, /* service failed to start */ + ST_RESPAWNING = 0x10, /* service is respawning */ + ST_NEED_FAILD = 0x20, /* this service is not started, need failed */ + ST_IN_LIST = 0x40, /* this service is being started (= in list) */ + ST_BAD_ERR = 0x80, /* some kind of error that SHOULD NOT happen */ + ST_ONCE_RUN = 0x100 /* the once process is currently running */ +}; + +/*********************************************************************** + * Possibilities the needs of a service may have + */ +enum svc_needs_status { + SNS_NEEDS_STARTED = 1, /* all needs are started. We may start, too */ + SNS_NEEDS_FAILED, /* one ore more needs failed */ + SNS_NEEDS_UNFINISHED /* one ore more needs are not yet started */ +}; +#endif /* _CINIT_SVC_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/README.text b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/README.text new file mode 100644 index 00000000..c9a1acf2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/README.text @@ -0,0 +1,20 @@ +cinit/src/ipc/msgq: About this msqg implementation +=================================================== +Nico Schottelius +0.1, Initial Version from 2006-08-04 +:Author Initials: NS + +Intro here + +Introduction +------------ + +cinit opens a + +Files +----- +- README.text: This file +- cinit_init_ipc.c: Init +msgq.h +objects + diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/cinit_ipc_destroy.c b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/cinit_ipc_destroy.c new file mode 100644 index 00000000..299885c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/cinit_ipc_destroy.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Destory ipc mechanism, cinit is gonna die soon. + * + */ + +#include /* msgget */ +#include /* NULL */ + +#include "msgq.h" /* mq_in, mq_out */ +#include "cinit.h" /* print_errno */ + +void cinit_ipc_destroy(void) +{ + if(msgctl(mq_in,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } + if(msgctl(mq_out,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/cinit_ipc_init.c new file mode 100644 index 00000000..9ae072a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/cinit_ipc_init.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include /* ftok */ +#include /* msgget */ +#include /* msgget */ + +#include "cinit.h" +#include "config.h" +#include "msgq.h" + +int cinit_ipc_init(void) +{ + key_t k_tmp; + + /* to_server */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + if(k_tmp == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + mq_in = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_in == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + /* to_client */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + if(k_tmp == -1) { + perror(MSG_MSGQ_FTOK); + return 0; + } + mq_out = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_out == -1) { + perror(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/cinit_ipc_listen.c new file mode 100644 index 00000000..24053164 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/cinit_ipc_listen.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "cinit.h" /* print_errno */ +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + + struct msg_client m_client; + + while (1) { + /* FIXME: change msg structure */ + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + /* FIXME: EINTR ignore */ + print_errno(MSG_MSGQ_MSGRCV); + } + + //printf("pid: %d, m_client\n",m_client.pid); + + /* use pid as the message type + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + return 0; + } */ + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/cinit_ipc_logon.c b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/cinit_ipc_logon.c new file mode 100644 index 00000000..08c0e252 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/cinit_ipc_logon.c @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "cinit.h" /* print_errno */ +#include "msgq.h" + +int cinit_ipc_logon(void) +{ + key_t k_in, k_out; /* FIXME: remove one variable */ + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + k_out = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/cinit_ipc_sclose.c b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/cinit_ipc_sclose.c new file mode 100644 index 00000000..69165e4d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/cinit_ipc_sclose.c @@ -0,0 +1,14 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Close the ressources from the server, clean state for forks. + * + */ + +int cinit_ipc_sclose(void) +{ + return 1; /* nothing to do when using message queues */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/msgq.h b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/msgq.h new file mode 100644 index 00000000..01c6e769 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/msgq.h @@ -0,0 +1,52 @@ +/* + * (c) 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * part of cinit + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +#include /* structures */ + +/*********************************************************************** + * configuration + */ + +#define MSGQ_PATHNAME "/bin/sh" /* should be on every *nix */ +#define MSGQ_TO_SERVER 'i' /* also for ftok */ +#define MSGQ_TO_CLIENT 'o' /* also for ftok */ +#define MSGQ_PERMS 0660 /* queue permissions */ + +/*********************************************************************** + * global variables + */ +int mq_in; /* input */ +int mq_out; /* output */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + pid_t pid; + struct msg_client msg; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server_short { + long mtype; + struct asw_sstatus answer; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_FTOK "ftok" +#define MSG_MSGQ_MSGGET "msgget" +#define MSG_MSGQ_MSGRCV "msgrcv" +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/objects b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/objects new file mode 100644 index 00000000..7c99d09f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/msgq/objects @@ -0,0 +1,5 @@ +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c new file mode 100644 index 00000000..88c310f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c @@ -0,0 +1,125 @@ +/* + * (c) 2005, 2006 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * create a socket, when we recieved a signal + */ +int main(int argc, char **argv) +{ + struct sockaddr_un addr; + struct pollfd plist; + char *initdir; + + list = NULL; /* list of services is empty currently */ + initdir = CINIT_INIT; /* default init dir */ + + cpid = getpid(); + if(cpid != 1) { + usage(MSG_USAGE,MSG_NOT_ONE); + } + + set_signals(ACT_SERV); /* set signal handlers */ + + /* read args, profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* tell the world we are there FIXME: do we really need three calls? */ + mini_printf(MSG_CINIT,1); mini_printf(initdir,1); mini_printf("\n",1); + + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c new file mode 100644 index 00000000..a174d78d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c @@ -0,0 +1,141 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int socket) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + while ( (nsock = accept(socket,(struct sockaddr *) NULL, + (socklen_t *) NULL)) != -1) { + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = ST_FAIL; + } else { + status = RT_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP (RESPAWNING) *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; + list_tmp = list_search(buf); + + /* FIXME: + - handle off + - handle switching off once services + - perhaps remove old cinit code, which has respawing childs + */ + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + /* kill cinit watcher, which kills the real process */ + kill(list_tmp->pid,SIGTERM); + + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + } + + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + status = ST_FAIL; + } else { /* return status */ + status = list_tmp->status; + } + } else { /* no service there */ + status = RT_NOTEXIST; + } + do_result(nsock,&status); + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + SERVICE_LOG(buf,MSG_ERR_MODIFY); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + case CMD_UPDATE: + sig_reboot(SIGCONT); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } + + /* hier kommt man haeufiger herein, interrupted system call */ + if( errno != EAGAIN && errno != EINTR) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/object_lists/cinit b/software/cinit/browse_source/cinit-0.3pre7/src/object_lists/cinit new file mode 100644 index 00000000..b7a63fa6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/object_lists/cinit @@ -0,0 +1,52 @@ +core/build_argv.o +core/cinit.o +core/panic.o +core/run_init_svc.o +core/set_signals.o +core/do_reboot.o +core/sig_child.o +generic/execute_sth.o +generic/file_exists.o +generic/mini_printf.o +generic/path_absolute.o +generic/path_append.o +generic/print_errno.o +generic/openreadclose.o +generic/strip_final_newline.o +generic/sleep_before_kill.o +generic/execute_and_wait.o +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +svc/gen_svc_tree.o +svc/list_delete.o +svc/list_display_all.o +svc/list_insert.o +svc/list_modify.o +svc/list_search.o +svc/list_search_pid.o +svc/svc_create.o +svc/check_add_deps.o +svc/dep_entry_add.o +svc/dep_entry_del.o +svc/tree_exec.o +svc/svc_set_status.o +svc/svc_should_respawn.o +svc/svc_needs_status.o +svc/dep_needs_wants_add.o +svc/dep_create.o +svc/svc_success.o +svc/svc_report_status.o +svc/svc_start.o +svc/svc_fail.o diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/os/freebsd/halt.c b/software/cinit/browse_source/cinit-0.3pre7/src/os/freebsd/halt.c new file mode 100644 index 00000000..cd4dda1f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/os/freebsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/os/freebsd/objects b/software/cinit/browse_source/cinit-0.3pre7/src/os/freebsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/os/freebsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/os/freebsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre7/src/os/freebsd/poweroff.c new file mode 100644 index 00000000..61e5ef5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/os/freebsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWEROFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/os/freebsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre7/src/os/freebsd/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/os/freebsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/os/linux/halt.c b/software/cinit/browse_source/cinit-0.3pre7/src/os/linux/halt.c new file mode 100644 index 00000000..0ecf8ced --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/os/linux/halt.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * How to halt the system + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT_SYSTEM); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/os/linux/objects b/software/cinit/browse_source/cinit-0.3pre7/src/os/linux/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/os/linux/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/os/linux/poweroff.c b/software/cinit/browse_source/cinit-0.3pre7/src/os/linux/poweroff.c new file mode 100644 index 00000000..5f503678 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/os/linux/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff the system + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWER_OFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/os/linux/reboot.c b/software/cinit/browse_source/cinit-0.3pre7/src/os/linux/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/os/linux/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/os/netbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre7/src/os/netbsd/halt.c new file mode 100644 index 00000000..614474fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/os/netbsd/halt.c @@ -0,0 +1,18 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_halt(void) +{ + reboot(RB_HALT,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/os/netbsd/objects b/software/cinit/browse_source/cinit-0.3pre7/src/os/netbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/os/netbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/os/netbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre7/src/os/netbsd/poweroff.c new file mode 100644 index 00000000..13e791aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/os/netbsd/poweroff.c @@ -0,0 +1,18 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_poweroff(void) +{ + reboot(RB_HALT|RB_POWERDOWN,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/os/netbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre7/src/os/netbsd/reboot.c new file mode 100644 index 00000000..0ca3d9d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/os/netbsd/reboot.c @@ -0,0 +1,18 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/os/openbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre7/src/os/openbsd/halt.c new file mode 100644 index 00000000..cd4dda1f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/os/openbsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/os/openbsd/objects b/software/cinit/browse_source/cinit-0.3pre7/src/os/openbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/os/openbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/os/openbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre7/src/os/openbsd/poweroff.c new file mode 100644 index 00000000..45168122 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/os/openbsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_HALT | RB_POWERDOWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/os/openbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre7/src/os/openbsd/reboot.c new file mode 100644 index 00000000..7f235227 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/os/openbsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/check_add_deps.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/check_add_deps.c new file mode 100644 index 00000000..a32a0fe7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/check_add_deps.c @@ -0,0 +1,127 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +/* FIXME: clean headers, check: + * getcwd */ +#include + +#include +#include +#include +#include +#include +#include +#include + + +#include /* PATH_MAX */ +#include /* malloc */ +#include /* strcpy */ + +#include "cinit.h" /* mini_printf */ +#include "messages.h" +#include "svc.h" + +int check_add_deps(struct listitem *svc, int type) +{ + char buf[PATH_MAX+1]; + char oldpath[PATH_MAX+1]; + struct dirent *tdirent; + struct dep *deps = NULL; + struct listitem *new_svc; + DIR *d_tmp; + + /* remember where we started */ + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + mini_printf("CAD::",1); + mini_printf(svc->abs_path,1); + mini_printf("\n",1); + + /* Create path */ + strcpy(buf,svc->abs_path); + if(type == DEP_NEEDS) { + if(!path_append(buf,C_NEEDS)) return 0; + } else { + if(!path_append(buf,C_WANTS)) return 0; + } + + d_tmp = opendir(buf); + if(d_tmp == NULL) { + if(errno != ENOENT) { + print_errno(buf); + return 0; + } + return 1; /* it's fine when there's no dependencies */ + } + + if(chdir(buf) == -1) { /* change to needs or wants */ + print_errno(buf); + return 0; + } + + while((tdirent=readdir(d_tmp))!=NULL) { + if(*(tdirent->d_name) == '.') continue; /* ignore .* */ + + /* skip non-working directories / broken links + * path_absolute reports errors on failure */ + if(!path_absolute(tdirent->d_name,buf,PATH_MAX+1)) continue; + + /* 1. create the service we depend on + * 2. initialize its dependencies + */ + if(!(new_svc = gen_svc_tree(buf))) return 0; + + /* We need ALL dependencies, as we are called only once + * per service; no need to test that first! + * + * And the other service CANNOT know anything about us yet, + * so we always add us to its list. + */ + + /* Dependencies: + * - a.needs b; add b to the list of dependencies. + * - a.needs b; add a to the list of needed by b. + * + * 1. check whether the dependency already exists + * 2. otherwise add it + * 3. do it once for needs, once for needed_by + */ + + /* create a dependency entry containing us */ + deps = dep_create(svc); + if(!deps) return 0; + + if(type == DEP_NEEDS) { + dep_entry_add(&(new_svc->needed),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->needs),deps); + } else { + dep_entry_add(&(new_svc->wanted),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->wants),deps); + } + } + if(chdir(oldpath) == -1) { + print_errno(buf); + return 0; + } + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/dep_create.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/dep_create.c new file mode 100644 index 00000000..691d66b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/dep_create.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Create dependency + */ + +#include /* NULL */ +#include /* malloc() */ +#include "svc.h" /* structs */ + +/* search for an entry by path, reverse: from end to the beginning */ +struct dep *dep_create(struct listitem *svc) +{ + struct dep *entry; + + entry = malloc(sizeof(struct dep)); + if(!entry) return NULL; + entry->svc = svc; + + return entry; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/dep_entry_add.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/dep_entry_add.c new file mode 100644 index 00000000..abdce146 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/dep_entry_add.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include "svc.h" /* types */ + +/* + * list: pointer to the list + * new: pointer to data to insert (already filled up) + * + * We add the new element BEFORE the existing element! + */ +void dep_entry_add(struct dep **deplist, struct dep *new) +{ + if(*deplist == NULL) { /* new list */ + *deplist = new; + (*deplist)->prev = *deplist; + (*deplist)->next = *deplist; + } else { /* already existing */ + new->next = *deplist; /* new-> first */ + new->prev = (*deplist)->prev; /* last <- new */ + (*deplist)->prev->next = new; /* last -> new */ + (*deplist)->prev = new; /* new <- first */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/dep_entry_del.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/dep_entry_del.c new file mode 100644 index 00000000..fd9fbab6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/dep_entry_del.c @@ -0,0 +1,36 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include /* free() */ +#include "svc.h" + +/* + * tmp: pointer to data to remove (must not be NULL) + * + * Returns either the next object or NULL if there's no next object + */ +struct dep *dep_entry_del(struct dep *del) +{ + struct dep *tmp; + + /* last service in the list */ + if(del->next == del && del->prev == del) { + tmp=NULL; + } else { + /* remove from list */ + del->prev->next = del->next; + del->next->prev = del->prev; + tmp = del->next; + } + + free(del); + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/dep_needs_wants_add.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/dep_needs_wants_add.c new file mode 100644 index 00000000..b7afb02b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/dep_needs_wants_add.c @@ -0,0 +1,64 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Add all wants or needs from a specific service to dep list + * -> this builds the needs and needed_by and + * -> or this builds the wants and wanted_by and + * + * This function is used to fillup the starting list with dependencies + * after a service has sucessfully been executed. + */ + +#include /* NULL */ +#include "svc.h" + +/* + * list: pointer to the list + * svc: pointer to data to the service + */ + +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type) +{ + struct dep *tmp, *new, *end; + + if(type == DEP_NEEDS) { + end = svc->needed; + } else { + end = svc->wanted; + } + + /* Place to the first dependency of this service */ + tmp = end; + if(tmp != NULL) { + do { + /* Add service to the starter list, which + * - should be started once + * - should be respawned (both VIRGIN services!) + * - and which are not already in the list! + */ + if(((tmp->svc->status & ST_SH_ONCE) || + (tmp->svc->status & ST_SH_RESPAWN)) && + !(tmp->svc->status & ST_IN_LIST)) { + new = dep_create(tmp->svc); + if(!new) return 0; + tmp->svc->status |= ST_IN_LIST; + dep_entry_add(list,new); + } + /* FIXME: Clearify if we should go forward or backwards? + * this decision will influence starting order + * and may thereby add a minimal mount of speed enhancement + * + * As far as I can see it is not predictable, which way is + * better, because it heavily depends on the other services. + * + * If you know better, provide me with a patch ;-) + */ + tmp = tmp->next; + } while(tmp != end); + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/gen_svc_tree.c new file mode 100644 index 00000000..65f4028f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/gen_svc_tree.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +#include +#include "cinit.h" +#include "svc.h" + +struct listitem *gen_svc_tree(char *svc) +{ + struct listitem *li; + struct dep *deps; + + /* only do something if the service is not already known */ + if((li=list_search(svc))) return li; + + /* create a template, so other instances won't try to recreate us */ + if(!(li=svc_create(svc))) return NULL; + + if(!check_add_deps(li,DEP_NEEDS)) return NULL; + if(!check_add_deps(li,DEP_WANTS)) return NULL; + + /* no dependencies? then you are a start service */ + if(!li->wants && !li->needs) { + deps = dep_create(li); + if(!deps) return NULL; + dep_entry_add(&svc_init,deps); + + /* Mark it as being in the startup list, so it does not + * get added again in a dep_needs_wants_add call */ + li->status |= ST_IN_LIST; + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_delete.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_delete.c new file mode 100644 index 00000000..10a7e218 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_delete.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "svc.h" + +/* ... */ +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if( tmp == NULL ) { + return 0; + } + + tmp->next->prev = tmp->prev; + tmp->prev->next = tmp->next; + free(tmp->abs_path); + free(tmp); + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_display_all.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_display_all.c new file mode 100644 index 00000000..65c7b3a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_display_all.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Show all list elements - mainly for debugging + */ + +#include /* NULL */ +#include "cinit.h" +#include "svc.h" + +int list_display_all() +{ + struct listitem *tmp; + + if( svc_list == NULL ) { + return 0; + } else { + tmp = svc_list; + } + + do { + mini_printf("Service: ",1); + mini_printf(tmp->abs_path,1); + mini_printf("\n",1); + tmp = tmp->prev; + } while(tmp != svc_list); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_insert.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_insert.c new file mode 100644 index 00000000..4ece779e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_insert.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* malloc */ +#include /* bzero / memset */ +#include "svc.h" /* the list pointer */ + +struct listitem *list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc(sizeof(struct listitem)); + if(tmp == NULL) return NULL; + memset(tmp, '\0', sizeof(struct listitem)); + + if(svc_list == NULL) { /* list is empty, we have to init it */ + svc_list = tmp; + svc_list->next = svc_list; + svc_list->prev = svc_list; + } else { /* list has members,add this one */ + tmp->next = svc_list; /* begin after the new element */ + tmp->prev = svc_list->prev; /* change to the ex-last */ + svc_list->prev->next = tmp; /* change last element */ + svc_list->prev = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc(strlen(path) + 1); + if(tmp->abs_path == NULL) return NULL; + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_modify.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_modify.c new file mode 100644 index 00000000..4a93c41c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_modify.c @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "comm.h" /* for ST_OFF */ +#include "svc.h" /* for ST_OFF */ + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + +// D_PRINTF(path); + + tmp = list_search(path); + if( tmp == NULL ) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_search.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_search.c new file mode 100644 index 00000000..b40fae23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_search.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* NULL */ +#include /* strcmp */ +#include "cinit.h" +#include "svc.h" + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if(svc_list == NULL) { /* think positive */ + return NULL; + } else { + tmp = svc_list; + } + + do { + if(!strcmp(path, tmp->abs_path)) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_search_pid.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_search_pid.c new file mode 100644 index 00000000..f8731bec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/list_search_pid.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Search by pid + */ + +#include /* NULL */ +#include /* pid_t */ +#include "svc.h" /* struct listitem */ + +struct listitem *list_search_pid(pid_t pid) +{ + struct listitem *tmp; + + if(svc_list == NULL) { + return NULL; + } else { + tmp = svc_list; + } + + do { + if(pid == tmp->pid) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/objects b/software/cinit/browse_source/cinit-0.3pre7/src/svc/objects new file mode 100644 index 00000000..cf0ee36b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/objects @@ -0,0 +1,21 @@ +svc/gen_svc_tree.o +svc/list_delete.o +svc/list_display_all.o +svc/list_insert.o +svc/list_modify.o +svc/list_search.o +svc/list_search_pid.o +svc/svc_create.o +svc/check_add_deps.o +svc/dep_entry_add.o +svc/dep_entry_del.o +svc/tree_exec.o +svc/svc_set_status.o +svc/svc_should_respawn.o +svc/svc_needs_status.o +svc/dep_needs_wants_add.o +svc/dep_create.o +svc/svc_success.o +svc/svc_report_status.o +svc/svc_start.o +svc/svc_fail.o diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_add_needs.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_add_needs.c new file mode 100644 index 00000000..cc03727d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_add_needs.c @@ -0,0 +1,67 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +//#include +//#include +#include "cinit.h" +#include "messages.h" + +int svc_add_needs(char *needs, char *is_needed) +{ + struct listitem *svc_needs, *svc_is_needed; + + + /* retrieve service entries in global service list */ + svc_needs = svc_is_needed = NULL; + svc_needs = list_search(needs); + svc_is_needed = list_search(is_needed); + + /* and exit if one is missing */ + if( !svc_needs || !svc_is_needed ) { + return 0; + } + + /* first add needs */ + + /* now add needed_by */ + + malloc... /* for adding */ + + if(svc->needs == NULL) { + svc->needs = neu; + } else { + svc->next = neu; + } + + /* write generic function for dependencies or even all lists */ + dep_entry_add(list_pointer,new_entry); + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members,add this one */ + tmp->after = list; /* begin after the new element */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_create.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_create.c new file mode 100644 index 00000000..85f3d940 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_create.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* strcpy */ +#include /* stat */ +#include /* stat */ +#include /* PATH_MAX */ +#include /* errno */ +#include "svc.h" /* listitem */ +#include "cinit.h" /* path_append */ + +/* checking for existence is done before! */ +/* FIXME: check heedars for conformance with POSIX */ +struct listitem *svc_create(char *svc) +{ + char buf[PATH_MAX+1]; + struct stat statbuf; + struct listitem *li; + + li = list_insert(svc,-1); + if(!li) return NULL; + + /* FIXME: add two path length checks? svc and svc+strlen(C_RESPAWN)? */ + strcpy(buf,svc); + if(!path_append(buf,C_RESPAWN)) return NULL; + + if(stat(buf,&statbuf) == -1) { + if(errno == ENOENT) { + svc_set_status(li,ST_SH_ONCE); + } else { + return NULL; + } + } else { + mini_printf("respawn: ",1); + mini_printf(li->abs_path,1); + mini_printf("\n",1); + svc_set_status(li,ST_SH_RESPAWN); + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_fail.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_fail.c new file mode 100644 index 00000000..7c150c85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_fail.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Mark the service as being failed + */ + +#include "svc.h" + +void svc_fail(struct listitem *li) +{ + if(li->status & ST_ONCE_RUN) + li->status = ST_ONCE_FAIL; + else { + /* FIXME: do something senseful, record time of dead? */ + li->status = ST_RESPAWNING; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_needs_status.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_needs_status.c new file mode 100644 index 00000000..d9d54a81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_needs_status.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return status of the needs of this service + */ + +#include /* NULL */ +#include "svc.h" /* service information */ + +// DEBUG #include "cinit.h" /* service information */ + +int svc_needs_status(struct listitem *svc) +{ + int retval = SNS_NEEDS_STARTED; + struct dep *deps = svc->needs; + +/* DEBUG mini_printf("sns: ",1); + mini_printf(svc->abs_path,1); + mini_printf("\n",1); */ + + if(deps == NULL) return SNS_NEEDS_STARTED; /* no needs, everything fine */ + + do { + /* worst case: need failed */ + if((deps->svc->status & ST_NEED_FAILD) || + (deps->svc->status & ST_ONCE_FAIL)) { + retval = SNS_NEEDS_FAILED; + break; + } + /* services are being started */ + if((deps->svc->status & ST_SH_ONCE) || + (deps->svc->status & ST_SH_RESPAWN)) { + retval = SNS_NEEDS_UNFINISHED; + } + deps = deps->next; + } while(deps != svc->needs); + + return retval; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_report_status.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_report_status.c new file mode 100644 index 00000000..4cc1edf8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_report_status.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Tell the world what happened to the service + */ + +#include "cinit.h" /* mini_printf */ +#include "messages.h" /* MSG_INTRO_SVC */ + +void svc_report_status(char *svc, char *msg, char *err) +{ + mini_printf(MSG_INTRO_SVC,1); + mini_printf(svc,1); + mini_printf(": ",1); + mini_printf(msg,1); + if(err) { + mini_printf(" (",1); + mini_printf(err,1); + mini_printf(")",1); + } + mini_printf("\n",1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_respawn_check.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_respawn_check.c new file mode 100644 index 00000000..2ed44de8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_respawn_check.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* PATH_MAX */ +#include "svc.h" + +/* checking for existence is done before! */ +int svc_respawn_check(struct listitem *svc) +{ + char buf[PATH_MAX+1]; + + strcpy(buf,svc->abs_path); + if(!path_append(buf,C_RESPAWN)) return 0 +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_set_status.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_set_status.c new file mode 100644 index 00000000..36b61795 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_set_status.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_set_status(struct listitem *li, int status) +{ + return (li->status = status); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_should_respawn.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_should_respawn.c new file mode 100644 index 00000000..1c401024 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_should_respawn.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return whether should respawn or not + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_should_respawn(struct listitem *li) +{ + return (li->status & ST_SH_RESPAWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_start.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_start.c new file mode 100644 index 00000000..8e75a8de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_start.c @@ -0,0 +1,70 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start a service + */ + +#include /* NULL */ +#include /* fork */ +#include /* strerror */ +#include /* errno */ +#include /* PATH_MAX */ +#include "svc.h" /* struct * */ +#include "messages.h" /* MSG_* */ +#include "cinit.h" /* execute_sth */ + +//void svc_start(struct listitem *li, int strict) +void svc_start(struct listitem *li) +{ + char buf[PATH_MAX+1]; + + /* FIXME: All cleanup must go here + * close(fds); + * reset signals + * reset env? + * + * FIXME: Add logging possibility to here + * open (0,1,2) to other processes, if specified */ + li->pid = fork(); + + /********************** Error ************************/ + if(li->pid < 0) { + svc_report_status(li->abs_path,MSG_SVC_FORK,strerror(errno)); + svc_set_status(li,ST_BAD_ERR); + return; + } + /********************** parent ************************/ + if(li->pid > 0) { + if(li->status & ST_SH_ONCE) + li->status = ST_ONCE_RUN; + else + li->status = ST_RESPAWNING; + return; + } + + /********************** Client / fork() ************************/ + svc_report_status(li->abs_path,MSG_SVC_START,NULL); + + /* length check is done by path_append */ + strcpy(buf,li->abs_path); + if(!path_append(buf,C_ON)) return; + + /* Check for existence */ + li->status = file_exists(buf); + + if(li->status == FE_NOT) _exit(0); /* nothing there? fine! */ + + if(li->status == FE_FILE) { + /* FIXME: reset signals: Is this necessary? Or does fork clean it anyway? */ + set_signals(ACT_CLIENT); + + /* and now, fire it up */ + execute_sth(buf); + } else { + /* either no file or an error */ + _exit(1); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_success.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_success.c new file mode 100644 index 00000000..bc1d0721 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/svc_success.c @@ -0,0 +1,18 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include "svc.h" + +void svc_success(struct listitem *li) +{ + if(li->status & ST_ONCE_RUN) + li->status = ST_ONCE_OK; + else + li->status = ST_RESPAWNING; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/svc/tree_exec.c b/software/cinit/browse_source/cinit-0.3pre7/src/svc/tree_exec.c new file mode 100644 index 00000000..449b5e40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/svc/tree_exec.c @@ -0,0 +1,64 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + +#include /* NULL */ +#include "cinit.h" /* mini_printf */ +#include "svc.h" /* svc_init */ +#include "messages.h" /* messages */ + +/* some thoughts... + * + * - we already generated the tree, we now need to start it from + * the ends + * + * - after starting the first service we have to care about SIG_CHILD + * to record changes + * + * - we execute all services in parallel without problems, because of + * SIG_CHILD notification + * + * - After successfully starting the service we start the services that + * need or want that service + */ +int tree_exec(struct dep *start) +{ + struct dep *tmp = start; + + mini_printf(MSG_TREE_EXEC,1); + + /* the main starting loop: All services in this list should be + * started, but it is possible that dependent services are in the + * list. In this case simply skip the current service + */ + do { + switch(svc_needs_status(tmp->svc)) { + case SNS_NEEDS_STARTED: + /* execute service, add dependencies, remowe from list */ + svc_start(tmp->svc); + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_NEEDS)) return 0; + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_WANTS)) return 0; + tmp = dep_entry_del(tmp); + break; + + case SNS_NEEDS_FAILED: + /* mark service as NEED_FAILD and delete from list */ + svc_report_status(tmp->svc->abs_path,MSG_SVC_NEED_FAIL,NULL); + svc_set_status(tmp->svc,ST_NEED_FAILD); + tmp = dep_entry_del(tmp); + break; + + case SNS_NEEDS_UNFINISHED: + /* continue with the next item */ + tmp = tmp->next; + break; + } + } while(tmp != NULL); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/test/test_build_argv+link.c b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_build_argv+link.c new file mode 100644 index 00000000..e37169fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_build_argv+link.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec_link"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/test/test_build_argv.c b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_build_argv.c new file mode 100644 index 00000000..0b2678be --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_build_argv.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec new file mode 100644 index 00000000..e5cf3f01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec @@ -0,0 +1,7 @@ +#!/bin/sh +# Nico Schottelius +# Test-skript for cinit + +echo '$0': "$0" +echo '$@': "$@" +echo 'cinit_is_great:' $cinit_is_great diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec.env b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec.env new file mode 100644 index 00000000..853e0663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec.env @@ -0,0 +1 @@ +cinit_is_great=yes diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec.params b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec.params new file mode 100644 index 00000000..afe0f2ef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec.params @@ -0,0 +1 @@ +Let's see if we read the arguments....YES! diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec_link b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec_link new file mode 120000 index 00000000..c2ec9306 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec_link @@ -0,0 +1 @@ +test_exec \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec_link.env b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec_link.env new file mode 120000 index 00000000..30ea4990 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec_link.env @@ -0,0 +1 @@ +test_exec.env \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec_link.params b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec_link.params new file mode 120000 index 00000000..0b77c256 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_exec_link.params @@ -0,0 +1 @@ +test_exec.params \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/test/test_gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_gen_svc_tree.c new file mode 100644 index 00000000..93ad54ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_gen_svc_tree.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test gen_svc_tree + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + gen_svc_tree("/etc/cinit/svc/init"); + list_display_all(); +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/src/test/test_openreadclose.c b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_openreadclose.c new file mode 100644 index 00000000..2f722da5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/src/test/test_openreadclose.c @@ -0,0 +1,16 @@ +#include + +int openreadclose(char *filename, char **where); + +int main() +{ + char *data; + char *file = "test_openreadclose.c"; + + openreadclose(file,&data); + + printf("%s\n",data); + + return 1; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre7/util/README b/software/cinit/browse_source/cinit-0.3pre7/util/README new file mode 100644 index 00000000..782cdc8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/util/README @@ -0,0 +1,2 @@ +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.3pre7/util/ccontrol.c b/software/cinit/browse_source/cinit-0.3pre7/util/ccontrol.c new file mode 100644 index 00000000..95bc5212 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/util/ccontrol.c @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * ccontrol: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define USAGE_TEXT "ccontrol - control cinit\n\n" \ + "Usage:\n\nccontrol -[phurs]\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-u\t- (update) Reboot (warm) and update cinit\n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n\n" \ + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * ccontrol: control cinit + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 2) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + + switch(argv[1][1]) { + case 'p': /* power off */ + LOG(MSG_POWER_OFF); + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + LOG(MSG_HALT); + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + LOG(MSG_REBOOT); + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + LOG(MSG_RESCUE); + msg_reboot(CMD_RESCUE); + break; + + case 'u': /* update */ + LOG(MSG_UPDATE); + msg_reboot(CMD_UPDATE); + break; + + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* cinit-0.2 return codes implemented - nothing changed*/ diff --git a/software/cinit/browse_source/cinit-0.3pre7/util/cservice.c b/software/cinit/browse_source/cinit-0.3pre7/util/cservice.c new file mode 100644 index 00000000..66be6563 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/util/cservice.c @@ -0,0 +1,164 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * cservice: control cinit services + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit services + */ + +#define USAGE_TEXT "cservice - start and stop cinit services\n\n" \ + "cservice -[ear] \n" \ + "\t-e\t- (ein,on ) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n" \ + "\t-r\t- (restart) stop and start a service\n" + +/*********************************************************************** + * fuzzy_path: allow other kinds of path specification .. + */ +char *fuzzy_path(char *rpath) +{ + char pathtmp[PATH_MAX]; + char *re = NULL; + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return NULL; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(rpath); + return NULL; + } + + re = malloc( strlen(pathtmp) + 1); + + if(re != NULL) { + strcpy(re,pathtmp); + } + + return re; +} + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + char *real_name = NULL; + + /* argv */ + if(argc != 3) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + if(strlen(argv[1]) != 2) C_USAGE(MSG_ERR_ARGS_LEN); + + real_name = fuzzy_path(argv[2]); + + /* fuzzy path failed, exit! */ + if(real_name == NULL) { + return 1; + } + switch(argv[1][1]) { + case 'a': /* aus */ + case 'r': /* restart */ + switch( msg_svc_on_off(real_name,CMD_STOP_SVC) ) { + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_OFF: + SERVICE_LOG(real_name,LOG_SVC_STOPED); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + /* FIX THIS AFTER cinit-0.2 */ + case RT_TMPNOW: + case RT_ERR: + case RT_SVC_FAILED: + case RT_UNSPEC: + case RT_SUCCESS: + case ST_NEED_FAIL: + case ST_TMP: + case ST_ONCE: + case RT_NOTEXIST: + case ST_RESPAWN: +// SERVICE_LOG(real_name,"Ein bekanntest ding"); + break; +/* default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; */ + } + if( argv[1][1] == 'a') break; /* only continue if restarting */ + + case 'e': /* ein */ + switch (run_svc(real_name)) { /* run_svc fuzzys itself */ + case RT_NOTEXIST: + SERVICE_LOG(real_name,LOG_SVC_NOTEXIST); + break; + case RT_SVC_FAILED: + SERVICE_LOG(real_name,LOG_SVC_FAILED); + break; + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_ONCE: + SERVICE_LOG(real_name,LOG_SVC_ONCE); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + case ST_RESPAWN: + SERVICE_LOG(real_name,LOG_SVC_RESPAWN); + break; + case ST_NEED_FAIL: + SERVICE_LOG(real_name,LOG_NEED_FAIL); + break; + default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; + } + break; + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* uses cinit-0.2 return code style */ diff --git a/software/cinit/browse_source/cinit-0.3pre7/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.3pre7/util/msg_reboot.c new file mode 100644 index 00000000..efe78ec6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre7/util/msg_reboot.c @@ -0,0 +1,21 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + if(!begin_msg(cmd)) return 0; + close(sock); + return 1; +} +/* clean for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre8/ b/software/cinit/browse_source/cinit-0.3pre8/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.3pre8/.exclude b/software/cinit/browse_source/cinit-0.3pre8/.exclude new file mode 100644 index 00000000..1a2d31e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/.exclude @@ -0,0 +1,2 @@ +tmp +.git diff --git a/software/cinit/browse_source/cinit-0.3pre8/.gitignore b/software/cinit/browse_source/cinit-0.3pre8/.gitignore new file mode 100644 index 00000000..48225e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/.gitignore @@ -0,0 +1,19 @@ +*.o +*.a +*0? +MT +ddoc +contrib+tools/cinit.graph.text +config.h +sbin +tmp +os/current +tmpbin +src/os/current +src/ipc/current +src/cinit +doc/*/*.html +doc/*/*.htm +doc/*/*.man +doc/*/*.texi +doc/*/*.docbook diff --git a/software/cinit/browse_source/cinit-0.3pre8/CHANGES b/software/cinit/browse_source/cinit-0.3pre8/CHANGES new file mode 100644 index 00000000..1d5a64b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/CHANGES @@ -0,0 +1,65 @@ +cinit-0.3pre8: 2007-04-06 + - Updated and merged documentation: Codingstyle and Codingguide + - Cleaned sigaction-code (fixes segfault on glibc) + - Cleaned object listings + - Added notifications at shutdown + - Fixed status check + +cinit-0.3pre7: 2007-02-17 + - Many code cleanups + - Fixed glibc problem with sigaction (for details view src/core/set_signals.c) + - Added general shutdown support (will *NOT* yet stop services, + but still stop your system) + +cinit-0.3pre6: + - Many code cleanups + - Added user documentation and cleaned up documentation in general + +cinit-0.3pre5: + - Finished new SIGCHLD handler + - First cleanups for real release. + - This version is the first 0.3pre version that can handle respawn! + +cinit-0.3pre4: + - Re-implemented execution of services. + - This version is the first 0.3pre version that COULD bootup your system! + +cinit-0.3pre3: + - Finished execution all services via the reversed service tree. + +cinit-0.3pre2: + - Finished generation of the dependency tree. + +cinit-0.3pre1: + - cinit should now compile on mostly all unices + - introduced much new code + - THIS IS A DEVELOPER RELEASE, NOT USABLE IN PRODUCTION ENVIRONMENTS. + +cinit-0.2.1: (Bugfix release) + - Fixed problem in contrib+tools/Makefile when installing + - added many new scripts to convert sys-v-init, which are still early beta + (see bin/cinit.merge.sysvinit-debian-sid) + +cinit-0.2: + - Much more verbose error reporting + - You can now also disable 'once ran' services, + - You can restart services with csevice -r + - Online speech in German is available + - C_DELAY support - variable delay for sending SIGKILL after SIGTERM + - First /etc/csys configuration example (wasserstoff) is available + - a Mailing list was created + - Added tools to analyze cinit configuration + (cinit-vis.pl, cinit.graph.text.c) + - Added tools to import and export configuration to XML + (make.cconfig.from.xml.rb,cconfig.graph.xml.rb) + - Removed unecessary signalling + - Added many helper scripts to install services (cinit.install.service*) + - Fixed many small bugs in old helper scripts (cinit.add.getty, cinit.get-conf, ...) + - Added ccontrol, which allows to control cinit + - Added update (-u) via ccontrol + - Stripped cservice, which now "only" controls services + - Removed swapoff from cinit code, should be handled by off + - Much better error and processing descriptions + - A bit more verbose reporting + - Restructured run_svc, now with better error detection + - Removed Kernel panic, when halting system diff --git a/software/cinit/browse_source/cinit-0.3pre8/COPYING b/software/cinit/browse_source/cinit-0.3pre8/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.3pre8/CREDITS b/software/cinit/browse_source/cinit-0.3pre8/CREDITS new file mode 100644 index 00000000..febdcf4b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/CREDITS @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: ls -l) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete + * providing cinit-vs.pl to visualize the cinit-tree +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) +Sandro Koechli + * testing, testing and testing cinit and cinit documentation +Marcus Wagner + * building and maintaining the Debian package +Peter Portmann + * testing cinit and documentation, writing cinit.graph.text in C, other coding +Tonnerre Lombard + * NetBSD support (host + hints) diff --git a/software/cinit/browse_source/cinit-0.3pre8/Changelog b/software/cinit/browse_source/cinit-0.3pre8/Changelog new file mode 100644 index 00000000..0fbf76f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/Changelog @@ -0,0 +1,10 @@ +Mo Okt 3 00:19:40 CEST 2005 + *Changelog can now be found in git database (cg-log) +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.3pre8/Makefile b/software/cinit/browse_source/cinit-0.3pre8/Makefile new file mode 100644 index 00000000..0445555c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/Makefile @@ -0,0 +1,107 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# Directories and files +CDIRS=src doc + +# +# Targets +# + +# +# Warn per default, make sure the user knows what she does +# +warn: + @cat doc/.buildwarn + +all: sources documentation sizecheck + +install clean dist distclean: + @for subdir in ${CDIRS}; do \ + echo "Making $@ in $$subdir"; \ + (cd $$subdir && ${MAKE} ${MAKEFLAGS} $@); \ + done; + +.PHONY: sources +sources: + ${MAKE} -C src all + +.PHONY: documentation +documentation: + ${MAKE} -C doc documentation + +sizecheck: sources + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l src/cinit > $$FILE; cat $$FILE; \ + cg-add $$FILE + cg-commit $$FILE -m "Size added" + #cg-commit $$FILE -m "Size: $$(awk '{ print $5 }' $$FILE)" + +source-size: clean + @echo -n "Source size (in KiB): " + @du -s src/ | awk '{ sum+=$$1 } END { print sum }' + + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + +config: + @./bin/cinit.configure.os + @./bin/cinit.configure.tools + @./bin/cinit.configure.ipc + @touch src/.configured + + +################################################################################ +# Tests +# +tests: + # does not work, due getting killed, due to design :-) + #./scripts/internal/compile_run_as_compiler.sh + ./scripts/internal/test_on_hosts.sh ./scripts/internal/compile_test.sh + +################################################################################ +# old +#DDOC=ddoc +#SDIRS=bin client conf comm doc generic serv util +# DO NOT CHANGE THIS. +#SBIN=sbin +#CINIT_BIN=$(SBIN)/cinit +# +#%.o: %.c +# $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< +#$(DDOC): +# mkdir $(DDOC) +# +#$(SBIN): +# mkdir $(SBIN) +# +#docs: $(DDOC) bin/cdoc-man.sh +# ./bin/cdoc-man.sh doc/cinit-doc > $(DDOC)/cinit.8 +# ./bin/cdoc-man.sh doc/cservice-doc > $(DDOC)/cservice.8 +#$(CSVC_OBJ) $(OBJ): $(CONFIG_H) +#clean: +# $(MAKE) -C src clean +# rm -f tmpbin/* +################################################################################ +#cservice: $(SBIN)/cservice +# +#$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) +# $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ +# $(STRIP) $@ +# +#ccontrol: $(SBIN)/ccontrol +# +#$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) +# $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ +# $(STRIP) $@ +# +#install:: install-dir cinit cservice ccontrol +# @echo '*** Installing cinit ***' +# ./bin/cinit.install.binary diff --git a/software/cinit/browse_source/cinit-0.3pre8/NEXTTODO b/software/cinit/browse_source/cinit-0.3pre8/NEXTTODO new file mode 100644 index 00000000..8b0c1a72 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/NEXTTODO @@ -0,0 +1,2 @@ +- create uml instance, create some boot profiles +- cinit.install.standard.dirs.argv diff --git a/software/cinit/browse_source/cinit-0.3pre8/README b/software/cinit/browse_source/cinit-0.3pre8/README new file mode 100644 index 00000000..00f2651b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/README @@ -0,0 +1,106 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Unix +- true dependencies (soft and hard!) +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +FIXME: Add mailing list here + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre8/ROADMAP b/software/cinit/browse_source/cinit-0.3pre8/ROADMAP new file mode 100644 index 00000000..d66c6a11 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/ROADMAP @@ -0,0 +1,117 @@ +-------------------------------------------------------------------------------- +THIS DOCUMENT SHOULD VANISH AS SOON AS EVERYTHING IS FINE +-------------------------------------------------------------------------------- + +Timeline +--------- + * ~ End of October 2006: Reunderstand the code, manifest changes [DONE] + * ~ Mid of November 2006: Have a compile-able cinit [DONE] + * ~ End of November 2006: Have a testsystem booting cinit + * ~ Mid of December 2006: Have production stable cinit + - Begin with migration scripts + - publish installable pre-releases + * ~ End of December 2006: Have some generic migration scripts + - Have (different) understanable documents + * ~ Mid of January 2007: Begin official release of cinit-0.3 + + + + +Versions +--------- + +0.3: +~~~ + code: Make cinit compile again :) [DONE] + code: double check to remove Linux specific source from general tree [DONE] + code: seperate ipc from the rest [DONE] + code: fix / check signal handlers [DONE] + code: cleanup makefile + code: add porting code: add support for any unix in general [DONE] + code: stabilize code, remove experimenting parts + code: remove delay support, let off/off.params do that. + code: add special directory (/etc/cinit/special?) for os specific binaries [CANCELED] + -> halt, poweroff, reboot (NOTHING MORE THEY CAN DO) + -> SHOULD NOT BE IN THE PATH + code: move production code to src/ + end user doc: add warning for special binaries and hint for r/o only + amiga alike systems + + doc: begin to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.1: + devel doc: how to write merging scripts + devel doc: merging framework: + - minimal (do not look at the current configuration, build minimal) + - use current system (slowly, may use old scripts) + - rebuilt current system (recommened) + + tools: general framework for merging + end user doc: merging old init to cinit + + code: add porting code: add support for freebsd + code: better readable output: + -> starting + [ started once ] + [ respawning ] + [ failed ] (+ REASON!) + [ needs failed ] (which ones) + + -> stopping + [ stopping ] (for dependencies) + [ stopped ] ? + [ not running ] ? + + code: export profile information (CINIT_PROFILE) + end user doc: using different profiles in user space + end user doc: write examples for profiles: + o switch ssh known_hosts based on profile + o different proxy settings in browsers + - environment + - mozilla settings + o start samba (for lan) + o start samba (for company lan) + o use nis and nfs (company profile) + + doc: continue to merge old documents into new structure and move them + to the doc/ancient directory +0.3.2: + end user doc: what to read to use cinit + end user doc: installing cinit + end user doc: configuring cinit + tools: writing cinit-config (graphical (dialog based?) configuration tool) + code: add porting code: add support for openbsd + + code: add reverse dependency chain (or earlier?) + code: better support for external tools + o neustarten + o mit herunterfahren + o mit herunterfahren und allen Diensten, die abhaengen + o ohne herunterfahren + o Statische Daten + o pid vom Daemon + o pid vom einmal ausgefuehrten Programm + + + doc: end to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.3: + devel doc: writing an init system + devel doc: the conf/-configuration system + + code: check conf/ and perhaps rewrite b0rken english sentences + + code / doc: add logging support for services -> use multilog? + code: add porting code: add support for netbsd + +0.4: + first stable, tested, well documented version. + + code: check for optimisation + + other: compare with other init systems + +0.4.x: + code: add porting code: add support for other unices diff --git a/software/cinit/browse_source/cinit-0.3pre8/TODO b/software/cinit/browse_source/cinit-0.3pre8/TODO new file mode 100644 index 00000000..dc665e9d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/TODO @@ -0,0 +1,279 @@ +-------------------------------------------------------------------------------- +- define how it should work (doc/braindums/big-picture.text) +- define service status in one document, so repeatition stops! +-------------------------------------------------------------------------------- +- remove client/ from top level +-------------------------------------------------------------------------------- +Generate automatic asciidoc from conf/* +-------------------------------------------------------------------------------- + Ausgaben nach Beendigung vom Starten des Services. + + [ on ] %s + Ergebnis + [ off ] %s + + Rekursives herunter/rauffahren +-------------------------------------------------------------------------------- +- add error handling to cinit.install.binary +-------------------------------------------------------------------------------- +1. Entfernung mount + -> Example configuration + -> was man alles machen muss +-------------------------------------------------------------------------------- +- add code do implement stopping / restarting with dependency tree +-------------------------------------------------------------------------------- +- print service name or cinit: before _everything_ WE print + + - is the reporting ok? + +# cinit.create.empty.service: can only be started from the bin directory + +- Fix Switching services off !! +- Error codes when shutting down a service? +- Delay dokumentieren +- no_kill dokumentieren + +- on.out, on.err, on.in? + -> reading/writing from/to files + +- implement "no_kill" until cinit-0.2 or 0.3? + + +-------------------------------------------------------------------------------- +- Source Logic issues + - remove FIXME entries (and what should be fixed, too) +-------------------------------------------------------------------------------- +Helper scripts, rausgenommen aus Der Doku, muessen fuer +cinit-0.3 ueberprueft werden: + +Configure help scripts +~~~~~~~~~~~~~~~~~~~~~~ +cinit-conf later +Using prepared scripts + +In the bin/ directory of this tarball you'll find at least: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +Optimisations +------------- + - Installing cinit + o compiling cinit from source + o debian / gentoo + - Configuring + * add scripts! see below + - define coding guidelines -> general, with url? + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml + +tree_exec +~~~~~~~~~ +- only check dependencies (=needs) after the basic run? + +Documentation +------------- + +developer +~~~~~~~~~ +- ST_IN_LIST == startup marker, used to (NOT) insert services into startup +- dep_needs_wants_add is used to add dependencies of a service to the general + starter list + + +user +---- +- do we really need swapoff? remove umount, swapoff! + * to services! + -> they have to do it! +- dependencies with leading '.' (dot) are ignored. +- about cinit-configuration structure + * cconfig + * svc/ + * special/ (or however we called it) + - panic + - halt + - poweroff + - reboot + +-------------------------------------------------------------------------------- +FAQ +~~~ +- DOKU: what happens when a service does not terminate.... + und er als once drin ist +--> Wenn kein ReSPAWN und der Prozess beendet sich nicht, + dann haengt init! + +- multuicall probleme -> busysbox --> GIBT ES NICHT!! + ---> DOKU DAZU! mit links, doppelt links, aus test + ---> erklaeren, dass es unproblematisch ist! + +-------------------------------------------------------------------------------- +csvc: +11:09 < folken23> telmich: oder service allready started. +-------------------------------------------------------------------------------- +cinit: +11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet + werden konnte. +11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0 + zurueckgeworfen. + ---> errno in execute_sth! + +Child handlin +~~~~~~~~~~~~~g +- free() everything before starting child + +Later +~~~~~ +- close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? + -> yep, clean environment! +- logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? +-------------------------------------------------------------------------------- +- Doc + * main.text -> cleanup / remove / split + * config-dirs + * FAQ + * ideas + * meta.dependencies + - config/hints/meta depps + * optimising + - integrate into other + * README.text + - update + * replacing.init + - update / integrate + * special-services.text + - into configuring/hints? + * TODO + - into paths, if necessary + * updating.cinit + - update as soon as update is possible? + * using.rescue + - update as soon as update is possible? + * 'os-integration.text' + * 'daemons.backgrounding' + * There are some hints on how to migrate to cinit in general and also + some os specific help in the file 'migrating-init-systems.text', +- CODECHECK: + * what happens with the wants of the last services? + - are they added? + - are they added at the correct position? +- scripts + * `cinit.check.config` (doc/user/configuring.cinit.text) + -> circular depedencies! +- Doc.next: + - installing: report! + -> write report script. +- Doc later + * current-init-problems.text + - current-init-problems.text explains why cinit does not use nor recommends the use of shell scripts. + * special-services.text + +- Begin documentation + * Check Makefile + * Integrate Makefile into main Makefile + * create manpage + * Write a small manual + - install + - configure + - boot (different OS) + * generate asciidoc! +- Doc way: + * installing + * configuring + - testconfig! + * booting + - different OS / bootloader + * debugging +- Shutdomn code: + * begin at init, then shutdown wants/needs, ... +- check that the new wants and need elements are nserted the other way round + * we go to next, elements must be put before us! +- replace cinit_ipc_logon with cinit_ipc_init... + * delay ipc code -> after start! + +- Cleanup / create object lists + object-lists/ + cinit + cservice + ccontrol + cinit.halt + cinit.reboot + cinit.shutdown (shell script?!?) + +TODO.pre8: + Done: + merge codingstyle and codingguide + Use sa.mask in sigaction! + double check all initialisations! + fixed problem in src/Makefile + remove old object listings + Document the define of the following: + -> conf/umount = called before all shutdown procedures --> conf/last! + test sleep code (sleep_before_kill()) + -> execute as id compiler, so kill -1 does not kill my session + check whether successful service is not successful reported + + +TODO.pre9: + - setup VM for testing: qemu/kvm/virtualbox (no commercial bloaty) + + do_reboot.c: + write cinit_svc_shutdown + Add handler for ctrl+alt+delete + * document in paths + - implement do_reboot() + * so not only booting with cinit works, but also the shutdown + + include locking via shm, remove test on pid1 + cleanup bin/ + + - do not print an error if /etc/cinit/conf/last is non-existent! + - ignore msgrcv: Interrupted system call +Session terminated, killing shell...msgq-destroy: Invalid argument +msgq-destroy: Invalid argument + - pretty print, reporting is ugly! + +TODO.pre10: + cleanup client/ comm/ contrib+tools/ util/ tmp/ + - write cinit.conf.check + * report broken links in needs/wants + * report circular dependencies + + +TODO.pre11: + cleanup src/ + finish ipc code so clients can access cinit + +TODO.pre12: + Check and clean doc/ + Remove *TODO*+ROADMAP and leave behin doc/TODO + +TODO.pre13: + code cservice ccontrol halt reboot shutdown poweroff + Test, release and prepare for final cinit-0.3 + +TODO.0.3.1 + add log support + cinit logs to + -> shm saver + services log to + +TODO unclear + - create migration scripts diff --git a/software/cinit/browse_source/cinit-0.3pre8/TODO.doc b/software/cinit/browse_source/cinit-0.3pre8/TODO.doc new file mode 100644 index 00000000..a170a50d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/TODO.doc @@ -0,0 +1,29 @@ +- doc/user/paths.text + * finish + * add examples +- add cross-compilation howto +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + +caveats +------- + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- cinit ignores the Keyboard request +- Currently there is no support to react on 'ctr+alt+del': +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + diff --git a/software/cinit/browse_source/cinit-0.3pre8/TODO.optimisations b/software/cinit/browse_source/cinit-0.3pre8/TODO.optimisations new file mode 100644 index 00000000..8a686b4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/TODO.optimisations @@ -0,0 +1,19 @@ +This file describes enhancements or optimisations that +could be done / checked. + + +Code +---- + +fork() +~~~~~~ + +Security +^^^^^^^^^ +- Closed fds? +- Close other things? +- IPC? + +Cleanup +^^^^^^^ +- Do we have to reset signals or is that done anyway by fork()? diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cdoc-man.sh b/software/cinit/browse_source/cinit-0.3pre8/bin/cdoc-man.sh new file mode 100644 index 00000000..fc1adde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cdoc-man.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Nico Schottelius +# Date: 21-Aug-2005 +# Last Modified: - +# + +set -e + +[ $# -ne 1 ] && exit 23 + +SRC=$1 + +cd "$SRC" + +# +# Title heading +# +echo .TH $(cat "meta/name" "meta/man_section" "meta/date") + +# +# Name +# +echo .SH NAME +echo $(cat meta/name) - $(cat meta/short_description) + +# +# Synopsis +# +echo .SH SYNOPSIS +echo $(cat path) $(cat parameters) + +# +# description +# +echo .SH DESCRIPTION +echo $(cat long_description) + +# +# availability +# +for section in availability examples "see also" author; do + if [ -f "$section" ]; then + echo .SH $section | tr '[a-z]' '[A-Z]' + cat "$section" + fi +done + +# +# files +# +if [ -f files ]; then + echo .SH FILES + cat files | sed 's/\(.*\)/.IP "\1" /' +fi + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.add.dependency new file mode 100644 index 00000000..7bc9cc65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.add.dependency @@ -0,0 +1,51 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or wants Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +# adding 'wishes' for x-mas and requires for 'the mass' and 'tv' +case $DEP in + wishes|wants) DEP=$C_WANTS ;; + needs|requires) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could someone PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEP_DIR="${BASEDIR}/${SVC_A}/${DEP}" + +if [ ! -d "$DEP_DIR" ]; then + echo "$DEP_DIR does not exist, creating..." + mkdir "$DEP_DIR" + if [ $? -ne 0 ]; then + echo "Error occured due to creating directory. Exiting." + exit 1 + fi +fi + +DEST="${DEP_DIR}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.add.getty new file mode 100644 index 00000000..987a5bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.add.getty @@ -0,0 +1,75 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# Date: 2005-05-24 (Last changed: 2005-08-07) +# + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | sort -n | tail -n 1) + +[ ! "$LAST_NUMBER" ] && LAST_NUMBER=0 + +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +#echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + */mgetty) + mygetty=$getty + params="38400 tty${NUMBER}" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +# check input +if [ ! "$mygetty" ]; then + read -p "Getty to use [$mygetty]: " rgetty +fi +if [ ! "$params" ]; then + read -p "Parameters to pass [$params]: " rparams +fi +if [ ! "$params" -o ! "$mygetty" ]; then + echo "Sorry, either getty or parameters are not supplied." + exit 23 +fi + +echo -n "Creating $mygetty ($params) in $DDIR ... " +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DDIR" +ln -s "$mygetty" "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.configure.ipc b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.configure.ipc new file mode 100644 index 00000000..65190baa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.configure.ipc @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius, 2006-07-28 +# +# cinit: configure the ipc method to use +# + +HIER=$(dirname $0) +DDIR=$HIER/../src/ipc +DFILE=${DDIR}/current +IPC_METHOD=$(head -n 1 "$HIER/../conf/ipc_method") + +echo "Configure: IPC: Using \"$IPC_METHOD\" as IPC method" + +# always remove link before, as ln seems to be broken +# Doing ln -sf src/ipc/$method current twice, will create the file +# "current" _BELOW_ src/ipc/$method and not overwrite the link +# src/ipc/current + +rm -f "${DFILE}" +ln -sf "${IPC_METHOD}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.configure.mark b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.configure.mark new file mode 100644 index 00000000..62454c7f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.configure.mark @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: touch a file to mark everything configured +# 2006-08-27 +# + +echo "Configure: MK: Marking directory as configured" +touch .configured diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.configure.os b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.configure.os new file mode 100644 index 00000000..d5b8e6e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.configure.os @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups symlinks for the os +# + +DDIR=$(dirname $0)/../src/os +DFILE="$DDIR/current" +OSCONFIG=$(dirname $0)/../conf/os + +OS=$(head -n 1 "$OSCONFIG") + +echo "Configure: OS: Binaries are created for $OS ..." + +rm -f "${DFILE}" +ln -sf "${OS}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.configure.tools b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.configure.tools new file mode 100644 index 00000000..43242a01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.configure.tools @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups scripts for compiling and linking +# + +HIER=$(dirname $0) +DDIR=$HIER/../tmpbin/ +CC=$(head -n 1 "$HIER/../conf/cc") +CFLAGS=$(head -n 1 "$HIER/../conf/cflags") +LD=$(head -n 1 "$HIER/../conf/ld") +LDFLAGS=$(head -n 1 "$HIER/../conf/ldflags") +STRIP=$(head -n 1 "$HIER/../conf/strip") + +echo "Configure: CC: Creating cc, ld and strip ..." + +mkdir -p "$DDIR" +cd "$DDIR" + +echo "$CC $CFLAGS \"\$@\"" > cc +echo "$LD $LDFLAGS \"\$@\"" > ld +echo "$STRIP \"\$@\"" > strip + +# set correct permissions +chmod 0700 * diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.create.empty.service new file mode 100644 index 00000000..365c4bc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.create.empty.service @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.binary new file mode 100644 index 00000000..a368ac23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.binary @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: - +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice +"$INSTALL_PROG" sbin/ccontrol $DESTDIR/$PREFIX/sbin/ccontrol +"$INSTALL_PROG" bin/cinit.reboot $DESTDIR/$PREFIX/sbin/cinit.reboot +"$INSTALL_PROG" bin/cinit.shutdown $DESTDIR/$PREFIX/sbin/cinit.shutdown +"$INSTALL_PROG" bin/cinit.wait.for.daemon \ + $DESTDIR/$PREFIX/sbin/cinit.wait.for.daemon + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi + +# install as /sbin/shutdown, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/shutdown ]; then + ln -s $PREFIX/sbin/cinit.shutdown $DESTDIR/$PREFIX/sbin/shutdown +fi + +# install as /sbin/reboot, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/reboot ]; then + ln -s $PREFIX/sbin/cinit.reboot $DESTDIR/$PREFIX/sbin/reboot +fi diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.config-dir b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.config-dir new file mode 100644 index 00000000..c9adb70f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.config-dir @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.dir new file mode 100644 index 00000000..5e16f690 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.dir @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/sbin" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.fsck b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.fsck new file mode 100644 index 00000000..4508860a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.fsck @@ -0,0 +1,36 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 3 ]; then + echo "$(basename $0): name device filesystem-type" + exit 1 +fi + +NAME=$1 +DEVICE=$2 +FS_TYPE=$3 + +FSCK=/sbin/fsck.$FS_TYPE + +if [ ! -f "$FSCK" ]; then + echo "Missing $FSCK, abort." + exit 1 +fi + +if [ ! -e "$DEVICE" ]; then + echo "Missing $DEVICE abort." + exit 1 +fi + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME" +ln -sf "$FSCK" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON" +echo "$DEVICE" > "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.miniconf b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.miniconf new file mode 100644 index 00000000..45dcc632 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.miniconf @@ -0,0 +1,103 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: 2005-08-07 +# + + +. $(dirname $0)/cinit.read-conf + +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" +echo "" +echo "This will install a minimal cinit configuration." +echo "This configuration _SHOULD_ be able to run on _MOST_ systems." +echo "Still, it's highly EXPERIEMENTAL, use with CAUTION." +echo "" +echo "Please make sure, that" +echo " - you are using a journaling filesystem (fsck is not used)" +echo " - you have agetty, fgetty or mingetty installed" +echo " - you are runnig Linux 2.6 (sysfs is used)" +echo " - you have udev or static device nodes (you need /dev/tty*)" +echo " - getties will run on tty2-tty7, tty1 is used or logging" +echo "" +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" + +notosoftwarepatents="Please keep an eye on software patents, they are evil." +read -p "Do you really want to continue? [y/N] " notosoftwarepatents + +if [ "$notosoftwarepatents" = "y" -o "$notosoftwarepatents" = "Y" ]; then + echo "Let us try it ..." +else + echo 'Bye bye!' + exit 0 +fi + +set -e + +# Create basic layout +$(dirname $0)/cinit.install.standard-dirs + +# Install services: +# - mount root r/w +# - mount /proc +# - mount /sys +# - install getties on tty2-tty7 +# - add cleanup for /etc/mtab +# - add loopback device +# - init service + echo + +################################### mount ##################################### +# mount root read/write +$(dirname $0)/cinit.install.service.mount-root + +# - mount /proc +$(dirname $0)/cinit.install.service.mount-proc + +# - mount /sys +$(dirname $0)/cinit.install.service.mount-sys + +# mount needs everything below it +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/root" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/proc" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/sys" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" + +################################### getty ##################################### +# mount root read/write +# install getties +begin_getty=2 +end_getty=7 +i=$begin_getty + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" +while [ "$i" -le "$end_getty" ]; do + $(dirname $0)/cinit.add.getty + ln -sf "${DESTDIR}/${CINIT_DIR}/getty/$i" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" + i=$(($i+1)) +done + +################################### mtab ##################################### +# - add cleanup for /etc/mtab +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" +$(dirname $0)/cinit.install.service.cleanup-mtab +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" + +################################### lo ##################################### +# - add loopback device +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" +$(dirname $0)/cinit.install.service.network-lo +ln -sf "${DESTDIR}/${CINIT_DIR}/network/lo" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" + +# - init service + echo +# init depends on mount, getty -> everything from base-layout +$(dirname $0)/cinit.install.service.init +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" + +ln -sf "${DESTDIR}/${CINIT_DIR}/local-services/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/getty/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/network/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.cleanup-mtab b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.cleanup-mtab new file mode 100644 index 00000000..30a8dd48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.cleanup-mtab @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: cleanup mtab +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" +echo '#!/bin/sh' > "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'rm -f /etc/mtab' >>"${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'ln -s /proc/mounts /etc/mtab' \ + >> "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +chmod 0700 "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.hostname.generic b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.hostname.generic new file mode 100644 index 00000000..2d72f50e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.hostname.generic @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service, which sets the hostname +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): hostname" + exit 1 +fi + +HOSTNAME=$1 +HOSTNAME_BIN=${HOSTNAME_BIN:-/bin/hostname} + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/network/hostname" +ln -sf "$HOSTNAME_BIN" "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON" +echo "$HOSTNAME" > "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.init b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.init new file mode 100644 index 00000000..c3a10931 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.init @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +ln -sf /bin/echo "${DESTDIR}/${CINIT_DIR}/${C_INIT}/$C_ON" +echo '*** cinit initial service successfully started ***' \ + > "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.keymap.c_keymap b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.keymap.c_keymap new file mode 100644 index 00000000..235a329e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.keymap.c_keymap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install keymap from environment setting +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +if [ -z "$C_KEYMAP" ]; then + echo "Set C_KEPMAP to the wanted keymap." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" ]; then + echo "Service keymap already exists." + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find loadkeys) + +if [ $? -ne 0 ]; then + echo "Did not find binary loadkeys." + exit 1 +fi + +echo -n "Installing keymap to ${DESTDIR}/${CINIT_DIR}/local-tuning/keymap ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON" + +echo "$C_KEYMAP" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.mount-proc b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.mount-proc new file mode 100644 index 00000000..024847a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.mount-proc @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /proc +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/proc" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/proc/$C_ON" +echo proc > "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo /proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.mount-root b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.mount-root new file mode 100644 index 00000000..a1bd56ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.mount-root @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount root r/w +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# mount root read/write +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/root" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/root/$C_ON" +echo -n > "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo -o >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo remount,rw >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo / >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.mount-sys b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.mount-sys new file mode 100644 index 00000000..8c8191aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.mount-sys @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /sys +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /sys +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/sys" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/sys/$C_ON" +echo sys > "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo sysfs >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo /sys >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.network-lo b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.network-lo new file mode 100644 index 00000000..45bff6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.network-lo @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: loopback device +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/lo" +ln -sf /sbin/ifconfig "${DESTDIR}/${CINIT_DIR}/network/lo/$C_ON" +echo lo > "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo 127.0.0.1/8 >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo up >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.ntpdate.debian b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.ntpdate.debian new file mode 100644 index 00000000..2af2ee4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.ntpdate.debian @@ -0,0 +1,47 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install ntpdate +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +. /etc/default/ntpdate + +if [ -z "$NTPSERVERS" ]; then + echo "No ntp servers found, aborting" + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find ntpdate) + +if [ $? -ne 0 ]; then + echo "Did not find binary ntpdate." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" ]; then + echo "Service ntpdate already exists." + exit 1 +fi + +echo -n "Installing ntpdate to ${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON" + +for server in $NTPSERVERS; do + echo "$server" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON$C_PARAMS" +done + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.udev b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.udev new file mode 100644 index 00000000..d91f01cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.service.udev @@ -0,0 +1,64 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install udev +# Date: 2005-10-15 +# Comment: DO NOT RSYNC TO THE WRONG SIDE! +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BIN_UDEVSEND=$($(dirname $0)/cinit.path-find udevsend) +BIN_UDEVSTART=$($(dirname $0)/cinit.path-find udevstart) +BIN_SYSCTL=$($(dirname $0)/cinit.path-find sysctl) +BIN_MOUNT=$($(dirname $0)/cinit.path-find mount) +SERVICE="local-tuning/udev" + +if [ -z "$BIN_UDEVSEND" -o -z "$BIN_UDEVSTART" -o -z "$BIN_SYSCTL" -o -z "$BIN_MOUNT" ]; then + echo "Did not find a binary." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo "Installing ${SERVICE} to ${DESTDIR}/${CINIT_DIR}/ ..." + +# 0. general udev +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}" +# 1. udevmount +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/mount/udev" +ln -sf "$BIN_MOUNT" "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON" +echo "udev" > "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "-t" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "tmpfs" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "/dev" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" + +# 2. udevstart +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart" +ln -sf "$BIN_UDEVSTART" "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart/$C_ON" + +# dependencies +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/sys +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/udev + +# 3. udev to hotplug +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug" +ln -sf "$BIN_SYSCTL" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug/$C_ON" +echo "$BIN_UDEVSEND" > "${DESTDIR}${CINIT_DIR}/${SERVICE}/hotplug/$C_ON$C_PARAMS" + +$(dirname $0)/cinit.add.dependency ${SERVICE}/hotplug needs mount/proc + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.standard.init.deps b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.standard.init.deps new file mode 100644 index 00000000..dcc5cd07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.standard.init.deps @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add standard sub-configuration directories to init wants +# Date: 2005-10-11 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.standard.mounts b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.standard.mounts new file mode 100644 index 00000000..bb1fc0c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.standard.mounts @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create normal mounts +# Date: 2005-10-16 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.swap b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.swap new file mode 100644 index 00000000..84e6c928 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.swap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install swap +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +SERVICE=mount/swap + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BINARY=swapon +BINARY_PATH=$($(dirname $0)/cinit.path-find $BINARY) +if [ $? -ne 0 ]; then + echo "Did not find binary $BINARY." + exit 1 +fi + +HAS_SWAP=$(awk '$3 ~ /swap/ { print $3 }' /etc/fstab) +if [ -z "$HAS_SWAP" ]; then + echo "Seems you have no swap, service not installing" + exit 1 +fi +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo -n "Installing ${SERVICE} to ${DESTDIR}${CINIT_DIR}/${SERVICE} ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON" + +echo "-a" >> "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.merge.sysvinit-debian-sid b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.merge.sysvinit-debian-sid new file mode 100644 index 00000000..3ef0ce03 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.merge.sysvinit-debian-sid @@ -0,0 +1,137 @@ +#!/bin/sh +# Nico Schottelius +# Date: Sun Oct 16 16:57:03 CEST 2005 +# cLinux/cinit +# Automagically convert Debian-Sysv-Iinit +# THIS IS NOT CLEAN. +# THIS IS NOT EVEN INTENTED TO BE CLEAN. +# This is just a small hack, because my girlfriend wants her notebook back. + +echo "***> $(basename $0): converting Debian-Sys-V-Init" + +# read standard values, may be overwritten from outside +. $(dirname $0)/cinit.read-conf + +echo "***> Finding standard config ..." +# variables, which can be set from the outside +ROOT_DEV=${ROOT_DEV:-$(awk '$2 ~ /^\/$/ { print $1 }' /etc/fstab)} +ROOT_FSCK=${ROOT_FSCK:-$(awk '$2 ~ /^\/$/ { print $6 }' /etc/fstab)} +ROOT_FS=${ROOT_FS:-$(awk '$2 ~ /^\/$/ { print $3 }' /etc/fstab)} +RUNLEVEL=${RUNLEVEL:-$(runlevel | awk '{ print $2 }')} + +echo "***> Detecting keymap (this may take some time)" + +if [ -z "$C_KEYMAP" ]; then + echo "Please set the variable C_KEYMAP to your keymap." + echo "It is impossible to detect reliable your keymap in Debian." + exit 1 +fi + + +echo "***> Configuration" +echo "Hostname (\$HOSTNAME): $HOSTNAME" +echo "Keymap (\$C_KEYMAP): $C_KEYMAP" +echo "Root device (\$ROOT_DEV): $ROOT_DEV" +echo "Root fsck (\$ROOT_FSCK): $ROOT_FSCK" +echo "Root FS (\$ROOT_FS): $ROOT_FS" +echo "Runlevel (\$RUNLEVEL): $RUNLEVEL" +echo "Destdir: (\$DESTDIR): $DESTDIR" +echo "Config-Dir: (\$CINIT_DIR): $CINIT_DIR" +read -p "Is this correct (Y/n) " correct + +if [ "$correct" != "y" -a "$correct" != "Y" ]; then + echo "***> Abort." + exit 1 +fi + +if [ -d "${DESTDIR}${CINIT_DIR}" ]; then + echo "ERROR: Configuration already exists at ${DESTDIR}${CINIT_DIR}." + exit 1 +fi + +echo "***> Installing standard structure and dependencies" +set -e +$(dirname $0)/cinit.install.config-dir +$(dirname $0)/cinit.install.standard.dirs +$(dirname $0)/cinit.install.standard.init.deps + +echo "***> Adding mount / r/w" +$(dirname $0)/cinit.install.service.mount-root + +if [ "$ROOT_FSCK" = "1" ]; then + echo "***> Adding fsck for $ROOT_DEV ..." + $(dirname $0)/cinit.install.fsck root "$ROOT_DEV" "$ROOT_FS" + echo "***> Adding dependency" + $(dirname $0)/cinit.add.dependency mount/root needs fsck/root +else + echo "***> Skipping fsck for $ROOT_DEV ..." +fi + +echo "***> Setting up standard mounts ..." +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up hostname: $HOSTNAME" +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up keymap" +$(dirname $0)/cinit.install.service.keymap.c_keymap + +echo "***> Creating getties (tty1-8)" +for i in `seq 1 8`; do + $(dirname $0)/cinit.add.getty + + # each getty needs: + # - root r/w + $(dirname $0)/cinit.add.dependency getty/$i needs mount/root + # - hostname + $(dirname $0)/cinit.add.dependency getty/$i needs network/hostname +done + +echo "***> Enabling getties (tty2-8)" +for i in `seq 2 8`; do + # add getties to getty/ + $(dirname $0)/cinit.add.dependency getty wants getty/$i +done + +# +# Convert services: check /etc/rcS.d and /etc/rcX.d +# +echo "***> Converting services ..." +for script in $(cd /etc/rcS.d/; ls S*; cd /etc/rc${RUNLEVEL}.d/; ls S*); do + echo -n "$script: " + case $script in + # SCRIPTS READY + *ntpdate) + $(dirname $0)/cinit.install.service.ntpdate.debian + $(dirname $0)/cinit.add.dependency local-tuning/ntpdate needs network + ;; + *udev*) + $(dirname $0)/cinit.install.service.udev + + # SCRIPTS NEVER READY + *glibc.sh|*module-init-tools|*modutils|*procps.sh|*hotplug-net|*bootmisc.sh|*nviboot|*screen-cleanup|*x11-common|*sudo|*makedev|*rmnologin) + echo "Ignoring (useless)." + ;; + + # SCRIPTS NOT YET READY + *mountvirtfs|*checkroot.sh|*ifupdown-clean|*checkfs.sh|*mountall.sh|*ifupdown|*hostname*|*mountnfs.sh|*alsa|*rsync|*ssh|*fam|*cron|*gdm) + echo "converting planned later." + ;; + + # SCRIPTS LATER TO DO + *bootlogd|*keymap.sh|*hwclock*|*discover|*pppd-dns|*dns-clean|*networking|*portmap|*console-screen.sh|*urandom|*klogd|*apmd|*dbus-1|*exim4|*pcmcia|*nfs-common|*stop-bootlogd) + echo "unsupported currently (FIXME PLEASE)." + ;; + *sysklogd|*ppp|*inetd|*lpd|*aumix|*atd) + echo "unsupported (choose a better alternative)." + ;; + *initrd-tools.sh|*libdevmapper*|*hotplug) + echo "Ignoring (general or bloated script)." + ;; + *) + echo "Ignoring (unknown)" + ;; + esac +done + +echo "***> Finished." diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.path-find b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.path-find new file mode 100644 index 00000000..0d0f362b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.path-find @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: find binary in path +# Date: 2005-10-15 +# + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): searched binary" + exit 1 +fi + +binary=$1 + +# this is NOT really clean, paths can also contain spaces +for pfad in $(echo $PATH | sed 's/:/ /g'); do + fullname=$pfad/$binary + if [ -f "$fullname" ]; then + echo "$fullname" + exit 0 + fi +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.remove.getty new file mode 100644 index 00000000..4950eeed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.remove.getty @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + +if [ ! "$NUMBER" ]; then + echo "There is no getty to remove." + exit 1 +fi + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r "$DDIR" +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.shutdown new file mode 100644 index 00000000..702c8a17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.shutdown @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# TODO: use ccontrol! +# 2005-05-24 (Last changed: 2005-06-18) + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -p|--power-off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " -s|--rescue: Rescue mode" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -p|--power-off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + -s|--rescue) kill -USR2 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.uml.test new file mode 100644 index 00000000..f6ea7fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.1 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG umid=cinit$$ init=/sbin/cinit" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..7f027455 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 (Last Changed: 2005-06-17) + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +PIDFILE=$1; shift +DAEMON=$1; shift + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.3pre8/cinit-0.3pre8.tar.bz2 b/software/cinit/browse_source/cinit-0.3pre8/cinit-0.3pre8.tar.bz2 new file mode 100644 index 00000000..5f40a659 Binary files /dev/null and b/software/cinit/browse_source/cinit-0.3pre8/cinit-0.3pre8.tar.bz2 differ diff --git a/software/cinit/browse_source/cinit-0.3pre8/client/README b/software/cinit/browse_source/cinit-0.3pre8/client/README new file mode 100644 index 00000000..c6d39c85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/client/README @@ -0,0 +1,3 @@ +client/ + -- OBSOLETED -- + These sources were used by the children which were spawned by cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre8/client/begin_msg.c b/software/cinit/browse_source/cinit-0.3pre8/client/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/client/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/client/connect_sock.c b/software/cinit/browse_source/cinit-0.3pre8/client/connect_sock.c new file mode 100644 index 00000000..2c2d45de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/client/connect_sock.c @@ -0,0 +1,38 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include /* memset, strcpy */ + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/client/exec_svc.c b/software/cinit/browse_source/cinit-0.3pre8/client/exec_svc.c new file mode 100644 index 00000000..f217f9e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/client/exec_svc.c @@ -0,0 +1,264 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +inline pid_t exec_svc(char *abspath, int action) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + SERVICE_LOG(abspath,LOG_SVC_FAIL); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + P_EXEC_FAILED(nargv[0]); + perror(MSG_ERR_EXECVE); + /* FIXME: remove debug, remove double printing without loosing info */ + sleep(3); /* debug */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/client/msg_change_status.c b/software/cinit/browse_source/cinit-0.3pre8/client/msg_change_status.c new file mode 100644 index 00000000..836a0fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/client/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* FIXME: change return code validation */ + +int msg_change_status(char *svc, char status, pid_t pid) +{ + if(!begin_msg(CMD_CHG_STATUS)) { + return RT_ERR_COMM; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/client/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.3pre8/client/msg_svc_on_off.c new file mode 100644 index 00000000..02948f2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/client/msg_svc_on_off.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, char action) +{ + if(!begin_msg(action)) return RT_ERR_COMM; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return RT_ERR_COMM; + return (int) do_result(sock,NULL); +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre8/client/respawn_svc.c b/software/cinit/browse_source/cinit-0.3pre8/client/respawn_svc.c new file mode 100644 index 00000000..5c350045 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/client/respawn_svc.c @@ -0,0 +1,99 @@ +/* + * (c) 2005,2006 Nico Schottelius (nico-linux at schottelius.org) + * respawn_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + D_PRINTF(abspath); + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, CMD_START_SVC) ) { + if(cpid != 0) { + D_PRINTF("sloefen"); + sleep(SLEEP_SVC); + D_PRINTF("Zuende geschlafen"); + } + } + } while(cpid); /* cpid is reset by sig_terminate() */ + + /* FIXME: put most code of sig_terminate here, look for no_kill */ + + /* start off task */ + exec_svc(abspath,CMD_STOP_SVC); + + D_PRINTF("jetzt weg"); + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/client/run_run_svcs.c b/software/cinit/browse_source/cinit-0.3pre8/client/run_run_svcs.c new file mode 100644 index 00000000..6486c76f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/client/run_run_svcs.c @@ -0,0 +1,86 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/client/run_svc.c b/software/cinit/browse_source/cinit-0.3pre8/client/run_svc.c new file mode 100644 index 00000000..7fea6a92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/client/run_svc.c @@ -0,0 +1,129 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre8/client/sig_terminate.c b/software/cinit/browse_source/cinit-0.3pre8/client/sig_terminate.c new file mode 100644 index 00000000..9b23e349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/client/sig_terminate.c @@ -0,0 +1,60 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + /* FIXME: only send SIGTERM, if not_kill does not exist */ + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + status = kill(cpid,SIGKILL); + if( status == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + D_PRINTF("muesste weg sein"); + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/comm/README b/software/cinit/browse_source/cinit-0.3pre8/comm/README new file mode 100644 index 00000000..f44743a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/comm/README @@ -0,0 +1,6 @@ +-- OBSOLETED -- + -> This code is not in use in cinit-0.3 anymore! + +comm/ + The communication part of cinit. + The functions are used in client and in server code. diff --git a/software/cinit/browse_source/cinit-0.3pre8/comm/do_change_status.c b/software/cinit/browse_source/cinit-0.3pre8/comm/do_change_status.c new file mode 100644 index 00000000..94b9be76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/comm/do_change_status.c @@ -0,0 +1,70 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/comm/do_result.c b/software/cinit/browse_source/cinit-0.3pre8/comm/do_result.c new file mode 100644 index 00000000..cb51161b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/comm/do_result.c @@ -0,0 +1,33 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return RT_ERR_COMM; + } + + return *value; +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre8/comm/do_svc_name.c b/software/cinit/browse_source/cinit-0.3pre8/comm/do_svc_name.c new file mode 100644 index 00000000..d427365f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/comm/do_svc_name.c @@ -0,0 +1,51 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/.README b/software/cinit/browse_source/cinit-0.3pre8/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_confdir b/software/cinit/browse_source/cinit-0.3pre8/conf/c_confdir new file mode 100644 index 00000000..091e6192 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_confdir @@ -0,0 +1,3 @@ +conf + +The directory below cinit_dir for cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_delay b/software/cinit/browse_source/cinit-0.3pre8/conf/c_delay new file mode 100644 index 00000000..dc30f147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGTERM for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_env b/software/cinit/browse_source/cinit-0.3pre8/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_halt b/software/cinit/browse_source/cinit-0.3pre8/conf/c_halt new file mode 100644 index 00000000..4eed340f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_halt @@ -0,0 +1,4 @@ +halt + +Name of the link belowe c_special, which links to the program +to be executed right before halting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_init b/software/cinit/browse_source/cinit-0.3pre8/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_last b/software/cinit/browse_source/cinit-0.3pre8/conf/c_last new file mode 100644 index 00000000..8debf155 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_last @@ -0,0 +1,7 @@ +last + +Name of the file below cinit_dir/c_confdir/ to execute right before +reboot/halt/poweroff. + +This maybe a shellscript with the OS-specific umount procedure (like umount -a), +see doc/user/configuring.cinit for more details. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_needs b/software/cinit/browse_source/cinit-0.3pre8/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_off b/software/cinit/browse_source/cinit-0.3pre8/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_on b/software/cinit/browse_source/cinit-0.3pre8/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_panic b/software/cinit/browse_source/cinit-0.3pre8/conf/c_panic new file mode 100644 index 00000000..7fdb77b3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_panic @@ -0,0 +1,5 @@ +panic + +Name of the file below cinit_dir/c_confdir/ to execute on panic. +This name .params (normally panic.params) will be passed as parameters/ +argumunts to panic. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_params b/software/cinit/browse_source/cinit-0.3pre8/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_poweroff b/software/cinit/browse_source/cinit-0.3pre8/conf/c_poweroff new file mode 100644 index 00000000..5b5c9c9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_poweroff @@ -0,0 +1,4 @@ +poweroff + +Name of the link belowe c_special, which links to the program +to be executed right before powering off the system. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_reboot b/software/cinit/browse_source/cinit-0.3pre8/conf/c_reboot new file mode 100644 index 00000000..8702388f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_reboot @@ -0,0 +1,4 @@ +reboot + +Name of the link belowe c_special, which links to the program +to be executed right before rebooting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_respawn b/software/cinit/browse_source/cinit-0.3pre8/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_sock b/software/cinit/browse_source/cinit-0.3pre8/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_tmp b/software/cinit/browse_source/cinit-0.3pre8/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.3pre8/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.3pre8/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/c_wants b/software/cinit/browse_source/cinit-0.3pre8/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/cc b/software/cinit/browse_source/cinit-0.3pre8/conf/cc new file mode 100644 index 00000000..b168ae6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/cc @@ -0,0 +1,3 @@ +gcc + +The c-compiler to use. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/cflags b/software/cinit/browse_source/cinit-0.3pre8/conf/cflags new file mode 100644 index 00000000..f205afb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/cflags @@ -0,0 +1,6 @@ +-pipe -W -Wall -Werror -Iinclude -g -D_XOPEN_SOURCE=600 -D_USE_POSIX + +Standard flags to pass to (g)cc. + +-D_XOPEN_SOURCE=600 must be used on glibc to select the right standard. +-D_USE_POSIX is needed for sigemptyset on glibc diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/cinit_dir b/software/cinit/browse_source/cinit-0.3pre8/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/confdir b/software/cinit/browse_source/cinit-0.3pre8/conf/confdir new file mode 100644 index 00000000..55fb65e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/confdir @@ -0,0 +1,3 @@ +conf + +The subdirectory below /etc/cinit to be used for general configurations. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/destdir b/software/cinit/browse_source/cinit-0.3pre8/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/getty_dir b/software/cinit/browse_source/cinit-0.3pre8/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/install_directory b/software/cinit/browse_source/cinit-0.3pre8/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/install_prog b/software/cinit/browse_source/cinit-0.3pre8/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/ipc_method b/software/cinit/browse_source/cinit-0.3pre8/conf/ipc_method new file mode 100644 index 00000000..fc75e273 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/ipc_method @@ -0,0 +1,5 @@ +msgq + +The type of IPC (inter process communication) to use. +Valid values can be optained by issuing `ls src/ipc/`. + diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/ld b/software/cinit/browse_source/cinit-0.3pre8/conf/ld new file mode 100644 index 00000000..b60e4836 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/ld @@ -0,0 +1,3 @@ +gcc + +Comment missing. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/ldflags b/software/cinit/browse_source/cinit-0.3pre8/conf/ldflags new file mode 100644 index 00000000..fc214daf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/ldflags @@ -0,0 +1,3 @@ + + +No flags specified normally. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/max_delay b/software/cinit/browse_source/cinit-0.3pre8/conf/max_delay new file mode 100644 index 00000000..149fa16c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/max_delay @@ -0,0 +1,7 @@ +4 + +Maximum number of digits which may be in the delay file. +If there are more, the string "12345678901" will be cut to the +right length "1234567890". I don't think you'll ever need +a timeout greater 4 digits (9999 seconds are 166,65~ minutes, are +2 hours, 46 minutes and 39 seconds). See doc/configuring.cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/max_deps b/software/cinit/browse_source/cinit-0.3pre8/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/msgq_pathname b/software/cinit/browse_source/cinit-0.3pre8/conf/msgq_pathname new file mode 100644 index 00000000..1bef0b6b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/msgq_pathname @@ -0,0 +1,4 @@ +/bin/sh + +Used to generate an unique identifier for the message queue. +See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/msgq_to_clients b/software/cinit/browse_source/cinit-0.3pre8/conf/msgq_to_clients new file mode 100644 index 00000000..dd15808a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/msgq_to_clients @@ -0,0 +1,4 @@ +o + +This is use in ftok to generate a key_t for the message queue use to write +to the clients. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/msgq_to_server b/software/cinit/browse_source/cinit-0.3pre8/conf/msgq_to_server new file mode 100644 index 00000000..f87ae3f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/msgq_to_server @@ -0,0 +1,4 @@ +i + +This is use in ftok to generate a key_t for the message queue use to write +to the server. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/os b/software/cinit/browse_source/cinit-0.3pre8/conf/os new file mode 100644 index 00000000..ddbf8f9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/os @@ -0,0 +1,14 @@ +linux + +Select the operating system compiling for. + +Current possibilities: + + - linux + + +Currently Planned possibilities: + + - freebsd + - openbsd + - netbsd diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/p_asciidoc b/software/cinit/browse_source/cinit-0.3pre8/conf/p_asciidoc new file mode 100644 index 00000000..52485c86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/p_asciidoc @@ -0,0 +1,6 @@ +asciidoc + +The binary on your system (with or without path) which does what I expect +asciidoc todo. + +Default: asciidoc diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/p_docbooktoman b/software/cinit/browse_source/cinit-0.3pre8/conf/p_docbooktoman new file mode 100644 index 00000000..d62c9015 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/p_docbooktoman @@ -0,0 +1,6 @@ +docbook2x-man + +The binary on your system (with or without path) which converts +docbook to manpages. + +Default: docbook2x-man diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/p_docbooktotexi b/software/cinit/browse_source/cinit-0.3pre8/conf/p_docbooktotexi new file mode 100644 index 00000000..278f6805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/p_docbooktotexi @@ -0,0 +1,6 @@ +docbook2x-texi + +The binary on your system (with or without path) which converts +docbook to texinfo. + +Default: docbook2x-texi diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/prefix b/software/cinit/browse_source/cinit-0.3pre8/conf/prefix new file mode 100644 index 00000000..6b90469f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/prefix @@ -0,0 +1,5 @@ + + +Where to install cinit. Normally this will be /, but you can put it anywhere. +The subdirectory 'sbin' under this prefix must be readable by the kernel. +This is normally either empty or "/". diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/profile b/software/cinit/browse_source/cinit-0.3pre8/conf/profile new file mode 100644 index 00000000..b9104bf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/profile @@ -0,0 +1,9 @@ +cprofile: + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile:" is the standard, as +the Linux kernel eats everything in the form 'var=parm'. +The old (pre cinit-0.1) option "cprofile=" should therefore +NOT be used. + +Under Linux you tell it the bootloader like grub or LILO. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/service_categories b/software/cinit/browse_source/cinit-0.3pre8/conf/service_categories new file mode 100644 index 00000000..2216ea97 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/service_categories @@ -0,0 +1,7 @@ +getty init local-tuning local-services mount network remote-services + +List of directories normally created below /etc/cinit/svc/ as +'pseudo-services'. + +Btw, 'init' is the first service and has always to be there, but it does not really +fit into here, because it's a real one, compraed to the pseudo services. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/sleep_before_kill b/software/cinit/browse_source/cinit-0.3pre8/conf/sleep_before_kill new file mode 100644 index 00000000..2671f22d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/sleep_before_kill @@ -0,0 +1,7 @@ +sleep_before_kill + +The file that specifies how long to sleep after sending SIGTERM, before sending +SIGKILL to every process. If this file is non-existing the builtin value from +'sleep_kill'. + +The file should be located below conf/ diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/sleep_kill b/software/cinit/browse_source/cinit-0.3pre8/conf/sleep_kill new file mode 100644 index 00000000..b419241a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/sleep_kill @@ -0,0 +1,8 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. + +Note: This does NOT affect terminating services, they are shutdown by +their own 'off' functions. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.3pre8/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.3pre8/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/sleep_svc b/software/cinit/browse_source/cinit-0.3pre8/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/sock_queue b/software/cinit/browse_source/cinit-0.3pre8/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/strip b/software/cinit/browse_source/cinit-0.3pre8/conf/strip new file mode 100644 index 00000000..08736418 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/strip @@ -0,0 +1,3 @@ +strip -R .comment -R .note + +Strip out unecessary parts of the binaries. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/sulogin b/software/cinit/browse_source/cinit-0.3pre8/conf/sulogin new file mode 100644 index 00000000..24859afc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/sulogin @@ -0,0 +1,6 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it, if the standard panic +action fails (as specified in cinit_dir/c_confdir/panic). + +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/svcdir b/software/cinit/browse_source/cinit-0.3pre8/conf/svcdir new file mode 100644 index 00000000..087a3848 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/svcdir @@ -0,0 +1,3 @@ +svc + +Directory below /etc/cinit that contains the services. diff --git a/software/cinit/browse_source/cinit-0.3pre8/conf/version b/software/cinit/browse_source/cinit-0.3pre8/conf/version new file mode 100644 index 00000000..64bf3eae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/conf/version @@ -0,0 +1,3 @@ +"0.3pre8" + +The version. diff --git a/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/Makefile b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/Makefile new file mode 100644 index 00000000..8441c90b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/Makefile @@ -0,0 +1,70 @@ +# +# (c) 2005 Peter Portmann (pp at bluewin.ch) +# cinit/contrib+tools +# +# This script is written for the clinux-System and published +# under the terms of GPL 2.0 +# +# Version: 0.2 +# clean with a single command instead of two commands. +# +# ChangeLog: +# 0.1 initial version +# +# Todo: +# +# Features: + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +DEBUG=-g -DDEBUG +#OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! +LDFLAGS= + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. -I../ +LD=gcc +STRIP=strip -R .comment -R .note + +INSTALL = install + +prefix = /usr +bindir = $(prefix)/bin + +# objects + +CLIENT=cinit.graph.text.o + +COMMUNICATION=error.o ../generic/usage.o ../generic/mini_printf.o + +OBJ=$(CLIENT) $(COMMUNICATION) + +# +PROGRAMS=cinit.graph.text +SCRIPTS=cconfig.graph.xml.rb \ + make.cconfig.from.xml.rb \ + cinit-vis.pl + +# targets +all: $(PROGRAMS) + +cinit.graph.text: $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +clean: + rm -f *.o $(PROGRAMS) + +install: all + @echo '*** Installing contrib+tools ***' + $(INSTALL) -d -m755 $(DESTDIR)$(bindir) + for bin in $(SCRIPTS) $(PROGRAMS); do \ + $(INSTALL) $$bin $(DESTDIR)/$(bindir); \ + done diff --git a/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/README b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/README new file mode 100644 index 00000000..85fa2f5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/README @@ -0,0 +1,11 @@ +contrib+tools/ + programs written by others and external tools not necessary + needed but (very) nice to have + + + cinit-vis.pl - draw an ascii graph of cinit configuration [perl] + cinit.graph.text - draw an ascii graph of cinit configuration [c] + + cconfig.graph.xml.rb - creates a xml file from a cconfig [ruby] + make.cconfig.from.xml.rb - creates a cconfig from a xml file [ruby] + diff --git a/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/README.ruby b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/README.ruby new file mode 100644 index 00000000..ed210cee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/README.ruby @@ -0,0 +1,7 @@ +The ruby tools for general cconfig [0] are written by René Nussbaumer [1]. +You can find the documentation for them at [2]. + + +[0]: http://nico.schotteli.us/papers/linux/cconfig/ +[1]: http://killerfox.forkbomb.ch/ +[2]: http://killerfox.forkbomb.ch/articles/cconfig/tools diff --git a/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/cconfig.graph.xml.rb b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/cconfig.graph.xml.rb new file mode 100644 index 00000000..d18ba422 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/cconfig.graph.xml.rb @@ -0,0 +1,117 @@ +#!/usr/bin/env ruby + +=begin + + Writes an XML-Tree for a cconfig directory + Idea by Nico Schottelius aka telmich + Implemented and (C) by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added support for binary files + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Changed checking order: symlink, directory, file. Because of + a logical bug -> directory follows symlink so, when a symlink + points to a directory no «link» element is created. + + Version 0.1 (René Nussbaumer): + * Holy hack for directory scanning (needs to be optimized) + * Hack for rexml to print out «lost» tags. This rexml sux. + + Todo: + * Optimize scanning. + * Use another xml library instead of rexml crap. + Problem: Produce dependencies -> no std-lib + + Features: + * Create a flat (no deepnes without directory) and 1:1 image + of an cconfig directory + +=end + +require 'rexml/document' +require 'base64' +require 'digest/sha1' + +require 'filemagic' + +@version = '0.3' + +def determineTarget(entry) + return 'external' if(!File.expand_path(entry).index(@initpath)) + return 'link' if(FileTest.symlink?(entry)) + return 'object' if(FileTest.directory?(entry)) + return 'attribute' if(FileTest.file?(entry)) + return 'unknown' # Should never be reached +end + +def createTree(dir, parent) + dir.each { |entry| + next if(entry =~ /^(\.|\.\.)$/) + + if(FileTest.symlink?(entry)) + e = parent.add_element('link') + + # Much fun with links + e.add_attributes( { 'name' => entry, 'target' => determineTarget(File.readlink(entry)) } ) + e.add_text(File.readlink(entry)) + elsif(FileTest.directory?(entry)) + e = parent.add_element('object') + e.add_attribute('name', entry) + + # Bad, that we need to change the directory every time. + oldPwd = Dir.pwd + Dir.chdir(entry) + createTree(Dir.new('.'), e) + Dir.chdir(oldPwd) + elsif(FileTest.file?(entry)) + e = parent.add_element('attribute') + e.add_attribute('name', entry) + if(File.stat(entry).size?) + # Yeah, we got one WITH content! W00h00, let's party. + + fm = FileMagic.new(FileMagic::MAGIC_MIME) + if(fm.file(entry) =~ /executable/) + e.add_attribute('type', 'binary') + text = File.new(entry).read + e.add_attribute('sha1', Digest::SHA1.hexdigest(text)) + e.add_text(Base64.encode64(text)) + else + e.add_text(File.new(entry).read) + end + fm.close() + end + end + } +end + + +if(!ARGV[0] || !FileTest.directory?(ARGV[0])) + puts 'You need to specify a directory' + Kernel.exit(-1) +end + +doc = REXML::Document.new + +e = doc.add_element('cconfig') +e.add_attribute('name', File.basename(ARGV[0])) +e.add_attribute('version', @version) + +@initpath = File.expand_path(ARGV[0]) +Dir.chdir(ARGV[0]) +createTree(Dir.new('.'), doc.root) + +out = '' +doc.write(out, 0, false, true) + +REXML::XMLDecl.new('1.0', 'utf-8').write($stdout) # This should automatically printed by rexml. Damn bugs. +puts '' +puts out # Workaround for a buggy rexml + diff --git a/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/cinit-vis.pl b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/cinit-vis.pl new file mode 100644 index 00000000..3956ff47 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/cinit-vis.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# (c) by Marcus Przyklink (downhill-clinux@burningchaos.org) +# written for cinit and published under GPL +# beautified a bit by Nico Schottelius +# optimized by René Nussbaumer +# Version: 0.1 + +use strict; +use warnings; + +# +# Variables for location and output +# +# cinit-directory +my $path = "/etc/cinit/"; +# started profile +my $starting_point = "init"; +# the spaces for each level (integer: amount of spaces) +my $space = 3; +# marker for need +my $need = "-->"; +# marker for want +my $want = "==>"; + +# +# main function, recursively list the components of the cinit system +# +if (@ARGV) { + if( $ARGV[0] =~ /-(h|-help)/ ) { + print "Usage: " . __FILE__ . " without parameters for standard-use (check variables in file)\n"; + print " Parameters:\n"; + print " -h for this help\n"; + print " profile-name for a profile\n"; + exit(0); + } + else { + $starting_point = $ARGV[0]; + } +} + +# +# start first instance +# +sub get_deeper { + my ($point, $tmp_counter, $need_want) = splice @_; + + print " " x ($space * $tmp_counter) . ($need_want ? $need : $want) . " " . $point . "\n"; + + opendir(DIR, "${path}${point}/needs") and + my @next_need = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + opendir(DIR, "${path}${point}/wants") and + my @next_want = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + + for(@next_need) { + get_deeper($_, $tmp_counter + 1, 1); + } + for(@next_want) { + get_deeper($_, $tmp_counter + 1, 0); + } +} + +# +# start first instance +# +get_deeper($starting_point, 0, 0); + +# +# work done, go home +# +exit(0); diff --git a/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/cinit.graph.text.c b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/cinit.graph.text.c new file mode 100644 index 00000000..bc6fb6ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/cinit.graph.text.c @@ -0,0 +1,200 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + cinit.graph.text.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.2 + + ChangeLog: + Version 0.2 (Peter Portmann): + * Not assigned link destinies are marked by (!). + * Not readable directories are marked by "directory not readable". + + Version 0.1 (Peter Portmann): + * Print of the directory structure of the contained files and links + without following the links. + + Todo: + + Features: +*/ + +//#include +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" +#include "error.h" + +#define FTW_F 1 /* file isn't a directory */ +#define FTW_D 2 /* file is a directory */ +#define FTW_DNR 3 /* not readable directory */ +#define FTW_NS 4 /* unsuccesfully stat on this file */ +#define MAX_CHAR 4096 + +/*********************************************************************** + * cinit.gaph.text - textual representation of the cinit directory + */ + +#define CSERVICE_BANNER "cinit.gaph.text - textual representatio of the cinitdirectory\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncinit.gaph.text \n" \ + "\tpath\t- cinit installationpath\n" + +typedef int EACH_ENTRY(const char *, const struct stat *, int); +typedef enum { FALSE=0, TRUE=1 } bool; + +static char dirpath[PATH_MAX]; +static int depth = 0; +static long int filecount = 0; + +static EACH_ENTRY each_entry; +static int pp_ftw(char *, EACH_ENTRY *); +static int each_getinfo(EACH_ENTRY *); + +/*********************************************************************** + * pp_ftw: file tree walk + */ +static int pp_ftw(char *filepath, EACH_ENTRY *function) +{ + int n; + + if(chdir(filepath) < 0) /* In angegebenen Pfad wechseln */ + err_msg(FATAL_SYS, "can't change to %s", filepath); + + if(getcwd(dirpath, PATH_MAX) == 0) /* Absoluten Pfadnamen ermitteln */ + err_msg(FATAL_SYS, "error using getcwd for %s", filepath); + + n = each_getinfo(function); + + return(n); +} + +/*********************************************************************** + * each_getinfo: get more info for each file. + */ +static int each_getinfo(EACH_ENTRY *function) +{ + struct stat statpuff; + struct dirent *direntz; + DIR *dirz; + int n; + char *zgr; + + if(lstat(dirpath, &statpuff) < 0) + return(function(dirpath, &statpuff, FTW_NS)); /* Error on stat */ + + if(S_ISDIR(statpuff.st_mode) == 0) + return(function(dirpath, &statpuff, FTW_F)); /* no directory */ + + /* It's a directory. + * Call function() for it. After that handel each file in the directory. */ + + if((dirz = opendir(dirpath)) == NULL) { /* Directory not readable */ + closedir(dirz); + return(function(dirpath, &statpuff, FTW_DNR)); + } + + if((n = function(dirpath, &statpuff, FTW_D)) != 0) /* return the directorydirpath */ + return(n); + + zgr = dirpath + strlen(dirpath); /* append slash to the dirpathname */ + *zgr++ = '/'; + *zgr = '\0'; + + while((direntz = readdir(dirz)) != NULL) { + /* ignor . and .. */ + if(strcmp(direntz->d_name, ".") && strcmp(direntz->d_name, "..")) { + strcpy(zgr, direntz->d_name); /* append filename after slash */ + depth++; + if(each_getinfo(function) != 0) { /* Recursion */ + depth--; + break; + } + depth--; + } + } + *(zgr-1) = '\0'; /* deleting evrything after the slash */ + + if(closedir(dirz) < 0) + err_msg(WARNING, "closedir for %s failed", dirpath); + + return(n); +} + +/*********************************************************************** + * each_entry: handling each file and build the graph step by step. + */ +static int each_entry(const char *filepath, const struct stat *statzgr, int filetype) +{ + struct stat statpuff; + static bool erstemal=TRUE; + int i; + + char link[MAX_CHAR]; + + filecount++; + if(!erstemal) { + for(i=1 ; i<=depth ; i++) + printf("%4c|", ' '); + printf("----%s", strrchr(filepath, '/')+1); + } else { + printf("%s", filepath); + erstemal = FALSE; + } + + switch(filetype) { + case FTW_F: + switch(statzgr->st_mode & S_IFMT) { + case S_IFREG: break; + case S_IFCHR: printf(" c"); break; + case S_IFBLK: printf(" b"); break; + case S_IFIFO: printf(" f"); break; + case S_IFLNK: + printf(" -> "); + if(( i=readlink(filepath, link, MAX_CHAR)) != -1) + printf("%.*s", i, link); + if(stat(filepath, &statpuff) < 0) + printf(" (!)"); + break; + case S_IFSOCK: printf(" s"); break; + default: printf(" ?"); break; + } + printf("\n"); + break; + + case FTW_D: + printf("/\n"); + break; + + case FTW_DNR: + printf("/ directory not readable\n"); + break; + + case FTW_NS: + err_msg(WARNING_SYS, "Error using 'stat' on file %s", filepath); + break; + + default: + err_msg(FATAL_SYS, "Unknown Filetype (%d) by file %s", filetype, filepath); + break; + } + + return(0); +} + +/*********************************************************************** + * main: + */ +int main(int argc, char *argv[]) +{ + if(argc != 2) + usage(CSERVICE_BANNER, USAGE_TEXT); + + exit(pp_ftw(argv[1], each_entry)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/error.c b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/error.c new file mode 100644 index 00000000..8174c702 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/error.c @@ -0,0 +1,124 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#include "error.h" +#include +#include +#include +#include +#include +#include + +#define MAX_CHAR 4096 + +int debug; /* Aufrufer von log_msg oder log_open muss debug setzen: + 0, wenn interaktiv; 1, wenn Daemon-Prozess */ + +/*---- Lokale Routinen zur Abarbeitung der Argumentliste --------------------*/ +static void msg_err(int sys_msg, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + return; +} + +static void msg_log(int sys_msg, int prio, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + if (debug) { + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + } else { + strcat(puffer, "\n"); + syslog(prio, puffer); + } + return; +} + +/*---- Global aufrufbare Fehlerroutinen -------------------------------------*/ +void err_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_err(0, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + case DUMP: + msg_err(1, fmt, az); + break; + default: + msg_err(1, "Falscher Aufruf von err_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + else if (kennung==DUMP) + abort(); /* core dump */ + exit(1); +} + +void log_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_log(0, LOG_ERR, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + msg_log(1, LOG_ERR, fmt, az); + break; + default: + msg_log(1, LOG_ERR, "Falscher Aufruf von log_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + exit(2); +} + +/*---- log_open --------------------------------------------------------------- + initialisiert syslog() bei einem Daemon-Prozess */ +void log_open(const char *kennung, int option, int facility) +{ + if (debug==0) + openlog(kennung, option, facility); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/error.h b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/error.h new file mode 100644 index 00000000..a55690fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/error.h @@ -0,0 +1,29 @@ +#ifndef ERROR_H +#define ERROR_H +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.h + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#define WARNING 0 +#define WARNING_SYS 1 +#define FATAL 2 +#define FATAL_SYS 3 +#define DUMP 4 + +void log_msg(int kennung, const char *fmt, ...); +void err_msg(int kennung, const char *fmt, ...); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/make.cconfig.from.xml.rb b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/make.cconfig.from.xml.rb new file mode 100644 index 00000000..05f35cc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/contrib+tools/make.cconfig.from.xml.rb @@ -0,0 +1,227 @@ +#!/usr/bin/env ruby + +=begin + + Create a cconfig directory based on a xml input. + (C) 2005 by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added binary file support + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Added some commandline options + * Added «level» so control the restrictivity of the program + * Added more «intelligence» to the program, to detect internal broken dependcies. + * Support «debug»-Levels. + * Print statistic at the end of the programs about warnings and errors. + + Version 0.1 (René Nussbaumer): + * Initial + + Todo: + * Use an rexml alternative + * Some cleanup + * Optimize + * Testing? + + Features: + * Create a cconfig directory based on a xml + +=end + +require 'rexml/document' +require 'getoptlong' +require 'base64' +require 'digest/sha1' + +@verbose = 0 +@level = 1 +@version = '0.3' + +@warnings = 0 +@errors = 0 +@checklist = Array.new + +def printMsg(prefix, msg) + puts '%-12s %s' % [prefix + ':', msg] +end + +def error(msg, fatal = 0) + @errors += 1 + fatal = 0 if(@level < 1) + fatal = 255 if(@level > 1 && !fatal) + printMsg(fatal != 0 ? 'PANIC' : 'ERROR', msg) + Kernel.exit(-fatal) if(fatal != 0) +end + +def warn(msg) + error(msg, 1) if(@level > 1) + @warnings += 1 + printMsg('WARNING', msg) +end + +def info(msg) + printMsg('INFO', msg) +end + +def debug(msg, verbosity = 1) + if(@verbose >= verbosity) + printMsg("DEBUG(#{verbosity})", msg) + end +end + +def createObject(name) + error("#{name} already exists.", 1) if(FileTest.exists?(name)) + begin + Dir.mkdir(name) + rescue + error("Could not create directory #{name}: #{$!}. Abort.", 7) + end + debug("Object #{File.expand_path(name)} has been created.", 4) +end + +def createAttribute(name, content = nil) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + begin + file = File.new(name, 'w') + file.print content if(content && !content.empty?) + file.close + debug("Attribute #{File.expand_path(name)} has been created", 4) + rescue + error("Could not create file #{name}: #{$!}. Skipped.") + end +end + +def createLink(name, target, type) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + error("Broken dependencies! Please take a look if #{target} exists on your system", 2) if(type == 'external' && !FileTest.exists?(target)) + if(!FileTest.exists?(target) && type != 'external') + #info("Possible break. But maybe the target #{target} does not yet exists. Checking later.") + exptarget = File.expand_path(target) + @checklist << exptarget + debug("Adding #{target} to the list of internal dependcies to check.", 2) + end + begin + error('You\'ve a system which does not support symbolic links. Abort.', 3) if(File.symlink(target, name) != 0) + rescue + error("Could not create symlink #{name} => #{target}: #{$!}.", 3) + end + debug("Link #{File.expand_path(name)} has been created", 4) +end + +def doWork(elm) + name = elm.name + attrname = elm.attributes['name'] + error("XML Tag with missing name attribute!", 5) if(!attrname) + if(name =~ /(object|cconfig)/) + if(name == 'cconfig') + if(elm.attributes['version']) + info("Found a version string: #{elm.attributes['version']}") + warn("This XML is maybe incompatible with this programm. I'm a version #{@version} script. The XML is generated with a version #{elm.attributes['version']} script. Please update.") if(elm.attributes['version'] > @version) + end + end + createObject(attrname) + if(elm.has_elements?) + pwd = Dir.pwd + Dir.chdir(attrname) + elm.each_element { |e| + doWork(e) + } + Dir.chdir(pwd) + end + elsif(name == 'attribute') + text = nil + e = nil + text = e.value if((e = elm.get_text)) + if(text && elm.attributes['type'] && elm.attributes['type'] == 'binary') + text = Base64.decode64(text) + if(Digest::SHA1.hexdigest(text) != elm.attributes['sha1']) + warn("SHA1 differs from file: #{Dir.pwd}#{attrname}") + end + end + createAttribute(attrname, text) + elsif(name == 'link') + error("link-Tag without content.", 6) if(!elm.has_text?) + error("link with missing target. Skipped.") if(!elm.attributes['target']) + createLink(attrname, elm.get_text.value, elm.attributes['target']) + end +end + +puts "This is #{File.basename(__FILE__)} v#{@version} by René Nussbaumer" +puts + +opts = GetoptLong.new( + ['--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT], + ['--level', '-l', GetoptLong::REQUIRED_ARGUMENT], + ['--version', '-V', GetoptLong::NO_ARGUMENT] +) + +opts.each { |arg,value| + case arg + when '--verbose' + @verbose += 1 + value.each_byte { |x| + if(x.chr == 'v') + @verbose += 1 + end + } + debug("Verbosity set to: #{@verbose}") + when '--level' + debug("Setting level to: #{value}", 3) + case value + when 'low' + @level = 0 + when 'normal' + @level = 1 + when 'paranoid' + @level = 2 + else + warn('Unknown level: ' + value) + end + when '--version' + Kernel.exit(0) + else + warn("Unknown option #{arg}#{value && !value.empty? ? ('with value ' + value) : ''}") + end +} + +if(!ARGV[0]) + puts 'Need at least one argument' + puts "Usage: #{__FILE__} " + Kernel.exit(1) +end + + +filedesc = $stdin + +if(ARGV[0] != '-') + filedesc = File.new(ARGV[0]) +end + +doc = REXML::Document.new filedesc + +doWork(doc.root) + +if(!@checklist.empty?) + info('Now checking all broken internal dependcies again') + broken = 0 + @checklist.each { |path| + debug("Checking #{path}.", 2) + if(!FileTest.exists?(path)) + broken += 1 + warn("Broken dependcies. #{path} does not exist. Please fix.") + end + } + info('Looks good.') if(broken == 0) + info('Bad, bad.') if(broken > 0) +end + +info("Successed. #{@warnings} warnings, #{@errors} errors") + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/.buildwarn b/software/cinit/browse_source/cinit-0.3pre8/doc/.buildwarn new file mode 100644 index 00000000..3a0354dd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/.buildwarn @@ -0,0 +1,23 @@ +**************************************************************************** +Welcome, cinit greets you. +**************************************************************************** + +Hints: +------ + - Settings used for compiling (not only) can be found in conf/* + - The boot configuration normally resides below /etc/cinit + +Documentation +------------- +The documentation can be found in doc/: + + - doc/user/ contains documentation for users + - doc/devel/ contains documentation for developers + + Please read doc/user/installing-cinit.text _BEFORE_ installing. + +Building cinit +-------------- + + "make all" - to build cinit + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/Makefile b/software/cinit/browse_source/cinit-0.3pre8/doc/Makefile new file mode 100644 index 00000000..13140d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/Makefile @@ -0,0 +1,96 @@ +# +# Makefile stolen from ccollect +# Nico Schottelius, Fri Jan 13 12:13:08 CET 2006 +# + +ASCIIDOC=asciidoc +DOCBOOKTOTEXI=docbook2x-texi +DOCBOOKTOMAN=docbook2x-man +XSLTPROC=xsltproc +XSL=/usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl + +# +# Asciidoc will be used to generate other formats later +# +MANDOCS = man/cinit.text +USERDOCS = user/compiles.on.text user/configuring.cinit.text \ + user/conf-system.text \ + user/cross-compiling.text user/current-init-problems.text \ + user/daemons.backgrounding.text user/dependencies.text \ + user/example-directory-structure.text \ + user/installing-cinit.text user/paths.text \ + user/profiles.text user/README.text +DEVELDOCS = devel/codingguideline.text +DOCS = $(MANDOCS) $(USERDOCS) $(DEVELDOCS) + +# +# Doku +# +HTMLDOCS = $(DOCS:.text=.html) +DBHTMLDOCS = $(DOCS:.text=.htm) + +TEXIDOCS = $(DOCS:.text=.texi) + +MANPDOCS = $(MANDOCS:.text=.man) + +DOCBDOCS = $(DOCS:.text=.docbook) + +DOC_ALL = $(HTMLDOCS) $(DBHTMLDOCS) $(TEXIDOCS) $(MANPDOCS) + +# +# End user targets +# +help: + @echo "----------- documentation make targets --------------" + @echo "documentation: generate HTML, Texinfo and manpage" + @echo "html: only generate HTML (via asciidoc/docbook/xsltproc)" + @echo "htm: only generate HTML (via asciidoc)" + @echo "info: only generate Texinfo" + @echo "man: only generate manpage(s)" + +install: + +# +# Internal targets +# +html: $(HTMLDOCS) +htm: $(DBHTMLDOCS) +info: $(TEXIDOCS) +man: $(MANPDOCS) +documentation: $(DOC_ALL) + + +# +# Generic targets +# + +# docbook gets .htm, asciidoc directly .html (or the other way round) +%.html: %.docbook + ${XSLTPROC} -o $@ ${XSL} $< + +%.htm: %.text + ${ASCIIDOC} -n -o $@ $< + +%.docbook: %.text + ${ASCIIDOC} -n -b docbook -o $@ $< + +%.texi: %.docbook + ${DOCBOOKTOTEXI} --to-stdout $< > $@ + +%.mandocbook: %.text + ${ASCIIDOC} -b docbook -d manpage -o $@ $< + +%.man: %.mandocbook + ${DOCBOOKTOMAN} --to-stdout $< > $@ + +# +# Distribution +# +clean distclean: + rm -f $(DOC_ALL) + +# +# Be nice with the users and generate documentation for them +# +dist: distclean documentation + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/README.text b/software/cinit/browse_source/cinit-0.3pre8/doc/README.text new file mode 100644 index 00000000..46fe59fe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/README.text @@ -0,0 +1,57 @@ +cinit/doc +========= +Nico Schottelius +0.1, Initial Version from 2006-11-30 +:Author Initials: NS + +This directory contains the cinit documentation. + +Files and directories in this directory +---------------------------------------- + +ancient +~~~~~~~ +Old documents, only thought to irritate you. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +braindumps +~~~~~~~~~~ +Files I used to make the situation clear to myself. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +devel +~~~~~ +Developer related documents. Contains information for adding code, +for developing external tools to cinit or code guidelines for writing +patches to cinit. + + +logs +~~~~ +Logfiles or raw data dumps. + + +Makefile +~~~~~~~~ +The makefile used to generate the documentation. + + +man +~~~ +Manpages. + + +README.text +~~~~~~~~~~~ +This file + + +user +~~~~ +The most important part: Documentation for users (aka sysadmins, +hackers, endusers?): Explains howto install, configure, use and +debug cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/README b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/README new file mode 100644 index 00000000..45e193f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/README @@ -0,0 +1,16 @@ +Ancient +======= +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 + + +These files may be incorrect, outdated, totally wrong or even trying +to take over world dominance. + + +Why are they still there? +------------------------- + +Just because to document the early days of cinit. If you are +a software archaeologist in the year 2423, you'll be happy that +I saved those files. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/caveats b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/caveats new file mode 100644 index 00000000..5ab123e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/caveats @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/author b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/availability b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/availability new file mode 100644 index 00000000..cfb3f8a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/availability @@ -0,0 +1 @@ +cinit is currently Linux-specific. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/examples b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/examples new file mode 100644 index 00000000..1a7d2dcb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/examples @@ -0,0 +1 @@ +See http://linux.schottelius.org/cinit/#config diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/files b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/files new file mode 100644 index 00000000..4d6c0921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/files @@ -0,0 +1,5 @@ +/sbin/cinit - the init system +/sbin/cservice - control cinit +/sbin/cinit.reboot (/sbin/reboot if non-existent before) +/sbin/cinit.shutdown (/sbin/shutdown if non-existent before) +/etc/cinit - configuration directory diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/long_description b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/long_description new file mode 100644 index 00000000..18c3c082 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/long_description @@ -0,0 +1,5 @@ +cinit is a fast executing, small and simple init with support for profiles. It +minds dependencies (hard and soft, 'needs' and 'wants') and executes processes +in parallel. And it has a simple configuration, which makes many shell-scripts +unecessary (but you still could use them if you really want), which leads to +better performance and less memory using. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/meta/name new file mode 100644 index 00000000..b853da25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/meta/name @@ -0,0 +1 @@ +cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/parameters b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/parameters new file mode 100644 index 00000000..54df4727 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/parameters @@ -0,0 +1 @@ +cprofile: diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/path b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/path new file mode 100644 index 00000000..37edf339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/path @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/see also b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit.commands b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit.commands new file mode 100644 index 00000000..d34d13bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cinit.commands @@ -0,0 +1,73 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (using SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. +CMD_UPDATE: Update cinit, hot-reboot the system. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/author b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/long_description b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/long_description new file mode 100644 index 00000000..82818a93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/long_description @@ -0,0 +1 @@ +cservice controls cinit. Please use cservice -h for help. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/meta/name new file mode 100644 index 00000000..49c847bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/meta/name @@ -0,0 +1 @@ +cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/parameters b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/parameters new file mode 100644 index 00000000..605b08b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/parameters @@ -0,0 +1 @@ +[-eaphru] [thilo] diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/path b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/path new file mode 100644 index 00000000..85b0cb56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/path @@ -0,0 +1 @@ +/sbin/cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/see also b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/cservice-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/extern/README b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/extern/README new file mode 100644 index 00000000..e734d6d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/extern/README @@ -0,0 +1,2 @@ +doc/extern/ + Some things related to cinit from the outside world. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/extern/ipc.thoughts b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/extern/ipc.thoughts new file mode 100644 index 00000000..e2619d34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/extern/ipc.thoughts @@ -0,0 +1,83 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2 ), +1024 is the maximum opened file deskriptors, +minus 3 (stdin/stdout/stderr) already opened, divided +by two, because two fds needed per client. + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt, + - poweroff, + - update itself (hot-reboot) + - and to start a rescue mode (see using.rescue). + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + CONT: update + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/extern/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/extern/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/extern/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/extern/linux.kernel.eats.arguments b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/extern/linux.kernel.eats.arguments new file mode 100644 index 00000000..dbaf57d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/extern/linux.kernel.eats.arguments @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +Linux, the kernel, eats arguments +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +If you specify + + variable=value + +to the Linux kernel, the argument will NOT be passed to cinit. + +Here's the relevant code block from init/main.c of the Linux kernel: + +------------------------------------------------------------------------------- + +From init(void * unused) the function run_init_process(char *init_filename) +is called, which passes argv_init (char * argv_init[MAX_INIT_ARGS+2]) to init. + +First init_setup(char *str) resets all elements of the argv_init to NULL. + +The function unknown_bootoption(char *param, char *val) fills the +argv_init array, but only with parameters, which have no value +(val). + +The function parse_args calls unknown_bootoption with the unknown options. + +------------------------------------------------------------------------------- + +This way the profile support in all cinit versions below cinit-0.1 will +only work if you change conf/profile, because "cprofile=value" will +not be given to cinit, because it's not treated as a command line option. + +The original value "cprofile=" is replaced by "cprofile:" as of cinit-0.1. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/extern/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/extern/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/extern/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/fun-testing b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/fun-testing new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/fun-testing @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/how_it_works_internally b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/init-idea-first b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/init-idea-first new file mode 100644 index 00000000..2d677d8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/init-idea-first @@ -0,0 +1,38 @@ +- restarting/respawning + touch respawn +- dependencies + a needs started b +- clean multiply dependencies +- start & stop dependencies + start_depends + stop_depends +- parallel executation +- start and stop commands + start -> link + start_param -> parameters, like minit + stop -> link + stop_param -> parameters, like minit + + if no stop command is available, try to kill the pid we started at stop + +/startup/ + start_depends=gettys +/shutdown/ + stop_depends=power_off + + +gettys/ + start_depends=getty/1 + start_depends=getty/2 + start_depends=getty/3 + start_depends=getty/4 ... + +getty/1/ + start=/sbin/fgetty + respawn + +power_off/ + stop_depend=umount + +umount/ + stop_depend= diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/porting.to.other.os b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/porting.to.other.os new file mode 100644 index 00000000..65fdc07b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will perhaps become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/removing.zombies b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/removing.zombies new file mode 100644 index 00000000..9527e652 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + cinit in general will keep the behaviour of reaping the vestiges, + which broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/security b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/security new file mode 100644 index 00000000..f1dac591 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/security @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation, which will not accept connect() +by others than root. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console then! + +For extra parnoid settings you can do the following: + + ei # chmod 700 /etc/cinit/tmp/coala + ei # chown root:root /etc/cinit/tmp/coala diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/socket.poll_vs_o_async b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/socket.poll_vs_o_async new file mode 100644 index 00000000..477f2bff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/socket.poll_vs_o_async @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------------- +Socket: poll(2) vs. O_ASYNC, +Nico Schottelius 2005-06-22 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +0. General problem +1. O_ASYNC +2. poll(2) + + +0. General problem + +cinit has to react, as soon as there's data on the socket. + +1. O_ASYNC + +When you open a socket with O_ASYNC (or specify it with fcntl(2)) under +Linux, your process recieves the SIGIO signal from the kernel, as soon +as data is available. + +The problem is the handling of signals seems not to be serialised: + +The function, which is called on the SIGIO signal (called sigio() here) +calls other functions. Those functions way recieve SIGIO while working, +so the first data stream is not yet finished, though the next +stream is beeing read. + +This gives very nice race-conditions, which are very nice to debug. + +2. poll(2) + +poll(2) is a standard Unix-call (XPG4-UNIX), which waits a specific +timeout (or infinite time if you specify a value less that zero) for +the socket (or the fd in general) to be in a state where +data is available to read (in fact poll can do much more, but we are +not interested only in POLLIN and POLLPRI). + +While poll(2) seems to be a very bit slower than sigio it works reliable. + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/thoughts.closed b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/thoughts.closed new file mode 100644 index 00000000..91a8e080 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/ancient/thoughts.closed @@ -0,0 +1,52 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c + +7. Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. As this is not needed + currently, it's not implemented. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/README.text b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/README.text new file mode 100644 index 00000000..c4947a13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/README.text @@ -0,0 +1,2 @@ +DO NOT READ CONTENT IN THIS DIRECTORY. +(or at least do not blame me, if you get really confused after reading it) diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/big-picture.text b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/big-picture.text new file mode 100644 index 00000000..4426c236 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/big-picture.text @@ -0,0 +1,122 @@ +Just a small hint-file for me to see how cinit works: + + - cinit starts + * cinit executes either init or a profile + - the dependency-tree begins + + - now cinit begins to try to execute the dependencies + * first the needs (if those fail, wants are never called) + - fork() for every dependency? + +-------------------------------------------------------------------------------- +another idea: + + - cinit starts + - cinit reads the full depedency tree + * it builds n-depth trees + * it begins at the set init service (profile or init!) + * init is the first entry. always. + * read full service information (like on/off/params/respawn) + * design of each tree element: see below + - add a tree for the needs + - add a tree for the wants + - the elements have links, one service is created only once + - after the tree is created, execution begins + * begin from the bottom + * save a pointer to the last level somehow before? + +Pre calculation: + - need to act on changes (some kind of file watcher) + * need to keep status (?) + * what with now missing needs / wants? + - missing needs: shutdown now missing needs? + - simply ignore them? + - shut them down if not needed (no one has a link in needs?) + * +-------------------------------------------------------------------------------- +Sample dependency tree: + + init + / \ + needs wants + / | \ / | \ + a b c d e f + / | \ / | \ + needs needs needs END needs END + / | \ \ | | | | + b c d c f a e a +-------------------------------------------------------------------------------- +How this would be sorted:: + init: + needs: a b c + wants: d e f + a: + needs: b c d + b: + needs: c f + c: + needs: a e + d: + - + e: + needs: a + f: + - +-------------------------------------------------------------------------------- +So in this case, cinit may start services the following way: + d f + -> Wouldn't be possible in pre-calculation, because of circular dependencies. +-------------------------------------------------------------------------------- + Try a 'real' dependency tree: + a needs b c d + b needs c d + c and d do not need other stuff +-------------------------------------------------------------------------------- +Now cinit would it do the following way: + start c, start d + b will be started, as soon as c and d successfully finish + as soon as b is finished, a will be started +-------------------------------------------------------------------------------- +Now let's think about how this could look like in code... +- when we built up the tree, we have some ends (n to say) +- we can / must start starting (;-) at the end +- we would have more than one line back (z may be needed by c, i, and a) + * like in "c is needed by s, c, o" + * maxdepth counter? + * asynchronous rollback? + +--> to think more about it! +-------------------------------------------------------------------------------- + +tree elements: + * name (= path) + * on, off, +params + * respawn_delay + - -1 if not respawning + - >= 0 time to wait between restart + * status + - NOT STARTED (status on initialisation) + - RESPAWNING (running, respawning) + - RESPAWN_DELAY (waiting to respawn it) + - ONCE (started once) + * errormsg + - pointer to an error message in case of failure + * needs + - List of services we need + * wants + - List of services we want + * used_by + - List of services which use this service +-------------------------------------------------------------------------------- + +Conclusions +------------ + +cinit as the main executor +~~~~~~~~~~~~~~~~~~~~~~~~~~ +If cinit should start all services directly and manage dependencies +only internally, it will need to have build a reverse dependency tree, +so it begins starting at the end. + +cinit could execute all possible parallel running services in parallel +and open pipes to the (dumb) service executors. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/circular-dependencies.text b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/circular-dependencies.text new file mode 100644 index 00000000..dcc91ea7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/circular-dependencies.text @@ -0,0 +1,35 @@ +What todo with circular dependencies? + a needs b + b needs a + + - try to start them? + status a: is_starting + status b: not_set + a wants b, so a service starter for b starts + status a: is_starting, waiting for b + status b: is_starting + service starter for b sees that a is needed + service starter for b sees that a is already being started + service starter for b begins to execute b + status a: is_starting, waiting for b + status b: is_starting, executing "on" + service starter b finishes + status a: is_starting, waiting for b + status b: FAILED | RESPAWN | ONCE + service a continues + b successful: execute on + b failed: register / print that we do not start, because + b failed + + -> this would only catch possible deadlocks, if the dependency + tree / status check is done dynamically + -> in case of pre-building the dep-tree this situation must + be concerned: + - start both a and b? + - or stop due to circular dependency? + + - Abort on detection of a circular dependency + * possible without pre-calculating? + - perhaps only with direct communication possible? + * pre calculate + - do not start that services? diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/converting-debian b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/converting-debian new file mode 100644 index 00000000..ee40fdff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/converting-debian @@ -0,0 +1,30 @@ +# If you would like to automatically convert a debian system, you could +# use this script as a start point +# +# how it could look like +# + +# create cinit base configuration + +# analyse enabled services +level=$(awk -F: '/^id/ { print $2 }' /etc/inittab) +rcdir="/etc/rc${level}.d/" +initdir=/etc/init.d + +cd "$rcdir" +for svc in *; do + if [ -d "${debian_map_dir}/${svc}" ]; then + echo "Adding $svc" + else + + fi +done + +# Also add existing services in /etc/init.d +for ... + if [ ! -e $rcdir/$svc ] + if [ -d "${debian_map_dir}/${svc}" ]; then + echo "Adding, but not enabling" + fi + fi +done diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/converting-general b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/converting-general new file mode 100644 index 00000000..8a0a2e40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/converting-general @@ -0,0 +1,10 @@ +kern=$(uname -s) + +case "${kern}" in + $known_kern) + $scriptdir/$kern + ;; + *) + echo "Unknown system" + ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/creating-new-configurations b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/creating-new-configurations new file mode 100644 index 00000000..a251de5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/creating-new-configurations @@ -0,0 +1,6 @@ +scripts/create_baseconfig.sh # create base +scripts/cinit.install.standard.dirs # create common categories + +- create fsck +- set hostname +- create getty(s) diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/messages.text b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/messages.text new file mode 100644 index 00000000..f4ef769e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/messages.text @@ -0,0 +1,6 @@ +This document describes the messages used between cinit and its +"clients" (i.e. ccontrol, cservice, cinit.halt, ...): + +Signal messages +--------------- +As signals diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/possible_service_pre_calculation.text b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/possible_service_pre_calculation.text new file mode 100644 index 00000000..96ec3a73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/possible_service_pre_calculation.text @@ -0,0 +1,19 @@ +- start at + * create a new service entry (if not exists) <--- + * reads needs | + - follow dependencies ------------------------ + * only if service does not yet exist! | + * read wants | + - follow dependencies ------------------------ + * only if service does not yet exist! + * create + - needed by entry in dependencies + - needs entry in service + - wanted by entry in dependencies + - wants entry in service + + * record + - (on,off)(,.env,.params)? + - alternatively put that code into service starter + * add services without further needs into a special + "begin" structure to be reused at fireing of the services? diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/possible_service_status.text b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/possible_service_status.text new file mode 100644 index 00000000..eb0f21e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/possible_service_status.text @@ -0,0 +1,14 @@ + + - NOT_SET: this service has not yet been initialized + - RESPAWNING: happily respawning + - RESPAWN_DELAY: waiting delay before restarting + * HINT: using alarm()? + - senseful for single process service watcher + * HINT: using nanosleep()? + - senseful for per service process watcher + - NEED_FAILED + * add a (somehow terminated) list of services that failed? + * use global status to checkout which services failed? + - WANT_FAILED? + * NOT NECESSARY, it is a simple want, we do not need it. + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/registering_needs_wants.text b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/registering_needs_wants.text new file mode 100644 index 00000000..ededbd41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/registering_needs_wants.text @@ -0,0 +1,55 @@ +Each service has a list of services it + - needs + - is needed by + - wants + - is wanted by + + +Each entry is a service pointer. +The simplest list could look like this: + + service a: + needs: + b f g NULL + +So the needs pointer is NULL terminated: + needs = realloc(count_links) + -> how to get the count? + 0x02 + 0x + + Better: A double linked list (like the main service list)? + +Could look like: + service a: + needs: + *service + *next + *prev + +This design could also be used for wants. + +On the other hand, we've to register us at the needed/wanted service: + + service b: + needed_by: + *service + *next + *prev + + +So each service needs four pointers: + needs + needed_by + wants + wanted_by + +And on each request both lists have to be modified! + +Example: + + Service "a" adds "b" as needed: + + - add "a" needs "b" + - add "b" needed_by "a" + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/root-vm-testing b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/root-vm-testing new file mode 100644 index 00000000..a8773dea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/root-vm-testing @@ -0,0 +1,9 @@ +[19:33] denkbrett:root% cat uml-mount.sh +SDIR=$(dirname $0) +DDIR=$(dirname $0)/root +sudo mount "$SDIR/Debian-3.0r0.ext2" "$DDIR" -o loop,acl + +denkbrett# tar cfj ~nico/projekte/cinit/conf-vm-2007-03-05.tar.bz2 cinit +denkbrett# chown -R nico cinit +denkbrett# chown nico ../sbin + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/shutdown.text b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/shutdown.text new file mode 100644 index 00000000..ac76425d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/shutdown.text @@ -0,0 +1,84 @@ +cinit - braindumps - shutdown +============================= +Nico Schottelius +v0.1, for cinit-0.3, 2007-01-11 +:Author Initials: NS + +Just some braindumps. Do not read. + +Introduction +------------ +Shutting down the system. + +When? +----- +- reboot +- halt +- power off +- further needed? + +How / What? +------------ +- Stop services in the correct order + * reuse the service tree / needs / needed_by! + * call off, if existent + * if respawning, send SIGTERM? + - not if off is existent? + * give some variables to off? + - $RESPAWN_PID: if respawning +- send SIGTERM to other apps? + * or put that into special? special/post_svc_shutdown +- call special/{halt,poweroff,reboot} + * no, implemented that directly into cinit! +- implement timely controlled shutdown: + * cinit.shutdown forks (?) itself and waits, then sends a signal + to cinit to initiate the shutdown process + * create mappers for target OS + - Linux + - {free,net,open}bsd + - others may contribute theirself +- also implement poweroff + * kill -TERM 1 +- also implement reboot + * kill -HUP 1 +- also implement halt + * kill -USR1 1 + + +The implementation +----------------- +x shutdown is initiated +x disable communication (nobody can influence us anymore) +x install special signal handler? + - no. we do not care about zombies anymore, we are gone soon anyway + - simply reset to the default +- begin to shutdown services + * where to start? + * begin shutdown at the end of the tree, viewing/sorting it by the 'needed_by' + -> where to begin sort? + -> worst implementation: scan all services (easy for now) + -> result: list of services, that noone needs :-) + * stop those services and step above + - stop a service, as soon as noone needs it anymore + * check all needed_by links + * more or less the inverted gen_svc_tree +- how to shutdown a service + * if existing, call off + - if off does not exist: + * if respawn: send sigterm to the process + * also implement sigkill at this stage? + - think we can delay it to the end + - otherwise users can use off! + - implement environment for off ($cinit_respawn_pid, $cinit_service_name) + - do *NOT* care about the return value, we can't do anything for it + anymore anyway +- after all services are shutdown, kill all remaining services + * SIGTERM + * wait(defined_time_in_seconds) + * SIGKILL +- call the last command + * to cleanup the system + - umount -a (if needed) + - swapoff (if needed) + - sync (if needed) +- switch off diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/sizes b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/sizes new file mode 100644 index 00000000..ddd30f75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/braindumps/sizes @@ -0,0 +1,6 @@ +sysvinit: +root 1 0.0 0.0 1944 648 ? Ss 02:12 0:00 init [2] + +cinit-0.3pre8-glibc-linux: +compiler 25323 0.0 0.0 1564 392 pts/2 S+ 20:22 0:00 ./cinit + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/devel/README.text b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/README.text new file mode 100644 index 00000000..20524651 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/README.text @@ -0,0 +1,18 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit development documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +(cinit-)developers. + +Content +------- diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/devel/cinit-0.4.text b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/cinit-0.4.text new file mode 100644 index 00000000..61b718f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/cinit-0.4.text @@ -0,0 +1,115 @@ +cinit 0.4 - Redesign of cinit +============================================ +Nico Schottelius +0.4.0, for cinit 0.4, Initial Version from 2006-03-11 +:Author Initials: NS + + +cinit 0.2 ran fine and the general project of developing a +parallel executing init system is finished. +With cinit 0.4 there are new aims to reach. + + +Introduction +------------ + +. AIMS + - portability: no Linux-dependency anymore + - cleaner signal handling + - better documentation so more people can use it + + +Current problems +---------------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The mount(2) system call is os-specific. +The temporary fs is os-specific. + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Race conditions when multiple signals arrive + + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +serv/sig_reboot.c contains umount, remount hard coded. + + +Solutions +--------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Remove +- the mount call +- do not create an initial socket + +Wait until we recieve a signal, then we create a socket +under the configured socket directory (see `conf/sockdir`). + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +Misc +~~~~ + +- Configuration + /etc/cinit/config/ + init -> link to initial service + pre_boot + pre_boot_args + post_boot + post_boot_args + /etc/cinit/services/ + /etc/cinit/profiles/ + links to the starting services + + + +cinit - Internals +================= +Nico Schottelius +0.1 for cinit-0.3, Initial version: So Feb 19 10:25:46 CET 2006 +:Author Initials: NS + + +Introduction +------------ +This document describes the internals of cinit. It is thought +to be read by developers. + + +Child handler code in cinit-0.3 +------------------------------- + +In cinit versions <= cinit-0.2.1 the respawning services where +handled by an extra child handler, which was a fork of cinit. This +had some problems: + + - We allocated more memory than necessary, unecessary parts of + cinit were copied + - The SIG_CHILD-handler was not written very clean, in some versions + it was completly missing. + + +. So in `cinit-0.3` we changed it the following way: + - no extra child handlers + - handle everything in the SIG_CHILD handling function + - when sig_child is recieved do: + - check against respawn list + - if it is a respawning service, [do the following in a seperate fork?] + check whether it successfully stoped + - if yes: restart immediatly + - if no: sleep $sleep_time and then restart diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/devel/codingguideline.text b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/codingguideline.text new file mode 100644 index 00000000..d4686d8f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/codingguideline.text @@ -0,0 +1,149 @@ +Coding style +============ +Nico Schottelius +0.1, for cinit, Initial version from 2006-11-13 +:Author Initials: NS + +This document describes the coding style used in cinit. + + +Indent +------ +Indent the code by 3 spaces for each level. +Indent variable names, so the names begin all at the same position. +Use three spaces to place them. + + +Whitespaces +----------- +Where to put or avoid whitespaces (space or linefeed (lf)). + + +Spaces +~~~~~~ +- After closing brace "if(test) return 0;" +- Spaces before and after '=', '>', '<', '==', '!='', '>=', '<=', '>>', '<<', '&', '&&', '|', '||' +- After start of comment and before end of comment: '/* text */' + + + After ')', ',' + +No spaces +~~~~~~~~~ +- Within braces and code "(!test)", +- Before braces "if(code)" +- No space before ), so if '))', do not put a space after the first ')' + + +Linebreaks +~~~~~~~~~~ +This somehow includes the setting of braces (indirectly through (not) setting +spaces. + +If +^^ + +Put the if, the braces and the opening curly brace on one line, +put the closing one together with `else` and the new opening +curly brace on one line: + +------------------------------------------------------------------------------ +if(...) { + /* code */ +} else { + /* else: code */ +} +------------------------------------------------------------------------------ + +While +^^^^^ +------------------------------------------------------------------------------ +while(condition) { + /* repeat */ +} +------------------------------------------------------------------------------ + +Do-While +^^^^^^^^ +------------------------------------------------------------------------------ +do { + /* something */ +} while(running); +------------------------------------------------------------------------------ + +Switch +^^^^^^ + +------------------------------------------------------------------------------ +switch(value) { + case DO_SOMETHING: + /* code */ + break; + default: + break; +} +------------------------------------------------------------------------------ + + + +Where to put curly braces +------------------------- + +Functions +~~~~~~~~~ +Opening and closing curly braces are placed on a seperate row: + +------------------------------------------------------------------------------ +int func(int params) +{ + body +} +------------------------------------------------------------------------------ + + +If, else, while, do-while +~~~~~~~~~~~~~~~~~~~~~~~~~ +See above. + + +Comments +--------- +where necessery, do not state the obvious in comments: + + /* this code increments tmp */ + ++tmp; + +If there is more than one line containing a comment, try to adjust them +so they look the same in width and position: + +------------------------------------------------------------------------------ + int illuminati = 23; /* do not want to comment that */ + int the_answer_to_everything = 42; /* 42. */ + + [...] + + while(illuminati < the_answer_to_everything) { /* only try before them */ + overtake_world(&self); /* overtake is complex */ + } +------------------------------------------------------------------------------ + + +Header +------- +Put a header into each file, containing: + + - Date of file being put into existence (year is enough) + - Name and e-mail (obfuscated if you want) of the author(s) + - Description of the function + - Copyright statement (if not included GPLv2 or later is assumed) + + +Includes +~~~~~~~~ +Include system headers first, then place own headers. Comment the includes, +wherefore you added them. Example: + +------------------------------------------------------------------------------ +#include /* write */ +#include "cinit.h> /* cinit_ipc_* */ +------------------------------------------------------------------------------ diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/devel/communication.text b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/communication.text new file mode 100644 index 00000000..08db7666 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/communication.text @@ -0,0 +1,224 @@ +cinit - communication +===================== +Nico Schottelius +0.1 for cinit-0.3, Initial version: 2006-08-11 +:Author Initials: NS + +This document describes the internal communication of cinit. +It is thought to be read by developers. + + +Introduction +------------ +This document describes the messages used between cinit, cinit forks +and other programs that want to talk to cinit. It does NOT +describe the communication method, but only the messages sent +(for the communication method read "ipc.text"). + +Document status +~~~~~~~~~~~~~~~ +This document is still being written, it is not finished. + + +About Messages +-------------- + +Order +~~~~~ +The client always initiates the communication. +cinit will begin listening to messages directly after its start. + +Data +~~~~~ +A message always conists of a predefined structure (see src/headers/comm.h). +The byte order is host specific (may be little or big endian). + +Type +~~~~ +Messages are binary data. + +The messages +------------ +The client always uses the same structure (struct msg_client) to contact +cinit. This way cinit does not need to handle dynamic data structures. + +cinit in contrast delivers different data structures to its clients, +depending on the question. + +The questions are issued by any type of client, the internal command used is +noted in square brackets ([]). + +The answers are given by cinit. + + +Question: Start a service (and its dependencies) [CMD_START_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to start the service and its dependencies. + +The client must provide cinit with the following information: +. Name of the service to be started +. Reason why to start it +. eventually additional information (see below) + +The reason +^^^^^^^^^^ +Can be one of: +- RS_NONE (it's a manual start request) +- RS_WANTS (a currently starting service wants to start this service) +- RS_NEEDS (a currently starting service needs to start this service) + +If the reason is RS_WANTS or RS_NEEDS the client must supply the name +of the service, which wants it to be started. + + +Question: Start a service (nothing else) [CMD_START_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to start the service and which will +report the status back. + + +Question: Stop a service (and its dependencies) [CMD_STOP_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to stop the service and each service +that 'needs' it. + +This function works recursively, thus also killing those services, that +need the service that need the current service. + + +Question: Stop a service (nothing else) [CMD_STOP_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to stop this service and which will +report the status back. + + +Question: Stop a service (plus 'needs' and 'wants') [CMD_STOP_SVC_WANTS] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Same as 'Stop a service (and its dependencies)', but also stop the +services that want to have this service. + +This function works recursively, thus also killing those services, that +'need' or 'want' the service that 'need' or 'want' the current service. + + +Question: Could you change the status? [CMD_CHG_STAT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A cinit fork reports the new status of a service. + + +Question: Could you start the rescue mode? [CMD_RESCUE] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +spawn the rescue program. + + +Question: Could you halt the system? [CMD_HALT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +halt the system. + + +Question: Could you reboot the system? [CMD_REBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +reboot the system. + + +Question: Could you poweroff the system? [CMD_POWEROFF] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +poweroff the system. If poweroff is not possible, the system will +be halted. + + +Question: Could you warmboot the system? [CMD_WBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +restart itself and the bootup process. + + +Question: Could you send information about a service? [CMD_INFO] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will respond with detailled information about the service +to the client. + + +Answer: Return short status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Start a service (and its dependencies) + - Question: Start a service (nothing else) + - Question: Stop a service (and its dependencies) + - Question: Stop a service (nothing else) + - Question: Stop a service (plus 'needs' and 'wants') + - Question: Could you change the status? + +cinit only responds the status of the asked service. +The structure send is "asw_sstatus", which only include a status byte. + + +Answer: Return long status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Could you send information about a service? + + +old Messages (to be transferred into this document) +--------------------------------------------------- + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Service status: + +-------------------------------------------------------------------------------- +service status (cinit), +Nico Schottelius 2005-09-29 (Last Modified: -) +-------------------------------------------------------------------------------- + +There are service status and service returns. Service status is a status +a service can have. A service return is a value from a function that +describes what happened with the service. + +Status has ST_ prefix, return has RT_ prefix. +See cinit.h for most up to date versions. + + +ST_NEED_FAIL - this service will not be started, until the needs are started +ST_FAIL - this service failed to start +ST_UNSPEC - some unknown error. This should never happen. +ST_ERR - ??? /* tried earlier, service failed, won't retry */ + +ST_SUCCESS - service was successfully started - senseful? +ST_TMP - some instance is currently working on it +ST_ONCE - executed once sucessfully +ST_RESPAWN - service is running and respawning + +ST_TMPNOW 55 /* now you are on it - only for clients */ +#define ST_OFF 56 /* Switching service off */ + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/devel/configuring.text b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/configuring.text new file mode 100644 index 00000000..405a4d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/configuring.text @@ -0,0 +1,18 @@ +cinit/doc/devel/using-conf.text +================================ +Nico Schottelius +0.1, Initial Version from 2006-07-28 +:Author Initials: NS + +About conf/* and how to use the configurations. + +Introduction +------------ + +Who should read those documents? +-------------------------------- + +Content +------- + + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/devel/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/cross-compiling.text new file mode 100644 index 00000000..fdf70564 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/cross-compiling.text @@ -0,0 +1,36 @@ +TODO: + - merge into "Cross compiling" + +cinit - Problems that may arise +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Max open files + OS dependent + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/devel/ipc.text b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/ipc.text new file mode 100644 index 00000000..7013a985 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/ipc.text @@ -0,0 +1,108 @@ +IPC - in cinit and in general +============================= +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +IPC - Inter process communication + +Introduction +------------ +This document describes the IPC methods used and/or tested for +cinit. + +It does not describe in detail, how the different methods work +(this is already done many times, there's great documentation +available online), but more the advantages and disadvantages +(especially for an init system). + +What is IPC? +~~~~~~~~~~~~ +IPC describes methods to communicate between different processes +(programs). + +IPC as described by SUSV3 (The Single UNIX Specification Version 3) +aka IEEE Std 1003.1, 2004 Edition aka POSIX only defines +MSQ, SHM and Semaphores as IPC. This document also covers +Sockets and FIFOs. + + +What is not (yet) covered by this document? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Speed of different IPC methods, different behaviour on different +unices. + + +Why do you need IPC for an init system? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +cinit IPC history + analysis +---------------------------- + + +FIFOs +~~~~~ +First in - first out +File on the filesystem +Always need two files for two way communication + +Hints +^^^^^ +The first idea for IPC in cinit was to use two FIFOs, like minit does. +Wrong assumption: +runit also uses fifos, but two fifos for each services. That way +more parallel transmissions is possible. +You have to pay attention: Maximum number of opened files! +(On Linux 2.6 this is 1024, which makes a maximum of 512 services. +This limit is most likely never reached, but you have to keep it +in mind). + +Sockets +~~~~~~~ +Clean and beautiful. They allow easy two way communication. + +If you created a socket, fs is r/o, you cannot use it, although +there is SO_REUSE. + +First method: Using memory mapped part (tmpfs). +Second method: use interal communication (pipes!) and external after +/etc/cinit/ becomes writable. + + +Current IPC configuration +-------------------------- + +- switchable (conf/ipc_method) +- each ipc implementation needs: + + ipc.h -> for global variables and ipc specific things + prefix variables with ipc_ + int cinit_ipc_init(void); -> general initialization + return 1 on success, 0 on failure + int cinit_ipc_listen(void); -> begin to listen for messages + int cinit_ipc_send(void *data) -> send data to a client + +-------------------------------------------------------------------------------- +TO SORT: + +1. message queues + o clients schreiben rein + o datenpaket gross genug fuer antwort? + +2. shared memory + o client kann direkt rauslesen, was gestartet werden muss + o client kann direkt abhaengigkeiten starten, muss diese aber + eintragen + +Ausprobieren: + - Mutexe + - Message Queues + - + +Ideen: + Message queue + 1. Client geht auf die normale + als id = pid (cast!) + dann rueck via anderer queue + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/devel/lists.text b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/lists.text new file mode 100644 index 00000000..6360acb3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/lists.text @@ -0,0 +1,22 @@ +Lists in cinit-0.3 are generalized, all have the same general layout: + + - double linked + - have 'prev' and 'next' as pointers + + Add an element to a list + + /--------------------------\ + |<->first<->middle<->last<->| + + + After insert: + + /-------------------------------\ + |<->first<->middle<->last<->new<->| + + We alway have 'first'. + Need to adjust: + - new->prev = last (= first->next) + - new->next = first + - first->prev = new + - first->prev->next (= last->next) = new diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/devel/merging.other.initsystems.text b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/merging.other.initsystems.text new file mode 100644 index 00000000..0baa4789 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/merging.other.initsystems.text @@ -0,0 +1,68 @@ +TODO: + - rewrite to asciidoc + - implement a sample merge + +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not mean that he does not accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated! + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/devel/optimising.cinit b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/optimising.cinit new file mode 100644 index 00000000..4f4b5c02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/optimising.cinit @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options +2. striping + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + +The current standard for cinit is: (see CFLAGS in the Makefile). + + +2. striping + +With strip(1) you can remove specific sections of object files. +You have to find out, which ones you can remove safely +(for instance with objdump(1)). + +The current standard for cinit is: (see STRIP in the Makefile) diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/devel/testing.text b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/testing.text new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/devel/testing.text @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/logs/2006-10-25.config.wasserstoff b/software/cinit/browse_source/cinit-0.3pre8/doc/logs/2006-10-25.config.wasserstoff new file mode 100644 index 00000000..f28bd71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/logs/2006-10-25.config.wasserstoff @@ -0,0 +1,16 @@ +[17:12] wasserstoff:svc# pwd +/etc/cinit/svc +[17:12] wasserstoff:svc# ls +init +17:12] wasserstoff:svc# mkdir getty +[17:12] wasserstoff:svc# mkdir getty/2/ +[17:12] wasserstoff:svc# cd getty/2 +[17:12] wasserstoff:2# ln -s /sbin/getty on +17:12] wasserstoff:2# echo 38400 > on.params +[17:13] wasserstoff:2# echo tty2 >> on.params +[17:13] wasserstoff:2# cd ../../init +[17:14] wasserstoff:init# mkdir needs +[17:14] wasserstoff:init# cd needs +[17:14] wasserstoff:needs# ln -s ../../getty/2 getty-2 +[17:14] wasserstoff:needs# + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/logs/2006-11-22.startup-with-debug b/software/cinit/browse_source/cinit-0.3pre8/doc/logs/2006-11-22.startup-with-debug new file mode 100644 index 00000000..44121cf4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/logs/2006-11-22.startup-with-debug @@ -0,0 +1,55 @@ +[0:08] wasserstoff:cinit-0.3pre3% ./src/cinit +cinit-0.3pre3: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty:: +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2:: +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout:: +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3:: +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning:: +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount:: +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root:: +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network:: +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0:: +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback:: +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::/etc/cinit/svc/init +========> tree_exec() +/etc/cinit/svc/local-tuning/keyboard-layout:::abhaengigkeiten gestartet, exec; add wants, needsdep_needs_wants_add::/etc/cinit/svc/local-tuning/keyboard-layout add: (/etc/cinit/svc/getty/2) + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/logs/2006-11-30.startup-0.3pre5 b/software/cinit/browse_source/cinit-0.3pre8/doc/logs/2006-11-30.startup-0.3pre5 new file mode 100644 index 00000000..2ded7712 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/logs/2006-11-30.startup-0.3pre5 @@ -0,0 +1,1821 @@ +cinit-0.3pre4: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2 +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3 +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0 +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/test +gen_tree::/etc/cinit/svc/test +CAD::/etc/cinit/svc/test +CAD::NEW::/etc/cinit/svc/test::/etc/cinit/svc/test/env +gen_tree::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +START::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test +CAD::/etc/cinit/svc/init +========> tree_exec() +TEX::/etc/cinit/svc/local-tuning/keyboard-layout +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout::/etc/cinit/svc/getty/2::(A)::::/etc/cinit/svc/getty/3::(A)::::/etc/cinit/svc/local-tuning::(A):: +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout +TEX::/etc/cinit/svc/mount/root +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +DNWA::/etc/cinit/svc/mount/root::/etc/cinit/svc/mount::(A):: +DNWA::/etc/cinit/svc/mount/root +TEX::/etc/cinit/svc/network/eth0 +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +DNWA::/etc/cinit/svc/network/eth0::/etc/cinit/svc/network::(A):: +DNWA::/etc/cinit/svc/network/eth0 +TEX::/etc/cinit/svc/network/loopback +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +DNWA::/etc/cinit/svc/network/loopback::/etc/cinit/svc/network +DNWA::/etc/cinit/svc/network/loopback +TEX::/etc/cinit/svc/test/env +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +DNWA::/etc/cinit/svc/test/env::/etc/cinit/svc/test::(A):: +DNWA::/etc/cinit/svc/test/env +TEX::/etc/cinit/svc/getty/2 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/2/on +CBA::/etc/cinit/svc/getty/2/on +DNWA::/etc/cinit/svc/getty/2::/etc/cinit/svc/getty::(A):: +DNWA::/etc/cinit/svc/getty/2 +TEX::/etc/cinit/svc/getty/3 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/3/on +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +DNWA::/etc/cinit/svc/getty/3::/etc/cinit/svc/getty +DNWA::/etc/cinit/svc/getty/3 +TEX::/etc/cinit/svc/local-tuning +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +/etc/cinit/svc/local-tuning/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/local-tuning::/etc/cinit/svc/init::(A):: +DNWA::/etc/cinit/svc/local-tuning +TEX::/etc/cinit/svc/mount +::/etc/cinit/svc/mount/root +/etc/cinit/svc/mount/root: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +/etc/cinit/svc/mount/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/mount::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/mount +TEX::/etc/cinit/svc/network +::/etc/cinit/svc/network/eth0 +/etc/cinit/svc/network/eth0: <<16>> +::/etc/cinit/svc/network/loopback +/etc/cinit/svc/network/loopback: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +/etc/cinit/svc/network/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/network::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/network +TEX::/etc/cinit/svc/test +::/etc/cinit/svc/test/env +/etc/cinit/svc/test/env: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +/etc/cinit/svc/test/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/test::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/test +TEX::/etc/cinit/svc/getty +::/etc/cinit/svc/getty/2 +/etc/cinit/svc/getty/2: <<4>> +::/etc/cinit/svc/getty/3 +/etc/cinit/svc/getty/3: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +/etc/cinit/svc/getty/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/getty::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/getty +TEX::/etc/cinit/svc/init +::/etc/cinit/svc/getty +/etc/cinit/svc/getty: <<4>> +::/etc/cinit/svc/local-tuning +/etc/cinit/svc/local-tuning: <<4>> +::/etc/cinit/svc/mount +/etc/cinit/svc/mount: <<4>> +::/etc/cinit/svc/network +/etc/cinit/svc/network: <<4>> +::/etc/cinit/svc/test +/etc/cinit/svc/test: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +DNWA::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/init +=> cinit started. +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +ORC:/etc/cinit/svc/init/on.params +ORC:/etc/cinit/svc/getty/2/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test +SC::/etc/cinit/svc/test/env::FAILED::::RESPAWN::ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test + +msgrcv: Interrupted system call +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/2/on +ORC:/etc/cinit/svc/getty/2/on.params +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted +SC::/etc/cinit/svc/network/eth0::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted + +msgrcv: Interrupted system call +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. +SC::/etc/cinit/svc/init::FAILED::::RESPAWN::ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. + +msgrcv: Interrupted system call +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. +SC::/etc/cinit/svc/network/loopback::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. + +msgrcv: Interrupted system call +mount: only root can do that +SC::/etc/cinit/svc/mount/root::FAILED::::RESPAWN::ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +mount: only root can do that + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +LSP:: 32705: /etc/cinit/svc/init:1 (0) +LSP:: 32705: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32705: /etc/cinit/svc/test:65 (0) +LSP:: 32705: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32705: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32705: /etc/cinit/svc/network:65 (0) +LSP:: 32705: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32705: /etc/cinit/svc/mount:65 (0) +LSP:: 32705: /etc/cinit/svc/local-tuning:65 (0) +LSP:: 32705: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32705: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32705: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32705: /etc/cinit/svc/getty:65 (0) +LSP:: 32706: /etc/cinit/svc/init:65 (0) +LSP:: 32706: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32706: /etc/cinit/svc/test:65 (0) +LSP:: 32706: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32706: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32706: /etc/cinit/svc/network:65 (0) +LSP:: 32706: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32706: /etc/cinit/svc/mount:65 (0) +LSP:: 32706: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32706: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32706: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32706: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32706: /etc/cinit/svc/getty:65 (0) +LSP:: 32707: /etc/cinit/svc/init:65 (0) +LSP:: 32707: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32707: /etc/cinit/svc/test:65 (0) +LSP:: 32707: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32707: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32707: /etc/cinit/svc/network:65 (0) +LSP:: 32707: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32707: /etc/cinit/svc/mount:4 (32706) +LSP:: 32707: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32707: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32707: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32707: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32707: /etc/cinit/svc/getty:65 (0) +LSP:: 32708: /etc/cinit/svc/init:65 (0) +LSP:: 32708: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32708: /etc/cinit/svc/test:65 (0) +LSP:: 32708: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32708: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32708: /etc/cinit/svc/network:4 (32707) +LSP:: 32708: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32708: /etc/cinit/svc/mount:4 (32706) +LSP:: 32708: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32708: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32708: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32708: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32708: /etc/cinit/svc/getty:65 (0) +LSP:: 32709: /etc/cinit/svc/init:65 (0) +LSP:: 32709: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32709: /etc/cinit/svc/test:4 (32708) +LSP:: 32709: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32709: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32709: /etc/cinit/svc/network:4 (32707) +LSP:: 32709: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32709: /etc/cinit/svc/mount:4 (32706) +LSP:: 32709: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32709: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32709: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32709: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32709: /etc/cinit/svc/getty:65 (0) +LSP:: 32702: /etc/cinit/svc/init:4 (32710) +LSP:: 32702: /etc/cinit/svc/test/env:4 (32702) +pid: 0, m_client +LSP:: 32700: /etc/cinit/svc/init:4 (32710) +LSP:: 32700: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32700: /etc/cinit/svc/test:4 (32708) +LSP:: 32700: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32700: /etc/cinit/svc/network/eth0:16 (32700) +pid: 0, m_client +LSP:: 32710: /etc/cinit/svc/init:4 (32710) +pid: 0, m_client +LSP:: 32701: /etc/cinit/svc/init:16 (32719) +LSP:: 32701: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32701: /etc/cinit/svc/test:4 (32708) +LSP:: 32701: /etc/cinit/svc/network/loopback:4 (32701) +pid: 0, m_client +LSP:: 32699: /etc/cinit/svc/init:16 (32719) +LSP:: 32699: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32699: /etc/cinit/svc/test:4 (32708) +LSP:: 32699: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32699: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32699: /etc/cinit/svc/network:4 (32707) +LSP:: 32699: /etc/cinit/svc/mount/root:4 (32699) +pid: 0, m_client +LSP::SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz + 32698: /etc/cinit/svc/init:16 (32719) +LSP:: 32698: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32698: /etc/cinit/svc/test:4 (32708) +LSP:: 32698: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32698: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32698: /etc/cinit/svc/network:4 (32707) +LSP:: 32698: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32698: /etc/cinit/svc/mount:4 (32706) +LSP:: 32698: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32698: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32698: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +pid: 0, m_client +LSP:: 32728: /etc/cinit/svc/init:16 (32719) +LSP:: 32728: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32728: /etc/cinit/svc/test:4 (32708) +LSP:: 32728: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32728: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32728: /etc/cinit/svc/network:4 (32707) +LSP:: 32728: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32728: /etc/cinit/svc/mount:4 (32706) +LSP:: 32728: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32728: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32728: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32728) +pid: 0, m_client +LSP:: 32735: /etc/cinit/svc/init:16 (32719) +LSP:: 32735: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32735: /etc/cinit/svc/test:4 (32708) +LSP:: 32735: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32735: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32735: /etc/cinit/svc/network:4 (32707) +LSP:: 32735: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32735: /etc/cinit/svc/mount:4 (32706) +LSP:: 32735: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32735: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32735: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32735) +pid: 0, m_client +LSP:: 32742: /etc/cinit/svc/init:16 (32719) +LSP:: 32742: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32742: /etc/cinit/svc/test:4 (32708) +LSP:: 32742: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32742: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32742: /etc/cinit/svc/network:4 (32707) +LSP:: 32742: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32742: /etc/cinit/svc/mount:4 (32706) +LSP:: 32742: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32742: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32742: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32742) +pid: 0, m_client +LSP:: 32749: /etc/cinit/svc/init:16 (32719) +LSP:: 32749: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32749: /etc/cinit/svc/test:4 (32708) +LSP:: 32749: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32749: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32749: /etc/cinit/svc/network:4 (32707) +LSP:: 32749: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32749: /etc/cinit/svc/mount:4 (32706) +LSP:: 32749: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32749: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32749: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32749) +pid: 0, m_client +LSP:: 32756: /etc/cinit/svc/init:16 (32719) +LSP:: 32756: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32756: /etc/cinit/svc/test:4 (32708) +LSP:: 32756: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32756: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32756: /etc/cinit/svc/network:4 (32707) +LSP:: 32756: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32756: /etc/cinit/svc/mount:4 (32706) +LSP:: 32756: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32756: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32756: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32756) +pid: 0, m_client +LSP:: 32763: /etc/cinit/svc/init:16 (32719) +LSP:: 32763: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32763: /etc/cinit/svc/test:4 (32708) +LSP:: 32763: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32763: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32763: /etc/cinit/svc/network:4 (32707) +LSP:: 32763: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32763: /etc/cinit/svc/mount:4 (32706) +LSP:: 32763: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32763: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32763: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32763) +pid: 0, m_client +LSP:: 302: /etc/cinit/svc/init:16 (32719) +LSP:: 302: /etc/cinit/svc/test/env:16 (32717) +LSP:: 302: /etc/cinit/svc/test:4 (32708) +LSP:: 302: /etc/ciSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN:: +msgrcv: Interrupted system call +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +nit/svc/network/loopback:16 (32720) +LSP:: 302: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 302: /etc/cinit/svc/network:4 (32707) +LSP:: 302: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 302: /etc/cinit/svc/mount:4 (32706) +LSP:: 302: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 302: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 302: /etc/cinit/svc/local-tuning/keyboard-layout:16 (302) +pid: 0, m_client +LSP:: 312: /etc/cinit/svc/init:16 (32719) +LSP:: 312: /etc/cinit/svc/test/env:16 (32717) +LSP:: 312: /etc/cinit/svc/test:4 (32708) +LSP:: 312: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 312: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 312: /etc/cinit/svc/network:4 (32707) +LSP:: 312: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 312: /etc/cinit/svc/mount:4 (32706) +LSP:: 312: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 312: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 312: /etc/cinit/svc/local-tuning/keyboard-layout:16 (312) +pid: 0, m_client +LSP:: 326: /etc/cinit/svc/init:16 (32719) +LSP:: 326: /etc/cinit/svc/test/env:16 (32717) +LSP:: 326: /etc/cinit/svc/test:4 (32708) +LSP:: 326: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 326: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 326: /etc/cinit/svc/network:4 (32707) +LSP:: 326: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 326: /etc/cinit/svc/mount:4 (32706) +LSP:: 326: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 326: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 326: /etc/cinit/svc/local-tuning/keyboard-layout:16 (326) +pid: 0, m_client +LSP:: 333: /etc/cinit/svc/init:16 (32719) +LSP:: 333: /etc/cinit/svc/test/env:16 (32717) +LSP:: 333: /etc/cinit/svc/test:4 (32708) +LSP:: 333: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 333: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 333: /etc/cinit/svc/network:4 (32707) +LSP:: 333: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 333: /etc/cinit/svc/mount:4 (32706) +LSP:: 333: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 333: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 333: /etc/cinit/svc/local-tuning/keyboard-layout:16 (333) +pid: 0, m_client +LSP:: 340: /etc/cinit/svc/init:16 (32719) +LSP:: 340: /etc/cinit/svc/test/env:16 (32717) +LSP:: 340: /etc/cinit/svc/test:4 (32708) +LSP:: 340: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 340: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 340: /etc/cinit/svc/network:4 (32707) +LSP:: 340: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 340: /etc/cinit/svc/mount:4 (32706) +LSP:: 340: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 340: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 340: /etc/cinit/svc/local-tuning/keyboard-layout:16 (340) +pid: 0, m_client +LSP:: 347: /etc/cinit/svc/init:16 (32719) +LSP:: 347: /etc/cinit/svc/test/env:16 (32717) +LSP:: 347: /etc/cinit/svc/test:4 (32708) +LSP:: 347: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 347: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 347: /etc/cinit/svc/network:4 (32707) +LSP:: 347: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 347: /etc/cinit/svc/mount:4 (32706) +LSP:: 347: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 347: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 347: /etc/cinit/svc/local-tuning/keyboard-layout:16 (347) +pid: 0, m_client +LSP:: 354: /etc/cinit/svc/init:16 (32719) +LSP:: 354: /etc/cinit/svc/test/env:16 (32717) +LSP:: 354: /etc/cinit/svc/test:4 (32708) +LSP:: 354: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 354: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 354: /etc/cinit/svc/network:4 (32707) +LSP:: 354: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 354: /etc/cinit/svc/mount:4 (32706) +LSP:: 354: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 354: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 354: /etc/cinit/svc/local-tuning/keyboard-layout:16 (354) +pid: 0, m_client +LSP:: 372: /etc/cinit/svc/init:16 (32719) +LSP:: 372: /etc/cinit/svc/test/env:16 (32717) +LSP:: 372: /etc/cinit/svc/test:4 (32708) +LSP:: 372: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 372: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 372: /etc/cinit/svc/network:4 (32707) +LSP:: 372: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 372: /etc/cinit/svc/mount:4 (32706) +LSP:: 372: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 372: /etc/cinit/svc/getty/3:4 (327SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +04) +LSP:: 372: /etc/cinit/svc/local-tuning/keyboard-layout:16 (372) +pid: 0, m_client +LSP:: 379: /etc/cinit/svc/init:16 (32719) +LSP:: 379: /etc/cinit/svc/test/env:16 (32717) +LSP:: 379: /etc/cinit/svc/test:4 (32708) +LSP:: 379: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 379: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 379: /etc/cinit/svc/network:4 (32707) +LSP:: 379: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 379: /etc/cinit/svc/mount:4 (32706) +LSP:: 379: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 379: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 379: /etc/cinit/svc/local-tuning/keyboard-layout:16 (379) +pid: 0, m_client +LSP:: 386: /etc/cinit/svc/init:16 (32719) +LSP:: 386: /etc/cinit/svc/test/env:16 (32717) +LSP:: 386: /etc/cinit/svc/test:4 (32708) +LSP:: 386: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 386: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 386: /etc/cinit/svc/network:4 (32707) +LSP:: 386: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 386: /etc/cinit/svc/mount:4 (32706) +LSP:: 386: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 386: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 386: /etc/cinit/svc/local-tuning/keyboard-layout:16 (386) +pid: 0, m_client +LSP:: 393: /etc/cinit/svc/init:16 (32719) +LSP:: 393: /etc/cinit/svc/test/env:16 (32717) +LSP:: 393: /etc/cinit/svc/test:4 (32708) +LSP:: 393: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 393: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 393: /etc/cinit/svc/network:4 (32707) +LSP:: 393: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 393: /etc/cinit/svc/mount:4 (32706) +LSP:: 393: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 393: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 393: /etc/cinit/svc/local-tuning/keyboard-layout:16 (393) +pid: 0, m_client +LSP:: 400: /etc/cinit/svc/init:16 (32719) +LSP:: 400: /etc/cinit/svc/test/env:16 (32717) +LSP:: 400: /etc/cinit/svc/test:4 (32708) +LSP:: 400: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 400: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 400: /etc/cinit/svc/network:4 (32707) +LSP:: 400: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 400: /etc/cinit/svc/mount:4 (32706) +LSP:: 400: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 400: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 400: /etc/cinit/svc/local-tuning/keyboard-layout:16 (400) +pid: 0, m_client +LSP:: 407: /etc/cinit/svc/init:16 (32719) +LSP:: 407: /etc/cinit/svc/test/env:16 (32717) +LSP:: 407: /etc/cinit/svc/test:4 (32708) +LSP:: 407: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 407: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 407: /etc/cinit/svc/network:4 (32707) +LSP:: 407: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 407: /etc/cinit/svc/mount:4 (32706) +LSP:: 407: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 407: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 407: /etc/cinit/svc/local-tuning/keyboard-layout:16 (407) +pid: 0, m_client +LSP:: 414: /etc/cinit/svc/init:16 (32719) +LSP:: 414: /etc/cinit/svc/test/env:16 (32717) +LSP:: 414: /etc/cinit/svc/test:4 (32708) +LSP:: 414: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 414: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 414: /etc/cinit/svc/network:4 (32707) +LSP:: 414: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 414: /etc/cinit/svc/mount:4 (32706) +LSP:: 414: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 414: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 414: /etc/cinit/svc/local-tuning/keyboard-layout:16 (414) +pid: 0, m_client +LSP:: 421: /etc/cinit/svc/init:16 (32719) +LSP:: 421: /etc/cinit/svc/test/env:16 (32717) +LSP:: 421: /etc/cinit/svc/test:4 (32708) +LSP:: 421: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 421: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 421: /etc/cinit/svc/network:4 (32707) +LSP:: 421: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 421: /etc/cinit/svc/mount:4 (32706) +LSP:: 421: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 421: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 421: /etc/cinit/svc/local-tuning/keyboard-layout:16 (421) +pid: 0, m_client +LSP:: 428: /etc/cinit/svc/init:16 (32719) +LSP:: 428: /etc/cinit/svc/test/env:16 (32717) +LSP:: 428: /etc/cinit/svc/test:4 (32708) +LSP:: 428: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 428: /etc/cinit/svc/network/eth0:16SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call + (32718) +LSP:: 428: /etc/cinit/svc/network:4 (32707) +LSP:: 428: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 428: /etc/cinit/svc/mount:4 (32706) +LSP:: 428: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 428: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 428: /etc/cinit/svc/local-tuning/keyboard-layout:16 (428) +pid: 0, m_client +LSP:: 435: /etc/cinit/svc/init:16 (32719) +LSP:: 435: /etc/cinit/svc/test/env:16 (32717) +LSP:: 435: /etc/cinit/svc/test:4 (32708) +LSP:: 435: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 435: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 435: /etc/cinit/svc/network:4 (32707) +LSP:: 435: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 435: /etc/cinit/svc/mount:4 (32706) +LSP:: 435: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 435: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 435: /etc/cinit/svc/local-tuning/keyboard-layout:16 (435) +pid: 0, m_client +LSP:: 452: /etc/cinit/svc/init:16 (32719) +LSP:: 452: /etc/cinit/svc/test/env:16 (32717) +LSP:: 452: /etc/cinit/svc/test:4 (32708) +LSP:: 452: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 452: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 452: /etc/cinit/svc/network:4 (32707) +LSP:: 452: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 452: /etc/cinit/svc/mount:4 (32706) +LSP:: 452: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 452: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 452: /etc/cinit/svc/local-tuning/keyboard-layout:16 (452) +pid: 0, m_client +LSP:: 459: /etc/cinit/svc/init:16 (32719) +LSP:: 459: /etc/cinit/svc/test/env:16 (32717) +LSP:: 459: /etc/cinit/svc/test:4 (32708) +LSP:: 459: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 459: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 459: /etc/cinit/svc/network:4 (32707) +LSP:: 459: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 459: /etc/cinit/svc/mount:4 (32706) +LSP:: 459: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 459: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 459: /etc/cinit/svc/local-tuning/keyboard-layout:16 (459) +pid: 0, m_client +LSP:: 466: /etc/cinit/svc/init:16 (32719) +LSP:: 466: /etc/cinit/svc/test/env:16 (32717) +LSP:: 466: /etc/cinit/svc/test:4 (32708) +LSP:: 466: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 466: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 466: /etc/cinit/svc/network:4 (32707) +LSP:: 466: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 466: /etc/cinit/svc/mount:4 (32706) +LSP:: 466: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 466: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 466: /etc/cinit/svc/local-tuning/keyboard-layout:16 (466) +pid: 0, m_client +LSP:: 473: /etc/cinit/svc/init:16 (32719) +LSP:: 473: /etc/cinit/svc/test/env:16 (32717) +LSP:: 473: /etc/cinit/svc/test:4 (32708) +LSP:: 473: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 473: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 473: /etc/cinit/svc/network:4 (32707) +LSP:: 473: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 473: /etc/cinit/svc/mount:4 (32706) +LSP:: 473: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 473: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 473: /etc/cinit/svc/local-tuning/keyboard-layout:16 (473) +pid: 0, m_client +LSP:: 480: /etc/cinit/svc/init:16 (32719) +LSP:: 480: /etc/cinit/svc/test/env:16 (32717) +LSP:: 480: /etc/cinit/svc/test:4 (32708) +LSP:: 480: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 480: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 480: /etc/cinit/svc/network:4 (32707) +LSP:: 480: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 480: /etc/cinit/svc/mount:4 (32706) +LSP:: 480: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 480: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 480: /etc/cinit/svc/local-tuning/keyboard-layout:16 (480) +pid: 0, m_client +LSP:: 487: /etc/cinit/svc/init:16 (32719) +LSP:: 487: /etc/cinit/svc/test/env:16 (32717) +LSP:: 487: /etc/cinit/svc/test:4 (32708) +LSP:: 487: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 487: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 487: /etc/cinit/svc/network:4 (32707) +LSP:: 487: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 487: /etc/cinit/svc/mount:4 (32706) +LSP:: 487: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 487: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 487: /etc/cinit/svc/local-tuning/keyboard-layout:16 (487) +pid: 0, mLoading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +_client +LSP:: 494: /etc/cinit/svc/init:16 (32719) +LSP:: 494: /etc/cinit/svc/test/env:16 (32717) +LSP:: 494: /etc/cinit/svc/test:4 (32708) +LSP:: 494: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 494: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 494: /etc/cinit/svc/network:4 (32707) +LSP:: 494: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 494: /etc/cinit/svc/mount:4 (32706) +LSP:: 494: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 494: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 494: /etc/cinit/svc/local-tuning/keyboard-layout:16 (494) +pid: 0, m_client +LSP:: 501: /etc/cinit/svc/init:16 (32719) +LSP:: 501: /etc/cinit/svc/test/env:16 (32717) +LSP:: 501: /etc/cinit/svc/test:4 (32708) +LSP:: 501: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 501: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 501: /etc/cinit/svc/network:4 (32707) +LSP:: 501: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 501: /etc/cinit/svc/mount:4 (32706) +LSP:: 501: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 501: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 501: /etc/cinit/svc/local-tuning/keyboard-layout:16 (501) +pid: 0, m_client +LSP:: 510: /etc/cinit/svc/init:16 (32719) +LSP:: 510: /etc/cinit/svc/test/env:16 (32717) +LSP:: 510: /etc/cinit/svc/test:4 (32708) +LSP:: 510: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 510: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 510: /etc/cinit/svc/network:4 (32707) +LSP:: 510: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 510: /etc/cinit/svc/mount:4 (32706) +LSP:: 510: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 510: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 510: /etc/cinit/svc/local-tuning/keyboard-layout:16 (510) +pid: 0, m_client +LSP:: 520: /etc/cinit/svc/init:16 (32719) +LSP:: 520: /etc/cinit/svc/test/env:16 (32717) +LSP:: 520: /etc/cinit/svc/test:4 (32708) +LSP:: 520: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 520: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 520: /etc/cinit/svc/network:4 (32707) +LSP:: 520: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 520: /etc/cinit/svc/mount:4 (32706) +LSP:: 520: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 520: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 520: /etc/cinit/svc/local-tuning/keyboard-layout:16 (520) +pid: 0, m_client +LSP:: 533: /etc/cinit/svc/init:16 (32719) +LSP:: 533: /etc/cinit/svc/test/env:16 (32717) +LSP:: 533: /etc/cinit/svc/test:4 (32708) +LSP:: 533: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 533: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 533: /etc/cinit/svc/network:4 (32707) +LSP:: 533: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 533: /etc/cinit/svc/mount:4 (32706) +LSP:: 533: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 533: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 533: /etc/cinit/svc/local-tuning/keyboard-layout:16 (533) +pid: 0, m_client +LSP:: 541: /etc/cinit/svc/init:16 (32719) +LSP:: 541: /etc/cinit/svc/test/env:16 (32717) +LSP:: 541: /etc/cinit/svc/test:4 (32708) +LSP:: 541: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 541: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 541: /etc/cinit/svc/network:4 (32707) +LSP:: 541: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 541: /etc/cinit/svc/mount:4 (32706) +LSP:: 541: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 541: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 541: /etc/cinit/svc/local-tuning/keyboard-layout:16 (541) +pid: 0, m_client +LSP:: 548: /etc/cinit/svc/init:16 (32719) +LSP:: 548: /etc/cinit/svc/test/env:16 (32717) +LSP:: 548: /etc/cinit/svc/test:4 (32708) +LSP:: 548: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 548: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 548: /etc/cinit/svc/network:4 (32707) +LSP:: 548: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 548: /etc/cinit/svc/mount:4 (32706) +LSP:: 548: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 548: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 548: /etc/cinit/svc/local-tuning/keyboard-layout:16 (548) +pid: 0, m_client +LSP:: 555: /etc/cinit/svc/init:16 (32719) +LSP:: 555: /etc/cinit/svc/test/env:16 (32717) +LSP:: 555: /etc/cinit/svc/test:4 (32708) +LSP:: 555: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 555: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 555: /etc/cinit/svc/network:4 (32707) +LSP:: 555: /etc/cinit/svSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/man/cinit.text b/software/cinit/browse_source/cinit-0.3pre8/doc/man/cinit.text new file mode 100644 index 00000000..bd9bd0ab --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/man/cinit.text @@ -0,0 +1,64 @@ +cinit(8) +======== +Nico Schottelius + + +NAME +---- +cinit - fast executing, small and simple init with support for profiles + + +SYNOPSIS +-------- +'cinit' [cprofile:name_of_profile] + + +DESCRIPTION +----------- +Cinit is an init system. It normally gets started by the operating +system (Linux, *BSD, ...) directly after the kernel has been loaded. + +Cinit uses parallel execution of services as far as possible. To +ensure the correct boot order you need to specify which service +'needs' or 'wants' another service. The resulting dependency tree +is used at startup to determine which service to start when. + +This may result in different boot orders depending on whether +one service is one time faster or slower. Due to the dependencies +this is not a problem, but allowed and wished per design. + +For more information refer to the texinfo or html documentation. + + +OPTIONS +------- + +cprofile:name_of_profile:: + If specified, cinit will start the named profile instead of the + standard 'init' service + + +BUGS +---- +cinit is not tested nor documented very well currently. + +The porting to other OS is not finished yet (mainly missing +system level binaries: shutdown, reboot, halt). + +Both is work in progress. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + + +COPYING +------- +Copyright \(C) 2006 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/man/cservice b/software/cinit/browse_source/cinit-0.3pre8/doc/man/cservice new file mode 100644 index 00000000..26a472b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/man/cservice @@ -0,0 +1,37 @@ +WARNING: + cservice is not yet ready for cinit-0.3! + +-------------------------------------------------------------------------------- +cservice, +Nico Schottelius, 2005-06-10 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +cservice - control cinit + +cservice -[phearsu] + -e - (ein) start a service (including all needed dependencies) + -a - (aus) stop a respawing service, don't care about other services + + -r - reboot + -h - halt + -p - poweroff (on some systems the same as halt) + -s - reScue mode - only a shell + + -u - update: hot reboot - shutdown system and execute /sbin/cinit + +A service may be specified either as relative or as absolute path. + +-h, -p, -r, -s and -u need the "Magic Word" to do their work: "thilo" + +-------------------------------------------------------------------------------- + +Some examples: + + cservice -e /etc/cinit/getty/8 # fire up getty/8 + cd /etc/cinit/getty; cservice -a ./8 # shut down getty/8 + cservice -h thilo # halt + cservice -r thilo # reboot + cservice -s thilo # rescue + cservice -u thilo # update + +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/FAQ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/FAQ new file mode 100644 index 00000000..53494f73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile:home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/README.text b/software/cinit/browse_source/cinit-0.3pre8/doc/user/README.text new file mode 100644 index 00000000..3467ba63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/README.text @@ -0,0 +1,21 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit user documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +People using cinit. + +Content +------- + +hints.text: Some general hints +tuning.text: Some tuning hints diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/TODO b/software/cinit/browse_source/cinit-0.3pre8/doc/user/TODO new file mode 100644 index 00000000..6044e97a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/TODO @@ -0,0 +1,4 @@ +All the content in this file is unsorted. Reading may harm you. + +Confdir: /etc/cinit/conf/ +panic: /etc/cinit/conf/panic, /etc/cinit/conf/panic.params diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/compiles.on.text b/software/cinit/browse_source/cinit-0.3pre8/doc/user/compiles.on.text new file mode 100644 index 00000000..ad467d38 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/compiles.on.text @@ -0,0 +1,19 @@ +cinit - known configurations cinit compiles on +============================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-12-08 +:Author Initials: NS + + +This document lists all the configuration known to me on that +cinit compiles. If you compiled cinit with another configuration, +drop a mail to nico-cinit-report [at] schottelius.org. + +The list +-------- +cinit is known to compile on: + +- x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +- x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/conf-system.text b/software/cinit/browse_source/cinit-0.3pre8/doc/user/conf-system.text new file mode 100644 index 00000000..600112c3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/conf-system.text @@ -0,0 +1,34 @@ +The conf/ system +================= +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-08 +:Author Initials: NS + +This documentes describes the configuration system used by cinit. + + +What is the conf/ system? +------------------------- +The conf/ system is the configuration system for the cinit build. +The first line of each file below conf/ is a configuration value +with the name of the file: + +---------------------------------------------------------------------- +[9:00] hydrogenium:cinit-0.3pre6% head -n 1 conf/cc +gcc +---------------------------------------------------------------------- + +This means that the variable "cc" has the value "gcc". + + +What is the reason for conf/? +----------------------------- +I needed a small and simple configuration system, which may be included +in the full build process. + + +Is conf/ also usable for other projects? +---------------------------------------- +In its current state conf/ is just a prototype, with which I experiement +a lot. But it is possible that the future aim is to provide a simele +configuration and autoconfiguraton mechanism. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/config-dirs b/software/cinit/browse_source/cinit-0.3pre8/doc/user/config-dirs new file mode 100644 index 00000000..4a8fbb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/config-dirs @@ -0,0 +1,19 @@ +configuring + + /etc/cinit/defaults/panic -> link to something to execute on panic + (most likely /sbin/sulogin) + + /etc/cinit/defaults/tmp -> link to a directory where + the socket should be created, + after finishing boot + + What todo right before halting/rebooting/powering off + /etc/cinit/special/ + -> halt + -> reboot + -> poweroff + +Configuration +------------- + +Send kill signal diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/configuring.cinit.text b/software/cinit/browse_source/cinit-0.3pre8/doc/user/configuring.cinit.text new file mode 100644 index 00000000..1de033fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/configuring.cinit.text @@ -0,0 +1,320 @@ +cinit - Configuring +=================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2005-05-28 +:Author Initials: NS + + +This documentes describes how to configure cinit. +You should already have cinit installed, otherwise read +"cinit - Installing" first. + + +General configuration layout +---------------------------- +Cinit uses the <<>> configuration syntax, which means that +the configuration is kept as simple as possible. The following +sections will show you what that means. + +The cinit configuration consists of +- a special configuration directory +- and the service definitions. + +Paths +----- +Normally the configuration is kept below '/etc/cinit' +(though you can change this before compiling in conf/cinit_dir). + +The full description of the path layout of cinit and how to change it +can be found in 'paths.text'. + +Conf +---- +The special configuration directory is normally called `conf/` +(defined at compile-time in `conf/c_confdir`). + +For all executables into this directory apply the same rules as mentioned +below in "Execution: on and off": Appened .params specifies parameters, +appended .env specifies environment. + + +conf/last +~~~~~~~~~ +This is the last part that will be executed. After it has finished, cinit +will halt, power-off or reboot your machine. + +You can use it for whatever task to accomplish (as most things of cinit), but +the idea behind it is to use it for cleaning up things that are not covered +by the off parts of the services. This maybe swapoff (although this is an unecessary +call before poweroff, imho and even if needed this could be handled within the +off part of the same services that enabled it) or `umount -a` for everything +manually mounted and not unmounted yet. + + +conf/sleep_before_kill +~~~~~~~~~~~~~~~~~~~~~~ +This file contains just one line: The number of seconds to sleep after SIGTERM was sent +to every remaining process before sending SIGKILL to all processes. If this file +is unreadable or not existent, cinit will fall back to the value compiled in +(which was specified at build time in conf/sleep_kill). + + +Services +-------- +cinit is service based. Other init systems use shell +scripts (for instance /etc/rc, /etc/init.d/rc as starters +and /etc/rc*.d/* as "service definitions"). + +'current-init-problems.text' explains why cinit does *not* +use nor recommends the use of shell scripts. + +A service is simply a directory. This directory contains information about + +- what should be started when starting the service +- what should be started when stoping the service +- what dependencies the service has +- whether to restart it, when it exits + + +Full service definition +~~~~~~~~~~~~~~~~~~~~~~~ +. A service consists of + - a base directory (like /etc/cinit/svc/mount/root/) + - dependency configuration (`needs` and `wants`) + - start/stop programs (`on` and `off`) + - respawn flag (`respawn`) + + +Base directory +^^^^^^^^^^^^^^ +You can create the base directory everywhere below /etc/cinit/svc. +You may and it is recommened to create a directory structure +(see 'example-directory-structure.text'). + + +Dependencies +^^^^^^^^^^^^ +The subdirectories + +- `wants` +- and `needs` + +contain the dependencies for the service. + +Read 'dependencies.text' for more information. + + +Respawning +^^^^^^^^^^^ +If you create the empty file 'respawn' (adjustable via conf/c_respawn) +the service will be restarted after it exits. + +-------------------------------------------------------------------------------- +# Tell cinit to respawn the eth0.udhcpc service +touch /etc/cinit/svc/network/eth0.udhcpc +-------------------------------------------------------------------------------- + + +Execution: on and off +^^^^^^^^^^^^^^^^^^^^^ +When a service starts, the file `on` in the service +directory is executed. It is ok, if this file is not existing. +When a service stops, the file `off` in the service +directory is executed. + +The file with the extension `.params` is used to specify the arguments +to pass. Each line contains exactly one parameter. + +The file with the extension `.env` is used to specify the environment +to pass. Each line contains exactly one variable definition in the form +'variable=value'. + +. The following six files are possibly used on starting/stoping: + - ./on (the program called on startup) + - ./on.params (the parameters to pass to the program, see conf/c_params) + - ./on.env (the environment to pass to the program, see conf/c_env) + - ./off (the program called when shutting down the service) + - ./off.params (the parameters to pass to the program) + - ./on.env (the environment to pass to the program) + +Some examples: +---------------------------------------------------------------------- + /etc/cinit/svc/init: + ./wants -> services it wants + ./needs -> services it needs +---------------------------------------------------------------------- + +A more or less normal service without dependencies: +---------------------------------------------------------------------- + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it +---------------------------------------------------------------------- + +A service with all options used: +---------------------------------------------------------------------- + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn service + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting +---------------------------------------------------------------------- + + +Profiles +-------- +Profiles allow you to define different startup scenarios and select +those before bootup. Read 'profiles.text' for more information about +profiles. + +The profile support was added in cinit-0.0.6. + + +Service execution order +------------------------ +The first service executed is '/etc/cinit/svc/init'. +If a profile is selected '/etc/cinit/svc/`profilename`' is used +instead. + +Cinit builds a full service dependency tree through the `wants` +and `needs` of the first service and its dependencies +(recursively). + +After the tree is generated, cinit begins to start the services +at the end of the tree. These services have no `needs`. + +If you manage to create circular dependencies your system will not startup. +You can verify the correctness your configuration with the script +`cinit.check.config`. + + +Hints +----- + +Service executing / parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The on and off files can and should be links to the programs you want +to execute instead of a shell script. This way you save yourself the overhead +of loading a shell. The speed enhancement is very big if you have shells +like bash installed as /bin/sh (which is *not* senseful anyway, I would +recommend dash or ksh for /bin/sh). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. +The service could look like this: +---------------------------------------------------------------------- + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). +---------------------------------------------------------------------- + + +Daemons +~~~~~~~~ +Daemons are programs that go away to the background (using fork()) after +start). + +The fork-away strategy seems to be some illness introduced by traditional +init systems, that are dependent on the fact, that a process exits on +startup. + +cinit in contrast remembers the process ID (pid) of the services it +restarts (those with `respawn` enabled). + +So when the daemon fork()s away and the parent process exits it looks to +cinit like the watched service died and cinit will restart it. + +Happily, most processes can be taught not to go to background. +Some processes even do that by default and very less are broken that +one cannot tell them not to background. + +A list of known processes that are normally used in respawn +processes can be found in 'daemons.backgrounding.text'. + +If your process is not listed in `daemons.backgrounding.text', +check the documentation of your daemon program, if may have a +switch to disable forking. + +But, with a small hack it is even possible to respawn those broken processes: + +We start a program, that + - starts the daemon, + - monitors the pidfile of the daemon, + - waits until that pid does not exist anymore + - and then exits. + +Such a program is included into the cinit source tarball, +though I do not recommend using it. The better way is to implement +non forking mode into your process. + +The name of the program (actually a shell script) is 'cinit.wait.for.daemon'. + +You can use it as the `on` part of a service and add + + - the pidfile, + - the process binary + - and the process parameters + +to `on.params`. + +Thus the service could look like: +---------------------------------------------------------------------- + svc-broken-daemon/ + on -> /sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL +---------------------------------------------------------------------- +(This is not a so good example, because Apache supports non-forking mode). + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + + +Logging +~~~~~~~ +Currently there's no special logging support. +When a process writes to stdout, it will be displayed on +the same stdout cinit is connected to. + +In newer versions cinit (perhaps cinit-0.4) will also support logging +stdout and stderr of a service. + + +How to migrate your old init-system configuration to cinit +---------------------------------------------------------- +This is highly dependent on your actual system, your system +configuration and your own ideas. + +Cinit is able to replace all other init systems I know about. + +So the only question is "How to do it?". + +There are some hints on how to migrate to cinit in general and also +some os specific help in the file 'migrating-init-systems.text', + +Examples +-------- +Currently there are no example configurations available. +As soon as they are, you will be able to download them at +cinit's homepage. + +--> configuration.example.text + + +References +---------- ++ [[[cconfig]]] http://nico.schotteli.us/papers/linux/cconfig/ diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre8/doc/user/cross-compiling.text new file mode 100644 index 00000000..67208534 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/cross-compiling.text @@ -0,0 +1,6 @@ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/current-init-problems.text b/software/cinit/browse_source/cinit-0.3pre8/doc/user/current-init-problems.text new file mode 100644 index 00000000..529c2f84 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/current-init-problems.text @@ -0,0 +1,170 @@ +Currently available init systems and their problems +=================================================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-11 +:Author Initials: NS + + +This document describes some other init systems, especially +the "traditional" ones and describes their problems. + + +Introduction +------------- +some history, sysv, bsd, + +minit, runit, initng, cinit, upstart + + +Implementations +--------------- +List of current implementations as of 2006-12-12. + + +Linux Sys-V-Init +~~~~~~~~~~~~~~~~ +Debian Sid + +/etc/inittab + +"First script" /etc/init.d/rcS (specified +/etc/init.d/rcS: Bourne shell script text executable + +Runlevels: 0-6, different states + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% /sbin/runlevel +N 2 +-------------------------------------------------------------------------------- + + +Depending on runlevel, the init calls /etc/init.d/rc $runlevel. + +This is manually configured in /etc/inittab + +/etc/init.d/rc: Bourne shell script text executable + +/etc/init.d/rc + +Calls symlinks in /etc/rc?.d. Each runlevel a directory: + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% ls -ld /etc/rc*.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc0.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc1.d +drwxr-xr-x 3 root root 4096 2006-12-01 16:56 /etc/rc2.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc3.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc4.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc5.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc6.d +drwxr-xr-x 2 root root 4096 2006-11-28 23:17 /etc/rcS.d +-------------------------------------------------------------------------------- + + + +rlmanager: sys-v-init hack +~~~~~~~~~~~~~~~~~~~~~~~~~~ +rlmanager: one script to be executed, sources +simply configuration + +Gentoo Linux +~~~~~~~~~~~~ +no content yet + +BSD init +~~~~~~~~ +Analyzed on FreeBSD. +/etc/rc +/etc/rc.d/ system services +/usr/local/etc/rc.d/ user installed services +Scripts may use values from /etc/rc.conf to check whether +they should be started or not. + +runit +~~~~~ +Three stages: Script1, dependencies, Script3 + + +Initng +~~~~~~ +no content yet + +minit +~~~~~ +Focus on being small. Needs libowfat. +Log support through pipe. + + + + + +Problems overview +----------------- + +Scripts +~~~~~~~ +Scripts are slow. Startup time. Execution time. Unecessary overhead. + + +Sequential startup +~~~~~~~~~~~~~~~~~~ +In the 'old' init systems there is no support of parallel execution. +So if one services hangs at startup, the whole system has to wait +(for instance a dhcp request). In the worst case this may result in +a non-booting system. Systems with dependencies can start the gettys +for login before, in parallel to or even after blocking services are +started. The fact, that they *are* started means you can interact with +the system, you can end looping or blocking services. + +So sequential startup may not only be the reason for a pretty +slow system, but also for an unmaintainable one. + +Unecessary services +~~~~~~~~~~~~~~~~~~~ +Many implementations try to do whatever-is-possible on boot, trying to +cover every possible and impossible situation. + +Portmap without any program that needs it. + +Starting all installed services per default (Debian) vs. let the +user choose what to start (Gentoo). + +Nicht entfernte Altlasten ab und zu. + + +No dependencies +~~~~~~~~~~~~~~~ +Systems without dependencies may result in a chaos state after booting up. + + +Only soft dependencies +~~~~~~~~~~~~~~~~~~~~~~~ +The dependencies are used, but because of soft dependencies, services +may be started although their dependency is missing. + + +Parallel init system debugging +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In contrast to the old init systems, parallel executing init systems +are much harder to debug. If the starting init systems does not have +proper logging / reporting to the user (like cinit-0.2 has), the user +may never find out, what happened and why. + + +Parallel / dependency checking init system with variable boot order +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The boot order may be different each time you boot and is dependent +on the success or failure of services. This way you can never tell +exactly how and in which order they are executed. On multiprocessor +machines, where processes may be truely executed in parallel, there +is no order anymore, but there are n orders on n processors. + +To solve this issue, init systems which support parallel execution +should ship with some testing tools, that simulate a startup. + +cinit will ship with such a tool in cinit-0.4. + + +References +---------- +no content yet diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/daemons.backgrounding.text b/software/cinit/browse_source/cinit-0.3pre8/doc/user/daemons.backgrounding.text new file mode 100644 index 00000000..cf0c32f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/daemons.backgrounding.text @@ -0,0 +1,82 @@ +cinit - Daemons backgrounding +============================= +Nico Schottelius +0.1, for cinit 0.3, Initial versinon from 2005-06-12 + + +This document describes the backgrounding process and how to disable it. + + + +Definition +----------- +A daemon is a program which runs in the background. +Running in the background means you cannot access the process +directly (like you can press a key in a shell). + + +Daemons and cinit +------------------ +cinit normally watches system services and restarts them +(`respawn` flag in the configuration). If the process goes to background, +cinit cannot control it directly anymore. + +List of daemons and non-forking parameters +------------------------------------------- + +The following daemons / servers are known to avoid backgrounding easily: + +- acpid [x86 power management]: -f (undocumentated but works) +- apache [webserver]: -DFOREGROUND +- asterisk [pbx]: -f +- bind [dns server/caching]: -f +- cardmgr [pcmcia/cardbus]: -f +- cron (vixie) [schedular]: -f +- cupsd [printer server]: -f or -F +- dhclient [dhcp client]: -d +- dhcp3 (isc) [dhcp server]: -f +- distccd [compile server]: normal behaviour +- fam [file alteration monitor]:-f +- fcron [schedular]: -f +- frox [ftp proxy]: "NoDetach" in config +- freeradius [radiusd]: -f +- gdm [display manager]: -nodaemon +- hybrid [irc server]: -foreground +- icecast2 [sound streamer]: normal behaviour +- mini-lpd [printer server]: normal behaviour +- metalog [log server]: normal behaviour +- monotone [vcs]: normal behaviour +- mpd [music server]: --no-daemon +- nessusd ["security server"]: normal behaviour +- ntpd [time server]: -n +- nylon [socks proxy]: -f (prints output to terminal) +- oidentd [identd server]: -i +- oops [http proxy]: normal behaviour +- openpbx [pbx]: -f +- openssh [ssh server]: -D +- openvpn [vpn server]: normal behaviour +- pbbuttonsd [power management]:normal behaviour +- portmap [portmapper]: -f +- proftpd [ftp server]: -n +- qmail [mta]: normal behaviour +- rsync ["file server"]: --no-detach +- silcd ["secure chat server"]: -F, --foreground +- slapd [ldap]: -d +- snmpd [snmp daemon]: -f +- stunnel [ssl wrapper]: "foreground = yes" in config +- svnserve [vcs]: --foreground +- syslogd [log server]: -n +- syslog-ng [log server]: -F +- tcpserver [super server]: normal behaviour +- udhcpc [dhcp client]: normal behaviour +- vsftpd [ftp server]: normal behaviour (or: config: background=no) +- xinetd [super server]: -dontfork + + +Problematic daemons +------------------- +Those are the daemons that do not offer the possibility (as of release 0.2): + +- atd (no switch, no configuraton option) +- inetd (some variants) +- nscd (no switch, no configuraton option) diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/debugging.configuration b/software/cinit/browse_source/cinit-0.3pre8/doc/user/debugging.configuration new file mode 100644 index 00000000..1289865e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/debugging.configuration @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +Debugging your init configuration, +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +As writing an init configuration is not the easiest thing, +here are some problems (P) and debugging hints (H): + +P: There's no output! +H: If you don't start a service which outputs something there won't be any, + cinit starts up silently. + +P: Service XYZ seems not to work? +H: Try the following in your shell: + cd /etc/cinit/the-service; ./on "$(on.params)" + If that succeeds it has perhaps something missing which should have been + started before. +H: Create a test-service, which contains the following: + on: link to /bin/echo + on.params: "A test string" (with or without the quotes) + Now add the test-service to the needs directory of service XYZ. + If you see output the next time, the service is started. + Otherwise you forgot to make another service dependent on service + XYZ. + +P: How can I test if a non-outputting service successfully started? +H: Create another service, which depends on your service and make + it echo something. + +P: Does that profile support really work? +H: Try that: cprofile:NONEXISTENT and you'll see. + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/dependencies.text b/software/cinit/browse_source/cinit-0.3pre8/doc/user/dependencies.text new file mode 100644 index 00000000..e1154a54 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/dependencies.text @@ -0,0 +1,68 @@ +cinit - Dependencies +==================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-13 +:Author Initials: NS + +This document describes the different dependency types of cinit. + + +Dependencies in general +----------------------- +Each service may have two types (non-exclusive) types of dependencies: +The so called `needs` or `wants`. These are directories below the service +directory and contain symbolic links to the dependencies. +The name of the link can be freely chosen. + +An example: + +The service '/etc/cinit/svc/getty/2' needs the service +'/etc/cinit/svc/local-tuning/keyboard-layout': +-------------------------------------------------------------------------------- +[21:35] hydrogenium:needs# cd /etc/cinit/svc/getty/2/needs +[21:35] hydrogenium:needs# ls -l +insgesamt 0 +lrwxrwxrwx 1 root root 37 2006-10-26 17:51 keyboard-layout -> ../../../local-tuning/keyboard-layout +[21:35] hydrogenium:needs# cd keyboard-layout/ +[21:35] hydrogenium:keyboard-layout# pwd -P +/etc/cinit/svc/local-tuning/keyboard-layout +-------------------------------------------------------------------------------- +(Warning: This is an incomplete example, it misses at least `mount/root` +as dependency) + +This service could additionally want something else, too. It is also +possible that a service only `wants` another service or that a service +has no dependencies. + + +Absolute versus relative links +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +cinit does not care whether a link is relative or absolute. And +as far as I can see it does not make any difference to usability. + +In general, it seems to be a little bit 'easier' to use relative links +when manually configuring cinit ('ln -s ../../../service' versus +'ln -s /etc/cinit/svc/category/service'), but easier readable when +analysing them (with `ls -l'). + + +The two types +------------- + +needs +~~~~~ +`Needs` are the 'hard dependencies': If a services fails to start that +is linked in the `needs` directory, the service will not be started. + + +wants +~~~~~ +`Wants` are the 'soft dependencies': cinit will try to start the dependencies +found in `wants` before the service, but the service will also be started, +indenpendend of success of the dependencies. + + +Circular dependency problem +---------------------------- +If you manage to create circular dependencies cinit will fall into an +endless loop. Use `cinit.check.config` to verify your configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/example-directory-structure.text b/software/cinit/browse_source/cinit-0.3pre8/doc/user/example-directory-structure.text new file mode 100644 index 00000000..d19ac1fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/example-directory-structure.text @@ -0,0 +1,140 @@ +cinit - Example directory structure +=================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-12 +:Author Initials: NS + + +This document describes a tested directory hierarchy that +you could adapt for your setup. But this is no need, you +are free to design your own layout and/or improve this one. + + +Main idea +--------- +The main reason for this layout is that all services directly located +in /etc/cinit/svc/ would create a not-so-easy maintainable chaos. + + +Categories +---------- +When thinking about grouping some parts together, there came some categories +to my mind: + +- init: This must be there. It is no real choice (well, working with profiles + is an alternative) +- we need to mount things +- things that are used to 'configure' my local system +- network connectivity +- services only locally reachable +- services remote reachable +- something that let me login + +With these requirements the following categories (=directories) were created: + + +getty +~~~~~ +Gettys are those little and nice programs that allow you to login. +As we normally want to have more than one it seems to be senseful +to create a category for it. + +For the creation of the getty services itself, an extremly simply +scheme is used: Simply create services with the number of the getty +that is running. This results in the following setup: + +-------------------------------------------------------------------------------- + /etc/cinit/svc/getty/ + 2/ + 3/ + 4/ + ... +-------------------------------------------------------------------------------- + +The number '1' is skipped, because cinit normally logs to stdout that is +connected to the first console. + +`/etc/cinit/svc/getty/needs/` contains all enabled gettys. This way +`/etc/cinit/svc/init/needs/` can refer to `/etc/cinit/svc/getty/` only +but will catch all gettys. + +If you want to allow users to login via a graphical login screen +(also known as X11 with xdm/gdm/kdm) you could add this service as +`getty/gdm` for instance, because gdm is just another getty (just with +more colours). + + +init +~~~~ +`init` is the service everything begins with. You simply put all other +categories into the `needs` (or if soft-dependencies to `wants`) of this +service. + + +local-services +~~~~~~~~~~~~~~ +This directory contains all the services that are only locally reachable. +This may contain local webserver, a MTA that only accepts mails +via /usr/sbin/sendmail (like qmail is capable of) or some other local +only available services. + + +local-tuning +~~~~~~~~~~~~ +This directory is used for local configuration. It contains services, +that setup the keyboard layout (perhaps called `local-tuning/keyboard-layout` +needed by `getty`!), adjust system to hardware time, cleans /tmp +(`local-tuning/tmpclean`), ... + + +mount +~~~~~ +This directory contains the service to remount the root filesystem +read-write (`mount/root`) which is dependend on the filesystem +check (`mount/root/fsck`, also have a look at 'special-services.text'). +It also contains the services that mount the pseudo filesystems +(`mount/proc` (FreeBSD, Linux) and `mount/sys` (Linux)) and all +other partitions (`mount/home`, `mount/usr`,...) which again contain +a dependency to the filesystem check, if necessary. + + +network +~~~~~~~ +The `network` directory should cover all of the network basics. +This includes setting the hostname (`network/hostname`) configuring +network devices (`network/eth0.static`, `network.ath0.master`) limiting +network accesses (`network/firewall`), enable packet forwarding +(`network/ip-forward`), adjusting the available bandwith +(`network/traffic-shaping`), ... + + +If there are too many network devices, you could create a subfolder named +`network/devices/`. + +I used to suffix the network devices with the mode they run, so I can +use different modes in different profiles (setup the wireless card in +master mode at home, in ad-hoc mode at a friend and in managed mode at +work). + + +remote-services +~~~~~~~~~~~~~~~~ +Remote-services are all services that are reachable from remote hosts. +This includes ssh (`remote-services/opensshd`), webserver +(`remote-services/lighttpd` or `remote-services/apache22`). + +Most servers `need` a working network interface, before they can be +started, but mostly it is enough to have the loopback interface up. + +This results in the possible `needs` dependency for `network/loopback` +and soft dependencies, what we call `wants` on `network`. + +Other examples for remote services are +- dns (`remote-services/dnscache`, `remote-services/tinydns`, + `remote-services/bind`) +- fileserver (`remote-services/smbd`, `remote-services/mmbd`) +- network infrastructure (`remote-services/bgpd`) +- many others + +Many daemons used for `remote-services` are described in +'daemons.backgrounding.text'. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/ideas b/software/cinit/browse_source/cinit-0.3pre8/doc/user/ideas new file mode 100644 index 00000000..d3f13d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/ideas @@ -0,0 +1,3 @@ +- cinit-multi-machine-daemon: + coordinating bootup with several machines + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/installing-cinit.text b/software/cinit/browse_source/cinit-0.3pre8/doc/user/installing-cinit.text new file mode 100644 index 00000000..34902057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/installing-cinit.text @@ -0,0 +1,63 @@ +cinit - Installing +================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-06-02 +:Author Initials: NS + +This documentes describes how to install cinit. + + +Installing +---------- +Installing cinit is not a big deal, so is this document. +Where possible I added a list of commands to execute at the +end of each section. + + +From source +~~~~~~~~~~~ +Retrieve the latest source from http://unix.schottelius.org/cinit/. +Then extract it, change to the source directory, adjust your OS in the +file "conf/os" and type "make all". + +To report success run scripts/report.compile and send the output +to nico-cinit-report |at| schottelius.org. I will use this information +to know how and where cinit is compiled. Personal values like hostnames +or your e-mail address will *not* be published. + +Code to install cinit: +---------------------------------------------------------------------- +# the program we use to retrieve the source (fetch on FreeBSD) +get=wget +# change to current version +version=0.3pre6 +url=http://unix.schottelius.org/cinit/cinit-${version}.tar.bz2 +# get it +$get "$url" +# exctract it +tar xvjf "cinit-${version}.tar.bz2" +# build it and report success +who=nico-cinit-report +where=schottelius.org +cd cinit-${version} && make all && \ +./scripts/report.compile | mail -s "cinit: compile report" "${who}@${where}" +---------------------------------------------------------------------- + +Warning: Currently the install target is missing. Simply copy +"src/cinit" to /sbin/cinit. + + +Changing compile time parameters +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +All compile time configurations are kept below the "conf" +directory. Please read 'conf-system.text' for more information. + + +Cross-compiling +--------------- +For cross compiling see 'cross-compiling.text'. + + +Continue reading +---------------- +After having installed cinit, continue reading the document "Configuring cinit". diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/main.text b/software/cinit/browse_source/cinit-0.3pre8/doc/user/main.text new file mode 100644 index 00000000..ddf88304 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/main.text @@ -0,0 +1,113 @@ +cinit - a modern init system +============================= +Nico Schottelius +v0.1, for cinit-0.2.2, 2005-01-18 +:Author Initials: NS + + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/meta.dependencies b/software/cinit/browse_source/cinit-0.3pre8/doc/user/meta.dependencies new file mode 100644 index 00000000..fe743c48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/meta.dependencies @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, one would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation (see profile.support). + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +why it does not even need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ + +This way you have the indirection (meta-dependencies) in the filesystem +and cinit does not need any additional code. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/paths.text b/software/cinit/browse_source/cinit-0.3pre8/doc/user/paths.text new file mode 100644 index 00000000..d44bca61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/paths.text @@ -0,0 +1,121 @@ +cinit - Configuration +====================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Configuring cinit - the paths used + + +Main structure +--------------- +The base directory under which all configurations are found +is '/etc/cinit' (changable via conf/cinit_dir). + +The basic hierarchy is shown below: +---------------------------------------------------------------------- +/etc/cinit + svc -> services (adjustable: conf/svcdir) + conf -> general configuration (adjustable: conf/confdir) +---------------------------------------------------------------------- + + +The subdirectory 'conf' +~~~~~~~~~~~~~~~~~~~~~~~ +In this directory are general configurations located. +See below for the list of files that are located in this +directory. + + +The subdirectory 'svc' +~~~~~~~~~~~~~~~~~~~~~~ +This directory contains the services. A service is a directory. + + +Filenams for executable files +------------------------------ +When you create something that cinit should execute (like on +starting a service, on stopping a service, on panic, ...), cinit +will recognize the following extensions: + +. cinit executions extensions + - 'name' - the file that should be executed + - `'name'.params` - the parameter to pass to 'name' when executing + - `'name'.env` - the environment to pass to 'name' when executing + + +Name.params +~~~~~~~~~~~ +The 'params' file is a simple file containing one argument on each +line. + +Example: +---------------------------------------------------------------------- +[17:34] hydrogenium:cinit-0.3pre6% ls -l /etc/cinit/svc/init/on +lrwxrwxrwx 1 root root 9 2006-11-16 09:12 /etc/cinit/svc/init/on -> /bin/echo +[17:34] hydrogenium:cinit-0.3pre6% cat /etc/cinit/svc/init/on.params +The initial service has been started. (first parameter) +Some other useful information. (second parameter) +---------------------------------------------------------------------- + +Name.env +~~~~~~~~ +The 'env' file contains the environment definition. +Specify one assignment on each line, containing only "variable=value". + +Example: +---------------------------------------------------------------------- +[18:00] hydrogenium:% cat /etc/cinit/svc/remote-services/tinydns/on.env +IP=192.168.42.23 +---------------------------------------------------------------------- + +eof + +List of executable files +------------------------ +This list shows you what files are executable for cinit. + +on / off +~~~~~~~~~ +The files `on` and `off` are executed if found within a service +definition. `on` is called when starting the service, `off` +is called when stoping it. + + +conf/panic +~~~~~~~~~~ +This file will be executed by cinit if it has to panic. +Panic situation may occur, when there are heavy problems +like failing memory allocation in core areas. You can +change the name of the file in the pre-compilation settings +in `conf/c_panic`. + +If `conf/panic` is missing and cinit has to panic, a builtin +panic action will be called (see `conf/sulogin`). + + +conf/halt +~~~~~~~~~ +`conf/halt` will be called when cinit has shutdown all services +and wants to halt the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_halt`. + + +conf/poweroff +~~~~~~~~~~~~~ +`conf/poweroff` will be called when cinit has shutdown all services +and wants to poweroff the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_poweroff`. + + +conf/reboot +~~~~~~~~~~~ +`conf/reboot` will be called when cinit has shutdown all services +and wants to reboot the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_reboot`. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/profiles.text b/software/cinit/browse_source/cinit-0.3pre8/doc/user/profiles.text new file mode 100644 index 00000000..ab4d3c4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/profiles.text @@ -0,0 +1,79 @@ +cinit - Profiles +================ +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-06-04 +:Author Initials: NS + + +cinit profiles described. + + +What are profiles? +------------------ +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +How to use profiles? +--------------------- +Simply pass 'cprofile:PROFILENAME' (like cprofile:home) to cinit. + + +How to pass argumenents to cinit? +--------------------------------- +How to pass arguments to your init system depends on your operating +system and on your bootloader. + +Linux +~~~~~ +Under Linux the init-system gets the kernel arguments +(see linux.kernel.eats.arguments) as arguments. +So you can use + + kernel /usr/src/linux/vmlinuz cprofile:work (grub1,grub2) + append="cprofile:work" (LILO,yaboot) + +Other Unices should work like Linux, please consult your local +documentation. + + +How to configure profiles? +-------------------------- +It's very simple: Normally cinit would call /etc/cinit/svc/init as +the first service (with all its dependencies). If you pass 'cprofile=wireless' +to it, cinit will start from /etc/cinit/svc/wireless +instead. + +So the only thing you have to do is to create a service directory +below /etc/cinit/svc with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit/svc; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/svc/init; tar c . | (mkdir ../myprof; cd ../myprof; tar x ) + +That's it! + + +Some examples +------------- + +Here are some examples we found in #cLinux: + +-------------------------------------------------------------------------------- + profile name what it does + + musibox only start mp3blaster + terminal start only minicom, which opens the serial line + net-terminal start a respawning shell script, which starts + ssh to the selected host + video start X+mplayer, which plays the dvd/cdrom + wireless What to start when beeing in an unknown wlan + home/work selected services (nfs, ip, ...) for home or work +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/replacing.init b/software/cinit/browse_source/cinit-0.3pre8/doc/user/replacing.init new file mode 100644 index 00000000..2858c56c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/replacing.init @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and link, move or copy cinit to init (ln -s /sbin/cinit /sbin/init), reboot. + +That's everything in general, the biggest part will be to configuring cinit. + +See also doc/merging.other.initsystems. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/special-services.text b/software/cinit/browse_source/cinit-0.3pre8/doc/user/special-services.text new file mode 100644 index 00000000..4367bed1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/special-services.text @@ -0,0 +1,12 @@ +at: + no non-forking mode +fsck: + returns non-zero if it repaired something. + You have to wrap it into a shell-script :-( + + #!/bin/sh + fsck $@ + [ $? -le 1 ] && exit 0 + exit 1 + +Non-zero exit in general diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/supported-os.text b/software/cinit/browse_source/cinit-0.3pre8/doc/user/supported-os.text new file mode 100644 index 00000000..97b29506 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/supported-os.text @@ -0,0 +1,32 @@ +Supported operating systems +=============== +Nico Schottelius +0.1, Initial Version from 2007-02-15 +:Author Initials: NS + +This document lists the supported operating systems. + + +Supported OS +------------ +This means currently that cinit compiles on that system + +Tested by the author +~~~~~~~~~~~~~~~~~~~~ +- GNU/Linux +- FreeBSD +- NetBSD + +Reported by others +~~~~~~~~~~~~~~~~~~ +[none] + +Unsupported OS +-------------- + +OpenBSD +~~~~~~~ +Seems to not comply to Posix / XSI. Have a look at +http://home.schottelius.org/~nico/unix/openbsd/ftok-sys-ipc.h-problem. +This is a demo of the problem on OpenBSD 4.0 with cinit-0.3pre7-git. + diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/updating.cinit b/software/cinit/browse_source/cinit-0.3pre8/doc/user/updating.cinit new file mode 100644 index 00000000..fc0d3fef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/updating.cinit @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. call cservice -u thilo (if you have cinit-0.1 or later) + + For older versions: + + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything running and restart as if you would just + have booted. diff --git a/software/cinit/browse_source/cinit-0.3pre8/doc/user/using.rescue b/software/cinit/browse_source/cinit-0.3pre8/doc/user/using.rescue new file mode 100644 index 00000000..f58ff512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/doc/user/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user"). + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/cinit.build-env b/software/cinit/browse_source/cinit-0.3pre8/scripts/cinit.build-env new file mode 100644 index 00000000..94e093e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/cinit.build-env @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: build environment to be used in scripts +# * Should be sourced by using scripts +# 2006-10-26 +# + +. $(dirname $0)/cinit.read-conf + +export BASEDIR=${DESTDIR}${CINIT_DIR} +export SERVICES=${BASEDIR}/${SVCDIR} +export CONFIG=${BASEDIR}/${CONFDIR} diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/cinit.get-confdir b/software/cinit/browse_source/cinit-0.3pre8/scripts/cinit.get-confdir new file mode 100644 index 00000000..38d8572d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/cinit.get-confdir @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# Date: 2005-05-24 (Last Changed: 2005-08-08) + +# try environment first +if [ "$CINIT_CONF_DIR" ]; then + CONFDIR=$CINIT_CONF_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +else + echo 'Did not find cinit configuration!' >&2 + echo "Please set the variable CINIT_CONF_DIR" >&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/cinit.install.standard.dirs b/software/cinit/browse_source/cinit-0.3pre8/scripts/cinit.install.standard.dirs new file mode 100644 index 00000000..22cf273d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/cinit.install.standard.dirs @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install standard sub-configuration directories +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.build-env + +for svc in $SERVICE_CATEGORIES; do + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${SERVICES}/${svc}" +done + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/cinit.mkheader b/software/cinit/browse_source/cinit-0.3pre8/scripts/cinit.mkheader new file mode 100644 index 00000000..80e3f7cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/cinit.mkheader @@ -0,0 +1,32 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric: no quotes needed + is_numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + is_string="$(echo $value | grep '^"')" + + # + # Check for quote type + # + if [ ! "$is_numeric" -a ! "$is_string" ]; then + one_char=$(echo -n $value | wc -c) + + if [ "$one_char" -eq 1 ]; then + value="'$value'" + else + # is a string + value="\"$value\"" + fi + fi + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/cinit.read-conf b/software/cinit/browse_source/cinit-0.3pre8/scripts/cinit.read-conf new file mode 100644 index 00000000..80a32463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/cinit.read-conf @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# ~ 2005 +# + +CONFS=$($(dirname $0)/cinit.get-confdir) + +set -e + +for conf in ${CONFS}/*; do + NAME="$(basename $conf | tr a-z A-Z)" + if eval test -z \$$NAME; then + eval $NAME=\"$(head -n 1 $conf)\" + eval export $NAME + fi +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/create_baseconfig.sh b/software/cinit/browse_source/cinit-0.3pre8/scripts/create_baseconfig.sh new file mode 100644 index 00000000..7c9b69e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/create_baseconfig.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# 2006-10-23 +# cLinux/cinit + +. $(dirname $0)/cinit.build-env + +set -e + +mkdir -p "${BASEDIR}" + +mkdir -p "${SERVICES}" +mkdir -p "${SERVICES}/${C_INIT}" + +mkdir -p "${CONFIG}" diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/README b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/README new file mode 100644 index 00000000..2162b6b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/README @@ -0,0 +1 @@ +Only to be used by Nico Schottelius. diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/cinit.release b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/cinit.release new file mode 100644 index 00000000..1d71964e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/cinit.release @@ -0,0 +1,60 @@ +#!/bin/sh +# Nico Schottelius +# Build release tar +# Date: Sat Oct 15 21:38:29 CEST 2005 +# Last Changed: ls -l + +# only release if I tell it to release +[ "$1" = "now" ] || exit 23 + +#if [ $# -ne 2 ]; then +# echo "This is a maintainer-only script to release cinit" +# echo $(basename $0): source-dir version +# exit 1 +#fi + +DDIR="$(cd $(dirname $0)/../../../; pwd -P)" +DIR="$(cd $(dirname $0)/../../; pwd -P)" +VERSION="$(cd "$DIR"; pwd -P | sed 's;.*/cinit-;;')" +VERSION_CONF="$(head -n1 $(dirname $0)/../../conf/version | sed 's/^"\(.*\)"$/\1/')" +VERSION_CHANGES="$(head -n1 "$(dirname $0)/../../CHANGES" | sed 's/cinit-\(.*\):$/\1/')" + +echo "=> Version directory: $VERSION" +echo "=> Version conf/version: $VERSION_CONF" +echo "=> Version CHANGES: $VERSION_CHANGES" + +if [ "$VERSION" = "$VERSION_CONF" -a "$VERSION" = "$VERSION_CHANGES" ]; then + echo "=> Version confirmed." +fi + +echo -n "=> Continue? " +read yes + +#DIR=$1 +#VERSION=$2 +OUT_NAME=cinit-${VERSION}.tar.bz2 +D_HOST=home.schottelius.org +D_BASE=www/org/schottelius/unix/www/cinit +D_DIR=${D_BASE}/archives/ +D_SOURCE=${D_BASE}/browse_source/ +LINK=current + +if [ ! -d "$DIR" ]; then + echo "$DIR is not a directory" + exit 1 +fi + +( cd "$DIR" && make dist ) || exit 1 + +echo "Creating bzip2 compressed tar" +tar cj -X $DIR/.exclude -f "$OUT_NAME" "$DIR" +chmod 0644 "$OUT_NAME" +echo "Transfering to $D_HOST" +scp "$OUT_NAME" "$D_HOST:$D_DIR" +echo "Extracting to $D_SOURCE" +ssh "$D_HOST" "tar xfj $D_DIR/$OUT_NAME -C $D_SOURCE" +echo "Correcting paranoid permissions" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type f -exec chmod 0644 {} \\;" +ssh "$D_HOST" "find \"$D_SOURCE/$DIR\" -type d -exec chmod 0755 {} \\;" +ssh "$D_HOST" "cd \"$D_SOURCE\" && rm -f \"$LINK\" && ln -s \"$DIR\" \"$LINK\"" +echo "Please do not forget to update the website..." diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/compile+run.sh b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/compile+run.sh new file mode 100644 index 00000000..30ec68a6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/compile+run.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# yah - yet another hack + +if [ ! "$1" ]; then + echo "HOSTNAME" + exit 23 +fi + +host="$1" + +hier=$(dirname $0) + +$hier/compile_test.sh "$host" + +if [ $? -ne 0 ]; then + echo "aborting, did not compile on $1" + exit 1 +fi + +ssh "${host}" './cinit/src/cinit & (sleep 30; kill -9 $(pgrep cinit))' diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/compile_local.sh b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/compile_local.sh new file mode 100644 index 00000000..e2bfce5e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/compile_local.sh @@ -0,0 +1,24 @@ +# just a hack + +dir=$(dirname $0) + +sys=$(uname -s) +sys_small=$(echo $sys | tr '[A-Z]' '[a-z]') + +case $(uname -s) in + NetBSD|OpenBSD) + make=gmake + ;; + *) + make=make + ;; +esac + +cd "${dir}/../../" +echo $sys_small > conf/os +# automatically called by make.. +#./bin/cinit.configure.os + +cd "src" +$make clean +$make cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/compile_run_as_compiler.sh b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/compile_run_as_compiler.sh new file mode 100644 index 00000000..f1ba01d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/compile_run_as_compiler.sh @@ -0,0 +1,14 @@ +what=$(dirname $0)/../../ +what_real=$(cd "$what" && pwd -P) +dest=~compiler/cinit-test + +set -e +sudo rsync -av "${what_real}/" "$dest" +sudo chown -R compiler "$dest" +sudo -u compiler "${dest}/scripts/internal/compile_local.sh" +sudo -u compiler "${dest}/src/cinit" & +sleep 13 +sudo -u compiler "${dest}/scripts/internal/stop_cinit.sh" + +# exit 0 for make +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/compile_test.sh b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/compile_test.sh new file mode 100644 index 00000000..335f31ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/compile_test.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# yah - yet another hack + +host="$1" +what=$(dirname $0)/../../ + +rsync --exclude .git --exclude \*.o -av "${what}" "${host}:cinit" +ssh "${host}" "./cinit/scripts/internal/compile_local.sh" diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/create_test_config.sh b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/create_test_config.sh new file mode 100644 index 00000000..720ce969 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/create_test_config.sh @@ -0,0 +1,18 @@ +hier=$(dirname $0) + +set -e +${hier}/../cinit.install.standard.dirs +cat > /etc/cinit/svc/init/on << eof +#!/bin/sh +echo test1 +sleep 4 +echo test2 - \$@ +eof +chmod 0755 /etc/cinit/svc/init/on + +cat > /etc/cinit/svc/init/on.params << eof +es +scheint +zu +gehen +eof diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/find_right_version.sh b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/find_right_version.sh new file mode 100644 index 00000000..759f23c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/find_right_version.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +src="$(dirname $0)/../../" +src_abs=$(cd "$src" && pwd -P) + +for commit in $( git log --pretty=short | awk '/^commit/ { print $2 }'); do + set -e + cd "$src_abs" + temp=$(mktemp -d /tmp/cinit.XXXXXXXXXX) + git-archive --format=tar "$commit" | ( cd "$temp"; tar x ) + cd "${temp}/src" + set +e + make clean && make cinit && ./cinit + if [ "$?" -eq 0 ]; then + echo "Commit $commit is ok" + exit 0 + fi + echo "Broken $commit" + sleep 1 + set -e + rm -rf "$temp" +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/stop_cinit.sh b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/stop_cinit.sh new file mode 100644 index 00000000..86e4d82b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/stop_cinit.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# Linux specific, but don't care, I am the only person that should use it + +killall -TERM cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/test_on_hosts.sh b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/test_on_hosts.sh new file mode 100644 index 00000000..e6df35ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/test_on_hosts.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# yah + +hosts="penrose.bsdprojects.net bot.unixkiste.org suckz.eu jiffies.forkbomb.ch" + +set -e + +for host in $hosts; do + echo "$1 on $host" + "$1" "$host" | sed "s/^/${host}: /" + echo "==> Finished $host" +done diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/valgrind b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/valgrind new file mode 100644 index 00000000..f769f9da --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/internal/valgrind @@ -0,0 +1 @@ +valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes --leak-resolution=high ./cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/scripts/report.compile b/software/cinit/browse_source/cinit-0.3pre8/scripts/report.compile new file mode 100644 index 00000000..ac591412 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/scripts/report.compile @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# 2006-12-08 +# Report compile success +# + +echo "cinit compile success report" +echo "----------------------------" +"$(dirname $0)/cinit.mkheader" +echo "----------------------------" +uname -a +echo "----------------------------" +. "$(dirname $0)/cinit.read-conf" +echo '$CC' +"$CC" -v +echo "----------------------------" +echo -n "Size: " +ls -l "$(dirname $0)/../src/cinit" diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-17-19:03:48 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-17-19:03:48 new file mode 100644 index 00000000..e379e004 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-17-19:03:48 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 17 19:03 cinit +-rwx------ 1 nico users 46760 Jun 17 19:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-20-12:16:40 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-20-12:16:40 new file mode 100644 index 00000000..1f0c3325 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-20-12:16:40 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 20 12:16 cinit +-rwx------ 1 nico users 50860 Jun 20 12:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-20-15:16:31 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-20-15:16:31 new file mode 100644 index 00000000..75dc3e7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-20-15:16:31 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 15:16 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-20-16:29:28 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-20-16:29:28 new file mode 100644 index 00000000..1294bde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-20-16:29:28 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-20-16:29:50 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-20-16:29:50 new file mode 100644 index 00000000..69fe7490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-20-16:29:50 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 16:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-21-11:53:35 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-21-11:53:35 new file mode 100644 index 00000000..4a1e7b6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-21-11:53:35 @@ -0,0 +1,3 @@ +total 192 +-rwx------ 1 nico users 102039 Jun 21 11:53 cinit +-rwx------ 1 nico users 87871 Jun 21 11:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-07:33:11 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-07:33:11 new file mode 100644 index 00000000..e6c8ff14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-07:33:11 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47544 Jun 22 07:33 cinit +-rwx------ 1 nico users 46760 Jun 22 07:33 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-07:57:13 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-07:57:13 new file mode 100644 index 00000000..17161d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-07:57:13 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47536 Jun 22 07:57 cinit +-rwx------ 1 nico users 46760 Jun 22 07:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-08:08:40 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-08:08:40 new file mode 100644 index 00000000..770083f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-08:08:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47424 Jun 22 08:08 cinit +-rwx------ 1 nico users 46760 Jun 22 08:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-08:30:42 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-08:30:42 new file mode 100644 index 00000000..aa95fb3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-08:30:42 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47360 Jun 22 08:30 cinit +-rwx------ 1 nico users 46760 Jun 22 08:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-09:19:42 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-09:19:42 new file mode 100644 index 00000000..70c261bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-09:19:42 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 09:19 cinit +-rwx------ 1 nico users 50860 Jun 22 09:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-10:43:24 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-10:43:24 new file mode 100644 index 00000000..b8bc4076 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-10:43:24 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 10:43 cinit +-rwx------ 1 nico users 50860 Jun 22 10:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-12:42:57 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-12:42:57 new file mode 100644 index 00000000..c8119859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-12:42:57 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 22 12:42 cinit +-rwx------ 1 nico users 46760 Jun 22 12:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-13:52:41 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-13:52:41 new file mode 100644 index 00000000..793b92fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-13:52:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:52 cinit +-rwx------ 1 nico users 46760 Jun 22 13:52 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-13:59:40 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-13:59:40 new file mode 100644 index 00000000..d114c557 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-13:59:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:59 cinit +-rwx------ 1 nico users 46760 Jun 22 13:59 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-14:19:41 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-14:19:41 new file mode 100644 index 00000000..8d56882f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-14:19:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47640 Jun 22 14:19 cinit +-rwx------ 1 nico users 46760 Jun 22 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-14:37:18 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-14:37:18 new file mode 100644 index 00000000..b7c3e4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-22-14:37:18 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 22 14:37 cinit +-rwx------ 1 nico users 46760 Jun 22 14:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-23-06:22:23 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-23-06:22:23 new file mode 100644 index 00000000..9e38a5e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-23-06:22:23 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 23 06:22 cinit +-rwx------ 1 nico users 46760 Jun 23 06:22 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-24-17:53:55 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-24-17:53:55 new file mode 100644 index 00000000..3b750eaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-24-17:53:55 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:53 cinit +-rwx------ 1 nico users 46760 Jun 24 17:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-24-17:55:29 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-24-17:55:29 new file mode 100644 index 00000000..c30dcaf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-24-17:55:29 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:55 cinit +-rwx------ 1 nico users 46760 Jun 24 17:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-26-13:19:49 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-26-13:19:49 new file mode 100644 index 00000000..a4de830b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-06-26-13:19:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 26 13:19 cinit +-rwx------ 1 nico users 50860 Jun 26 13:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:07:13 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:07:13 new file mode 100644 index 00000000..e2c59ddf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:07:13 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:07 cinit +-rwx------ 1 nico users 50860 Jul 6 08:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:12:20 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:12:20 new file mode 100644 index 00000000..e562350c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:12:20 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:12 cinit +-rwx------ 1 nico users 50860 Jul 6 08:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:13:39 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:13:39 new file mode 100644 index 00000000..32fd8268 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:13:39 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:13 cinit +-rwx------ 1 nico users 50860 Jul 6 08:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:14:19 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:14:19 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:14:19 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:14:59 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:14:59 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:14:59 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:15:56 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:15:56 new file mode 100644 index 00000000..cf26e6f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-08:15:56 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:15 cinit +-rwx------ 1 nico users 50860 Jul 6 08:15 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-10:12:22 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-10:12:22 new file mode 100644 index 00000000..d5f0f2c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-10:12:22 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:08 cinit +-rwx------ 1 nico users 50860 Jul 6 10:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-10:12:31 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-10:12:31 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-10:12:31 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-10:12:49 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-10:12:49 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-07-06-10:12:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-08-29-21:21:34 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-08-29-21:21:34 new file mode 100644 index 00000000..e651a8ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-08-29-21:21:34 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 root root 444508 2005-08-29 21:21 cinit +-rwx------ 1 root root 440412 2005-08-29 21:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-08-29-23:50:55 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-08-29-23:50:55 new file mode 100644 index 00000000..a279aee3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-08-29-23:50:55 @@ -0,0 +1,3 @@ +insgesamt 856 +-rwx------ 1 nico nico 437564 2005-08-29 23:50 cinit +-rwx------ 1 nico nico 436316 2005-08-29 23:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-03-03:36:59 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-03-03:36:59 new file mode 100644 index 00000000..01e555f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-03-03:36:59 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 nico nico 444508 2005-09-03 03:36 cinit +-rwx------ 1 nico nico 440412 2005-09-03 03:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-03-04:34:35 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-03-04:34:35 new file mode 100644 index 00000000..1832930a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-03-04:34:35 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 04:34 cinit +-rwx------ 1 nico nico 440412 Sep 3 04:34 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-03-05:51:17 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-03-05:51:17 new file mode 100644 index 00000000..4e465d06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-03-05:51:17 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 05:51 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-03-05:54:20 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-03-05:54:20 new file mode 100644 index 00000000..9c040d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-03-05:54:20 @@ -0,0 +1,4 @@ +total 1300 +-rwx------ 1 nico nico 440412 Sep 3 05:54 ccontrol +-rwx------ 1 nico nico 444508 Sep 3 05:54 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-03-09:01:59 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-03-09:01:59 new file mode 100644 index 00000000..880422a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-03-09:01:59 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 3 09:01 cinit +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-05-19:41:12 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-05-19:41:12 new file mode 100644 index 00000000..0f07d86e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-05-19:41:12 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 root root 440412 2005-09-05 19:41 ccontrol +-rwx------ 1 root root 444508 2005-09-05 19:41 cinit +-rwx------ 1 root root 440412 2005-09-05 19:41 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-05-19:50:35 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-05-19:50:35 new file mode 100644 index 00000000..32ff19fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-05-19:50:35 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 5 19:50 cinit +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-24-01:42:38 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-24-01:42:38 new file mode 100644 index 00000000..0da6126e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-24-01:42:38 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-09-24 01:42 ccontrol +-rwx------ 1 nico nico 437628 2005-09-24 01:42 cinit +-rwx------ 1 nico nico 436316 2005-09-24 01:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-30-22:50:50 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-30-22:50:50 new file mode 100644 index 00000000..0d510174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-30-22:50:50 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 22:50 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 22:50 cinit +-rwx------ 1 nico nico 436316 2005-09-30 22:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-30-23:06:39 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-30-23:06:39 new file mode 100644 index 00000000..23450914 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-09-30-23:06:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 23:06 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 23:06 cinit +-rwx------ 1 nico nico 436316 2005-09-30 23:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-01-22:09:13 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-01-22:09:13 new file mode 100644 index 00000000..a62b9eb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-01-22:09:13 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-10-01 22:09 ccontrol +-rwx------ 1 nico nico 437308 2005-10-01 22:09 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-01-22:17:39 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-01-22:17:39 new file mode 100644 index 00000000..b1d8b11b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-01-22:17:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-01 22:17 ccontrol +-rwx------ 1 nico nico 437532 2005-10-01 22:17 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-02-11:12:29 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-02-11:12:29 new file mode 100644 index 00000000..e5f7b13d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-02-11:12:29 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:12 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-02-11:13:35 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-02-11:13:35 new file mode 100644 index 00000000..d7c14471 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-02-11:13:35 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-02-11:13:43 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-02-11:13:43 new file mode 100644 index 00000000..1711d01a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-02-11:13:43 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 11:13 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 436316 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-02-16:00:24 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-02-16:00:24 new file mode 100644 index 00000000..ab23228c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-02-16:00:24 @@ -0,0 +1,4 @@ +total 1284 +-rwx------ 1 nico nico 436316 Oct 2 16:00 ccontrol +-rwx------ 1 nico nico 437884 Oct 2 16:00 cinit +-rwx------ 1 nico nico 436316 Oct 2 16:00 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-02-23:17:11 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-02-23:17:11 new file mode 100644 index 00000000..92041cd9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-02-23:17:11 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 23:17 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 23:17 cinit +-rwx------ 1 nico nico 436316 2005-10-02 23:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-03-00:54:39 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-03-00:54:39 new file mode 100644 index 00000000..df47a057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-03-00:54:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:54 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:54 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-03-00:56:29 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-03-00:56:29 new file mode 100644 index 00000000..08db7fec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-03-00:56:29 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:56 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:56 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:56 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-13-09:55:52 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-13-09:55:52 new file mode 100644 index 00000000..d54a7ff4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-13-09:55:52 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:55 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:55 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-13-09:57:11 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-13-09:57:11 new file mode 100644 index 00000000..3b1af9ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-13-09:57:11 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:57 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:57 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-13-10:07:28 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-13-10:07:28 new file mode 100644 index 00000000..58d25315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-13-10:07:28 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 10:07 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 10:07 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 10:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-15-15:26:52 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-15-15:26:52 new file mode 100644 index 00000000..a88291e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-15-15:26:52 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 root root 436316 2005-10-15 15:26 ccontrol +-rwx------ 1 root root 437916 2005-10-15 15:26 cinit +-rwx------ 1 root root 436316 2005-10-15 15:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-15-21:23:56 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-15-21:23:56 new file mode 100644 index 00000000..43a4504d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-10-15-21:23:56 @@ -0,0 +1,4 @@ +total 36 +-rwx------ 1 nico nico 9148 Oct 15 21:23 ccontrol +-rwx------ 1 nico nico 11872 Oct 15 21:23 cinit +-rwx------ 1 nico nico 9768 Oct 15 21:23 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2005-11-17-17:03:53 b/software/cinit/browse_source/cinit-0.3pre8/size/2005-11-17-17:03:53 new file mode 100644 index 00000000..78543f15 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2005-11-17-17:03:53 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2005-11-17 17:03 ccontrol +-rwx------ 1 nico nico 11872 2005-11-17 17:03 cinit +-rwx------ 1 nico nico 9768 2005-11-17 17:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-11-23:45:54 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-11-23:45:54 new file mode 100644 index 00000000..f4852c81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-11-23:45:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-11 23:45 cinit +-rwx------ 1 nico nico 9768 2006-02-11 23:45 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-12-00:06:11 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-12-00:06:11 new file mode 100644 index 00000000..2fe41351 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-12-00:06:11 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-12-00:06:42 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-12-00:06:42 new file mode 100644 index 00000000..bf2ddc36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-12-00:06:42 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:06 ccontrol +-rwx------ 1 nico nico 11560 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-12-00:08:24 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-12-00:08:24 new file mode 100644 index 00000000..e25a49ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-12-00:08:24 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:08 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:08 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-12-00:09:33 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-12-00:09:33 new file mode 100644 index 00000000..0b64fa00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-12-00:09:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:09 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:09 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-12-00:13:32 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-12-00:13:32 new file mode 100644 index 00000000..b6c5c38e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-12-00:13:32 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:13 ccontrol +-rwx------ 1 nico nico 11500 2006-02-12 00:13 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-16-23:57:29 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-16-23:57:29 new file mode 100644 index 00000000..86b9fda9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-16-23:57:29 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11620 2006-02-16 23:57 cinit +-rwx------ 1 nico nico 9768 2006-02-16 23:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-17-00:16:18 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-17-00:16:18 new file mode 100644 index 00000000..28c853a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-17-00:16:18 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 00:16 cinit +-rwx------ 1 nico nico 9768 2006-02-17 00:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-17-22:48:35 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-17-22:48:35 new file mode 100644 index 00000000..5935acfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-17-22:48:35 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-17 22:48 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 22:48 cinit +-rwx------ 1 nico nico 9768 2006-02-17 22:48 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:03:54 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:03:54 new file mode 100644 index 00000000..9222f0b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:03:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:03 cinit +-rwx------ 1 nico nico 9768 2006-02-20 19:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:04:33 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:04:33 new file mode 100644 index 00000000..c5797edc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:04:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:04:36 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:04:36 new file mode 100644 index 00000000..fbcf9fa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:04:36 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:07:47 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:07:47 new file mode 100644 index 00000000..7e1fe18f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:07:47 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:07 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:12:33 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:12:33 new file mode 100644 index 00000000..2b4fda40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:12:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:12 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:12 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:14:56 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:14:56 new file mode 100644 index 00000000..bccb5d65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-02-20-20:14:56 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:14 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:14 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-01-23:32:43 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-01-23:32:43 new file mode 100644 index 00000000..fcbaf372 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-01-23:32:43 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-01 23:32 ccontrol +-rwx------ 1 nico nico 11640 2006-06-01 23:32 cinit +-rwx------ 1 nico nico 9768 2006-06-01 23:32 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-01:08:28 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-01:08:28 new file mode 100644 index 00000000..7683546c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-01:08:28 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:08 ccontrol +-rwx------ 1 nico nico 11688 2006-06-02 01:08 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-01:29:13 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-01:29:13 new file mode 100644 index 00000000..adbc6846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-01:29:13 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:29 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 01:29 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-11:13:39 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-11:13:39 new file mode 100644 index 00000000..46eaef4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-11:13:39 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:13 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:13 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-11:36:37 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-11:36:37 new file mode 100644 index 00000000..306402f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-11:36:37 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:36 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:36 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-15:17:17 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-15:17:17 new file mode 100644 index 00000000..7bb59095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-15:17:17 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:17 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:17 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-15:19:52 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-15:19:52 new file mode 100644 index 00000000..ce65256f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-06-02-15:19:52 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:19 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:19 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-11-29-235834 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-11-29-235834 new file mode 100644 index 00000000..c2c83117 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-11-29-235834 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73645 2006-11-29 23:57 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-02-172536 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-02-172536 new file mode 100644 index 00000000..4079d5db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-02-172536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73617 2006-12-02 17:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-02-174429 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-02-174429 new file mode 100644 index 00000000..5506928d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-02-174429 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73497 2006-12-02 17:44 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-02-182536 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-02-182536 new file mode 100644 index 00000000..14526d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-02-182536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 72092 2006-12-02 18:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-03-173231 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-03-173231 new file mode 100644 index 00000000..aca9d380 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-03-173231 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71944 2006-12-03 17:32 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-03-174544 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-03-174544 new file mode 100644 index 00000000..3c1cfea2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-03-174544 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71952 2006-12-03 17:45 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-03-191215 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-03-191215 new file mode 100644 index 00000000..4f2a2fa1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-03-191215 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-03 19:12 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-06-084947 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-06-084947 new file mode 100644 index 00000000..487af844 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-06-084947 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-06 08:49 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-14-213559 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-14-213559 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-14-213559 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-14-213717 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-14-213717 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-14-213717 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-14-213739 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-14-213739 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-14-213739 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-14-215315 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-14-215315 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-14-215315 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-14-215334 b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-14-215334 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2006-12-14-215334 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2007-02-17-210059 b/software/cinit/browse_source/cinit-0.3pre8/size/2007-02-17-210059 new file mode 100644 index 00000000..69179604 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2007-02-17-210059 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 75783 2007-02-17 20:59 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2007-02-23-202443 b/software/cinit/browse_source/cinit-0.3pre8/size/2007-02-23-202443 new file mode 100644 index 00000000..19cb71b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2007-02-23-202443 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 69439 2007-02-23 20:15 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2007-02-23-202720 b/software/cinit/browse_source/cinit-0.3pre8/size/2007-02-23-202720 new file mode 100644 index 00000000..19cb71b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2007-02-23-202720 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 69439 2007-02-23 20:15 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2007-03-07-231936 b/software/cinit/browse_source/cinit-0.3pre8/size/2007-03-07-231936 new file mode 100644 index 00000000..c2ef3d0b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2007-03-07-231936 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71213 2007-03-07 23:18 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/size/2007-04-06-011811 b/software/cinit/browse_source/cinit-0.3pre8/size/2007-04-06-011811 new file mode 100644 index 00000000..73de8724 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/size/2007-04-06-011811 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71281 2007-04-06 01:17 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/Makefile b/software/cinit/browse_source/cinit-0.3pre8/src/Makefile new file mode 100644 index 00000000..863c3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/Makefile @@ -0,0 +1,131 @@ +# +# cinit +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +#include Makefile.tests + +# Build tools / locations +CC=../tmpbin/cc +CFLAGS= +LD=../tmpbin/ld +LDFLAGS= +STRIP=../tmpbin/strip +SBIN=../sbin + +# directories and files +CONFIG_H=include/config.h + +BIN=cinit + +# +# All objects depend on headers. More or less. FIXME: use gcc -M +# +CINIT_HEADERS=$(shell cat include/listing) + +# NEW +CINIT_OBJ=$(shell cat object_lists/cinit) + +# +# Client modules +# +CLIENT=client/msg_svc_on_off.o client/msg_change_status.o client/run_svc.o \ + client/exec_svc.o client/respawn_svc.o client/run_run_svcs.o \ + client/connect_sock.o client/begin_msg.o client/sig_terminate.o + +COMMUNICATION=comm/do_change_status.o comm/do_result.o comm/do_svc_name.o + +OBJ=$(SERV) $(SERV_OS) $(CLIENT) $(BOTH) $(COMMUNICATION) + +CSVC_OBJ=util/cservice.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +CCO_OBJ=util/ccontrol.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) +# +# End user target +# +#all: cinit cservice ccontrol sizecheck docs +#all: $(BIN) +all: cinit + + +# +# Generic +# +$(CINIT_OBJ): $(CINIT_HEADERS) + +%.o: %.c + $(CC) -c -o $@ $< + + + +# +# First do configuration, so we include the right variables +# +Makefile: .configured + +.configured: ../conf/* + @../bin/cinit.configure.os + @../bin/cinit.configure.tools + @../bin/cinit.configure.ipc + @../bin/cinit.configure.mark + +$(CINIT_OBJ): $(CONFIG_H) + + +$(CONFIG_H): ../conf/* + ../scripts/cinit.mkheader > $(CONFIG_H) + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +ccontrol: $(SBIN)/ccontrol + +$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) + $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ + $(STRIP) $@ + +install: install-dir cinit cservice ccontrol + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + + +################################################################################ +# +# Build targets +# +cinit: $(CINIT_OBJ) + $(LD) $^ -o $@ + +################################################################################ +# +# Generic targets +# + +.PHONY: dist +dist: distclean + +.PHONY: distclean +distclean: clean + rm -f os/current ipc/current .configured + +.PHONY: clean +clean: + rm -f ../tmpbin/*.configured + rm -f $(BIN) $(CINIT_OBJ) + rm -f test/*.o diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/Makefile.tests b/software/cinit/browse_source/cinit-0.3pre8/src/Makefile.tests new file mode 100644 index 00000000..0f4b4626 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/Makefile.tests @@ -0,0 +1,27 @@ +# +# Makefile for cinit tests +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +TEST_BUILD_ARGV=test/test_build_argv.o core/build_argv.o + +PROGS=test_build_argv test_build_argv_link + +tests: $(PROGS) + +test_build_argv: test/test_build_argv.o core/build_argv.o +test_build_argv_link: test/test_build_argv+link.o core/build_argv.o + +test_gen_svc_tree: test/test_gen_svc_tree.o svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/gen_svc_tree.o \ + generic/mini_printf.o \ + svc/list_display_all.o + +test_openreadclose: test/test_openreadclose.o generic/openreadclose.o diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/ancient/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre8/src/ancient/run_init_svc.c new file mode 100644 index 00000000..f41c1f4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/ancient/run_init_svc.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/ancient/run_init_svc2.c b/software/cinit/browse_source/cinit-0.3pre8/src/ancient/run_init_svc2.c new file mode 100644 index 00000000..b613ed6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/ancient/run_init_svc2.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include /* _exit, fork */ + +#include "cinit.h" +#include "messages.h" +#include "ipc.h" + +int run_svc(char *rpath) { rpath = "test"; return 0; } /* a hack to compile cinit for now */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + if(!cinit_ipc_logon()) _exit(1); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/ancient/run_svc.c b/software/cinit/browse_source/cinit-0.3pre8/src/ancient/run_svc.c new file mode 100644 index 00000000..95cc324d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/ancient/run_svc.c @@ -0,0 +1,131 @@ +/* + * (c) 2005 Nico Schottelius (nico-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +#error "needs to be cleaned up" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + print_errno(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + print_errno(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/core/build_argv.c b/software/cinit/browse_source/cinit-0.3pre8/src/core/build_argv.c new file mode 100644 index 00000000..b006c7fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/core/build_argv.c @@ -0,0 +1,171 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Build **argv for execution in cinit way: + * 1. check whether cmd is a valid executable + * 2. try to read cmd.params and write parameters + * 3. try to read cmd.env and setup environment + * + * Returns: + * BA_OK: Everything went well, you can use the struct + * BA_NOTFOUND: Binary executable is not available + * BA_PARAMS: Reading the parameters failed (ignoring non-existence!) + * BA_ENV: Reading the environment failed (same as above) + * BA_OTHER: Other error + */ + +#include /* open() */ +#include /* *alloc() */ +#include /* readlink */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* NULL */ +#include /* strchr */ +#include /* stat() */ + +#include "cinit.h" +#include "build_argv.h" + + /* + * char *basename: something we should execute + * (*basename) + ".params" will be added as parameters + * (*basename) + ".env" will be added as environment + */ + +int cinit_build_argv(char *basename, struct ba_argv *bav) +{ + int tmp; + int argc; + char pathtmp[PATH_MAX+1]; + char *sbuf = NULL; + char *p; + + /* sane values */ + bav->argv = NULL; + bav->envp = NULL; + + /* FIXME: remove in production */ + mini_printf("CBA::",1); + mini_printf(basename,1); + mini_printf("\n",1); + + /*********************************************************************** + * Try to get realname (for links) + */ + if((tmp = readlink(basename,pathtmp,PATH_MAX)) == -1) { + /* nothing there? */ + if(errno == ENOENT) { + return BA_E_NOTFOUND; + } + if (errno != EINVAL) { + return BA_E_OTHER; + } + tmp=strlen(basename); + strncpy(pathtmp,basename,tmp); + } + pathtmp[tmp] = '\0'; + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /*********************************************************************** + * prepare argv0 + */ + bav->argv = malloc(sizeof(char *)); + if(bav->argv == NULL) return BA_E_MEM; + + *bav->argv = malloc(tmp); + if(*(bav->argv) == NULL) return BA_E_MEM; + + strncpy(*(bav->argv),pathtmp,tmp); + + /********************** read params *********************/ + /* FIXME check bounds! */ + strcpy(pathtmp,basename); + strcat(pathtmp,C_PARAMS); + /* ORC_ERR_NONEXISTENT: Ok, have sbuf set to NULL + * ORC_OK: Ok, have a filled buffer (perhaps NULL, too) + * other: Error, print errno + */ + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /*********************************************************************** + * Now split the string, converting \n to \0 + */ + argc = 1; /* argv0 */ + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = sbuf; /* here begins the current argument */ + + if(p != NULL) { /* found another \n */ + *p = '\0'; + sbuf = p+1; + } else { /* end of string */ + sbuf = NULL; + } + + ++argc; + } + + /************ close argv list **************/ + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,basename); + strcat(pathtmp,C_ENV); + + tmp = argc = 0; + sbuf = NULL; + + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /************** build environment string **************/ + argc = 0; + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) return BA_E_MEM; + + bav->envp[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + sbuf = p+1; + } else { + sbuf = NULL; + } + ++argc; + } + + /************ close env list **************/ + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) { + return BA_E_MEM; + } + bav->envp[argc] = NULL; + + return BA_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/core/cinit.c b/software/cinit/browse_source/cinit-0.3pre8/src/core/cinit.c new file mode 100644 index 00000000..0e709a9b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/core/cinit.c @@ -0,0 +1,91 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The main file + * + */ + +#include /* getpid,chdir */ +#include /* str(ncmp,len,cpy,cat) */ +#include /* perror */ +#include /* malloc */ + +#include "cinit.h" /* general things */ +#include "messages.h" /* messages */ +#include "ipc.h" /* general ipc methods */ +#include "svc.h" /* gen_svc_tree */ + +struct listitem *svc_list = NULL; +struct dep *svc_init = NULL; + +int main(int argc, char **argv) +{ + char *initdir = CINIT_INIT; /* default init dir */ +// pid_t cpid; + + + /* FIXME: RE-ENABLE as SOON AS PRODUCTIVE cpid = getpid(); + * Is this really needed or should we lock() ourselves? + if(cpid != 1) { + mini_printf(CINIT_VERSION,2); + mini_printf(MSG_USAGE,2); + return 0; + }*/ + + /* Look whether we should start a profile */ + while(argc > 1) { + if(!strncmp(PROFILE, argv[argc-1], strlen(PROFILE) ) ) { + initdir = (char *) malloc( + strlen(CINIT_SVCDIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2); + if(initdir == NULL) { + panic(); + } + strcpy(initdir, CINIT_SVCDIR); + strcat(initdir, SLASH); + strcat(initdir, &argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* Bootup "logo" */ + mini_printf(MSG_BOOTING,1); mini_printf(initdir,1); mini_printf("\n",1); + + if(chdir(initdir) == -1) { + print_errno(initdir); + panic(); + } + + /* initialize ipc method */ + if(!cinit_ipc_init()) { + panic(); + } + + /* listen to signals */ + set_signals(ACT_SERV); + + /* pre-calculate service tree */ + gen_svc_tree(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* start tree from the bottom */ + /* FIXME: use panic() instead? */ + if(!tree_exec(svc_init)) return 1; + + mini_printf("=> cinit started.\n",1); + + /* listen for incomming messages: should never return */ + if(!cinit_ipc_listen()) { + panic(); + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/core/do_reboot.c b/software/cinit/browse_source/cinit-0.3pre8/src/core/do_reboot.c new file mode 100644 index 00000000..88304f88 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/core/do_reboot.c @@ -0,0 +1,99 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#include +#include +#include +#include +#include +#include + +#include "ipc.h" + +/* cleaned up own headers */ +#include "cinit.h" /* set_signals */ +#include "svc.h" /* shutdown_services */ +#include "messages.h" /* messages */ + +/* cleaned headers */ +#include /* kill() */ + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void do_reboot(int signal) +{ + //struct listitem *tmp; + //char **cmd; + //int i; + + /* + * New code: + * 0. close user ipc + * - notify user! + * - do not allow user interupt anymore + * 1. shutdown services + * - notify user! + * 2. kill -TERM all processes + * - notify user! + * 3. kill -KILL all processes + * - notify user! + * 4. execute /etc/cinit/conf/{halt,reboot,poweroff} + * - notify user! + */ + + /* tell the user what happens */ + LOG(MSG_SHUTDOWN_START); + + /* do not listen to client requests anymore */ + cinit_ipc_destroy(); + + /* FIXME: ignore signals now / install new signal-handlers! */ + set_signals(ACT_CLIENT); + + LOG(MSG_SHUTDOWN_SVC); + /* shutdown all services: take care about the dependency tree */ + shutdown_services(); + + LOG(MSG_SHUTDOWN_KILL); + /* now: all services are down, let's kill all other processes */ + if(kill(-1,SIGTERM) == -1) { + print_errno(MSG_TERMKILL); + } + + sleep_before_kill(); + + if(kill(-1,SIGKILL) == -1) { + print_errno(MSG_KILLBILL); + } + + /* Execute the last command */ + LOG(MSG_SHUTDOWN_LAST); + execute_and_wait(CINIT_LAST); + + /* do what we really wanted to do */ + switch(signal) { + case SIGTERM: /* power off */ + LOG(MSG_POWER_OFF); + cinit_poweroff(); + break; + case SIGHUP: /* reboot */ + LOG(MSG_REBOOT); + cinit_reboot(); + break; + case SIGUSR1: /* halt */ + LOG(MSG_HALT); + cinit_halt(); + break; + } + /* FIXME: should we exit? */ + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/core/panic.c b/software/cinit/browse_source/cinit-0.3pre8/src/core/panic.c new file mode 100644 index 00000000..48a5d17f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/core/panic.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something + */ + +#include /* execv */ + +#include "cinit.h" +#include "messages.h" + +void panic(void) +{ + char *nargv[2]; + + if(execute_and_wait(CINIT_PANIC)) _exit(0); + + /*********************************************************************** + * THIS SHOULD NOT HAPPEN, fallback to hardcoded sulogin + * (conf/sulogin) + */ + nargv[0] = SULOGIN; + nargv[1] = NULL; + + if(execv(SULOGIN,nargv) == -1) { + print_errno(MSG_FATAL_PANIC); + } + + /* there's nothing todo, if everything fails */ + _exit(23); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/core/set_signals.c b/software/cinit/browse_source/cinit-0.3pre8/src/core/set_signals.c new file mode 100644 index 00000000..8fed8f38 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/core/set_signals.c @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Define signal handlers + */ + + +#include /* sigaction, sigemtpyset */ +#include /* NULL */ +#include "cinit.h" /* defines */ + +void set_signals(int action) +{ + struct sigaction sa; + + sigemptyset(&sa.sa_mask); /* no other signals should be blocked */ + sa.sa_flags = 0; + + if(action == ACT_SERV) { + sa.sa_handler = sig_child; + sa.sa_flags = SA_NOCLDSTOP; + } else { + sa.sa_handler = SIG_DFL; + } + + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + sa.sa_flags = 0; /* reset flags */ + if(action == ACT_SERV) { + sa.sa_handler = do_reboot; + } + sigaction(SIGHUP, &sa, NULL); /* reboot */ + sigaction(SIGTERM, &sa, NULL); /* poweroff */ + sigaction(SIGUSR1, &sa, NULL); /* halt */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/core/sig_child.c b/software/cinit/browse_source/cinit-0.3pre8/src/core/sig_child.c new file mode 100644 index 00000000..4b32571d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/core/sig_child.c @@ -0,0 +1,59 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The child handler + * + */ + +#include /* waitpid */ +#include /* NULL */ + +#include "cinit.h" /* */ +#include "svc.h" /* list_search_pid */ +#include "messages.h" /* messages */ + +/*********************************************************************** + * sig_child: (c)collect the children + */ +void sig_child(int tmp) +{ + /* New code: + * - search for pid in service list + * * if (respawn) -> start new + * - insert delay? if exit code is non-zero? if uptime too less? + * * if (once) -> update service status + * * else ignore, but reap away + */ + pid_t pid; + struct listitem *svc; + + while((pid = waitpid(-1, &tmp, WNOHANG)) > 0) { + /* check if it's a watched child */ + svc = list_search_pid((pid_t) pid); + + if(svc != NULL) { + /* Check, that we are operating on it =. that it is no normal child */ + if(svc->status & ST_ONCE_RUN + || svc->status & ST_SH_RESPAWN + || svc->status & ST_RESPAWNING) { + if(WIFEXITED(tmp) && !WEXITSTATUS(tmp)) { + svc_success(svc); + } else { + svc_fail(svc); + } + } + + /* respawn: restart: FIXME Delay for regular dying services */ + if(svc->status == ST_RESPAWNING) { + svc_report_status(svc->abs_path,MSG_SVC_RESTART,NULL); + svc_start(svc); + } + } else { + /* FIXME remove in production version */ + mini_printf("Cleanup: reparenting\n",1); + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/generic/execute_and_wait.c b/software/cinit/browse_source/cinit-0.3pre8/src/generic/execute_and_wait.c new file mode 100644 index 00000000..9cc78475 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/generic/execute_and_wait.c @@ -0,0 +1,44 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something, but fork() before + * + */ + +#include /* pid_t */ +#include /* waitpid */ +#include /* fork */ +#include "messages.h" /* MSG_* */ +#include "cinit.h" /* print_errno, execute_sth */ + +int execute_and_wait(char *svc) +{ + pid_t pid; + int status; + + /* fork */ + pid = fork(); + + if(pid == -1) { + print_errno(MSG_ERR_FORK); + return 0; + } + + /* exec / child */ + if(pid == 0) { + execute_sth(svc); /* exits itself */ + } + + /* wait / parent */ + waitpid(pid,&status,0); + + if(WIFEXITED(status)) { + if(WEXITSTATUS(status) == 0) { + return 1; + } + } + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/generic/execute_sth.c b/software/cinit/browse_source/cinit-0.3pre8/src/generic/execute_sth.c new file mode 100644 index 00000000..6b7d74a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/generic/execute_sth.c @@ -0,0 +1,36 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Executes something: replaces us + */ + +#include /* _exit */ +#include "cinit.h" +#include "build_argv.h" + +void execute_sth(char *basename) +{ + int tmp; + struct ba_argv bav; + + /* FIXME remove later */ + mini_printf("ES::",1); + mini_printf(basename,1); + mini_printf("\n",1); + + tmp = cinit_build_argv(basename,&bav); + if((tmp = cinit_build_argv(basename,&bav)) != BA_OK) { + if(tmp != BA_E_MEM) { /* do not print something on memory errors */ + print_errno(basename); + } + _exit(1); + } + + execve((bav.argv)[0], bav.argv, bav.envp); + print_errno(basename); + _exit(1); /* simply exit non-zero. That's enough for cinit to recognize + it as faulty */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/generic/file_exists.c b/software/cinit/browse_source/cinit-0.3pre8/src/generic/file_exists.c new file mode 100644 index 00000000..0b8ff2a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/generic/file_exists.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * check whether file exists and is a file + */ + +#include /* errno */ +#include /* stat */ +#include "cinit.h" + +int file_exists(char *filename) +{ + struct stat buf; + + if(stat(filename,&buf) == -1) { + if(errno == ENOENT) { + return FE_NOT; + } else { + print_errno(filename); + return FE_ERR; + } + } else { + if(!S_ISREG(buf.st_mode)) { + return FE_OTHER; + } + } + + return FE_FILE; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre8/src/generic/mini_printf.c new file mode 100644 index 00000000..d5b0d1f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/generic/mini_printf.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Print the world! + * + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) return; + + p = str; + while(*p) p++; + + write(fd,str,(size_t) (p - str)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/generic/openreadclose.c b/software/cinit/browse_source/cinit-0.3pre8/src/generic/openreadclose.c new file mode 100644 index 00000000..b76fc9e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/generic/openreadclose.c @@ -0,0 +1,73 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * read a file + * + */ + +#include /* open, read, close */ +#include /* strncpy */ +#include /* realloc */ +#include /* errno */ +#include /* NULL */ +#include /* open */ +#include "cinit.h" + +int openreadclose(char *filename, char **where) +{ + + int tmp; + int cnt; + int fd; + char buf[512]; + + /* FIXME remove in production */ + mini_printf("ORC:",1); + mini_printf(filename,1); + mini_printf("\n",1); + *where = NULL; + + /* what a wonderful loop */ + while((fd = open(filename,O_RDONLY)) == -1) { + if(errno == ENOENT) return ORC_ERR_NONEXISTENT; + if(errno != EINTR) return ORC_ERR_OPEN; + } + + cnt = 0; + while (1) { + tmp = read(fd,buf,512); + + if(tmp == -1) { + if(errno == EINTR) + continue; + else + return ORC_ERR_READ; + } else if(tmp == 0) { + break; + } + + cnt += tmp; + *where = realloc(*where,cnt + 1); + if(*where == NULL) return ORC_ERR_MEM; + + /* FIXME check correctness of copied buffer... + * and get some sleep..soon, very soon! */ + strncpy(&(*where)[cnt-tmp],buf,tmp); + mini_printf("ORC: ",1); + mini_printf(buf,1); + mini_printf("\n",1); + } + + while((fd = close(fd)) == -1) { + if(errno == EINTR) continue; + return ORC_ERR_CLOSE; + } + + /* terminate string! */ + (*where)[cnt] = '\0'; + + return ORC_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/generic/path_absolute.c b/software/cinit/browse_source/cinit-0.3pre8/src/generic/path_absolute.c new file mode 100644 index 00000000..691a3a38 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/generic/path_absolute.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create an absulte path + */ + +#include /* chdir(),getcwd */ +#include /* PATH_MAX */ +#include "cinit.h" /* print_errno */ +#include "messages.h" /* print_errno */ + +int path_absolute(char *relpath, char *newpath, size_t size) +{ + char oldpath[PATH_MAX+1]; + + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + if(chdir(relpath) == -1) { + print_errno(relpath); + return 0; + } + + if(!getcwd(newpath,size)) { + print_errno(relpath); + return 0; + } + + if(chdir(oldpath) == -1) { + print_errno(oldpath); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/generic/path_append.c b/software/cinit/browse_source/cinit-0.3pre8/src/generic/path_append.c new file mode 100644 index 00000000..c6617ba9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/generic/path_append.c @@ -0,0 +1,28 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create path to needs + */ + +#include /* strlen */ +#include /* PATH_MAX */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +int path_append(char *path, char *append) +{ + size_t end = strlen(path); + + if(strcmp(&path[end-1],SLASH)) { + if((end + strlen(SLASH) + strlen(append)) > PATH_MAX) return 0; + strcat(path,SLASH); + } else { + if((end + strlen(append)) > PATH_MAX) return 0; + } + strcat(path,append); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/generic/print_errno.c b/software/cinit/browse_source/cinit-0.3pre8/src/generic/print_errno.c new file mode 100644 index 00000000..7415d556 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/generic/print_errno.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * stolen from tcpserver_blocker + * + * Author: Nico Schottelius + * Date: 2006-08-24 + * + * Print the error found in errno + */ + +#include /* strerror */ +#include /* errno */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +void print_errno(char *msg) +{ + if(msg) { + mini_printf(msg, FD_ERR); + mini_printf(": ", FD_ERR); + } + mini_printf(strerror(errno), FD_ERR); + mini_printf("\n", FD_ERR); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/generic/sleep_before_kill.c b/software/cinit/browse_source/cinit-0.3pre8/src/generic/sleep_before_kill.c new file mode 100644 index 00000000..ff0740f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/generic/sleep_before_kill.c @@ -0,0 +1,43 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Sleep: + * read configuration, + * fallback to builtin value if not possible, + * sleep. + * + */ + +#include /* nanosleep */ +#include /* strtol() */ +#include /* errno */ + +#include "cinit.h" /* print_errno */ +#include "messages.h" /* messages */ + +void sleep_before_kill() +{ + char *content; + int tmp; + struct timespec ts; + + if(openreadclose(CINIT_SLEEPFILE,&content) == ORC_OK) { + errno = 0; + tmp = strtol(content, NULL, 10); + if(errno != 0) tmp = SLEEP_KILL; + free(content); + } else { + mini_printf("builtin sleep\n",1); + tmp = SLEEP_KILL; + } + + ts.tv_sec = tmp; + ts.tv_nsec = 0; + + if(nanosleep(&ts,NULL) == -1) { + print_errno(MSG_GEN_SLEEP); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/generic/strip_final_newline.c b/software/cinit/browse_source/cinit-0.3pre8/src/generic/strip_final_newline.c new file mode 100644 index 00000000..d9c12f05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/generic/strip_final_newline.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * If the last character is \n, shrink the memory and remove it + * + */ + +#include /* NULL */ +#include /* strchr */ +#include /* alloc */ +#include "cinit.h" /* FIXME debug */ + +char *strip_final_newline(char *str) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) { + mini_printf("SFN: NULL\n",1); + return NULL; + } + + p = strrchr(str,'\n'); + if(p) { + if(*(p+1) == '\0') { + str = realloc(str,(p-str)); + } + } + + return str; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/generic/usage.c b/software/cinit/browse_source/cinit-0.3pre8/src/generic/usage.c new file mode 100644 index 00000000..2304ea39 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/generic/usage.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * usage: tell the world what we want - seriously no capitalism + * usage: tell the user what's wrong and a help text + * + */ + +#include +#include "cinit.h" + +void usage(char *banner, char *text) +{ + /* print banner + error message */ + mini_printf(banner,1); + mini_printf(text,1); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/include/build_argv.h b/software/cinit/browse_source/cinit-0.3pre8/src/include/build_argv.h new file mode 100644 index 00000000..b61b27a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/include/build_argv.h @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * build **argv + */ + +#ifndef CINIT_BA_HEADER +#define CINIT_BA_HEADER + +/***************************************************************************** + * Defines: return values + */ +enum { + BA_OK, + BA_E_NOTFOUND, + BA_E_PARAMS, + BA_E_ENV, + BA_E_MEM, + BA_E_OTHER +}; + +/***************************************************************************** + * Structures + */ +struct ba_argv { + char **argv; + char **envp; +}; + +/***************************************************************************** + * Functions + */ +int cinit_build_argv(char *basename, struct ba_argv *bav); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/include/cinit.h b/software/cinit/browse_source/cinit-0.3pre8/src/include/cinit.h new file mode 100644 index 00000000..adb2d1d3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/include/cinit.h @@ -0,0 +1,112 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_H +#define _CINIT_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/*********************************************************************** + * Defines + */ +#define SLASH "/" +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC + +enum { /* FIXME: there are some default defines somewhere for that */ + FD_IN=0, + FD_OUT=1, + FD_ERR=2 +}; + +enum { /* returns of openreadclose */ + ORC_OK, /* everything went fine */ + ORC_ERR_NONEXISTENT, /* file does not exist */ + ORC_ERR_OPEN, /* error opening the file */ + ORC_ERR_READ, + ORC_ERR_CLOSE, + ORC_ERR_MEM +}; + +/* values for execute_sth: + * STRICT: print and error, if .../on does not exist + * NOSTRICT: no .../on is fine + */ +enum { + EXEC_STRICT, + EXEC_NOSTRICT +}; + +enum { + FE_FILE, /* file exists and is a file */ + FE_OTHER, /* file exists, but is no file */ + FE_NOT, /* file does not exist */ + FE_ERR /* some error occured */ +}; + +/*********************************************************************** + * Paths + */ +#define CINIT_SVCDIR CINIT_DIR SLASH SVCDIR +#define CINIT_INIT CINIT_SVCDIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK +#define CINIT_BIN PREFIX SLASH "sbin" SLASH "cinit" + +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC +#define CINIT_LAST CINIT_CONFDIR SLASH C_LAST +#define CINIT_SLEEPFILE CINIT_CONFDIR SLASH SLEEP_BEFORE_KILL + +/* actions for i/o handlers (see comm/do_*) */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* functions (used by server and client) */ +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +void usage(char *banner, char *stext); + +int do_svc_name(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* core functions */ +void do_reboot(int signal); +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +int msg_svc_on_off(char *svc, char action); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +pid_t respawn_svc(char *abspath); +char **read_file(char *file); +void sig_terminate(int signal); + +/* generic */ +void execute_sth(char *basename); +int execute_and_wait(char *svc); +int path_append(char *path, char *append); +int path_absolute(char *relpath, char *buf, size_t size); +int openreadclose(char *filename, char **where); +char *strip_final_newline(char *str); +int file_exists(char *filename); +void sleep_before_kill(); + +/* util */ +int msg_reboot(char cmd); +void print_errno(char *text); + +/* os-functions */ +void cinit_reboot(void); +void cinit_halt(void); +void cinit_poweroff(void); + +#endif /* _CINIT_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/include/comm.h b/software/cinit/browse_source/cinit-0.3pre8/src/include/comm.h new file mode 100644 index 00000000..b9aaf60f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/include/comm.h @@ -0,0 +1,69 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#ifndef CINIT_COMM_HEADER +#define CINIT_COMM_HEADER + +#include /* PATH_MAX */ + +/*********************************************************************** + * Commands the clients may issue to us + * maximum number of commands: 2^8 = 256 + */ +enum commands { + CMD_START_SVC=1, /* the client wants US to start a service */ + CMD_START_SVC_ONLY, /* start this service without dependencies */ + CMD_STOP_SVC, /* stop svc and all svcs that need it */ + CMD_STOP_SVC_ONLY, /* we should stop _only_ this service */ + CMD_STOP_SVC_WANTS, /* stop svc, all svcs that need or want it */ + CMD_CHG_STAT, /* the client reports a status change */ + CMD_RESCUE, /* we should start the rescue mode */ + CMD_HALT, /* halt the system */ + CMD_REBOOT, /* reboot the system */ + CMD_POWEROFF, /* poweroff the system */ + CMD_WBOOT, /* shutdown and restart everything */ + CMD_INFO /* send information about that service */ +}; + +/* old + RT_ERR_COMM, * communication failed * + RT_ERR, * service starting failed * + RT_UNSPEC, * some kind of error, unspecified * + RT_SUCCESS, * successfully started: respawning or once * + RT_SVC_FAILED, * tried earlier, service failed, won't retry * + +*/ + +/*********************************************************************** + * messages from the client + * Prefix: qst_ (question) + */ +struct msg_client { + pid_t pid; /* pid of the telling client */ + char cmd; /* which cmd is issued to us */ + char status; /* status of the service */ + char svc[PATH_MAX]; /* name of the service */ + char svc_orig[PATH_MAX]; /* the service, which wants to start us */ +}; + +/*********************************************************************** + * messages from the server + * Prefix: asw_ (answer) + */ + +/*********************************************************************** + * return short status + */ +struct asw_sstatus { + long mtype; + char status; + char msg[PATH_MAX]; +}; + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/include/ipc.h b/software/cinit/browse_source/cinit-0.3pre8/src/include/ipc.h new file mode 100644 index 00000000..66b3bc86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/include/ipc.h @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Prototypes for ipc handler + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +/***************************************************************************** + * Functions: in server + */ +int cinit_ipc_init(void); /* init in init */ +int cinit_ipc_listen(void); /* listen in init */ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + +/***************************************************************************** + * Functions: in clients + */ +int cinit_ipc_logon(void); /* logon to init (client init) */ +int cinit_ipc_connect(void); /* connect to init */ +int cinit_ipc_csend(void *data); /* send to the server from a client */ + +/***************************************************************************** + * Functions: shared + */ + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/include/listing b/software/cinit/browse_source/cinit-0.3pre8/src/include/listing new file mode 100644 index 00000000..df30f408 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/include/listing @@ -0,0 +1,5 @@ +include/cinit.h +include/config.h +include/ipc.h +include/messages.h +include/os.h diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/include/messages.h b/software/cinit/browse_source/cinit-0.3pre8/src/include/messages.h new file mode 100644 index 00000000..bc0006a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/include/messages.h @@ -0,0 +1,136 @@ +/* + * (c) 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * All messages + */ + +#ifndef _CINIT_MSG_H +#define _CINIT_MSG_H + +/* version */ +#define CINIT_VERSION "cinit-" VERSION +#define MSG_BOOTING CINIT_VERSION ": Booting from " + +#define MSG_DP ": " + +/* Messages to the outside */ +#define MSG_BIND "bind" +#define MSG_CONNECT "connect" +#define MSG_FCNTL "fcntl" +#define MSG_KILLBILL "sigkill" +#define MSG_LISTEN "listen" +#define MSG_SOCKET "socket" +#define MSG_TERMKILL "sigterm" +#define MSG_USAGE_1 ": fast executing, small and simple init " +#define MSG_USAGE_2 "with support for profiles\n" +#define MSG_USAGE_3 "\nError: cinit must be started as PID 1.\n" +#define MSG_USAGE MSG_USAGE_1 MSG_USAGE_2 MSG_USAGE_3 +#define MSG_ERR_FORK "fork" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_OPEN "open" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_READ "read" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" + +#define MSG_ERR_DEPS "Too many dependencies" +#define MSG_ERR_ACCEPT "accept" +#define MSG_ERR_WAITPID "waitpid" +#define MSG_ERR_POLL "poll" +#define MSG_ERR_MODIFY "modify list failed" +#define MSG_ERR_COMM "Communication failed" + +#define MSG_ERR_LESS_ARGS "Too less arguments!" +#define MSG_ERR_BAD_ARGS "Wrong arguments / parameter" +#define MSG_ERR_ARGS_LEN "Wrong parameter length" + +#define LOG_SVC_STOPED "Service stoped" +#define LOG_SVC_ONCE "Started once" +#define LOG_SVC_RESPAWN "Respawns now" +#define LOG_NEED_FAIL "One or more need failed" +#define LOG_SVC_FAILED "Service already failed, not starting." +#define LOG_SVC_NOTEXIST "Service does not exist" + +#define MSG_EXEC_FAILED "Failed to execute " + +#define MSG_RESCUE "Switching to rescue mode ..." +#define MSG_UPDATE "Updating cinit ..." +#define MSG_HOT_REBOOT "Hot reboot in progress ..." + +#define MSG_SHOULD_NOT_HAPPEN "This should not happen, I do not know what todo!" + +/* DEBUG */ +#ifdef DEBUG +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) +#endif + +/* macros */ +#define SERVICE_LOG(svc,message) { \ + mini_printf(svc,1); \ + mini_printf(MSG_DP,1); \ + mini_printf(message,1); \ + mini_printf("\n",1); \ +} +#define LOG(s) { \ + mini_printf(s,1); \ + mini_printf("\n",1); \ +} +#define P_START_SERVICE(name) { mini_printf(MSG_START_SVC,1); mini_printf(name,1); mini_printf("\n",1); } +#define P_EXEC_FAILED(name) { mini_printf(MSG_EXEC_FAILED,1); mini_printf(name,1); mini_printf("\n",1); } + +/* NEW (clean) Service status: Messages to the outside */ + +/* services: how they should be printed + * /etc/cinit/svc/long/name: started once + * /etc/cinit/svc/long/name: is respawning + * /etc/cinit/svc/long/name: FAILED (why it happened) + */ + +#define MSG_INTRO_CINIT "ct/" +#define MSG_INTRO_SVC MSG_INTRO_CINIT "service:" +#define MSG_INTRO_STOP MSG_INTRO_CINIT "stop: " + +/* FIXME: remove/append, but no intro! */ +#define MSG_INTRO_FAIL "FAILED " +#define MSG_INTRO_RESPAWN MSG_INTRO_CINIT "respawn: " +#define MSG_INTRO_OK MSG_INTRO_CINIT "ok: " + +#define MSG_SVC_FORK "fork() failed" +#define MSG_SVC_NEED_FAIL MSG_INTRO_FAIL "Needs failed for service" +#define MSG_SVC_FAIL MSG_INTRO_FAIL "Service failed!" + + + +#define MSG_TREE_EXEC MSG_INTRO_CINIT "Execution of reverse service tree\n" + +/* general errors */ +#define MSG_GETCWD "Getcwd failed! Your system is most likely broken!" +#define MSG_GEN_SLEEP "sleep" +#define MSG_FATAL_PANIC MSG_INTRO_CINIT "I tried everything, but even panic() failed: " + +/* Service messages */ +#define MSG_SVC_START "Starting... " +#define MSG_SVC_STOP "Stoping... " +#define MSG_SVC_RESTART "Restarted." +#define MSG_SVC_OK_ONCE "Started once." +#define MSG_SVC_OK_RESPAWN "Is respawning." + +/* Status messages */ +#define MSG_SHUTDOWN_START MSG_INTRO_STOP "Beginning the shutdown process..." +#define MSG_SHUTDOWN_SVC MSG_INTRO_STOP "Shutting down services now..." +#define MSG_SHUTDOWN_KILL MSG_INTRO_STOP "Killing remaining processes..." +#define MSG_SHUTDOWN_LAST MSG_INTRO_STOP "Executing final service..." +#define MSG_POWER_OFF MSG_INTRO_STOP "Powering off..." +#define MSG_HALT MSG_INTRO_STOP "Halting system ..." +#define MSG_REBOOT MSG_INTRO_STOP "Rebooting ..." + +#endif /* _CINIT_MSG_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/include/os.h b/software/cinit/browse_source/cinit-0.3pre8/src/include/os.h new file mode 100644 index 00000000..b3320c0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/include/os.h @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * os specific functions + */ + +#ifndef CINIT_OS_HEADER +#define CINIT_OS_HEADER + +/***************************************************************************** + * Functions + */ +void cinit_halt(void); +void cinit_poweroff(void); +void cinit_reboot(void); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/include/svc.h b/software/cinit/browse_source/cinit-0.3pre8/src/include/svc.h new file mode 100644 index 00000000..903ac94a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/include/svc.h @@ -0,0 +1,128 @@ +/*********************************************************************** + * + * 2006,2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + + +#ifndef _CINIT_SVC_H +#define _CINIT_SVC_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* service list */ +struct listitem { + struct listitem *prev; /* previous item */ + struct listitem *next; /* next item */ + + char *abs_path; /* name of service */ + long int status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + + + struct dep *wanted; /* list of services that want this service */ + struct dep *needed; /* list of services that need this service */ + + struct dep *wants; /* list of services that this service wants */ + struct dep *needs; /* list of services that this service needs */ +}; + +/* list of dependencies */ +struct dep { + struct dep *prev; + struct dep *next; + struct listitem *svc; +}; + +/* variables */ +extern struct dep *svc_init; /* the services to start */ +extern struct listitem *svc_list; /* the list of services */ + +/* list functions */ +struct listitem *list_insert(char *path, int status); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); +struct listitem *list_search(char *path); +struct listitem *list_search_pid(pid_t pid); +//int list_display_all(); /* debug only */ + + +/* service */ +struct listitem *svc_create(char *svc); +struct listitem *gen_svc_tree(char *svc); +int check_add_deps(struct listitem *svc, int type); +void dep_entry_add(struct dep **list, struct dep *new); +struct dep *dep_entry_del(struct dep *del); +int tree_exec(struct dep *start); +int svc_set_status(struct listitem *li, int status); +int svc_should_respawn(struct listitem *li); +int svc_needs_status(struct listitem *li); +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type); +struct dep *dep_create(struct listitem *svc); +void svc_success(struct listitem *li); +void svc_fail(struct listitem *li); +void svc_report_status(char *svc, char *msg, char *err); +void svc_start(struct listitem *li); +void shutdown_services(void); + + +/*********************************************************************** + * to decide whether to operate on needs or wants + */ +enum dep_types { + DEP_WANTS, + DEP_NEEDS +}; + +/*********************************************************************** + * status of a service and return codes - errors and success + */ +enum svc_status_old { + ST_TMPNOW=1, /* the client is now starting the service NEEDED??? */ + ST_NOTEXIST, /* service does not exist */ + + ST_NEED_FAIL, /* failed to start a need for this service */ + ST_FAIL, /* failed to start service */ + + ST_OFF, /* service is off */ + ST_OFF_ALL, /* service and those that need it are off */ + ST_OFF_ALL_F, /* same, but something failed */ + ST_OFF_WANTS, /* service + those that need or want it are off */ + ST_OFF_WANTS_F, /* same, but something failed */ + + ST_TMP, /* currently working on it */ + ST_ONCE, /* executed once */ + ST_RESPAWN /* running and respawning */ +}; + +/*********************************************************************** + * The real status types a service may have (ignore above) + * We have 32 Bits, we should use them ;-) + */ +enum svc_status { + /* first define basics */ + ST_SH_ONCE = 0x1, /* service SHould be started once */ + ST_SH_RESPAWN = 0x2, /* service SHould respawn */ + ST_ONCE_OK = 0x4, /* service was successfully started once */ + ST_ONCE_FAIL = 0x8, /* service failed to start */ + ST_RESPAWNING = 0x10, /* service is respawning */ + ST_NEED_FAILD = 0x20, /* this service is not started, need failed */ + ST_IN_LIST = 0x40, /* this service is being started (= in list) */ + ST_BAD_ERR = 0x80, /* some kind of error that SHOULD NOT happen */ + ST_ONCE_RUN = 0x100 /* the once process is currently running */ +}; + +/*********************************************************************** + * Possibilities the needs of a service may have + */ +enum svc_needs_status { + SNS_NEEDS_STARTED = 1, /* all needs are started. We may start, too */ + SNS_NEEDS_FAILED, /* one ore more needs failed */ + SNS_NEEDS_UNFINISHED /* one ore more needs are not yet started */ +}; +#endif /* _CINIT_SVC_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/README.text b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/README.text new file mode 100644 index 00000000..c9a1acf2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/README.text @@ -0,0 +1,20 @@ +cinit/src/ipc/msgq: About this msqg implementation +=================================================== +Nico Schottelius +0.1, Initial Version from 2006-08-04 +:Author Initials: NS + +Intro here + +Introduction +------------ + +cinit opens a + +Files +----- +- README.text: This file +- cinit_init_ipc.c: Init +msgq.h +objects + diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/cinit_ipc_destroy.c b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/cinit_ipc_destroy.c new file mode 100644 index 00000000..d703bef8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/cinit_ipc_destroy.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Destory ipc mechanism, cinit is gonna die soon. + * + */ + +#include /* msgget */ +#include /* NULL */ + +#include "msgq.h" /* mq_in, mq_out */ +#include "cinit.h" /* print_errno */ + +void cinit_ipc_destroy(void) +{ + if(msgctl(mq_in,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } + if(msgctl(mq_out,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/cinit_ipc_init.c new file mode 100644 index 00000000..11c610ef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/cinit_ipc_init.c @@ -0,0 +1,47 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-linux-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "cinit.h" +#include "config.h" +#include "msgq.h" + +int cinit_ipc_init(void) +{ + key_t k_tmp; + + /* to_server */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + if(k_tmp == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + mq_in = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_in == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + /* to_client */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + if(k_tmp == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + mq_out = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/cinit_ipc_listen.c new file mode 100644 index 00000000..bbc71d38 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/cinit_ipc_listen.c @@ -0,0 +1,48 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "cinit.h" /* print_errno */ +#include "config.h" +#include "msgq.h" + +int cinit_ipc_listen(void) +{ + int tmp; + + struct msg_client m_client; + + while (1) { + /* FIXME: change msg structure */ + tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + + if(tmp == -1) { + /* FIXME: EINTR ignore */ + print_errno(MSG_MSGQ_MSGRCV); + } + + //printf("pid: %d, m_client\n",m_client.pid); + + /* use pid as the message type + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + return 0; + } */ + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/cinit_ipc_logon.c b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/cinit_ipc_logon.c new file mode 100644 index 00000000..6df05ce4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/cinit_ipc_logon.c @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "cinit.h" /* print_errno */ +#include "msgq.h" + +int cinit_ipc_logon(void) +{ + key_t k_in, k_out; /* FIXME: remove one variable */ + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + k_out = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/cinit_ipc_sclose.c b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/cinit_ipc_sclose.c new file mode 100644 index 00000000..cce784a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/cinit_ipc_sclose.c @@ -0,0 +1,14 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-linux-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Close the ressources from the server, clean state for forks. + * + */ + +int cinit_ipc_sclose(void) +{ + return 1; /* nothing to do when using message queues */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/msgq.h b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/msgq.h new file mode 100644 index 00000000..01c6e769 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/msgq.h @@ -0,0 +1,52 @@ +/* + * (c) 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * part of cinit + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +#include /* structures */ + +/*********************************************************************** + * configuration + */ + +#define MSGQ_PATHNAME "/bin/sh" /* should be on every *nix */ +#define MSGQ_TO_SERVER 'i' /* also for ftok */ +#define MSGQ_TO_CLIENT 'o' /* also for ftok */ +#define MSGQ_PERMS 0660 /* queue permissions */ + +/*********************************************************************** + * global variables + */ +int mq_in; /* input */ +int mq_out; /* output */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + pid_t pid; + struct msg_client msg; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server_short { + long mtype; + struct asw_sstatus answer; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_FTOK "ftok" +#define MSG_MSGQ_MSGGET "msgget" +#define MSG_MSGQ_MSGRCV "msgrcv" +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/objects b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/objects new file mode 100644 index 00000000..7c99d09f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/msgq/objects @@ -0,0 +1,5 @@ +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c new file mode 100644 index 00000000..88c310f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c @@ -0,0 +1,125 @@ +/* + * (c) 2005, 2006 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * create a socket, when we recieved a signal + */ +int main(int argc, char **argv) +{ + struct sockaddr_un addr; + struct pollfd plist; + char *initdir; + + list = NULL; /* list of services is empty currently */ + initdir = CINIT_INIT; /* default init dir */ + + cpid = getpid(); + if(cpid != 1) { + usage(MSG_USAGE,MSG_NOT_ONE); + } + + set_signals(ACT_SERV); /* set signal handlers */ + + /* read args, profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* tell the world we are there FIXME: do we really need three calls? */ + mini_printf(MSG_CINIT,1); mini_printf(initdir,1); mini_printf("\n",1); + + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c new file mode 100644 index 00000000..a174d78d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c @@ -0,0 +1,141 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int socket) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + while ( (nsock = accept(socket,(struct sockaddr *) NULL, + (socklen_t *) NULL)) != -1) { + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = ST_FAIL; + } else { + status = RT_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP (RESPAWNING) *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; + list_tmp = list_search(buf); + + /* FIXME: + - handle off + - handle switching off once services + - perhaps remove old cinit code, which has respawing childs + */ + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + /* kill cinit watcher, which kills the real process */ + kill(list_tmp->pid,SIGTERM); + + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + } + + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + status = ST_FAIL; + } else { /* return status */ + status = list_tmp->status; + } + } else { /* no service there */ + status = RT_NOTEXIST; + } + do_result(nsock,&status); + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + SERVICE_LOG(buf,MSG_ERR_MODIFY); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + case CMD_UPDATE: + sig_reboot(SIGCONT); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } + + /* hier kommt man haeufiger herein, interrupted system call */ + if( errno != EAGAIN && errno != EINTR) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/object_lists/cinit b/software/cinit/browse_source/cinit-0.3pre8/src/object_lists/cinit new file mode 100644 index 00000000..537202b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/object_lists/cinit @@ -0,0 +1,50 @@ +core/build_argv.o +core/cinit.o +core/panic.o +core/set_signals.o +core/do_reboot.o +core/sig_child.o +generic/execute_sth.o +generic/file_exists.o +generic/mini_printf.o +generic/path_absolute.o +generic/path_append.o +generic/print_errno.o +generic/openreadclose.o +generic/strip_final_newline.o +generic/sleep_before_kill.o +generic/execute_and_wait.o +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +svc/gen_svc_tree.o +svc/list_delete.o +svc/list_insert.o +svc/list_search.o +svc/list_search_pid.o +svc/svc_create.o +svc/check_add_deps.o +svc/dep_entry_add.o +svc/dep_entry_del.o +svc/shutdown_services.o +svc/tree_exec.o +svc/svc_set_status.o +svc/svc_should_respawn.o +svc/svc_needs_status.o +svc/dep_needs_wants_add.o +svc/dep_create.o +svc/svc_success.o +svc/svc_report_status.o +svc/svc_start.o +svc/svc_fail.o diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/os/freebsd/halt.c b/software/cinit/browse_source/cinit-0.3pre8/src/os/freebsd/halt.c new file mode 100644 index 00000000..37064cc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/os/freebsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/os/freebsd/objects b/software/cinit/browse_source/cinit-0.3pre8/src/os/freebsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/os/freebsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/os/freebsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre8/src/os/freebsd/poweroff.c new file mode 100644 index 00000000..c73dd079 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/os/freebsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWEROFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/os/freebsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre8/src/os/freebsd/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/os/freebsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/os/linux/halt.c b/software/cinit/browse_source/cinit-0.3pre8/src/os/linux/halt.c new file mode 100644 index 00000000..5ee3eb53 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/os/linux/halt.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * How to halt the system + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT_SYSTEM); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/os/linux/objects b/software/cinit/browse_source/cinit-0.3pre8/src/os/linux/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/os/linux/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/os/linux/poweroff.c b/software/cinit/browse_source/cinit-0.3pre8/src/os/linux/poweroff.c new file mode 100644 index 00000000..c7d2b1c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/os/linux/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff the system + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWER_OFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/os/linux/reboot.c b/software/cinit/browse_source/cinit-0.3pre8/src/os/linux/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/os/linux/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/os/netbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre8/src/os/netbsd/halt.c new file mode 100644 index 00000000..972aecf9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/os/netbsd/halt.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_halt(void) +{ + reboot(RB_HALT,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/os/netbsd/objects b/software/cinit/browse_source/cinit-0.3pre8/src/os/netbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/os/netbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/os/netbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre8/src/os/netbsd/poweroff.c new file mode 100644 index 00000000..17d7b259 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/os/netbsd/poweroff.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_poweroff(void) +{ + reboot(RB_HALT|RB_POWERDOWN,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/os/netbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre8/src/os/netbsd/reboot.c new file mode 100644 index 00000000..14313e17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/os/netbsd/reboot.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/os/openbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre8/src/os/openbsd/halt.c new file mode 100644 index 00000000..37064cc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/os/openbsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/os/openbsd/objects b/software/cinit/browse_source/cinit-0.3pre8/src/os/openbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/os/openbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/os/openbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre8/src/os/openbsd/poweroff.c new file mode 100644 index 00000000..bf4120e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/os/openbsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_HALT | RB_POWERDOWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/os/openbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre8/src/os/openbsd/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/os/openbsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/check_add_deps.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/check_add_deps.c new file mode 100644 index 00000000..9c1edc85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/check_add_deps.c @@ -0,0 +1,128 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +/* FIXME: clean headers, check: + * getcwd */ +#include + +#include +#include +#include +#include +#include +#include +#include + + +#include /* PATH_MAX */ +#include /* malloc */ +#include /* strcpy */ + +#include "cinit.h" /* mini_printf */ +#include "messages.h" +#include "svc.h" + +int check_add_deps(struct listitem *svc, int type) +{ + char buf[PATH_MAX+1]; + char oldpath[PATH_MAX+1]; + struct dirent *tdirent; + struct dep *deps = NULL; + struct listitem *new_svc; + DIR *d_tmp; + + /* remember where we started */ + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + /* FIXME remove in production */ + mini_printf("CAD::",1); + mini_printf(svc->abs_path,1); + mini_printf("\n",1); + + /* Create path */ + strcpy(buf,svc->abs_path); + if(type == DEP_NEEDS) { + if(!path_append(buf,C_NEEDS)) return 0; + } else { + if(!path_append(buf,C_WANTS)) return 0; + } + + d_tmp = opendir(buf); + if(d_tmp == NULL) { + if(errno != ENOENT) { + print_errno(buf); + return 0; + } + return 1; /* it's fine when there's no dependencies */ + } + + if(chdir(buf) == -1) { /* change to needs or wants */ + print_errno(buf); + return 0; + } + + while((tdirent=readdir(d_tmp))!=NULL) { + if(*(tdirent->d_name) == '.') continue; /* ignore .* */ + + /* skip non-working directories / broken links + * path_absolute reports errors on failure */ + if(!path_absolute(tdirent->d_name,buf,PATH_MAX+1)) continue; + + /* 1. create the service we depend on + * 2. initialize its dependencies + */ + if(!(new_svc = gen_svc_tree(buf))) return 0; + + /* We need ALL dependencies, as we are called only once + * per service; no need to test that first! + * + * And the other service CANNOT know anything about us yet, + * so we always add us to its list. + */ + + /* Dependencies: + * - a.needs b; add b to the list of dependencies. + * - a.needs b; add a to the list of needed by b. + * + * 1. check whether the dependency already exists + * 2. otherwise add it + * 3. do it once for needs, once for needed_by + */ + + /* create a dependency entry containing us */ + deps = dep_create(svc); + if(!deps) return 0; + + if(type == DEP_NEEDS) { + dep_entry_add(&(new_svc->needed),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->needs),deps); + } else { + dep_entry_add(&(new_svc->wanted),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->wants),deps); + } + } + if(chdir(oldpath) == -1) { + print_errno(buf); + return 0; + } + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/dep_create.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/dep_create.c new file mode 100644 index 00000000..691d66b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/dep_create.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Create dependency + */ + +#include /* NULL */ +#include /* malloc() */ +#include "svc.h" /* structs */ + +/* search for an entry by path, reverse: from end to the beginning */ +struct dep *dep_create(struct listitem *svc) +{ + struct dep *entry; + + entry = malloc(sizeof(struct dep)); + if(!entry) return NULL; + entry->svc = svc; + + return entry; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/dep_entry_add.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/dep_entry_add.c new file mode 100644 index 00000000..2ac16443 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/dep_entry_add.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include "svc.h" /* types */ + +/* + * list: pointer to the list + * new: pointer to data to insert (already filled up) + * + * We add the new element BEFORE the existing element! + */ +void dep_entry_add(struct dep **deplist, struct dep *new) +{ + if(*deplist == NULL) { /* new list */ + *deplist = new; + (*deplist)->prev = *deplist; + (*deplist)->next = *deplist; + } else { /* already existing */ + new->next = *deplist; /* new-> first */ + new->prev = (*deplist)->prev; /* last <- new */ + (*deplist)->prev->next = new; /* last -> new */ + (*deplist)->prev = new; /* new <- first */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/dep_entry_del.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/dep_entry_del.c new file mode 100644 index 00000000..fd9fbab6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/dep_entry_del.c @@ -0,0 +1,36 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include /* free() */ +#include "svc.h" + +/* + * tmp: pointer to data to remove (must not be NULL) + * + * Returns either the next object or NULL if there's no next object + */ +struct dep *dep_entry_del(struct dep *del) +{ + struct dep *tmp; + + /* last service in the list */ + if(del->next == del && del->prev == del) { + tmp=NULL; + } else { + /* remove from list */ + del->prev->next = del->next; + del->next->prev = del->prev; + tmp = del->next; + } + + free(del); + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/dep_needs_wants_add.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/dep_needs_wants_add.c new file mode 100644 index 00000000..b7afb02b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/dep_needs_wants_add.c @@ -0,0 +1,64 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Add all wants or needs from a specific service to dep list + * -> this builds the needs and needed_by and + * -> or this builds the wants and wanted_by and + * + * This function is used to fillup the starting list with dependencies + * after a service has sucessfully been executed. + */ + +#include /* NULL */ +#include "svc.h" + +/* + * list: pointer to the list + * svc: pointer to data to the service + */ + +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type) +{ + struct dep *tmp, *new, *end; + + if(type == DEP_NEEDS) { + end = svc->needed; + } else { + end = svc->wanted; + } + + /* Place to the first dependency of this service */ + tmp = end; + if(tmp != NULL) { + do { + /* Add service to the starter list, which + * - should be started once + * - should be respawned (both VIRGIN services!) + * - and which are not already in the list! + */ + if(((tmp->svc->status & ST_SH_ONCE) || + (tmp->svc->status & ST_SH_RESPAWN)) && + !(tmp->svc->status & ST_IN_LIST)) { + new = dep_create(tmp->svc); + if(!new) return 0; + tmp->svc->status |= ST_IN_LIST; + dep_entry_add(list,new); + } + /* FIXME: Clearify if we should go forward or backwards? + * this decision will influence starting order + * and may thereby add a minimal mount of speed enhancement + * + * As far as I can see it is not predictable, which way is + * better, because it heavily depends on the other services. + * + * If you know better, provide me with a patch ;-) + */ + tmp = tmp->next; + } while(tmp != end); + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/gen_svc_tree.c new file mode 100644 index 00000000..65f4028f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/gen_svc_tree.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +#include +#include "cinit.h" +#include "svc.h" + +struct listitem *gen_svc_tree(char *svc) +{ + struct listitem *li; + struct dep *deps; + + /* only do something if the service is not already known */ + if((li=list_search(svc))) return li; + + /* create a template, so other instances won't try to recreate us */ + if(!(li=svc_create(svc))) return NULL; + + if(!check_add_deps(li,DEP_NEEDS)) return NULL; + if(!check_add_deps(li,DEP_WANTS)) return NULL; + + /* no dependencies? then you are a start service */ + if(!li->wants && !li->needs) { + deps = dep_create(li); + if(!deps) return NULL; + dep_entry_add(&svc_init,deps); + + /* Mark it as being in the startup list, so it does not + * get added again in a dep_needs_wants_add call */ + li->status |= ST_IN_LIST; + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_delete.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_delete.c new file mode 100644 index 00000000..5a742fe9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_delete.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* free */ +#include "cinit.h" /* list_search */ +#include "svc.h" /* listitem */ + +/* ... */ +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if(tmp == NULL) { + return 0; + } + + tmp->next->prev = tmp->prev; + tmp->prev->next = tmp->next; + + free(tmp->abs_path); + free(tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_display_all.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_display_all.c new file mode 100644 index 00000000..12adff80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_display_all.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Show all list elements - mainly for debugging + */ + +#include /* NULL */ +#include "cinit.h" +#include "svc.h" + +int list_display_all() +{ + struct listitem *tmp; + + if(svc_list == NULL) { + return 0; + } else { + tmp = svc_list; + } + + do { + mini_printf("Service: ",1); + mini_printf(tmp->abs_path,1); + mini_printf("\n",1); + tmp = tmp->prev; + } while(tmp != svc_list); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_insert.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_insert.c new file mode 100644 index 00000000..a0ad6f2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_insert.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* malloc */ +#include /* bzero / memset */ +#include "svc.h" /* the list pointer */ + +struct listitem *list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc(sizeof(struct listitem)); + if(tmp == NULL) return NULL; + memset(tmp, '\0', sizeof(struct listitem)); + + if(svc_list == NULL) { /* list is empty, we have to init it */ + svc_list = tmp; + svc_list->next = svc_list; + svc_list->prev = svc_list; + } else { /* list has members,add this one */ + tmp->next = svc_list; /* begin after the new element */ + tmp->prev = svc_list->prev; /* change to the ex-last */ + svc_list->prev->next = tmp; /* change last element */ + svc_list->prev = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc(strlen(path) + 1); + if(tmp->abs_path == NULL) return NULL; + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_modify.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_modify.c new file mode 100644 index 00000000..73891117 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_modify.c @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED. Not in use anymore. + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "comm.h" /* for ST_OFF */ +#include "svc.h" /* for ST_OFF */ + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + + tmp = list_search(path); + if(tmp == NULL) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_search.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_search.c new file mode 100644 index 00000000..b40fae23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_search.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* NULL */ +#include /* strcmp */ +#include "cinit.h" +#include "svc.h" + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if(svc_list == NULL) { /* think positive */ + return NULL; + } else { + tmp = svc_list; + } + + do { + if(!strcmp(path, tmp->abs_path)) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_search_pid.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_search_pid.c new file mode 100644 index 00000000..f8731bec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/list_search_pid.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Search by pid + */ + +#include /* NULL */ +#include /* pid_t */ +#include "svc.h" /* struct listitem */ + +struct listitem *list_search_pid(pid_t pid) +{ + struct listitem *tmp; + + if(svc_list == NULL) { + return NULL; + } else { + tmp = svc_list; + } + + do { + if(pid == tmp->pid) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/shutdown_services.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/shutdown_services.c new file mode 100644 index 00000000..61b71c1b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/shutdown_services.c @@ -0,0 +1,14 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Shutdown all services + */ + +void shutdown_services(void) +{ + + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_add_needs.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_add_needs.c new file mode 100644 index 00000000..325e61a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_add_needs.c @@ -0,0 +1,67 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED! + * + * part of cLinux/cinit + * + * List handling + */ + +#include "cinit.h" +#include "messages.h" + +int svc_add_needs(char *needs, char *is_needed) +{ + struct listitem *svc_needs, *svc_is_needed; + + + /* retrieve service entries in global service list */ + svc_needs = svc_is_needed = NULL; + svc_needs = list_search(needs); + svc_is_needed = list_search(is_needed); + + /* and exit if one is missing */ + if( !svc_needs || !svc_is_needed ) { + return 0; + } + + /* first add needs */ + + /* now add needed_by */ + + malloc... /* for adding */ + + if(svc->needs == NULL) { + svc->needs = neu; + } else { + svc->next = neu; + } + + /* write generic function for dependencies or even all lists */ + dep_entry_add(list_pointer,new_entry); + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members,add this one */ + tmp->after = list; /* begin after the new element */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_create.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_create.c new file mode 100644 index 00000000..b6d4a415 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_create.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* strcpy */ +#include /* stat */ +#include /* stat */ +#include /* PATH_MAX */ +#include /* errno */ +#include "svc.h" /* listitem */ +#include "cinit.h" /* path_append */ + +/* checking for existence is done before! */ +/* FIXME: check heedars for conformance with POSIX */ +struct listitem *svc_create(char *svc) +{ + char buf[PATH_MAX+1]; + struct stat statbuf; + struct listitem *li; + + li = list_insert(svc,-1); + if(!li) return NULL; + + /* FIXME: add two path length checks? svc and svc+strlen(C_RESPAWN)? */ + strcpy(buf,svc); + if(!path_append(buf,C_RESPAWN)) return NULL; + + if(stat(buf,&statbuf) == -1) { + if(errno == ENOENT) { + svc_set_status(li,ST_SH_ONCE); + } else { + return NULL; + } + } else { + /* FIXME remove debug */ + mini_printf("respawn: ",1); + mini_printf(li->abs_path,1); + mini_printf("\n",1); + svc_set_status(li,ST_SH_RESPAWN); + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_fail.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_fail.c new file mode 100644 index 00000000..7c150c85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_fail.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Mark the service as being failed + */ + +#include "svc.h" + +void svc_fail(struct listitem *li) +{ + if(li->status & ST_ONCE_RUN) + li->status = ST_ONCE_FAIL; + else { + /* FIXME: do something senseful, record time of dead? */ + li->status = ST_RESPAWNING; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_needs_status.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_needs_status.c new file mode 100644 index 00000000..ccf4cb8f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_needs_status.c @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return status of the needs of this service + */ + +#include /* NULL */ +#include "svc.h" /* service information */ + +// DEBUG #include "cinit.h" /* service information */ + +int svc_needs_status(struct listitem *svc) +{ + int retval = SNS_NEEDS_STARTED; + struct dep *deps = svc->needs; + + if(deps == NULL) return SNS_NEEDS_STARTED; /* no needs, everything fine */ + + do { + /* worst case: need failed */ + if((deps->svc->status & ST_NEED_FAILD) || + (deps->svc->status & ST_ONCE_FAIL)) { + retval = SNS_NEEDS_FAILED; + break; + } + /* services are being started */ + if((deps->svc->status & ST_SH_ONCE) || + (deps->svc->status & ST_SH_RESPAWN)) { + retval = SNS_NEEDS_UNFINISHED; + } + deps = deps->next; + } while(deps != svc->needs); + + return retval; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_report_status.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_report_status.c new file mode 100644 index 00000000..4cc1edf8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_report_status.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Tell the world what happened to the service + */ + +#include "cinit.h" /* mini_printf */ +#include "messages.h" /* MSG_INTRO_SVC */ + +void svc_report_status(char *svc, char *msg, char *err) +{ + mini_printf(MSG_INTRO_SVC,1); + mini_printf(svc,1); + mini_printf(": ",1); + mini_printf(msg,1); + if(err) { + mini_printf(" (",1); + mini_printf(err,1); + mini_printf(")",1); + } + mini_printf("\n",1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_respawn_check.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_respawn_check.c new file mode 100644 index 00000000..e1802894 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_respawn_check.c @@ -0,0 +1,23 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED? not in use. + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* PATH_MAX */ +#include "svc.h" + +/* checking for existence is done before! */ +int svc_respawn_check(struct listitem *svc) +{ + char buf[PATH_MAX+1]; + + strcpy(buf,svc->abs_path); + if(!path_append(buf,C_RESPAWN)) return 0 +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_set_status.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_set_status.c new file mode 100644 index 00000000..73d5da91 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_set_status.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_set_status(struct listitem *li, int status) +{ + return (li->status = status); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_should_respawn.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_should_respawn.c new file mode 100644 index 00000000..04acfe1d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_should_respawn.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return whether should respawn or not + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_should_respawn(struct listitem *li) +{ + return (li->status & ST_SH_RESPAWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_start.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_start.c new file mode 100644 index 00000000..8e75a8de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_start.c @@ -0,0 +1,70 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start a service + */ + +#include /* NULL */ +#include /* fork */ +#include /* strerror */ +#include /* errno */ +#include /* PATH_MAX */ +#include "svc.h" /* struct * */ +#include "messages.h" /* MSG_* */ +#include "cinit.h" /* execute_sth */ + +//void svc_start(struct listitem *li, int strict) +void svc_start(struct listitem *li) +{ + char buf[PATH_MAX+1]; + + /* FIXME: All cleanup must go here + * close(fds); + * reset signals + * reset env? + * + * FIXME: Add logging possibility to here + * open (0,1,2) to other processes, if specified */ + li->pid = fork(); + + /********************** Error ************************/ + if(li->pid < 0) { + svc_report_status(li->abs_path,MSG_SVC_FORK,strerror(errno)); + svc_set_status(li,ST_BAD_ERR); + return; + } + /********************** parent ************************/ + if(li->pid > 0) { + if(li->status & ST_SH_ONCE) + li->status = ST_ONCE_RUN; + else + li->status = ST_RESPAWNING; + return; + } + + /********************** Client / fork() ************************/ + svc_report_status(li->abs_path,MSG_SVC_START,NULL); + + /* length check is done by path_append */ + strcpy(buf,li->abs_path); + if(!path_append(buf,C_ON)) return; + + /* Check for existence */ + li->status = file_exists(buf); + + if(li->status == FE_NOT) _exit(0); /* nothing there? fine! */ + + if(li->status == FE_FILE) { + /* FIXME: reset signals: Is this necessary? Or does fork clean it anyway? */ + set_signals(ACT_CLIENT); + + /* and now, fire it up */ + execute_sth(buf); + } else { + /* either no file or an error */ + _exit(1); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_success.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_success.c new file mode 100644 index 00000000..dc4057e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/svc_success.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include /* NULL */ + +#include "svc.h" /* listitem, svc_report_status */ +#include "messages.h" /* messages */ + +void svc_success(struct listitem *li) +{ + if(li->status & ST_ONCE_RUN) { + svc_report_status(li->abs_path,MSG_SVC_OK_ONCE,NULL); + li->status = ST_ONCE_OK; + } else { + svc_report_status(li->abs_path,MSG_SVC_OK_RESPAWN,NULL); + li->status = ST_RESPAWNING; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/svc/tree_exec.c b/software/cinit/browse_source/cinit-0.3pre8/src/svc/tree_exec.c new file mode 100644 index 00000000..449b5e40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/svc/tree_exec.c @@ -0,0 +1,64 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + +#include /* NULL */ +#include "cinit.h" /* mini_printf */ +#include "svc.h" /* svc_init */ +#include "messages.h" /* messages */ + +/* some thoughts... + * + * - we already generated the tree, we now need to start it from + * the ends + * + * - after starting the first service we have to care about SIG_CHILD + * to record changes + * + * - we execute all services in parallel without problems, because of + * SIG_CHILD notification + * + * - After successfully starting the service we start the services that + * need or want that service + */ +int tree_exec(struct dep *start) +{ + struct dep *tmp = start; + + mini_printf(MSG_TREE_EXEC,1); + + /* the main starting loop: All services in this list should be + * started, but it is possible that dependent services are in the + * list. In this case simply skip the current service + */ + do { + switch(svc_needs_status(tmp->svc)) { + case SNS_NEEDS_STARTED: + /* execute service, add dependencies, remowe from list */ + svc_start(tmp->svc); + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_NEEDS)) return 0; + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_WANTS)) return 0; + tmp = dep_entry_del(tmp); + break; + + case SNS_NEEDS_FAILED: + /* mark service as NEED_FAILD and delete from list */ + svc_report_status(tmp->svc->abs_path,MSG_SVC_NEED_FAIL,NULL); + svc_set_status(tmp->svc,ST_NEED_FAILD); + tmp = dep_entry_del(tmp); + break; + + case SNS_NEEDS_UNFINISHED: + /* continue with the next item */ + tmp = tmp->next; + break; + } + } while(tmp != NULL); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/test/test_build_argv+link.c b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_build_argv+link.c new file mode 100644 index 00000000..f74b4f36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_build_argv+link.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec_link"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/test/test_build_argv.c b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_build_argv.c new file mode 100644 index 00000000..3938aa0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_build_argv.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec new file mode 100644 index 00000000..e5cf3f01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec @@ -0,0 +1,7 @@ +#!/bin/sh +# Nico Schottelius +# Test-skript for cinit + +echo '$0': "$0" +echo '$@': "$@" +echo 'cinit_is_great:' $cinit_is_great diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec.env b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec.env new file mode 100644 index 00000000..853e0663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec.env @@ -0,0 +1 @@ +cinit_is_great=yes diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec.params b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec.params new file mode 100644 index 00000000..afe0f2ef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec.params @@ -0,0 +1 @@ +Let's see if we read the arguments....YES! diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec_link b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec_link new file mode 120000 index 00000000..c2ec9306 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec_link @@ -0,0 +1 @@ +test_exec \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec_link.env b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec_link.env new file mode 120000 index 00000000..30ea4990 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec_link.env @@ -0,0 +1 @@ +test_exec.env \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec_link.params b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec_link.params new file mode 120000 index 00000000..0b77c256 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_exec_link.params @@ -0,0 +1 @@ +test_exec.params \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/test/test_gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_gen_svc_tree.c new file mode 100644 index 00000000..c13c46b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_gen_svc_tree.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test gen_svc_tree + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + gen_svc_tree("/etc/cinit/svc/init"); + list_display_all(); +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/src/test/test_openreadclose.c b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_openreadclose.c new file mode 100644 index 00000000..2f722da5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/src/test/test_openreadclose.c @@ -0,0 +1,16 @@ +#include + +int openreadclose(char *filename, char **where); + +int main() +{ + char *data; + char *file = "test_openreadclose.c"; + + openreadclose(file,&data); + + printf("%s\n",data); + + return 1; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre8/util/README b/software/cinit/browse_source/cinit-0.3pre8/util/README new file mode 100644 index 00000000..f66e0ddb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/util/README @@ -0,0 +1,4 @@ +-- OBSOLETED -- + -> This code is not in use in cinit-0.3 anymore! +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.3pre8/util/ccontrol.c b/software/cinit/browse_source/cinit-0.3pre8/util/ccontrol.c new file mode 100644 index 00000000..95bc5212 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/util/ccontrol.c @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * ccontrol: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define USAGE_TEXT "ccontrol - control cinit\n\n" \ + "Usage:\n\nccontrol -[phurs]\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-u\t- (update) Reboot (warm) and update cinit\n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n\n" \ + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * ccontrol: control cinit + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 2) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + + switch(argv[1][1]) { + case 'p': /* power off */ + LOG(MSG_POWER_OFF); + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + LOG(MSG_HALT); + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + LOG(MSG_REBOOT); + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + LOG(MSG_RESCUE); + msg_reboot(CMD_RESCUE); + break; + + case 'u': /* update */ + LOG(MSG_UPDATE); + msg_reboot(CMD_UPDATE); + break; + + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* cinit-0.2 return codes implemented - nothing changed*/ diff --git a/software/cinit/browse_source/cinit-0.3pre8/util/cservice.c b/software/cinit/browse_source/cinit-0.3pre8/util/cservice.c new file mode 100644 index 00000000..66be6563 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/util/cservice.c @@ -0,0 +1,164 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * cservice: control cinit services + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit services + */ + +#define USAGE_TEXT "cservice - start and stop cinit services\n\n" \ + "cservice -[ear] \n" \ + "\t-e\t- (ein,on ) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n" \ + "\t-r\t- (restart) stop and start a service\n" + +/*********************************************************************** + * fuzzy_path: allow other kinds of path specification .. + */ +char *fuzzy_path(char *rpath) +{ + char pathtmp[PATH_MAX]; + char *re = NULL; + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return NULL; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(rpath); + return NULL; + } + + re = malloc( strlen(pathtmp) + 1); + + if(re != NULL) { + strcpy(re,pathtmp); + } + + return re; +} + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + char *real_name = NULL; + + /* argv */ + if(argc != 3) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + if(strlen(argv[1]) != 2) C_USAGE(MSG_ERR_ARGS_LEN); + + real_name = fuzzy_path(argv[2]); + + /* fuzzy path failed, exit! */ + if(real_name == NULL) { + return 1; + } + switch(argv[1][1]) { + case 'a': /* aus */ + case 'r': /* restart */ + switch( msg_svc_on_off(real_name,CMD_STOP_SVC) ) { + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_OFF: + SERVICE_LOG(real_name,LOG_SVC_STOPED); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + /* FIX THIS AFTER cinit-0.2 */ + case RT_TMPNOW: + case RT_ERR: + case RT_SVC_FAILED: + case RT_UNSPEC: + case RT_SUCCESS: + case ST_NEED_FAIL: + case ST_TMP: + case ST_ONCE: + case RT_NOTEXIST: + case ST_RESPAWN: +// SERVICE_LOG(real_name,"Ein bekanntest ding"); + break; +/* default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; */ + } + if( argv[1][1] == 'a') break; /* only continue if restarting */ + + case 'e': /* ein */ + switch (run_svc(real_name)) { /* run_svc fuzzys itself */ + case RT_NOTEXIST: + SERVICE_LOG(real_name,LOG_SVC_NOTEXIST); + break; + case RT_SVC_FAILED: + SERVICE_LOG(real_name,LOG_SVC_FAILED); + break; + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_ONCE: + SERVICE_LOG(real_name,LOG_SVC_ONCE); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + case ST_RESPAWN: + SERVICE_LOG(real_name,LOG_SVC_RESPAWN); + break; + case ST_NEED_FAIL: + SERVICE_LOG(real_name,LOG_NEED_FAIL); + break; + default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; + } + break; + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* uses cinit-0.2 return code style */ diff --git a/software/cinit/browse_source/cinit-0.3pre8/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.3pre8/util/msg_reboot.c new file mode 100644 index 00000000..efe78ec6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre8/util/msg_reboot.c @@ -0,0 +1,21 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + if(!begin_msg(cmd)) return 0; + close(sock); + return 1; +} +/* clean for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre9/ b/software/cinit/browse_source/cinit-0.3pre9/ new file mode 100644 index 00000000..73dc3060 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/ @@ -0,0 +1,4 @@ +This is a non-existing file, how did you find it? ;-) + +It seems like you know a bit about your system, perhaps +you want to join cinit development in #cLinux on irc.freenode.org? diff --git a/software/cinit/browse_source/cinit-0.3pre9/.exclude b/software/cinit/browse_source/cinit-0.3pre9/.exclude new file mode 100644 index 00000000..1a2d31e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/.exclude @@ -0,0 +1,2 @@ +tmp +.git diff --git a/software/cinit/browse_source/cinit-0.3pre9/.gitignore b/software/cinit/browse_source/cinit-0.3pre9/.gitignore new file mode 100644 index 00000000..abbc2a7c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/.gitignore @@ -0,0 +1,20 @@ +*.o +*.a +*0? +MT +ddoc +contrib+tools/cinit.graph.text +config.h +sbin +tmp +os/current +tmpbin +src/os/current +src/ipc/current +src/cinit +*.html +*.htm +*.man +*.texi +*.texi +*.docbook diff --git a/software/cinit/browse_source/cinit-0.3pre9/CHANGES b/software/cinit/browse_source/cinit-0.3pre9/CHANGES new file mode 100644 index 00000000..3f7f8e8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/CHANGES @@ -0,0 +1,70 @@ +cinit-0.3pre9: 2007-05-15 + - Implemented sleeping before respawn (static delay) + - Report broken links on execution, but ignore empty services + - Cleaned up message queue error reporting + +cinit-0.3pre8: 2007-04-06 + - Updated and merged documentation: Codingstyle and Codingguide + - Cleaned sigaction-code (fixes segfault on glibc) + - Cleaned object listings + - Added notifications at shutdown + - Fixed status check + +cinit-0.3pre7: 2007-02-17 + - Many code cleanups + - Fixed glibc problem with sigaction (for details view src/core/set_signals.c) + - Added general shutdown support (will *NOT* yet stop services, + but still stop your system) + +cinit-0.3pre6: + - Many code cleanups + - Added user documentation and cleaned up documentation in general + +cinit-0.3pre5: + - Finished new SIGCHLD handler + - First cleanups for real release. + - This version is the first 0.3pre version that can handle respawn! + +cinit-0.3pre4: + - Re-implemented execution of services. + - This version is the first 0.3pre version that COULD bootup your system! + +cinit-0.3pre3: + - Finished execution all services via the reversed service tree. + +cinit-0.3pre2: + - Finished generation of the dependency tree. + +cinit-0.3pre1: + - cinit should now compile on mostly all unices + - introduced much new code + - THIS IS A DEVELOPER RELEASE, NOT USABLE IN PRODUCTION ENVIRONMENTS. + +cinit-0.2.1: (Bugfix release) + - Fixed problem in contrib+tools/Makefile when installing + - added many new scripts to convert sys-v-init, which are still early beta + (see bin/cinit.merge.sysvinit-debian-sid) + +cinit-0.2: + - Much more verbose error reporting + - You can now also disable 'once ran' services, + - You can restart services with csevice -r + - Online speech in German is available + - C_DELAY support - variable delay for sending SIGKILL after SIGTERM + - First /etc/csys configuration example (wasserstoff) is available + - a Mailing list was created + - Added tools to analyze cinit configuration + (cinit-vis.pl, cinit.graph.text.c) + - Added tools to import and export configuration to XML + (make.cconfig.from.xml.rb,cconfig.graph.xml.rb) + - Removed unecessary signalling + - Added many helper scripts to install services (cinit.install.service*) + - Fixed many small bugs in old helper scripts (cinit.add.getty, cinit.get-conf, ...) + - Added ccontrol, which allows to control cinit + - Added update (-u) via ccontrol + - Stripped cservice, which now "only" controls services + - Removed swapoff from cinit code, should be handled by off + - Much better error and processing descriptions + - A bit more verbose reporting + - Restructured run_svc, now with better error detection + - Removed Kernel panic, when halting system diff --git a/software/cinit/browse_source/cinit-0.3pre9/COPYING b/software/cinit/browse_source/cinit-0.3pre9/COPYING new file mode 100644 index 00000000..3912109b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/software/cinit/browse_source/cinit-0.3pre9/CREDITS b/software/cinit/browse_source/cinit-0.3pre9/CREDITS new file mode 100644 index 00000000..febdcf4b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/CREDITS @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Credits - People contributed to cinit +Nico Schottelius, 2005-05-17 (Last Change: ls -l) +-------------------------------------------------------------------------------- + +The following list is sorted chronological, new contributors are +added at the end of the list. + + +René Nussbaumer + * helping with the general IPC idea + * testing and proof-reading code +Marcus Przyklink + * coding linear lists, making MAX_SVC obsolete + * providing cinit-vs.pl to visualize the cinit-tree +Matteo Croce + * finding good strip parameters to save about 30KiB (on glibc) +Sandro Koechli + * testing, testing and testing cinit and cinit documentation +Marcus Wagner + * building and maintaining the Debian package +Peter Portmann + * testing cinit and documentation, writing cinit.graph.text in C, other coding +Tonnerre Lombard + * NetBSD support (host + hints) diff --git a/software/cinit/browse_source/cinit-0.3pre9/Changelog b/software/cinit/browse_source/cinit-0.3pre9/Changelog new file mode 100644 index 00000000..0fbf76f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/Changelog @@ -0,0 +1,10 @@ +Mo Okt 3 00:19:40 CEST 2005 + *Changelog can now be found in git database (cg-log) +Sun May 8 12:20:35 CEST 2005 + *Changelog can now be found in monotone database (monotone log) +Sat Apr 30 15:53:53 CEST 2005 + * add socket code +Tue Apr 26 15:29:53 CEST 2005 + * removed is_cinit support, initial messaging framework +Mon Apr 18 14:07:50 CEST 2005 + * added is_cinit -> recognize if you are cinit or a fork diff --git a/software/cinit/browse_source/cinit-0.3pre9/Makefile b/software/cinit/browse_source/cinit-0.3pre9/Makefile new file mode 100644 index 00000000..c3f1539c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/Makefile @@ -0,0 +1,108 @@ +# +# cinit +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +# Directories and files +CDIRS=src doc + +# +# Targets +# + +# +# Warn per default, make sure the user knows what she does +# +warn: + @cat doc/.buildwarn + +all: sources documentation +dev-all: all sizecheck + +install clean dist distclean: + @for subdir in ${CDIRS}; do \ + echo "Making $@ in $$subdir"; \ + (cd $$subdir && ${MAKE} ${MAKEFLAGS} $@); \ + done; + +.PHONY: sources +sources: + ${MAKE} -C src all + +.PHONY: documentation +documentation: + ${MAKE} -C doc documentation + +sizecheck: sources + FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l src/cinit > $$FILE; cat $$FILE; \ + cg-add $$FILE + cg-commit $$FILE -m "Size added" + #cg-commit $$FILE -m "Size: $$(awk '{ print $5 }' $$FILE)" + +source-size: clean + @echo -n "Source size (in KiB): " + @du -s src/ | awk '{ sum+=$$1 } END { print sum }' + + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + +config: + @./bin/cinit.configure.os + @./bin/cinit.configure.tools + @./bin/cinit.configure.ipc + @touch src/.configured + + +################################################################################ +# Tests +# +tests: + # does not work, due getting killed, due to design :-) + #./scripts/internal/compile_run_as_compiler.sh + ./scripts/internal/test_on_hosts.sh ./scripts/internal/compile_test.sh + +################################################################################ +# old +#DDOC=ddoc +#SDIRS=bin client conf comm doc generic serv util +# DO NOT CHANGE THIS. +#SBIN=sbin +#CINIT_BIN=$(SBIN)/cinit +# +#%.o: %.c +# $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< +#$(DDOC): +# mkdir $(DDOC) +# +#$(SBIN): +# mkdir $(SBIN) +# +#docs: $(DDOC) bin/cdoc-man.sh +# ./bin/cdoc-man.sh doc/cinit-doc > $(DDOC)/cinit.8 +# ./bin/cdoc-man.sh doc/cservice-doc > $(DDOC)/cservice.8 +#$(CSVC_OBJ) $(OBJ): $(CONFIG_H) +#clean: +# $(MAKE) -C src clean +# rm -f tmpbin/* +################################################################################ +#cservice: $(SBIN)/cservice +# +#$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) +# $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ +# $(STRIP) $@ +# +#ccontrol: $(SBIN)/ccontrol +# +#$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) +# $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ +# $(STRIP) $@ +# +#install:: install-dir cinit cservice ccontrol +# @echo '*** Installing cinit ***' +# ./bin/cinit.install.binary diff --git a/software/cinit/browse_source/cinit-0.3pre9/NEXTTODO b/software/cinit/browse_source/cinit-0.3pre9/NEXTTODO new file mode 100644 index 00000000..0af67c60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/NEXTTODO @@ -0,0 +1,11 @@ +- create cmd! + * cinit-0.3 client +- create some boot profiles +- cinit.install.standard.dirs.argv +check needs: + really started, after started or after finished starting? +wants: + are they checked? + +implement commands! +- fix devel/codingguideline.text! diff --git a/software/cinit/browse_source/cinit-0.3pre9/README b/software/cinit/browse_source/cinit-0.3pre9/README new file mode 100644 index 00000000..00f2651b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/README @@ -0,0 +1,106 @@ +-------------------------------------------------------------------------------- +cinit, Nico Schottelius, 2005-04-28 [last change: 2005-05-07] +-------------------------------------------------------------------------------- + +Introduction +============ +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Unix +- true dependencies (soft and hard!) +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +FIXME: Add mailing list here + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre9/ROADMAP b/software/cinit/browse_source/cinit-0.3pre9/ROADMAP new file mode 100644 index 00000000..d66c6a11 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/ROADMAP @@ -0,0 +1,117 @@ +-------------------------------------------------------------------------------- +THIS DOCUMENT SHOULD VANISH AS SOON AS EVERYTHING IS FINE +-------------------------------------------------------------------------------- + +Timeline +--------- + * ~ End of October 2006: Reunderstand the code, manifest changes [DONE] + * ~ Mid of November 2006: Have a compile-able cinit [DONE] + * ~ End of November 2006: Have a testsystem booting cinit + * ~ Mid of December 2006: Have production stable cinit + - Begin with migration scripts + - publish installable pre-releases + * ~ End of December 2006: Have some generic migration scripts + - Have (different) understanable documents + * ~ Mid of January 2007: Begin official release of cinit-0.3 + + + + +Versions +--------- + +0.3: +~~~ + code: Make cinit compile again :) [DONE] + code: double check to remove Linux specific source from general tree [DONE] + code: seperate ipc from the rest [DONE] + code: fix / check signal handlers [DONE] + code: cleanup makefile + code: add porting code: add support for any unix in general [DONE] + code: stabilize code, remove experimenting parts + code: remove delay support, let off/off.params do that. + code: add special directory (/etc/cinit/special?) for os specific binaries [CANCELED] + -> halt, poweroff, reboot (NOTHING MORE THEY CAN DO) + -> SHOULD NOT BE IN THE PATH + code: move production code to src/ + end user doc: add warning for special binaries and hint for r/o only + amiga alike systems + + doc: begin to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.1: + devel doc: how to write merging scripts + devel doc: merging framework: + - minimal (do not look at the current configuration, build minimal) + - use current system (slowly, may use old scripts) + - rebuilt current system (recommened) + + tools: general framework for merging + end user doc: merging old init to cinit + + code: add porting code: add support for freebsd + code: better readable output: + -> starting + [ started once ] + [ respawning ] + [ failed ] (+ REASON!) + [ needs failed ] (which ones) + + -> stopping + [ stopping ] (for dependencies) + [ stopped ] ? + [ not running ] ? + + code: export profile information (CINIT_PROFILE) + end user doc: using different profiles in user space + end user doc: write examples for profiles: + o switch ssh known_hosts based on profile + o different proxy settings in browsers + - environment + - mozilla settings + o start samba (for lan) + o start samba (for company lan) + o use nis and nfs (company profile) + + doc: continue to merge old documents into new structure and move them + to the doc/ancient directory +0.3.2: + end user doc: what to read to use cinit + end user doc: installing cinit + end user doc: configuring cinit + tools: writing cinit-config (graphical (dialog based?) configuration tool) + code: add porting code: add support for openbsd + + code: add reverse dependency chain (or earlier?) + code: better support for external tools + o neustarten + o mit herunterfahren + o mit herunterfahren und allen Diensten, die abhaengen + o ohne herunterfahren + o Statische Daten + o pid vom Daemon + o pid vom einmal ausgefuehrten Programm + + + doc: end to merge old documents into new structure and move them + to the doc/ancient directory + +0.3.3: + devel doc: writing an init system + devel doc: the conf/-configuration system + + code: check conf/ and perhaps rewrite b0rken english sentences + + code / doc: add logging support for services -> use multilog? + code: add porting code: add support for netbsd + +0.4: + first stable, tested, well documented version. + + code: check for optimisation + + other: compare with other init systems + +0.4.x: + code: add porting code: add support for other unices diff --git a/software/cinit/browse_source/cinit-0.3pre9/TODO b/software/cinit/browse_source/cinit-0.3pre9/TODO new file mode 100644 index 00000000..0ff0872e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/TODO @@ -0,0 +1,290 @@ +-------------------------------------------------------------------------------- +- define how it should work (doc/braindums/big-picture.text) +- define service status in one document, so repeatition stops! +-------------------------------------------------------------------------------- +- remove client/ from top level +-------------------------------------------------------------------------------- +Generate automatic asciidoc from conf/* +-------------------------------------------------------------------------------- + Ausgaben nach Beendigung vom Starten des Services. + + [ on ] %s + Ergebnis + [ off ] %s + + Rekursives herunter/rauffahren +-------------------------------------------------------------------------------- +- add error handling to cinit.install.binary +-------------------------------------------------------------------------------- +1. Entfernung mount + -> Example configuration + -> was man alles machen muss +-------------------------------------------------------------------------------- +- add code do implement stopping / restarting with dependency tree +-------------------------------------------------------------------------------- +- print service name or cinit: before _everything_ WE print + + - is the reporting ok? + +# cinit.create.empty.service: can only be started from the bin directory + +- Fix Switching services off !! +- Error codes when shutting down a service? +- Delay dokumentieren +- no_kill dokumentieren + +- on.out, on.err, on.in? + -> reading/writing from/to files + +- implement "no_kill" until cinit-0.2 or 0.3? + + +-------------------------------------------------------------------------------- +- Source Logic issues + - remove FIXME entries (and what should be fixed, too) +-------------------------------------------------------------------------------- +Helper scripts, rausgenommen aus Der Doku, muessen fuer +cinit-0.3 ueberprueft werden: + +Configure help scripts +~~~~~~~~~~~~~~~~~~~~~~ +cinit-conf later +Using prepared scripts + +In the bin/ directory of this tarball you'll find at least: + + cinit.add.dependency - add a dependency to a service + cinit.add.getty - add a new getty + cinit.create.empty.service - create an empty service + cinit.reboot - reboot in /bin/sh + cinit.remove.getty - remove a getty service + cinit.respawn.off - switch respawing off + cinit.respawn.on - switch respawing on + cinit.shutdown - shutdown in /bin/sh + +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +Optimisations +------------- + - Installing cinit + o compiling cinit from source + o debian / gentoo + - Configuring + * add scripts! see below + - define coding guidelines -> general, with url? + - Write manpages (use doc/* as base for that) + - Check Spell and Grammar in documentation + - write howto: + o Howto-cinit + o Howto-cinit-uml + +tree_exec +~~~~~~~~~ +- only check dependencies (=needs) after the basic run? + +Documentation +------------- + +developer +~~~~~~~~~ +- ST_IN_LIST == startup marker, used to (NOT) insert services into startup +- dep_needs_wants_add is used to add dependencies of a service to the general + starter list + + +user +---- +- do we really need swapoff? remove umount, swapoff! + * to services! + -> they have to do it! +- dependencies with leading '.' (dot) are ignored. +- about cinit-configuration structure + * cconfig + * svc/ + * special/ (or however we called it) + - panic + - halt + - poweroff + - reboot + +-------------------------------------------------------------------------------- +FAQ +~~~ +- DOKU: what happens when a service does not terminate.... + und er als once drin ist +--> Wenn kein ReSPAWN und der Prozess beendet sich nicht, + dann haengt init! + +- multuicall probleme -> busysbox --> GIBT ES NICHT!! + ---> DOKU DAZU! mit links, doppelt links, aus test + ---> erklaeren, dass es unproblematisch ist! + +-------------------------------------------------------------------------------- +csvc: +11:09 < folken23> telmich: oder service allready started. +-------------------------------------------------------------------------------- +cinit: +11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet + werden konnte. +11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0 + zurueckgeworfen. + ---> errno in execute_sth! + +Child handlin +~~~~~~~~~~~~~g +- free() everything before starting child + +Later +~~~~~ +- close(*>2) before forking / executing + -> close fds, clean environment, etc., ... + -> do we really need that? + -> yep, clean environment! +- logging service! + -> write output $somewhere, wait for syslog? + -> flush at the end of start-process? + -> perhaps pipe logging output to a program? +-------------------------------------------------------------------------------- +- Doc + * main.text -> cleanup / remove / split + * config-dirs + * FAQ + * ideas + * meta.dependencies + - config/hints/meta depps + * optimising + - integrate into other + * README.text + - update + * replacing.init + - update / integrate + * special-services.text + - into configuring/hints? + * TODO + - into paths, if necessary + * updating.cinit + - update as soon as update is possible? + * using.rescue + - update as soon as update is possible? + * 'os-integration.text' + * 'daemons.backgrounding' + * There are some hints on how to migrate to cinit in general and also + some os specific help in the file 'migrating-init-systems.text', +- CODECHECK: + * what happens with the wants of the last services? + - are they added? + - are they added at the correct position? +- scripts + * `cinit.check.config` (doc/user/configuring.cinit.text) + -> circular depedencies! +- Doc.next: + - installing: report! + -> write report script. +- Doc later + * current-init-problems.text + - current-init-problems.text explains why cinit does not use nor recommends the use of shell scripts. + * special-services.text + +- Begin documentation + * Check Makefile + * Integrate Makefile into main Makefile + * create manpage + * Write a small manual + - install + - configure + - boot (different OS) + * generate asciidoc! +- Doc way: + * installing + * configuring + - testconfig! + * booting + - different OS / bootloader + * debugging +- Shutdomn code: + * begin at init, then shutdown wants/needs, ... +- check that the new wants and need elements are nserted the other way round + * we go to next, elements must be put before us! +- replace cinit_ipc_logon with cinit_ipc_init... + * delay ipc code -> after start! + +- Cleanup / create object lists + object-lists/ + cinit + cservice + ccontrol + cinit.halt + cinit.reboot + cinit.shutdown (shell script?!?) + + +TODO.pre9: + do_reboot.c: + write cinit_svc_shutdown + - implement do_reboot() + * so not only booting with cinit works, but also the shutdown + + Done: + - pfad korrigieren (home/..../ -> cinit.release) + - cg-add nicht aufrufen beim make all! +ser/nico/oeffentlich/computer/projekte/cinit/cinit-0.3pre8/doc' +FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l src/cinit > $FILE; cat $FILE; \ + cg-add $FILE +-rwx------ 1 nico nico 72601 2007-04-06 17:52 src/cinit +There is no GIT repository here (.git not found) +make: *** [sizecheck] Fehler 1 + - setup VM for testing: qemu/kvm/virtualbox (no commercial bloaty) + -> uml! + - sleep when respawnig! + -> static delay of five seconds + do_reboot.c: + is ipc closed? -> check! => done! + - ignore msgrcv: Interrupted system call +Session terminated, killing shell...msgq-destroy: Invalid argument +msgq-destroy: Invalid argument + - do not print an error if /etc/cinit/conf/last is non-existent! + => print it. Do not not print it, as this can aid debugging. + include locking via shm, remove test on pid1 + => not necessary imho currently + + +TODO.pre10: + - find out why gettimeofday() and time() do strange things when called in SIG_CHLD + cleanup client/ comm/ contrib+tools/ util/ tmp/ + - write cinit.conf.check + * report broken links in needs/wants + * report circular dependencies + - pretty print, reporting is ugly! + Add handler for ctrl+alt+delete + * document in paths + * check whether there's an os-unspecific way to do that + cleanup bin/ + - write sys-v-init-shutdown-wrapper + * shutdown + * halt + * reboot + * poweroff + + + + +TODO.pre11: + cleanup src/ + finish ipc code so clients can access cinit + +TODO.pre12: + Check and clean doc/ + Remove *TODO*+ROADMAP and leave behin doc/TODO + +TODO.pre13: + code cservice ccontrol halt reboot shutdown poweroff + Test, release and prepare for final cinit-0.3 + +TODO.0.3.1 + add log support + cinit logs to + -> shm saver + services log to + +TODO unclear + - create migration scripts diff --git a/software/cinit/browse_source/cinit-0.3pre9/TODO.doc b/software/cinit/browse_source/cinit-0.3pre9/TODO.doc new file mode 100644 index 00000000..a170a50d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/TODO.doc @@ -0,0 +1,29 @@ +- doc/user/paths.text + * finish + * add examples +- add cross-compilation howto +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + +caveats +------- + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- cinit ignores the Keyboard request +- Currently there is no support to react on 'ctr+alt+del': +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + diff --git a/software/cinit/browse_source/cinit-0.3pre9/TODO.optimisations b/software/cinit/browse_source/cinit-0.3pre9/TODO.optimisations new file mode 100644 index 00000000..8a686b4a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/TODO.optimisations @@ -0,0 +1,19 @@ +This file describes enhancements or optimisations that +could be done / checked. + + +Code +---- + +fork() +~~~~~~ + +Security +^^^^^^^^^ +- Closed fds? +- Close other things? +- IPC? + +Cleanup +^^^^^^^ +- Do we have to reset signals or is that done anyway by fork()? diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cdoc-man.sh b/software/cinit/browse_source/cinit-0.3pre9/bin/cdoc-man.sh new file mode 100644 index 00000000..fc1adde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cdoc-man.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Nico Schottelius +# Date: 21-Aug-2005 +# Last Modified: - +# + +set -e + +[ $# -ne 1 ] && exit 23 + +SRC=$1 + +cd "$SRC" + +# +# Title heading +# +echo .TH $(cat "meta/name" "meta/man_section" "meta/date") + +# +# Name +# +echo .SH NAME +echo $(cat meta/name) - $(cat meta/short_description) + +# +# Synopsis +# +echo .SH SYNOPSIS +echo $(cat path) $(cat parameters) + +# +# description +# +echo .SH DESCRIPTION +echo $(cat long_description) + +# +# availability +# +for section in availability examples "see also" author; do + if [ -f "$section" ]; then + echo .SH $section | tr '[a-z]' '[A-Z]' + cat "$section" + fi +done + +# +# files +# +if [ -f files ]; then + echo .SH FILES + cat files | sed 's/\(.*\)/.IP "\1" /' +fi + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.add.dependency b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.add.dependency new file mode 100644 index 00000000..7bc9cc65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.add.dependency @@ -0,0 +1,51 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create dependency: service a needs or wants service b + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR + +if [ $# -ne 3 ]; then + echo "`basename $0`: service_A [wants|needs] service_B" + echo "" + echo " Service A needs or wants Service B." + echo " Use relative paths, not absolute." + echo " You must specify whether to use wants or needs." + echo "" + exit 23 +fi + +SVC_A=$1 +DEP=$2 +SVC_B=$3 + +# adding 'wishes' for x-mas and requires for 'the mass' and 'tv' +case $DEP in + wishes|wants) DEP=$C_WANTS ;; + needs|requires) DEP=$C_NEEDS ;; + *) echo "Did not I say \"want\" or \"need\"? You _must_ use those terms." +esac + +# FIXME: could someone PLEASE simply that? +SLASHES=$(echo $SVC_A | sed -e 's,/$,,' -e 's,[^/],,g' -e 's,/,../,g' -e 's,^,../../,') +DEST_NAME=$(echo $SVC_B | sed -e 's,/$,,' -e 's,/,-,g') + +SOURCE="${SLASHES}${SVC_B}" +DEP_DIR="${BASEDIR}/${SVC_A}/${DEP}" + +if [ ! -d "$DEP_DIR" ]; then + echo "$DEP_DIR does not exist, creating..." + mkdir "$DEP_DIR" + if [ $? -ne 0 ]; then + echo "Error occured due to creating directory. Exiting." + exit 1 + fi +fi + +DEST="${DEP_DIR}/${DEST_NAME}" + +echo -n "Linking $SOURCE to $DEST ... " +ln -sf "$SOURCE" "$DEST" +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.add.getty b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.add.getty new file mode 100644 index 00000000..987a5bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.add.getty @@ -0,0 +1,75 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys +# Date: 2005-05-24 (Last changed: 2005-08-07) +# + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +LAST_NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | sort -n | tail -n 1) + +[ ! "$LAST_NUMBER" ] && LAST_NUMBER=0 + +NUMBER=$(echo $LAST_NUMBER + 1 | bc) + +[ ! "$NUMBER" ] && NUMBER=1 + +DDIR=$BASEDIR/$NUMBER + +#echo "Creating getty number $NUMBER in $DDIR ..." + +if [ "$USE_THIS_GETTY" ]; then + GETTYS="$USE_THIS_GETTY" +else + GETTYS=`echo /sbin/*getty*` +fi + +for getty in $GETTYS; do + case $getty in + */fgetty|*/mingetty) + mygetty=$getty + params="/dev/tty${NUMBER}" + ;; + */agetty|*/getty) + mygetty=$getty + params="38400 tty${NUMBER} linux" + ;; + */mgetty) + mygetty=$getty + params="38400 tty${NUMBER}" + ;; + *) + echo "Unknown Getty type $getty" + echo "Please report standard parameters to me." + esac + + [ "$mygetty" ] && break +done + +# check input +if [ ! "$mygetty" ]; then + read -p "Getty to use [$mygetty]: " rgetty +fi +if [ ! "$params" ]; then + read -p "Parameters to pass [$params]: " rparams +fi +if [ ! "$params" -o ! "$mygetty" ]; then + echo "Sorry, either getty or parameters are not supplied." + exit 23 +fi + +echo -n "Creating $mygetty ($params) in $DDIR ... " +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DDIR" +ln -s "$mygetty" "$DDIR/$C_ON" + +for param in $params; do + echo $param >> "$DDIR/${C_ON}${C_PARAMS}" +done + +touch "$DDIR/$C_RESPAWN" + +echo "finished." diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.configure.ipc b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.configure.ipc new file mode 100644 index 00000000..65190baa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.configure.ipc @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius, 2006-07-28 +# +# cinit: configure the ipc method to use +# + +HIER=$(dirname $0) +DDIR=$HIER/../src/ipc +DFILE=${DDIR}/current +IPC_METHOD=$(head -n 1 "$HIER/../conf/ipc_method") + +echo "Configure: IPC: Using \"$IPC_METHOD\" as IPC method" + +# always remove link before, as ln seems to be broken +# Doing ln -sf src/ipc/$method current twice, will create the file +# "current" _BELOW_ src/ipc/$method and not overwrite the link +# src/ipc/current + +rm -f "${DFILE}" +ln -sf "${IPC_METHOD}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.configure.mark b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.configure.mark new file mode 100644 index 00000000..62454c7f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.configure.mark @@ -0,0 +1,8 @@ +#!/bin/sh +# Nico Schottelius +# cinit: touch a file to mark everything configured +# 2006-08-27 +# + +echo "Configure: MK: Marking directory as configured" +touch .configured diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.configure.os b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.configure.os new file mode 100644 index 00000000..d5b8e6e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.configure.os @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups symlinks for the os +# + +DDIR=$(dirname $0)/../src/os +DFILE="$DDIR/current" +OSCONFIG=$(dirname $0)/../conf/os + +OS=$(head -n 1 "$OSCONFIG") + +echo "Configure: OS: Binaries are created for $OS ..." + +rm -f "${DFILE}" +ln -sf "${OS}" "${DFILE}" diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.configure.tools b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.configure.tools new file mode 100644 index 00000000..43242a01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.configure.tools @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: setups scripts for compiling and linking +# + +HIER=$(dirname $0) +DDIR=$HIER/../tmpbin/ +CC=$(head -n 1 "$HIER/../conf/cc") +CFLAGS=$(head -n 1 "$HIER/../conf/cflags") +LD=$(head -n 1 "$HIER/../conf/ld") +LDFLAGS=$(head -n 1 "$HIER/../conf/ldflags") +STRIP=$(head -n 1 "$HIER/../conf/strip") + +echo "Configure: CC: Creating cc, ld and strip ..." + +mkdir -p "$DDIR" +cd "$DDIR" + +echo "$CC $CFLAGS \"\$@\"" > cc +echo "$LD $LDFLAGS \"\$@\"" > ld +echo "$STRIP \"\$@\"" > strip + +# set correct permissions +chmod 0700 * diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.create.empty.service b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.create.empty.service new file mode 100644 index 00000000..365c4bc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.create.empty.service @@ -0,0 +1,41 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create templates +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " I do create templates for your services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + INSTDIR=${BASEDIR}/${svc} + if [ -e "$INSTDIR" ]; then + echo "$svc already exists, skipping." + continue + fi + echo -n "Creating $svc ..." + # install creates needed parent directories + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}" + echo "The services this services really needs (it will not start if one failed to start)." > "${INSTDIR}/${C_NEEDS}/README" + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}" + echo "The services this services wants (it will start if one or more fail)." > "${INSTDIR}/${C_WANTS}/README" + + echo '#!/bin/sh' > "${INSTDIR}/${C_ON}" + echo "echo This should be a link to an executable or a script" >> "${INSTDIR}/${C_ON}" + chmod 0700 "${INSTDIR}/${C_ON}" + echo "One paramater on each line." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Delete me, if there are no paramaters." > "${INSTDIR}/${C_ON}${C_PARAMS}" + echo "Environtment: varx=valuex, one variable on each line." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "Delete me, if you do not want to set any variables." > "${INSTDIR}/${C_ON}${C_ENV}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.binary b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.binary new file mode 100644 index 00000000..a368ac23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.binary @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: - +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" sbin/cinit $DESTDIR/$PREFIX/sbin/cinit +"$INSTALL_PROG" sbin/cservice $DESTDIR/$PREFIX/sbin/cservice +"$INSTALL_PROG" sbin/ccontrol $DESTDIR/$PREFIX/sbin/ccontrol +"$INSTALL_PROG" bin/cinit.reboot $DESTDIR/$PREFIX/sbin/cinit.reboot +"$INSTALL_PROG" bin/cinit.shutdown $DESTDIR/$PREFIX/sbin/cinit.shutdown +"$INSTALL_PROG" bin/cinit.wait.for.daemon \ + $DESTDIR/$PREFIX/sbin/cinit.wait.for.daemon + +# install as /sbin/init, if /sbin/init does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/init ]; then + ln -s $PREFIX/sbin/cinit $DESTDIR/$PREFIX/sbin/init +fi + +# install as /sbin/shutdown, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/shutdown ]; then + ln -s $PREFIX/sbin/cinit.shutdown $DESTDIR/$PREFIX/sbin/shutdown +fi + +# install as /sbin/reboot, if it does not exist +if [ ! -e $DESTDIR/$PREFIX/sbin/reboot ]; then + ln -s $PREFIX/sbin/cinit.reboot $DESTDIR/$PREFIX/sbin/reboot +fi diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.config-dir b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.config-dir new file mode 100644 index 00000000..c9adb70f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.config-dir @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.dir b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.dir new file mode 100644 index 00000000..5e16f690 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.dir @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install needed directories +# Date: - (Last Modified: 2005-08-06) +# + +. $(dirname $0)/cinit.read-conf + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$PREFIX/sbin" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_TMP" +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "$DESTDIR/$CINIT_DIR/$C_INIT" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.fsck b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.fsck new file mode 100644 index 00000000..4508860a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.fsck @@ -0,0 +1,36 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 3 ]; then + echo "$(basename $0): name device filesystem-type" + exit 1 +fi + +NAME=$1 +DEVICE=$2 +FS_TYPE=$3 + +FSCK=/sbin/fsck.$FS_TYPE + +if [ ! -f "$FSCK" ]; then + echo "Missing $FSCK, abort." + exit 1 +fi + +if [ ! -e "$DEVICE" ]; then + echo "Missing $DEVICE abort." + exit 1 +fi + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME" +ln -sf "$FSCK" "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON" +echo "$DEVICE" > "${DESTDIR}/${CINIT_DIR}/fsck/$NAME/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.miniconf b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.miniconf new file mode 100644 index 00000000..45dcc632 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.miniconf @@ -0,0 +1,103 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic setup +# Date: 2005-08-07 +# + + +. $(dirname $0)/cinit.read-conf + +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" +echo "" +echo "This will install a minimal cinit configuration." +echo "This configuration _SHOULD_ be able to run on _MOST_ systems." +echo "Still, it's highly EXPERIEMENTAL, use with CAUTION." +echo "" +echo "Please make sure, that" +echo " - you are using a journaling filesystem (fsck is not used)" +echo " - you have agetty, fgetty or mingetty installed" +echo " - you are runnig Linux 2.6 (sysfs is used)" +echo " - you have udev or static device nodes (you need /dev/tty*)" +echo " - getties will run on tty2-tty7, tty1 is used or logging" +echo "" +echo "****************************************************************************" +echo "******************************* WARNING ************************************" +echo "****************************************************************************" + +notosoftwarepatents="Please keep an eye on software patents, they are evil." +read -p "Do you really want to continue? [y/N] " notosoftwarepatents + +if [ "$notosoftwarepatents" = "y" -o "$notosoftwarepatents" = "Y" ]; then + echo "Let us try it ..." +else + echo 'Bye bye!' + exit 0 +fi + +set -e + +# Create basic layout +$(dirname $0)/cinit.install.standard-dirs + +# Install services: +# - mount root r/w +# - mount /proc +# - mount /sys +# - install getties on tty2-tty7 +# - add cleanup for /etc/mtab +# - add loopback device +# - init service + echo + +################################### mount ##################################### +# mount root read/write +$(dirname $0)/cinit.install.service.mount-root + +# - mount /proc +$(dirname $0)/cinit.install.service.mount-proc + +# - mount /sys +$(dirname $0)/cinit.install.service.mount-sys + +# mount needs everything below it +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/root" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/proc" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" +ln -sf "${DESTDIR}/${CINIT_DIR}/mount/sys" "${DESTDIR}/${CINIT_DIR}/mount/$C_NEEDS" + +################################### getty ##################################### +# mount root read/write +# install getties +begin_getty=2 +end_getty=7 +i=$begin_getty + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" +while [ "$i" -le "$end_getty" ]; do + $(dirname $0)/cinit.add.getty + ln -sf "${DESTDIR}/${CINIT_DIR}/getty/$i" "${DESTDIR}/${CINIT_DIR}/getty/$C_WANTS" + i=$(($i+1)) +done + +################################### mtab ##################################### +# - add cleanup for /etc/mtab +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" +$(dirname $0)/cinit.install.service.cleanup-mtab +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" "${DESTDIR}/${CINIT_DIR}/local-tuning/$C_NEEDS" + +################################### lo ##################################### +# - add loopback device +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" +$(dirname $0)/cinit.install.service.network-lo +ln -sf "${DESTDIR}/${CINIT_DIR}/network/lo" "${DESTDIR}/${CINIT_DIR}/network/$C_NEEDS" + +# - init service + echo +# init depends on mount, getty -> everything from base-layout +$(dirname $0)/cinit.install.service.init +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" + +ln -sf "${DESTDIR}/${CINIT_DIR}/local-services/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/getty/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/local-tuning/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" +ln -sf "${DESTDIR}/${CINIT_DIR}/network/" "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_NEEDS}" diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.cleanup-mtab b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.cleanup-mtab new file mode 100644 index 00000000..30a8dd48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.cleanup-mtab @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: cleanup mtab +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab" +echo '#!/bin/sh' > "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'rm -f /etc/mtab' >>"${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +echo 'ln -s /proc/mounts /etc/mtab' \ + >> "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" +chmod 0700 "${DESTDIR}/${CINIT_DIR}/local-tuning/cleanup-mtab/$C_ON" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.hostname.generic b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.hostname.generic new file mode 100644 index 00000000..2d72f50e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.hostname.generic @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service, which sets the hostname +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): hostname" + exit 1 +fi + +HOSTNAME=$1 +HOSTNAME_BIN=${HOSTNAME_BIN:-/bin/hostname} + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/network/hostname" +ln -sf "$HOSTNAME_BIN" "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON" +echo "$HOSTNAME" > "${DESTDIR}/${CINIT_DIR}/network/hostname/$C_ON$C_PARAMS" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.init b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.init new file mode 100644 index 00000000..c3a10931 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.init @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: init +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +ln -sf /bin/echo "${DESTDIR}/${CINIT_DIR}/${C_INIT}/$C_ON" +echo '*** cinit initial service successfully started ***' \ + > "${DESTDIR}/${CINIT_DIR}/${C_INIT}/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.keymap.c_keymap b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.keymap.c_keymap new file mode 100644 index 00000000..235a329e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.keymap.c_keymap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install keymap from environment setting +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +if [ -z "$C_KEYMAP" ]; then + echo "Set C_KEPMAP to the wanted keymap." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" ]; then + echo "Service keymap already exists." + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find loadkeys) + +if [ $? -ne 0 ]; then + echo "Did not find binary loadkeys." + exit 1 +fi + +echo -n "Installing keymap to ${DESTDIR}/${CINIT_DIR}/local-tuning/keymap ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON" + +echo "$C_KEYMAP" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/keymap/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.mount-proc b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.mount-proc new file mode 100644 index 00000000..024847a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.mount-proc @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /proc +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/proc" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/proc/$C_ON" +echo proc > "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" +echo /proc >> "${DESTDIR}/${CINIT_DIR}/mount/proc/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.mount-root b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.mount-root new file mode 100644 index 00000000..a1bd56ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.mount-root @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount root r/w +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# mount root read/write +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/root" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/root/$C_ON" +echo -n > "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo -o >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo remount,rw >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" +echo / >> "${DESTDIR}/${CINIT_DIR}/mount/root/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.mount-sys b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.mount-sys new file mode 100644 index 00000000..8c8191aa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.mount-sys @@ -0,0 +1,19 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: mount /sys +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /sys +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/mount/sys" +ln -sf /bin/mount "${DESTDIR}/${CINIT_DIR}/mount/sys/$C_ON" +echo sys > "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo -t >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo sysfs >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" +echo /sys >> "${DESTDIR}/${CINIT_DIR}/mount/sys/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.network-lo b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.network-lo new file mode 100644 index 00000000..45bff6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.network-lo @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install service: loopback device +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +# - mount /proc +"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${DESTDIR}/${CINIT_DIR}/network/lo" +ln -sf /sbin/ifconfig "${DESTDIR}/${CINIT_DIR}/network/lo/$C_ON" +echo lo > "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo 127.0.0.1/8 >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" +echo up >> "${DESTDIR}/${CINIT_DIR}/network/lo/${C_ON}${C_PARAMS}" + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.ntpdate.debian b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.ntpdate.debian new file mode 100644 index 00000000..2af2ee4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.ntpdate.debian @@ -0,0 +1,47 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install ntpdate +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +. /etc/default/ntpdate + +if [ -z "$NTPSERVERS" ]; then + echo "No ntp servers found, aborting" + exit 1 +fi + +BINARY_PATH=$($(dirname $0)/cinit.path-find ntpdate) + +if [ $? -ne 0 ]; then + echo "Did not find binary ntpdate." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" ]; then + echo "Service ntpdate already exists." + exit 1 +fi + +echo -n "Installing ntpdate to ${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON" + +for server in $NTPSERVERS; do + echo "$server" >> "${DESTDIR}/${CINIT_DIR}/local-tuning/ntpdate/$C_ON$C_PARAMS" +done + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.udev b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.udev new file mode 100644 index 00000000..d91f01cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.service.udev @@ -0,0 +1,64 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install udev +# Date: 2005-10-15 +# Comment: DO NOT RSYNC TO THE WRONG SIDE! +# + +. $(dirname $0)/cinit.read-conf + +set -e + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BIN_UDEVSEND=$($(dirname $0)/cinit.path-find udevsend) +BIN_UDEVSTART=$($(dirname $0)/cinit.path-find udevstart) +BIN_SYSCTL=$($(dirname $0)/cinit.path-find sysctl) +BIN_MOUNT=$($(dirname $0)/cinit.path-find mount) +SERVICE="local-tuning/udev" + +if [ -z "$BIN_UDEVSEND" -o -z "$BIN_UDEVSTART" -o -z "$BIN_SYSCTL" -o -z "$BIN_MOUNT" ]; then + echo "Did not find a binary." + exit 1 +fi + +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo "Installing ${SERVICE} to ${DESTDIR}/${CINIT_DIR}/ ..." + +# 0. general udev +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}" +# 1. udevmount +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/mount/udev" +ln -sf "$BIN_MOUNT" "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON" +echo "udev" > "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "-t" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "tmpfs" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" +echo "/dev" >> "${DESTDIR}${CINIT_DIR}/mount/udev/$C_ON$C_PARAMS" + +# 2. udevstart +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart" +ln -sf "$BIN_UDEVSTART" "${DESTDIR}${CINIT_DIR}/${SERVICE}/udevstart/$C_ON" + +# dependencies +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/sys +$(dirname $0)/cinit.add.dependency ${SERVICE}/udevstart needs mount/udev + +# 3. udev to hotplug +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug" +ln -sf "$BIN_SYSCTL" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/hotplug/$C_ON" +echo "$BIN_UDEVSEND" > "${DESTDIR}${CINIT_DIR}/${SERVICE}/hotplug/$C_ON$C_PARAMS" + +$(dirname $0)/cinit.add.dependency ${SERVICE}/hotplug needs mount/proc + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.standard.init.deps b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.standard.init.deps new file mode 100644 index 00000000..dcc5cd07 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.standard.init.deps @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: add standard sub-configuration directories to init wants +# Date: 2005-10-11 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.standard.mounts b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.standard.mounts new file mode 100644 index 00000000..bb1fc0c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.standard.mounts @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create normal mounts +# Date: 2005-10-16 +# + +. $(dirname $0)/cinit.read-conf + +$(dirname $0)/cinit.add.dependency init wants getty +$(dirname $0)/cinit.add.dependency init wants local-services +$(dirname $0)/cinit.add.dependency init wants local-tuning +$(dirname $0)/cinit.add.dependency init wants mount +$(dirname $0)/cinit.add.dependency init wants network + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.swap b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.swap new file mode 100644 index 00000000..84e6c928 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.swap @@ -0,0 +1,43 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install swap +# Date: 2005-10-15 +# + +. $(dirname $0)/cinit.read-conf + +SERVICE=mount/swap + +if [ $# -ne 0 ]; then + echo "$(basename $0) (no args)" + exit 1 +fi + +BINARY=swapon +BINARY_PATH=$($(dirname $0)/cinit.path-find $BINARY) +if [ $? -ne 0 ]; then + echo "Did not find binary $BINARY." + exit 1 +fi + +HAS_SWAP=$(awk '$3 ~ /swap/ { print $3 }' /etc/fstab) +if [ -z "$HAS_SWAP" ]; then + echo "Seems you have no swap, service not installing" + exit 1 +fi +if [ -d "${DESTDIR}/${CINIT_DIR}/${SERVICE}" ]; then + echo "Service ${SERVICE} already exists." + exit 1 +fi + +echo -n "Installing ${SERVICE} to ${DESTDIR}${CINIT_DIR}/${SERVICE} ..." + +"$INSTALL_PROG" "$INSTALL_DIRECTORY" \ + "${DESTDIR}/${CINIT_DIR}/${SERVICE}" +ln -sf "$BINARY_PATH" "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON" + +echo "-a" >> "${DESTDIR}/${CINIT_DIR}/${SERVICE}/$C_ON$C_PARAMS" + +echo "finished." + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.test b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.test new file mode 100644 index 00000000..154c9375 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.install.test @@ -0,0 +1,20 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install basic test config +# + +. $(dirname $0)/cinit.read-conf + +TARDIR=$(dirname $0)/../samples + +case `uname -s` in + Linux) + [ -e /etc/gentoo-release ] && TAR=${TARDIR}/gentoo.tar + [ -e /etc/debian_version ] && TAR=${TARDIR}/debian.tar + [ -e /etc/SuSE-release ] && TAR=${TARDIR}/suse.tar + [ -e /etc/mandrake-release ] && TAR=${TARDIR}/mandrake.tar + [ -e /etc/fedora-release ] && TAR=${TARDIR}/fedora.tar + ;; +esac + +tar xf ${TAR} -C "$DESTDIR/$PREFIX/$CINIT_DIR" diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.merge.sysvinit-debian-sid b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.merge.sysvinit-debian-sid new file mode 100644 index 00000000..3ef0ce03 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.merge.sysvinit-debian-sid @@ -0,0 +1,137 @@ +#!/bin/sh +# Nico Schottelius +# Date: Sun Oct 16 16:57:03 CEST 2005 +# cLinux/cinit +# Automagically convert Debian-Sysv-Iinit +# THIS IS NOT CLEAN. +# THIS IS NOT EVEN INTENTED TO BE CLEAN. +# This is just a small hack, because my girlfriend wants her notebook back. + +echo "***> $(basename $0): converting Debian-Sys-V-Init" + +# read standard values, may be overwritten from outside +. $(dirname $0)/cinit.read-conf + +echo "***> Finding standard config ..." +# variables, which can be set from the outside +ROOT_DEV=${ROOT_DEV:-$(awk '$2 ~ /^\/$/ { print $1 }' /etc/fstab)} +ROOT_FSCK=${ROOT_FSCK:-$(awk '$2 ~ /^\/$/ { print $6 }' /etc/fstab)} +ROOT_FS=${ROOT_FS:-$(awk '$2 ~ /^\/$/ { print $3 }' /etc/fstab)} +RUNLEVEL=${RUNLEVEL:-$(runlevel | awk '{ print $2 }')} + +echo "***> Detecting keymap (this may take some time)" + +if [ -z "$C_KEYMAP" ]; then + echo "Please set the variable C_KEYMAP to your keymap." + echo "It is impossible to detect reliable your keymap in Debian." + exit 1 +fi + + +echo "***> Configuration" +echo "Hostname (\$HOSTNAME): $HOSTNAME" +echo "Keymap (\$C_KEYMAP): $C_KEYMAP" +echo "Root device (\$ROOT_DEV): $ROOT_DEV" +echo "Root fsck (\$ROOT_FSCK): $ROOT_FSCK" +echo "Root FS (\$ROOT_FS): $ROOT_FS" +echo "Runlevel (\$RUNLEVEL): $RUNLEVEL" +echo "Destdir: (\$DESTDIR): $DESTDIR" +echo "Config-Dir: (\$CINIT_DIR): $CINIT_DIR" +read -p "Is this correct (Y/n) " correct + +if [ "$correct" != "y" -a "$correct" != "Y" ]; then + echo "***> Abort." + exit 1 +fi + +if [ -d "${DESTDIR}${CINIT_DIR}" ]; then + echo "ERROR: Configuration already exists at ${DESTDIR}${CINIT_DIR}." + exit 1 +fi + +echo "***> Installing standard structure and dependencies" +set -e +$(dirname $0)/cinit.install.config-dir +$(dirname $0)/cinit.install.standard.dirs +$(dirname $0)/cinit.install.standard.init.deps + +echo "***> Adding mount / r/w" +$(dirname $0)/cinit.install.service.mount-root + +if [ "$ROOT_FSCK" = "1" ]; then + echo "***> Adding fsck for $ROOT_DEV ..." + $(dirname $0)/cinit.install.fsck root "$ROOT_DEV" "$ROOT_FS" + echo "***> Adding dependency" + $(dirname $0)/cinit.add.dependency mount/root needs fsck/root +else + echo "***> Skipping fsck for $ROOT_DEV ..." +fi + +echo "***> Setting up standard mounts ..." +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up hostname: $HOSTNAME" +$(dirname $0)/cinit.install.service.hostname.generic "$HOSTNAME" + +echo "***> Setting up keymap" +$(dirname $0)/cinit.install.service.keymap.c_keymap + +echo "***> Creating getties (tty1-8)" +for i in `seq 1 8`; do + $(dirname $0)/cinit.add.getty + + # each getty needs: + # - root r/w + $(dirname $0)/cinit.add.dependency getty/$i needs mount/root + # - hostname + $(dirname $0)/cinit.add.dependency getty/$i needs network/hostname +done + +echo "***> Enabling getties (tty2-8)" +for i in `seq 2 8`; do + # add getties to getty/ + $(dirname $0)/cinit.add.dependency getty wants getty/$i +done + +# +# Convert services: check /etc/rcS.d and /etc/rcX.d +# +echo "***> Converting services ..." +for script in $(cd /etc/rcS.d/; ls S*; cd /etc/rc${RUNLEVEL}.d/; ls S*); do + echo -n "$script: " + case $script in + # SCRIPTS READY + *ntpdate) + $(dirname $0)/cinit.install.service.ntpdate.debian + $(dirname $0)/cinit.add.dependency local-tuning/ntpdate needs network + ;; + *udev*) + $(dirname $0)/cinit.install.service.udev + + # SCRIPTS NEVER READY + *glibc.sh|*module-init-tools|*modutils|*procps.sh|*hotplug-net|*bootmisc.sh|*nviboot|*screen-cleanup|*x11-common|*sudo|*makedev|*rmnologin) + echo "Ignoring (useless)." + ;; + + # SCRIPTS NOT YET READY + *mountvirtfs|*checkroot.sh|*ifupdown-clean|*checkfs.sh|*mountall.sh|*ifupdown|*hostname*|*mountnfs.sh|*alsa|*rsync|*ssh|*fam|*cron|*gdm) + echo "converting planned later." + ;; + + # SCRIPTS LATER TO DO + *bootlogd|*keymap.sh|*hwclock*|*discover|*pppd-dns|*dns-clean|*networking|*portmap|*console-screen.sh|*urandom|*klogd|*apmd|*dbus-1|*exim4|*pcmcia|*nfs-common|*stop-bootlogd) + echo "unsupported currently (FIXME PLEASE)." + ;; + *sysklogd|*ppp|*inetd|*lpd|*aumix|*atd) + echo "unsupported (choose a better alternative)." + ;; + *initrd-tools.sh|*libdevmapper*|*hotplug) + echo "Ignoring (general or bloated script)." + ;; + *) + echo "Ignoring (unknown)" + ;; + esac +done + +echo "***> Finished." diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.path-find b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.path-find new file mode 100644 index 00000000..0d0f362b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.path-find @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: find binary in path +# Date: 2005-10-15 +# + +set -e + +if [ $# -ne 1 ]; then + echo "$(basename $0): searched binary" + exit 1 +fi + +binary=$1 + +# this is NOT really clean, paths can also contain spaces +for pfad in $(echo $PATH | sed 's/:/ /g'); do + fullname=$pfad/$binary + if [ -f "$fullname" ]; then + echo "$fullname" + exit 0 + fi +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.reboot b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.reboot new file mode 100644 index 00000000..f7967d3e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.reboot @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# reboot system +# 2005-06-09 + + +usage() +{ + echo "`basename $0`" + echo " Reboot the system:" + exit 1 +} + +if [ $# -ne 0 ]; then + usage +fi + +kill -HUP 1 diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.remove.getty b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.remove.getty new file mode 100644 index 00000000..4950eeed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.remove.getty @@ -0,0 +1,25 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create gettys + +# init variables +. $(dirname $0)/cinit.read-conf + +BASEDIR=$DESTDIR/$CINIT_DIR/$GETTY_DIR +NUMBER=$(cd $BASEDIR && ls | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }' | tail -n 1) + +if [ ! "$NUMBER" ]; then + echo "There is no getty to remove." + exit 1 +fi + +DDIR=$BASEDIR/$NUMBER + +echo "Removing getty number $NUMBER located in $DDIR ..." +read -p "Are you sure [y/N]? " yes + +if [ "$yes" = "y" ]; then + rm -r "$DDIR" +else + echo "Aborted." +fi diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.respawn.off b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.respawn.off new file mode 100644 index 00000000..4b102477 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.respawn.off @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning off +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " The respawning mark will be removed from services" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Removing respawning mark from $svc ..." + rm -f "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.respawn.on b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.respawn.on new file mode 100644 index 00000000..35ac7932 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.respawn.on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius +# cinit: switch respawning on +# 2005-05-24 + +set -e + +# init variables +. $(dirname $0)/cinit.read-conf + +if [ $# -lt 1 ]; then + echo "`basename $0`: service-name(s)" + echo " Services will be marked respawning" + exit 1 +fi + +BASEDIR=$DESTDIR/$CINIT_DIR + +for svc in $@; do + echo -n "Marking $svc respawning ..." + touch "${BASEDIR}/${svc}/${C_RESPAWN}" + echo "finished." +done + diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.shutdown b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.shutdown new file mode 100644 index 00000000..702c8a17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.shutdown @@ -0,0 +1,30 @@ +#!/bin/sh +# Nico Schottelius +# shutdown system +# TODO: use ccontrol! +# 2005-05-24 (Last changed: 2005-06-18) + + +usage() +{ + echo "`basename $0` -[ohr]" + echo " Shutdown the system:" + echo " -p|--power-off: Power off" + echo " -h|--halt: Halt" + echo " -r|--reboot: Reboot" + echo " -s|--rescue: Rescue mode" + echo " " + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +case $1 in + -r|--reboot) kill -HUP 1 ;; + -p|--power-off) kill -TERM 1 ;; + -h|--halt) kill -USR1 1 ;; + -s|--rescue) kill -USR2 1 ;; + *) usage ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.uml.test b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.uml.test new file mode 100644 index 00000000..f6ea7fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.uml.test @@ -0,0 +1,40 @@ +#!/bin/sh +# Nico Schottelius +# build, install and test cinit in an uml image + +set -e +set -x + +###################### Params ######################################## +# where the cinit source can be found +CINIT=/root/cinit-0.1 + +# the image you want to put cinit on (I am using gentoo stage3) +IMG=stage3-p4.img + +# where to mount the image +MNT=/mnt/uml + +# what fsck to use +FSCK=fsck.jfs + +# the uml-linux-kernel +LINUX=./linux-2.6.11.11 + +# parameters to kernel - should not needed to be changed +LINUX_PARAM="ubd0=$IMG umid=cinit$$ init=/sbin/cinit" +###################################################################### +HIER=$(pwd) + + +"$FSCK" "$IMG" +mount "$IMG" "$MNT" -o loop +echo "$MNT" > "$CINIT/conf/destdir" +make -C "$CINIT" clean all install +umount "$MNT" + +"$FSCK" "$IMG" +"$LINUX" $LINUX_PARAM + +# restore console, if broken +#reset diff --git a/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.wait.for.daemon b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.wait.for.daemon new file mode 100644 index 00000000..7f027455 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/bin/cinit.wait.for.daemon @@ -0,0 +1,31 @@ +#!/bin/sh +# Nico Schottelius +# wait for daemon to terminate +# the pidfile is our first argument, +# the dameon the second and all others are for the daemon +# 2005-06-12 (Last Changed: 2005-06-17) + +# how long to sleep before rechecking +SLEEP=5 + +if [ $# -lt 2 ]; then + echo "`basename $0` [daemon arguments]" + exit 1 +fi + +PIDFILE=$1; shift +DAEMON=$1; shift + +# remove old pidfile +[ -e "$PIDFILE" ] && rm -f $PIDFILE + +$DAEMON $@ + +PID=$(cat "$PIDFILE") + +ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") + +while [ "$ISALIVE" ]; do + sleep ${SLEEP} + ISALIVE=$(ps ax | awk '{ print $1 }' | grep "^$PID\$") +done diff --git a/software/cinit/browse_source/cinit-0.3pre9/client/README b/software/cinit/browse_source/cinit-0.3pre9/client/README new file mode 100644 index 00000000..c6d39c85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/client/README @@ -0,0 +1,3 @@ +client/ + -- OBSOLETED -- + These sources were used by the children which were spawned by cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre9/client/begin_msg.c b/software/cinit/browse_source/cinit-0.3pre9/client/begin_msg.c new file mode 100644 index 00000000..8c9ce5ea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/client/begin_msg.c @@ -0,0 +1,24 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include "cinit.h" + +int begin_msg(char cmd) +{ + sock = connect_sock(sock); + if( sock == -1 ) { + return 0; + } + + if(write(sock,&cmd,sizeof(cmd)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/client/connect_sock.c b/software/cinit/browse_source/cinit-0.3pre9/client/connect_sock.c new file mode 100644 index 00000000..2c2d45de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/client/connect_sock.c @@ -0,0 +1,38 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include /* memset, strcpy */ + +#include "cinit.h" + +/* open socket connection to cinit-serv and close original socket */ +int connect_sock(int socke) +{ + int nsock; + struct sockaddr_un addr; + + close(socke); + + nsock = socket(PF_UNIX,SOCK_STREAM,0); + if( nsock == -1 ) { + perror(MSG_SOCKET); + return -1; + } + socke = sizeof(addr); + memset(&addr,0,socke); + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(connect(nsock,(struct sockaddr *)&addr,socke) == -1) { + return -1; + } + + return nsock; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/client/exec_svc.c b/software/cinit/browse_source/cinit-0.3pre9/client/exec_svc.c new file mode 100644 index 00000000..f217f9e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/client/exec_svc.c @@ -0,0 +1,264 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * exec_svc: exec service abspath C_ON or C_OFF + */ + +inline pid_t exec_svc(char *abspath, int action) +{ + int tmp; + char *p, pathtmp[PATH_MAX]; + char *sbuf = NULL, **nargv = NULL, **nenv = NULL; + int fd, argc; + struct stat buf; + + cpid = fork(); + if( cpid == -1 ) { + perror(MSG_ERR_FORK); + return 0; + } + + /***** PARENT ******/ + if(cpid > 0) { + waitpid(cpid,&tmp,0); + if( WIFEXITED(tmp) ) { + if( ! WEXITSTATUS(tmp) ) { + return cpid; + } + } + SERVICE_LOG(abspath,LOG_SVC_FAIL); + return 0; + } + + /*********** CHILD EXECUTION ***********/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + + /* readlink retrieves real name, if it is a symlink */ + if ( ( tmp = readlink(pathtmp,pathtmp,PATH_MAX) ) == -1) { + + /* nothing there? fine, exit */ + if(errno == ENOENT) { + _exit(0); + } else if (errno != EINVAL) { + perror(MSG_READLINK); + _exit(1); + } + + /* restore original name, file is not a link */ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ON); + } else { + strcat(pathtmp,C_OFF); + } + tmp = strlen(pathtmp); + } else { + /* add '\0', readlink forgets it */ + pathtmp[tmp] = '\0'; + } + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /********** build argv0 ********/ + nargv = (char **) malloc( sizeof(char *) ); + if(nargv == NULL) _exit(1); + + *nargv = (char *) malloc( tmp ); + if(*nargv == NULL) _exit(1); + + strcpy(*nargv,pathtmp); + + /********************** read params *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONARG); + } else { + strcat(pathtmp,C_OFFARG); + } + + /* open params file */ + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + argc = 0; + + /* fill sbuf with content */ + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + + if(argc) { + sbuf[argc] = '\0'; /* terminate string */ + } + } else { + sbuf = NULL; + } + + /************** build string **************/ + /* The idea is to reuse the allocated memory. We'll simply + * replace the \n with \0 and set a char* to it. + * We'll lose the last byte (the initial \0), but we + * don't care, as we die some seconds later with execv() + * oh, we'll only lose it, if the file is terminated by \n */ + + argc = 1; /* argv0 */ + while( sbuf != NULL) { + p = strchr(sbuf,'\n'); + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); + + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + + /* set to the beginning */ + nargv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + /* if next byte is 0, the end of string is found */ + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close argv list **************/ + nargv = realloc(nargv, sizeof(char *) * (argc + 1)); /* 1: NULL-pointer */ + if(nargv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nargv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + if(action == CMD_START_SVC) { + strcat(pathtmp,C_ONENV); + } else { + strcat(pathtmp,C_OFFENV); + } + + argc = 0; + sbuf = NULL; + if( !stat(pathtmp,&buf) ) { + fd = open(pathtmp,O_RDONLY); + + /* file exists, failing to open it is an error */ + if(fd == -1) { + perror(MSG_ERR_OPEN); + _exit(1); + } + + while ( (tmp = read(fd,pathtmp,PATH_MAX) ) != 0 ) { + if(tmp == -1) { + perror(MSG_ERR_READ); + _exit(1); + } + + sbuf = realloc(sbuf,argc + tmp + 1); + strncpy(&sbuf[argc],pathtmp,tmp); + argc += tmp; + } + close(fd); + if(argc) + sbuf[argc] = '\0'; /* terminate string */ + } + + /************** build environment string **************/ + argc = 0; + while( sbuf != NULL ) { + p = strchr(sbuf,'\n'); + + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + } else { + /* set to the end of sbuf, not to the \0, but one before */ + p = sbuf + (strlen(sbuf)-1); + } + + if( *(p+1) == '\0') { + sbuf = NULL; + } else { + sbuf = p+1; + } + ++argc; + } + + /************ close env list **************/ + nenv = realloc(nenv, sizeof(char *) * (argc + 1)); + if(nenv == NULL) { + LOG(MSG_ERR_ALLOC); + _exit(1); + } + nenv[argc] = NULL; + + /****************** EXECUTE ********************/ + + execve(nargv[0],nargv,nenv); + + /* we should never reach this block */ + P_EXEC_FAILED(nargv[0]); + perror(MSG_ERR_EXECVE); + /* FIXME: remove debug, remove double printing without loosing info */ + sleep(3); /* debug */ + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/client/msg_change_status.c b/software/cinit/browse_source/cinit-0.3pre9/client/msg_change_status.c new file mode 100644 index 00000000..836a0fb4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/client/msg_change_status.c @@ -0,0 +1,29 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want change the status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* FIXME: change return code validation */ + +int msg_change_status(char *svc, char status, pid_t pid) +{ + if(!begin_msg(CMD_CHG_STATUS)) { + return RT_ERR_COMM; + } + if(!do_change_status(svc,&status,&pid,sock,ACT_CLIENT)) { + return 0; + } + if(!do_result(sock,NULL)) { + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/client/msg_svc_on_off.c b/software/cinit/browse_source/cinit-0.3pre9/client/msg_svc_on_off.c new file mode 100644 index 00000000..02948f2f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/client/msg_svc_on_off.c @@ -0,0 +1,23 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * tell cinit that I want to start a service + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + + +/* ********************************************************************** + * action: 1=on, 0=off + */ +int msg_svc_on_off(char *svc, char action) +{ + if(!begin_msg(action)) return RT_ERR_COMM; + if(!do_svc_name(sock,svc,ACT_CLIENT)) return RT_ERR_COMM; + return (int) do_result(sock,NULL); +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre9/client/respawn_svc.c b/software/cinit/browse_source/cinit-0.3pre9/client/respawn_svc.c new file mode 100644 index 00000000..5c350045 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/client/respawn_svc.c @@ -0,0 +1,99 @@ +/* + * (c) 2005,2006 Nico Schottelius (nico-linux at schottelius.org) + * respawn_svc + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/* run a service, gets (relative or absolute) path */ +pid_t respawn_svc(char *abspath) +{ + pid_t pid; + int tmp; + int pipefd[2]; + struct sigaction sa; + char delay[PATH_MAX+1]; + + D_PRINTF(abspath); + + if(pipe(pipefd) == -1) { + perror(MSG_ERR_PIPE); + return 0; + } + + pid = fork(); + if(pid == -1) { + perror(MSG_ERR_FORK); + return 0; + } + + /******************** PARENT ********************/ + if(pid > 0) { + /* if we read anything, our child succeded */ + if( read(pipefd[0],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + return pid; /* return watchers pid */ + } + + /****************** CHILD: Service watcher ********************/ + sa.sa_handler = sig_terminate; + sigaction(SIGTERM,&sa,NULL); /* term = kill respawing process */ + /* sigterm handler should kill first our watching pid, reset the + pid to 0 and then we'll kill ourselves */ + + tmp = 1; + if( write(pipefd[1],&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + _exit(1); + } + + /* try to read delay into sock */ + strcpy(delay,abspath); + strcat(delay,SLASH); + strcat(delay,C_DELAY); + + /* reuse sock to specify delay */ + sock = -1; + tmp = open(delay,O_RDONLY); + if(tmp != -1) { + pipefd[0] = read(tmp,&delay[0],PATH_MAX); + if(pipefd[0] > 0 && pipefd[0] <= PATH_MAX) { + delay[pipefd[0]] = 0; + sock = atoi(delay); + } + close(tmp); + } + + do { + /* exec_svc will set cpid accordingly */ + if( ! exec_svc(abspath, CMD_START_SVC) ) { + if(cpid != 0) { + D_PRINTF("sloefen"); + sleep(SLEEP_SVC); + D_PRINTF("Zuende geschlafen"); + } + } + } while(cpid); /* cpid is reset by sig_terminate() */ + + /* FIXME: put most code of sig_terminate here, look for no_kill */ + + /* start off task */ + exec_svc(abspath,CMD_STOP_SVC); + + D_PRINTF("jetzt weg"); + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/client/run_run_svcs.c b/software/cinit/browse_source/cinit-0.3pre9/client/run_run_svcs.c new file mode 100644 index 00000000..6486c76f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/client/run_run_svcs.c @@ -0,0 +1,86 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * run services parallel + */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + + +/*********************************************************************** + * parallel run forked() run_svc() + */ + +int run_run_svcs(char *abspath) +{ + DIR *d_tmp = NULL; + struct dirent *tdirent; + char pathbuf[PATH_MAX+1]; + pid_t pids[MAX_DEPS]; + int status, i, ret = 1; + + D_PRINTF(abspath); + + d_tmp = opendir(abspath); + + /* if there is no such dir, we are finished */ + if(d_tmp == NULL) { + return 1; + } + + i = 0; + while( (tdirent = readdir(d_tmp) ) != NULL) { + /* ignore . and .. and everything with a . at the beginning */ + if ( *(tdirent->d_name) == '.') continue; + + if(i < MAX_DEPS) { + pids[i] = fork(); + } else { + LOG(MSG_ERR_DEPS); + break; + } + + if(pids[i] == -1) { /* err */ + perror(MSG_ERR_FORK); + return 0; + } + + if(pids[i] == 0) { /* child */ + strcpy(pathbuf,abspath); + strcat(pathbuf,SLASH); + strcat(pathbuf,tdirent->d_name); + if ( run_svc(pathbuf) ) + _exit(0); + else + _exit(1); + } else { /* parent */ + ++i; + } + } + + closedir(d_tmp); + + /* wait for pids */ + --i; /* the index is one too much since last i++ */ + while(i >= 0) { + waitpid(pids[i], &status, 0); + + /* if anything failed, we failed */ + if( ! WIFEXITED(status)) { + ret = 0; + } else { + if( WEXITSTATUS(status) ) { + ret = 0; + } + } + --i; + } + return ret; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/client/run_svc.c b/software/cinit/browse_source/cinit-0.3pre9/client/run_svc.c new file mode 100644 index 00000000..7fea6a92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/client/run_svc.c @@ -0,0 +1,129 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre9/client/sig_terminate.c b/software/cinit/browse_source/cinit-0.3pre9/client/sig_terminate.c new file mode 100644 index 00000000..9b23e349 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/client/sig_terminate.c @@ -0,0 +1,60 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * terminate: terminate our watching pid + * part of cinit + */ + +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" + +/* ********************************************************************** + * terminate the watching service + */ +void sig_terminate(int signal) +{ + struct timespec ts; + int status; + + /* FIXME: only send SIGTERM, if not_kill does not exist */ + if( kill(cpid,SIGTERM) == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + + /* variabel delay */ + if(sock > 0) { + ts.tv_sec = sock; + } else { + ts.tv_sec = SLEEP_KILL_SVC; /* defined in conf/sleep_kill_svc */ + } + + /* if it still exists... */ + if(kill(cpid,0) != -1) { + /* kill if there is a delay */ + if(sock != 0) { + nanosleep(&ts,NULL); + status = kill(cpid,SIGKILL); + if( status == -1) { + if(errno != ESRCH) { + perror(MSG_TERMKILL); + } + } + } + } + + /* remove zombie if killed, if delay is zero wait for it */ + waitpid(cpid,&status,0); + + /* reset the watching pid to zero (NOT THE WATCHER's!) */ + cpid = 0; + + D_PRINTF("muesste weg sein"); + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/comm/README b/software/cinit/browse_source/cinit-0.3pre9/comm/README new file mode 100644 index 00000000..f44743a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/comm/README @@ -0,0 +1,6 @@ +-- OBSOLETED -- + -> This code is not in use in cinit-0.3 anymore! + +comm/ + The communication part of cinit. + The functions are used in client and in server code. diff --git a/software/cinit/browse_source/cinit-0.3pre9/comm/do_change_status.c b/software/cinit/browse_source/cinit-0.3pre9/comm/do_change_status.c new file mode 100644 index 00000000..94b9be76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/comm/do_change_status.c @@ -0,0 +1,70 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * change status of a service + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* client: + * svc = service name + * status = status + * pid = pid + * sock2 = sock + * action = ACT_WRITE + * return: error code + * + * server: + * svc = buffer + * status = where to save status + * svc = bufferTH_MAX + * pid = where to save pid + * sock2 = nsock + * action = ACT_READ + * return: read service lenght + */ + +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + + if(action == ACT_SERV) { + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } + + if(fpoint(sock2,&tmp,sizeof(tmp)) == -1) { /* length */ + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + if(fpoint(sock2,svc,tmp) == -1) { /* write service name */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,status,sizeof(*status)) == -1) { /* status */ + perror(MSG_ERR_IO); + return 0; + } + + if(fpoint(sock2,pid,sizeof(*pid)) == -1) { /* PID */ + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/comm/do_result.c b/software/cinit/browse_source/cinit-0.3pre9/comm/do_result.c new file mode 100644 index 00000000..cb51161b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/comm/do_result.c @@ -0,0 +1,33 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * write result of action + * part of cinit + */ + +#include +#include +#include + +#include "cinit.h" + +/* one handler for read and write! */ +char do_result(int nsock, char *value) +{ + ssize_t (*fpoint)(int,void* ,size_t); + char buf; + + if(value == NULL) { /* client */ + value = &buf; + fpoint = read; + } else { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + } + + if(fpoint(nsock,value,1) == -1) { /* result */ + perror(MSG_ERR_IO); + return RT_ERR_COMM; + } + + return *value; +} +/* returns cinit-0.2-style return codes */ diff --git a/software/cinit/browse_source/cinit-0.3pre9/comm/do_svc_name.c b/software/cinit/browse_source/cinit-0.3pre9/comm/do_svc_name.c new file mode 100644 index 00000000..d427365f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/comm/do_svc_name.c @@ -0,0 +1,51 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * try to start a service + * part of cinit + */ + +#include +#include +#include +#include +#include "cinit.h" + +/* serv: + * get buf + * return length + * + * client: + * print svc + * return errorcode + */ +int do_svc_name(int sock2, char *svc, int action) +{ + int tmp; + ssize_t (*fpoint)(int,void* ,size_t); + + /* set pointers */ + if(action == ACT_CLIENT) { + fpoint = ( ssize_t (*)(int, void*, size_t) ) write; + tmp = strlen(svc); + } else { + fpoint = read; + } + + /* read / write lenght */ + if( fpoint(sock2,&tmp,sizeof(tmp)) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + if(tmp > PATH_MAX) { + return 0; + } + + /* write/read service name */ + if( fpoint(sock2,svc,tmp) == -1) { + perror(MSG_ERR_IO); + return 0; + } + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/.README b/software/cinit/browse_source/cinit-0.3pre9/conf/.README new file mode 100644 index 00000000..5d4a5a00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/.README @@ -0,0 +1 @@ +This directory contains the cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_confdir b/software/cinit/browse_source/cinit-0.3pre9/conf/c_confdir new file mode 100644 index 00000000..091e6192 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_confdir @@ -0,0 +1,3 @@ +conf + +The directory below cinit_dir for cinit configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_delay b/software/cinit/browse_source/cinit-0.3pre9/conf/c_delay new file mode 100644 index 00000000..dc30f147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_delay @@ -0,0 +1,4 @@ +delay + +Name of the file which contains the delay between sending SIGKILL after +SIGTERM for respawning processes. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_env b/software/cinit/browse_source/cinit-0.3pre9/conf/c_env new file mode 100644 index 00000000..ec4d643b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_env @@ -0,0 +1,9 @@ +.env + +The extension to c_on and c_off, which will contain the environment \n seperated. + +For instance: + +CLIENT_IP=192.168.23.42 +ACCEPT_CONN=32 + diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_halt b/software/cinit/browse_source/cinit-0.3pre9/conf/c_halt new file mode 100644 index 00000000..4eed340f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_halt @@ -0,0 +1,4 @@ +halt + +Name of the link belowe c_special, which links to the program +to be executed right before halting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_init b/software/cinit/browse_source/cinit-0.3pre9/conf/c_init new file mode 100644 index 00000000..22a77d8e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_init @@ -0,0 +1,3 @@ +init + +The name of the init service. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_last b/software/cinit/browse_source/cinit-0.3pre9/conf/c_last new file mode 100644 index 00000000..8debf155 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_last @@ -0,0 +1,7 @@ +last + +Name of the file below cinit_dir/c_confdir/ to execute right before +reboot/halt/poweroff. + +This maybe a shellscript with the OS-specific umount procedure (like umount -a), +see doc/user/configuring.cinit for more details. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_needs b/software/cinit/browse_source/cinit-0.3pre9/conf/c_needs new file mode 100644 index 00000000..eb715d7d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_needs @@ -0,0 +1,3 @@ +needs + +Name of the service sub-directory containing the needed services. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_off b/software/cinit/browse_source/cinit-0.3pre9/conf/c_off new file mode 100644 index 00000000..57e63cea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_off @@ -0,0 +1,3 @@ +off + +Name of the file we start, when stopping the service. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_on b/software/cinit/browse_source/cinit-0.3pre9/conf/c_on new file mode 100644 index 00000000..8eadc0a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_on @@ -0,0 +1,3 @@ +on + +Name of the file we start, when starting the service. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_panic b/software/cinit/browse_source/cinit-0.3pre9/conf/c_panic new file mode 100644 index 00000000..7fdb77b3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_panic @@ -0,0 +1,5 @@ +panic + +Name of the file below cinit_dir/c_confdir/ to execute on panic. +This name .params (normally panic.params) will be passed as parameters/ +argumunts to panic. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_params b/software/cinit/browse_source/cinit-0.3pre9/conf/c_params new file mode 100644 index 00000000..d86d37cb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_params @@ -0,0 +1,3 @@ +.params + +The extension to c_on and c_off, which will contain the parameters \n seperated. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_poweroff b/software/cinit/browse_source/cinit-0.3pre9/conf/c_poweroff new file mode 100644 index 00000000..5b5c9c9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_poweroff @@ -0,0 +1,4 @@ +poweroff + +Name of the link belowe c_special, which links to the program +to be executed right before powering off the system. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_reboot b/software/cinit/browse_source/cinit-0.3pre9/conf/c_reboot new file mode 100644 index 00000000..8702388f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_reboot @@ -0,0 +1,4 @@ +reboot + +Name of the link belowe c_special, which links to the program +to be executed right before rebooting the system. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_respawn b/software/cinit/browse_source/cinit-0.3pre9/conf/c_respawn new file mode 100644 index 00000000..cc85fbea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_respawn @@ -0,0 +1,3 @@ +respawn + +If this file exists in a service directory, cinit will respawn the service. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_sock b/software/cinit/browse_source/cinit-0.3pre9/conf/c_sock new file mode 100644 index 00000000..46a50941 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_sock @@ -0,0 +1,4 @@ +coala + +The name of the socket cinit will use (currently: below tmpdir, +see doc/ipc.thoughts). diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_tmp b/software/cinit/browse_source/cinit-0.3pre9/conf/c_tmp new file mode 100644 index 00000000..48e98e42 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_tmp @@ -0,0 +1,3 @@ +tmp + +The name of the temporary directory, where we'll mount tmpfs to create the socket diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_tmpfs b/software/cinit/browse_source/cinit-0.3pre9/conf/c_tmpfs new file mode 100644 index 00000000..ba29caef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_tmpfs @@ -0,0 +1,4 @@ +tmpfs + +The name of the filesystem to use to mount a memory filesystem. +On Linux this is "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_tmpmount b/software/cinit/browse_source/cinit-0.3pre9/conf/c_tmpmount new file mode 100644 index 00000000..3469fe57 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_tmpmount @@ -0,0 +1,4 @@ +tmpfs + +The name of the mount target, we'll mount with c_tmpfs on the c_tmp directory. +On Linux this can be anything, but we will use the default "tmpfs". diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/c_wants b/software/cinit/browse_source/cinit-0.3pre9/conf/c_wants new file mode 100644 index 00000000..20fe3184 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/c_wants @@ -0,0 +1,3 @@ +wants + +Name of the service sub-directory containing the wanted services. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/cc b/software/cinit/browse_source/cinit-0.3pre9/conf/cc new file mode 100644 index 00000000..b168ae6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/cc @@ -0,0 +1,3 @@ +gcc + +The c-compiler to use. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/cflags b/software/cinit/browse_source/cinit-0.3pre9/conf/cflags new file mode 100644 index 00000000..f205afb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/cflags @@ -0,0 +1,6 @@ +-pipe -W -Wall -Werror -Iinclude -g -D_XOPEN_SOURCE=600 -D_USE_POSIX + +Standard flags to pass to (g)cc. + +-D_XOPEN_SOURCE=600 must be used on glibc to select the right standard. +-D_USE_POSIX is needed for sigemptyset on glibc diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/cinit_dir b/software/cinit/browse_source/cinit-0.3pre9/conf/cinit_dir new file mode 100644 index 00000000..06e7d1ff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/cinit_dir @@ -0,0 +1,3 @@ +/etc/cinit + +This is where all configuration for cinit will be stored. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/confdir b/software/cinit/browse_source/cinit-0.3pre9/conf/confdir new file mode 100644 index 00000000..55fb65e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/confdir @@ -0,0 +1,3 @@ +conf + +The subdirectory below /etc/cinit to be used for general configurations. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/destdir b/software/cinit/browse_source/cinit-0.3pre9/conf/destdir new file mode 100644 index 00000000..9a37511f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/destdir @@ -0,0 +1,4 @@ + + +The destination to install to. This is not used when running cinit, +but only for installing it. Normally the first line is blank. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/getty_dir b/software/cinit/browse_source/cinit-0.3pre9/conf/getty_dir new file mode 100644 index 00000000..2cb4da05 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/getty_dir @@ -0,0 +1,4 @@ +getty + +This is the subdirectry in which the scripts will create the gettys, +if you are using 'install-conf'. It's not used be cinit internally. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/install_directory b/software/cinit/browse_source/cinit-0.3pre9/conf/install_directory new file mode 100644 index 00000000..c8d9e45b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/install_directory @@ -0,0 +1,3 @@ +-d + +Parameter to install_prog to create directories. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/install_prog b/software/cinit/browse_source/cinit-0.3pre9/conf/install_prog new file mode 100644 index 00000000..2f21943a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/install_prog @@ -0,0 +1,4 @@ +/usr/bin/install + +Program we use to install. install_directory contains parameter +to create directory. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/ipc_method b/software/cinit/browse_source/cinit-0.3pre9/conf/ipc_method new file mode 100644 index 00000000..fc75e273 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/ipc_method @@ -0,0 +1,5 @@ +msgq + +The type of IPC (inter process communication) to use. +Valid values can be optained by issuing `ls src/ipc/`. + diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/ld b/software/cinit/browse_source/cinit-0.3pre9/conf/ld new file mode 100644 index 00000000..b60e4836 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/ld @@ -0,0 +1,3 @@ +gcc + +Comment missing. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/ldflags b/software/cinit/browse_source/cinit-0.3pre9/conf/ldflags new file mode 100644 index 00000000..fc214daf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/ldflags @@ -0,0 +1,3 @@ + + +No flags specified normally. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/max_delay b/software/cinit/browse_source/cinit-0.3pre9/conf/max_delay new file mode 100644 index 00000000..30725bf8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/max_delay @@ -0,0 +1,4 @@ +30 + +Maximum number of seconds to sleep between retrying to start it +(respawn only). diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/max_deps b/software/cinit/browse_source/cinit-0.3pre9/conf/max_deps new file mode 100644 index 00000000..13db68e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/max_deps @@ -0,0 +1,4 @@ +32 + +Maximum number of direct dependencies (in each wants and needs, +that way doubling this number) a service may have. The default is 32. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/msgq_pathname b/software/cinit/browse_source/cinit-0.3pre9/conf/msgq_pathname new file mode 100644 index 00000000..1bef0b6b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/msgq_pathname @@ -0,0 +1,4 @@ +/bin/sh + +Used to generate an unique identifier for the message queue. +See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/msgq_to_clients b/software/cinit/browse_source/cinit-0.3pre9/conf/msgq_to_clients new file mode 100644 index 00000000..dd15808a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/msgq_to_clients @@ -0,0 +1,4 @@ +o + +This is use in ftok to generate a key_t for the message queue use to write +to the clients. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/msgq_to_server b/software/cinit/browse_source/cinit-0.3pre9/conf/msgq_to_server new file mode 100644 index 00000000..f87ae3f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/msgq_to_server @@ -0,0 +1,4 @@ +i + +This is use in ftok to generate a key_t for the message queue use to write +to the server. See ftok(3). diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/os b/software/cinit/browse_source/cinit-0.3pre9/conf/os new file mode 100644 index 00000000..ddbf8f9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/os @@ -0,0 +1,14 @@ +linux + +Select the operating system compiling for. + +Current possibilities: + + - linux + + +Currently Planned possibilities: + + - freebsd + - openbsd + - netbsd diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/p_asciidoc b/software/cinit/browse_source/cinit-0.3pre9/conf/p_asciidoc new file mode 100644 index 00000000..52485c86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/p_asciidoc @@ -0,0 +1,6 @@ +asciidoc + +The binary on your system (with or without path) which does what I expect +asciidoc todo. + +Default: asciidoc diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/p_docbooktoman b/software/cinit/browse_source/cinit-0.3pre9/conf/p_docbooktoman new file mode 100644 index 00000000..d62c9015 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/p_docbooktoman @@ -0,0 +1,6 @@ +docbook2x-man + +The binary on your system (with or without path) which converts +docbook to manpages. + +Default: docbook2x-man diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/p_docbooktotexi b/software/cinit/browse_source/cinit-0.3pre9/conf/p_docbooktotexi new file mode 100644 index 00000000..278f6805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/p_docbooktotexi @@ -0,0 +1,6 @@ +docbook2x-texi + +The binary on your system (with or without path) which converts +docbook to texinfo. + +Default: docbook2x-texi diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/prefix b/software/cinit/browse_source/cinit-0.3pre9/conf/prefix new file mode 100644 index 00000000..6b90469f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/prefix @@ -0,0 +1,5 @@ + + +Where to install cinit. Normally this will be /, but you can put it anywhere. +The subdirectory 'sbin' under this prefix must be readable by the kernel. +This is normally either empty or "/". diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/profile b/software/cinit/browse_source/cinit-0.3pre9/conf/profile new file mode 100644 index 00000000..b9104bf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/profile @@ -0,0 +1,9 @@ +cprofile: + +The argument should be passed to cinit to recognize that +a profile will follow. "cprofile:" is the standard, as +the Linux kernel eats everything in the form 'var=parm'. +The old (pre cinit-0.1) option "cprofile=" should therefore +NOT be used. + +Under Linux you tell it the bootloader like grub or LILO. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/service_categories b/software/cinit/browse_source/cinit-0.3pre9/conf/service_categories new file mode 100644 index 00000000..2216ea97 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/service_categories @@ -0,0 +1,7 @@ +getty init local-tuning local-services mount network remote-services + +List of directories normally created below /etc/cinit/svc/ as +'pseudo-services'. + +Btw, 'init' is the first service and has always to be there, but it does not really +fit into here, because it's a real one, compraed to the pseudo services. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/sleep_before_kill b/software/cinit/browse_source/cinit-0.3pre9/conf/sleep_before_kill new file mode 100644 index 00000000..2671f22d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/sleep_before_kill @@ -0,0 +1,7 @@ +sleep_before_kill + +The file that specifies how long to sleep after sending SIGTERM, before sending +SIGKILL to every process. If this file is non-existing the builtin value from +'sleep_kill'. + +The file should be located below conf/ diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/sleep_kill b/software/cinit/browse_source/cinit-0.3pre9/conf/sleep_kill new file mode 100644 index 00000000..b419241a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/sleep_kill @@ -0,0 +1,8 @@ +2 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to every +process. 5 is a good working value, but makes me tired. Testing with +2 currently. + +Note: This does NOT affect terminating services, they are shutdown by +their own 'off' functions. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/sleep_kill_svc b/software/cinit/browse_source/cinit-0.3pre9/conf/sleep_kill_svc new file mode 100644 index 00000000..e399ac10 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/sleep_kill_svc @@ -0,0 +1,5 @@ +1 + +Seconds to sleep after sending SIGTERM, before sending SIGKILL to +the service we are shutting down. This is only used for +bringing down respawning processes. Default: 1. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/sleep_rerun b/software/cinit/browse_source/cinit-0.3pre9/conf/sleep_rerun new file mode 100644 index 00000000..703339f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/sleep_rerun @@ -0,0 +1,4 @@ +1 + +How many seconds to sleep before rechecking if the service was executed. +Used by run_svc(). diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/sleep_svc b/software/cinit/browse_source/cinit-0.3pre9/conf/sleep_svc new file mode 100644 index 00000000..e20aed6a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/sleep_svc @@ -0,0 +1,3 @@ +5 + +How many seconds to sleep before respawning a failed process. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/sock_queue b/software/cinit/browse_source/cinit-0.3pre9/conf/sock_queue new file mode 100644 index 00000000..4917a1f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/sock_queue @@ -0,0 +1,4 @@ +32 + +Maximum process waiting in the socket queue. The default is much +more than enough. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/strip b/software/cinit/browse_source/cinit-0.3pre9/conf/strip new file mode 100644 index 00000000..08736418 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/strip @@ -0,0 +1,3 @@ +strip -R .comment -R .note + +Strip out unecessary parts of the binaries. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/sulogin b/software/cinit/browse_source/cinit-0.3pre9/conf/sulogin new file mode 100644 index 00000000..24859afc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/sulogin @@ -0,0 +1,6 @@ +/sbin/sulogin + +The path to sulogin. We'll execute it, if the standard panic +action fails (as specified in cinit_dir/c_confdir/panic). + +If you need arguments, you tave to hack serv/panic.c diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/svcdir b/software/cinit/browse_source/cinit-0.3pre9/conf/svcdir new file mode 100644 index 00000000..087a3848 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/svcdir @@ -0,0 +1,3 @@ +svc + +Directory below /etc/cinit that contains the services. diff --git a/software/cinit/browse_source/cinit-0.3pre9/conf/version b/software/cinit/browse_source/cinit-0.3pre9/conf/version new file mode 100644 index 00000000..2e1c3037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/conf/version @@ -0,0 +1,3 @@ +"0.3pre9" + +The version. diff --git a/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/Makefile b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/Makefile new file mode 100644 index 00000000..8441c90b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/Makefile @@ -0,0 +1,70 @@ +# +# (c) 2005 Peter Portmann (pp at bluewin.ch) +# cinit/contrib+tools +# +# This script is written for the clinux-System and published +# under the terms of GPL 2.0 +# +# Version: 0.2 +# clean with a single command instead of two commands. +# +# ChangeLog: +# 0.1 initial version +# +# Todo: +# +# Features: + +# +# compile/link options +# +# do not use DEBUG and OPTIMIZE at the same time! +#DEBUG=-DDEBUG +#OPTIMIZE=-Werror +DEBUG=-g -DDEBUG +#OPTIMIZE=-pipe -Os -Werror + +# init should be static per default! +LDFLAGS= + +# programs +CC=gcc $(DEBUG) $(OPTIMIZE) $(TIMEME) +CFLAGS=-Wall -I. -I../ +LD=gcc +STRIP=strip -R .comment -R .note + +INSTALL = install + +prefix = /usr +bindir = $(prefix)/bin + +# objects + +CLIENT=cinit.graph.text.o + +COMMUNICATION=error.o ../generic/usage.o ../generic/mini_printf.o + +OBJ=$(CLIENT) $(COMMUNICATION) + +# +PROGRAMS=cinit.graph.text +SCRIPTS=cconfig.graph.xml.rb \ + make.cconfig.from.xml.rb \ + cinit-vis.pl + +# targets +all: $(PROGRAMS) + +cinit.graph.text: $(OBJ) + $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(STRIP) $@ + +clean: + rm -f *.o $(PROGRAMS) + +install: all + @echo '*** Installing contrib+tools ***' + $(INSTALL) -d -m755 $(DESTDIR)$(bindir) + for bin in $(SCRIPTS) $(PROGRAMS); do \ + $(INSTALL) $$bin $(DESTDIR)/$(bindir); \ + done diff --git a/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/README b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/README new file mode 100644 index 00000000..85fa2f5c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/README @@ -0,0 +1,11 @@ +contrib+tools/ + programs written by others and external tools not necessary + needed but (very) nice to have + + + cinit-vis.pl - draw an ascii graph of cinit configuration [perl] + cinit.graph.text - draw an ascii graph of cinit configuration [c] + + cconfig.graph.xml.rb - creates a xml file from a cconfig [ruby] + make.cconfig.from.xml.rb - creates a cconfig from a xml file [ruby] + diff --git a/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/README.ruby b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/README.ruby new file mode 100644 index 00000000..ed210cee --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/README.ruby @@ -0,0 +1,7 @@ +The ruby tools for general cconfig [0] are written by René Nussbaumer [1]. +You can find the documentation for them at [2]. + + +[0]: http://nico.schotteli.us/papers/linux/cconfig/ +[1]: http://killerfox.forkbomb.ch/ +[2]: http://killerfox.forkbomb.ch/articles/cconfig/tools diff --git a/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/cconfig.graph.xml.rb b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/cconfig.graph.xml.rb new file mode 100644 index 00000000..d18ba422 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/cconfig.graph.xml.rb @@ -0,0 +1,117 @@ +#!/usr/bin/env ruby + +=begin + + Writes an XML-Tree for a cconfig directory + Idea by Nico Schottelius aka telmich + Implemented and (C) by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added support for binary files + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Changed checking order: symlink, directory, file. Because of + a logical bug -> directory follows symlink so, when a symlink + points to a directory no «link» element is created. + + Version 0.1 (René Nussbaumer): + * Holy hack for directory scanning (needs to be optimized) + * Hack for rexml to print out «lost» tags. This rexml sux. + + Todo: + * Optimize scanning. + * Use another xml library instead of rexml crap. + Problem: Produce dependencies -> no std-lib + + Features: + * Create a flat (no deepnes without directory) and 1:1 image + of an cconfig directory + +=end + +require 'rexml/document' +require 'base64' +require 'digest/sha1' + +require 'filemagic' + +@version = '0.3' + +def determineTarget(entry) + return 'external' if(!File.expand_path(entry).index(@initpath)) + return 'link' if(FileTest.symlink?(entry)) + return 'object' if(FileTest.directory?(entry)) + return 'attribute' if(FileTest.file?(entry)) + return 'unknown' # Should never be reached +end + +def createTree(dir, parent) + dir.each { |entry| + next if(entry =~ /^(\.|\.\.)$/) + + if(FileTest.symlink?(entry)) + e = parent.add_element('link') + + # Much fun with links + e.add_attributes( { 'name' => entry, 'target' => determineTarget(File.readlink(entry)) } ) + e.add_text(File.readlink(entry)) + elsif(FileTest.directory?(entry)) + e = parent.add_element('object') + e.add_attribute('name', entry) + + # Bad, that we need to change the directory every time. + oldPwd = Dir.pwd + Dir.chdir(entry) + createTree(Dir.new('.'), e) + Dir.chdir(oldPwd) + elsif(FileTest.file?(entry)) + e = parent.add_element('attribute') + e.add_attribute('name', entry) + if(File.stat(entry).size?) + # Yeah, we got one WITH content! W00h00, let's party. + + fm = FileMagic.new(FileMagic::MAGIC_MIME) + if(fm.file(entry) =~ /executable/) + e.add_attribute('type', 'binary') + text = File.new(entry).read + e.add_attribute('sha1', Digest::SHA1.hexdigest(text)) + e.add_text(Base64.encode64(text)) + else + e.add_text(File.new(entry).read) + end + fm.close() + end + end + } +end + + +if(!ARGV[0] || !FileTest.directory?(ARGV[0])) + puts 'You need to specify a directory' + Kernel.exit(-1) +end + +doc = REXML::Document.new + +e = doc.add_element('cconfig') +e.add_attribute('name', File.basename(ARGV[0])) +e.add_attribute('version', @version) + +@initpath = File.expand_path(ARGV[0]) +Dir.chdir(ARGV[0]) +createTree(Dir.new('.'), doc.root) + +out = '' +doc.write(out, 0, false, true) + +REXML::XMLDecl.new('1.0', 'utf-8').write($stdout) # This should automatically printed by rexml. Damn bugs. +puts '' +puts out # Workaround for a buggy rexml + diff --git a/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/cinit-vis.pl b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/cinit-vis.pl new file mode 100644 index 00000000..3956ff47 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/cinit-vis.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# (c) by Marcus Przyklink (downhill-clinux@burningchaos.org) +# written for cinit and published under GPL +# beautified a bit by Nico Schottelius +# optimized by René Nussbaumer +# Version: 0.1 + +use strict; +use warnings; + +# +# Variables for location and output +# +# cinit-directory +my $path = "/etc/cinit/"; +# started profile +my $starting_point = "init"; +# the spaces for each level (integer: amount of spaces) +my $space = 3; +# marker for need +my $need = "-->"; +# marker for want +my $want = "==>"; + +# +# main function, recursively list the components of the cinit system +# +if (@ARGV) { + if( $ARGV[0] =~ /-(h|-help)/ ) { + print "Usage: " . __FILE__ . " without parameters for standard-use (check variables in file)\n"; + print " Parameters:\n"; + print " -h for this help\n"; + print " profile-name for a profile\n"; + exit(0); + } + else { + $starting_point = $ARGV[0]; + } +} + +# +# start first instance +# +sub get_deeper { + my ($point, $tmp_counter, $need_want) = splice @_; + + print " " x ($space * $tmp_counter) . ($need_want ? $need : $want) . " " . $point . "\n"; + + opendir(DIR, "${path}${point}/needs") and + my @next_need = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + opendir(DIR, "${path}${point}/wants") and + my @next_want = sort grep(!/^\./, readdir(DIR)) and + closedir(DIR); + + for(@next_need) { + get_deeper($_, $tmp_counter + 1, 1); + } + for(@next_want) { + get_deeper($_, $tmp_counter + 1, 0); + } +} + +# +# start first instance +# +get_deeper($starting_point, 0, 0); + +# +# work done, go home +# +exit(0); diff --git a/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/cinit.graph.text.c b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/cinit.graph.text.c new file mode 100644 index 00000000..bc6fb6ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/cinit.graph.text.c @@ -0,0 +1,200 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + cinit.graph.text.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.2 + + ChangeLog: + Version 0.2 (Peter Portmann): + * Not assigned link destinies are marked by (!). + * Not readable directories are marked by "directory not readable". + + Version 0.1 (Peter Portmann): + * Print of the directory structure of the contained files and links + without following the links. + + Todo: + + Features: +*/ + +//#include +#include +#include +#include +#include +#include +#include +#include +#include "cinit.h" +#include "error.h" + +#define FTW_F 1 /* file isn't a directory */ +#define FTW_D 2 /* file is a directory */ +#define FTW_DNR 3 /* not readable directory */ +#define FTW_NS 4 /* unsuccesfully stat on this file */ +#define MAX_CHAR 4096 + +/*********************************************************************** + * cinit.gaph.text - textual representation of the cinit directory + */ + +#define CSERVICE_BANNER "cinit.gaph.text - textual representatio of the cinitdirectory\n\n" +#define USAGE_TEXT "\n\nUsage:\n\ncinit.gaph.text \n" \ + "\tpath\t- cinit installationpath\n" + +typedef int EACH_ENTRY(const char *, const struct stat *, int); +typedef enum { FALSE=0, TRUE=1 } bool; + +static char dirpath[PATH_MAX]; +static int depth = 0; +static long int filecount = 0; + +static EACH_ENTRY each_entry; +static int pp_ftw(char *, EACH_ENTRY *); +static int each_getinfo(EACH_ENTRY *); + +/*********************************************************************** + * pp_ftw: file tree walk + */ +static int pp_ftw(char *filepath, EACH_ENTRY *function) +{ + int n; + + if(chdir(filepath) < 0) /* In angegebenen Pfad wechseln */ + err_msg(FATAL_SYS, "can't change to %s", filepath); + + if(getcwd(dirpath, PATH_MAX) == 0) /* Absoluten Pfadnamen ermitteln */ + err_msg(FATAL_SYS, "error using getcwd for %s", filepath); + + n = each_getinfo(function); + + return(n); +} + +/*********************************************************************** + * each_getinfo: get more info for each file. + */ +static int each_getinfo(EACH_ENTRY *function) +{ + struct stat statpuff; + struct dirent *direntz; + DIR *dirz; + int n; + char *zgr; + + if(lstat(dirpath, &statpuff) < 0) + return(function(dirpath, &statpuff, FTW_NS)); /* Error on stat */ + + if(S_ISDIR(statpuff.st_mode) == 0) + return(function(dirpath, &statpuff, FTW_F)); /* no directory */ + + /* It's a directory. + * Call function() for it. After that handel each file in the directory. */ + + if((dirz = opendir(dirpath)) == NULL) { /* Directory not readable */ + closedir(dirz); + return(function(dirpath, &statpuff, FTW_DNR)); + } + + if((n = function(dirpath, &statpuff, FTW_D)) != 0) /* return the directorydirpath */ + return(n); + + zgr = dirpath + strlen(dirpath); /* append slash to the dirpathname */ + *zgr++ = '/'; + *zgr = '\0'; + + while((direntz = readdir(dirz)) != NULL) { + /* ignor . and .. */ + if(strcmp(direntz->d_name, ".") && strcmp(direntz->d_name, "..")) { + strcpy(zgr, direntz->d_name); /* append filename after slash */ + depth++; + if(each_getinfo(function) != 0) { /* Recursion */ + depth--; + break; + } + depth--; + } + } + *(zgr-1) = '\0'; /* deleting evrything after the slash */ + + if(closedir(dirz) < 0) + err_msg(WARNING, "closedir for %s failed", dirpath); + + return(n); +} + +/*********************************************************************** + * each_entry: handling each file and build the graph step by step. + */ +static int each_entry(const char *filepath, const struct stat *statzgr, int filetype) +{ + struct stat statpuff; + static bool erstemal=TRUE; + int i; + + char link[MAX_CHAR]; + + filecount++; + if(!erstemal) { + for(i=1 ; i<=depth ; i++) + printf("%4c|", ' '); + printf("----%s", strrchr(filepath, '/')+1); + } else { + printf("%s", filepath); + erstemal = FALSE; + } + + switch(filetype) { + case FTW_F: + switch(statzgr->st_mode & S_IFMT) { + case S_IFREG: break; + case S_IFCHR: printf(" c"); break; + case S_IFBLK: printf(" b"); break; + case S_IFIFO: printf(" f"); break; + case S_IFLNK: + printf(" -> "); + if(( i=readlink(filepath, link, MAX_CHAR)) != -1) + printf("%.*s", i, link); + if(stat(filepath, &statpuff) < 0) + printf(" (!)"); + break; + case S_IFSOCK: printf(" s"); break; + default: printf(" ?"); break; + } + printf("\n"); + break; + + case FTW_D: + printf("/\n"); + break; + + case FTW_DNR: + printf("/ directory not readable\n"); + break; + + case FTW_NS: + err_msg(WARNING_SYS, "Error using 'stat' on file %s", filepath); + break; + + default: + err_msg(FATAL_SYS, "Unknown Filetype (%d) by file %s", filetype, filepath); + break; + } + + return(0); +} + +/*********************************************************************** + * main: + */ +int main(int argc, char *argv[]) +{ + if(argc != 2) + usage(CSERVICE_BANNER, USAGE_TEXT); + + exit(pp_ftw(argv[1], each_entry)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/error.c b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/error.c new file mode 100644 index 00000000..8174c702 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/error.c @@ -0,0 +1,124 @@ +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.c + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#include "error.h" +#include +#include +#include +#include +#include +#include + +#define MAX_CHAR 4096 + +int debug; /* Aufrufer von log_msg oder log_open muss debug setzen: + 0, wenn interaktiv; 1, wenn Daemon-Prozess */ + +/*---- Lokale Routinen zur Abarbeitung der Argumentliste --------------------*/ +static void msg_err(int sys_msg, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + return; +} + +static void msg_log(int sys_msg, int prio, const char *fmt, va_list az) +{ + int fehler_nr = errno; + char puffer[MAX_CHAR]; + + vsprintf(puffer, fmt, az); + if (sys_msg) + sprintf(puffer+strlen(puffer), ": %s ", strerror(fehler_nr)); + if (debug) { + fflush(stdout); /* fuer Fall, dass stdout und stderr gleich sind */ + fprintf(stderr, "%s\n", puffer); + fflush(NULL); /* alle Ausgabepuffer flushen */ + } else { + strcat(puffer, "\n"); + syslog(prio, puffer); + } + return; +} + +/*---- Global aufrufbare Fehlerroutinen -------------------------------------*/ +void err_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_err(0, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + case DUMP: + msg_err(1, fmt, az); + break; + default: + msg_err(1, "Falscher Aufruf von err_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + else if (kennung==DUMP) + abort(); /* core dump */ + exit(1); +} + +void log_msg(int kennung, const char *fmt, ...) +{ + va_list az; + + va_start(az, fmt); + switch (kennung) { + case WARNING: + case FATAL: + msg_log(0, LOG_ERR, fmt, az); + break; + case WARNING_SYS: + case FATAL_SYS: + msg_log(1, LOG_ERR, fmt, az); + break; + default: + msg_log(1, LOG_ERR, "Falscher Aufruf von log_msg...", az); + exit(3); + } + va_end(az); + + if (kennung==WARNING || kennung==WARNING_SYS) + return; + exit(2); +} + +/*---- log_open --------------------------------------------------------------- + initialisiert syslog() bei einem Daemon-Prozess */ +void log_open(const char *kennung, int option, int facility) +{ + if (debug==0) + openlog(kennung, option, facility); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/error.h b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/error.h new file mode 100644 index 00000000..a55690fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/error.h @@ -0,0 +1,29 @@ +#ifndef ERROR_H +#define ERROR_H +/** + (c) 2005 Peter Portmann (pp at bluewin.ch) + error.h + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.1 + + ChangeLog: + + Todo: + + Features: +*/ + +#define WARNING 0 +#define WARNING_SYS 1 +#define FATAL 2 +#define FATAL_SYS 3 +#define DUMP 4 + +void log_msg(int kennung, const char *fmt, ...); +void err_msg(int kennung, const char *fmt, ...); + + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/make.cconfig.from.xml.rb b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/make.cconfig.from.xml.rb new file mode 100644 index 00000000..05f35cc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/contrib+tools/make.cconfig.from.xml.rb @@ -0,0 +1,227 @@ +#!/usr/bin/env ruby + +=begin + + Create a cconfig directory based on a xml input. + (C) 2005 by René Nussbaumer aka KillerFox + + This script is written for the clinux-System and published + under the terms of GPL 2.0 + + Version: 0.3 + + ChangeLog: + Version 0.3 (René Nussbaumer): + * Added binary file support + * Added sha1 checksum for binary files + + Version 0.2 (René Nussbaumer): + * Added some commandline options + * Added «level» so control the restrictivity of the program + * Added more «intelligence» to the program, to detect internal broken dependcies. + * Support «debug»-Levels. + * Print statistic at the end of the programs about warnings and errors. + + Version 0.1 (René Nussbaumer): + * Initial + + Todo: + * Use an rexml alternative + * Some cleanup + * Optimize + * Testing? + + Features: + * Create a cconfig directory based on a xml + +=end + +require 'rexml/document' +require 'getoptlong' +require 'base64' +require 'digest/sha1' + +@verbose = 0 +@level = 1 +@version = '0.3' + +@warnings = 0 +@errors = 0 +@checklist = Array.new + +def printMsg(prefix, msg) + puts '%-12s %s' % [prefix + ':', msg] +end + +def error(msg, fatal = 0) + @errors += 1 + fatal = 0 if(@level < 1) + fatal = 255 if(@level > 1 && !fatal) + printMsg(fatal != 0 ? 'PANIC' : 'ERROR', msg) + Kernel.exit(-fatal) if(fatal != 0) +end + +def warn(msg) + error(msg, 1) if(@level > 1) + @warnings += 1 + printMsg('WARNING', msg) +end + +def info(msg) + printMsg('INFO', msg) +end + +def debug(msg, verbosity = 1) + if(@verbose >= verbosity) + printMsg("DEBUG(#{verbosity})", msg) + end +end + +def createObject(name) + error("#{name} already exists.", 1) if(FileTest.exists?(name)) + begin + Dir.mkdir(name) + rescue + error("Could not create directory #{name}: #{$!}. Abort.", 7) + end + debug("Object #{File.expand_path(name)} has been created.", 4) +end + +def createAttribute(name, content = nil) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + begin + file = File.new(name, 'w') + file.print content if(content && !content.empty?) + file.close + debug("Attribute #{File.expand_path(name)} has been created", 4) + rescue + error("Could not create file #{name}: #{$!}. Skipped.") + end +end + +def createLink(name, target, type) + warn("#{name} already exists. Overwrite.") if(FileTest.exists?(name)) + error("Broken dependencies! Please take a look if #{target} exists on your system", 2) if(type == 'external' && !FileTest.exists?(target)) + if(!FileTest.exists?(target) && type != 'external') + #info("Possible break. But maybe the target #{target} does not yet exists. Checking later.") + exptarget = File.expand_path(target) + @checklist << exptarget + debug("Adding #{target} to the list of internal dependcies to check.", 2) + end + begin + error('You\'ve a system which does not support symbolic links. Abort.', 3) if(File.symlink(target, name) != 0) + rescue + error("Could not create symlink #{name} => #{target}: #{$!}.", 3) + end + debug("Link #{File.expand_path(name)} has been created", 4) +end + +def doWork(elm) + name = elm.name + attrname = elm.attributes['name'] + error("XML Tag with missing name attribute!", 5) if(!attrname) + if(name =~ /(object|cconfig)/) + if(name == 'cconfig') + if(elm.attributes['version']) + info("Found a version string: #{elm.attributes['version']}") + warn("This XML is maybe incompatible with this programm. I'm a version #{@version} script. The XML is generated with a version #{elm.attributes['version']} script. Please update.") if(elm.attributes['version'] > @version) + end + end + createObject(attrname) + if(elm.has_elements?) + pwd = Dir.pwd + Dir.chdir(attrname) + elm.each_element { |e| + doWork(e) + } + Dir.chdir(pwd) + end + elsif(name == 'attribute') + text = nil + e = nil + text = e.value if((e = elm.get_text)) + if(text && elm.attributes['type'] && elm.attributes['type'] == 'binary') + text = Base64.decode64(text) + if(Digest::SHA1.hexdigest(text) != elm.attributes['sha1']) + warn("SHA1 differs from file: #{Dir.pwd}#{attrname}") + end + end + createAttribute(attrname, text) + elsif(name == 'link') + error("link-Tag without content.", 6) if(!elm.has_text?) + error("link with missing target. Skipped.") if(!elm.attributes['target']) + createLink(attrname, elm.get_text.value, elm.attributes['target']) + end +end + +puts "This is #{File.basename(__FILE__)} v#{@version} by René Nussbaumer" +puts + +opts = GetoptLong.new( + ['--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT], + ['--level', '-l', GetoptLong::REQUIRED_ARGUMENT], + ['--version', '-V', GetoptLong::NO_ARGUMENT] +) + +opts.each { |arg,value| + case arg + when '--verbose' + @verbose += 1 + value.each_byte { |x| + if(x.chr == 'v') + @verbose += 1 + end + } + debug("Verbosity set to: #{@verbose}") + when '--level' + debug("Setting level to: #{value}", 3) + case value + when 'low' + @level = 0 + when 'normal' + @level = 1 + when 'paranoid' + @level = 2 + else + warn('Unknown level: ' + value) + end + when '--version' + Kernel.exit(0) + else + warn("Unknown option #{arg}#{value && !value.empty? ? ('with value ' + value) : ''}") + end +} + +if(!ARGV[0]) + puts 'Need at least one argument' + puts "Usage: #{__FILE__} " + Kernel.exit(1) +end + + +filedesc = $stdin + +if(ARGV[0] != '-') + filedesc = File.new(ARGV[0]) +end + +doc = REXML::Document.new filedesc + +doWork(doc.root) + +if(!@checklist.empty?) + info('Now checking all broken internal dependcies again') + broken = 0 + @checklist.each { |path| + debug("Checking #{path}.", 2) + if(!FileTest.exists?(path)) + broken += 1 + warn("Broken dependcies. #{path} does not exist. Please fix.") + end + } + info('Looks good.') if(broken == 0) + info('Bad, bad.') if(broken > 0) +end + +info("Successed. #{@warnings} warnings, #{@errors} errors") + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/.buildwarn b/software/cinit/browse_source/cinit-0.3pre9/doc/.buildwarn new file mode 100644 index 00000000..3a0354dd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/.buildwarn @@ -0,0 +1,23 @@ +**************************************************************************** +Welcome, cinit greets you. +**************************************************************************** + +Hints: +------ + - Settings used for compiling (not only) can be found in conf/* + - The boot configuration normally resides below /etc/cinit + +Documentation +------------- +The documentation can be found in doc/: + + - doc/user/ contains documentation for users + - doc/devel/ contains documentation for developers + + Please read doc/user/installing-cinit.text _BEFORE_ installing. + +Building cinit +-------------- + + "make all" - to build cinit + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/Makefile b/software/cinit/browse_source/cinit-0.3pre9/doc/Makefile new file mode 100644 index 00000000..bd14b6dd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/Makefile @@ -0,0 +1,104 @@ +# +# Makefile stolen from ccollect +# Nico Schottelius, Fri Jan 13 12:13:08 CET 2006 +# + +A2X=a2x +ASCIIDOC=asciidoc +DOCBOOKTOTEXI=docbook2x-texi +DOCBOOKTOMAN=docbook2x-man +XSLTPROC=xsltproc +XSL=/usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl + +# +# Asciidoc will be used to generate other formats later +# +MANDOCS = man/cinit.text +USERDOCS = user/compiles.on.text user/configuring.cinit.text \ + user/conf-system.text \ + user/cross-compiling.text user/current-init-problems.text \ + user/daemons.backgrounding.text user/dependencies.text \ + user/example-directory-structure.text \ + user/installing-cinit.text user/paths.text \ + user/profiles.text user/README.text +DEVELDOCS = devel/codingguideline.text +DOCS = $(MANDOCS) $(USERDOCS) $(DEVELDOCS) + +# +# Doku +# +HTMLDOCS = $(DOCS:.text=.html) +DBHTMLDOCS = $(DOCS:.text=.htm) + +#TEXIDOCS = $(DOCS:.text=.texi) + +MANPDOCS = $(MANDOCS:.text=.man) + +DOCBDOCS = $(DOCS:.text=.docbook) + +DOC_ALL = $(HTMLDOCS) $(DBHTMLDOCS) $(TEXIDOCS) $(MANPDOCS) + +# +# End user targets +# +help: + @echo "----------- documentation make targets --------------" + @echo "documentation: generate HTML, Texinfo and manpage" + @echo "html: only generate HTML (via asciidoc/docbook/xsltproc)" + @echo "htm: only generate HTML (via asciidoc)" + @echo "info: only generate Texinfo" + @echo "man: only generate manpages" + @echo "pdf: only generate pdfs (requires: fop)" + +install: + +# +# Internal targets +# +html: $(HTMLDOCS) +htm: $(DBHTMLDOCS) +info: $(TEXIDOCS) +man: $(MANPDOCS) +documentation: $(DOC_ALL) + + +# +# Generic targets +# + +# docbook gets .htm, asciidoc directly .html (or the other way round) +%.html: %.docbook + ${XSLTPROC} -o $@ ${XSL} $< + +%.htm: %.text + ${ASCIIDOC} -n -o $@ $< + +%.docbook: %.text + ${ASCIIDOC} -n -b docbook -o $@ $< + +%.texi: %.docbook + ${DOCBOOKTOTEXI} --to-stdout $< > $@ + +%.mandocbook: %.text + ${ASCIIDOC} -b docbook -d manpage -o $@ $< + +#%.man: %.mandocbook +# ${DOCBOOKTOMAN} --to-stdout $< > $@ + +%.man: %.text + ${A2X} -f manpage $< + +%.pdf: %.text + ${A2X} -f pdf $< + +# +# Distribution +# +clean distclean: + rm -f $(DOC_ALL) + +# +# Be nice with the users and generate documentation for them +# +dist: distclean documentation + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/README.text b/software/cinit/browse_source/cinit-0.3pre9/doc/README.text new file mode 100644 index 00000000..46fe59fe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/README.text @@ -0,0 +1,57 @@ +cinit/doc +========= +Nico Schottelius +0.1, Initial Version from 2006-11-30 +:Author Initials: NS + +This directory contains the cinit documentation. + +Files and directories in this directory +---------------------------------------- + +ancient +~~~~~~~ +Old documents, only thought to irritate you. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +braindumps +~~~~~~~~~~ +Files I used to make the situation clear to myself. +They are not interesting for most people and may contain +obsoleted or wrong information. + + +devel +~~~~~ +Developer related documents. Contains information for adding code, +for developing external tools to cinit or code guidelines for writing +patches to cinit. + + +logs +~~~~ +Logfiles or raw data dumps. + + +Makefile +~~~~~~~~ +The makefile used to generate the documentation. + + +man +~~~ +Manpages. + + +README.text +~~~~~~~~~~~ +This file + + +user +~~~~ +The most important part: Documentation for users (aka sysadmins, +hackers, endusers?): Explains howto install, configure, use and +debug cinit. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/README b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/README new file mode 100644 index 00000000..45e193f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/README @@ -0,0 +1,16 @@ +Ancient +======= +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-02 + + +These files may be incorrect, outdated, totally wrong or even trying +to take over world dominance. + + +Why are they still there? +------------------------- + +Just because to document the early days of cinit. If you are +a software archaeologist in the year 2423, you'll be happy that +I saved those files. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/caveats b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/caveats new file mode 100644 index 00000000..5ab123e7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/caveats @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +'Geheimnisse' in German, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +- Dependencies beginning with a '.' (dot) are ignored. + So you can temporarily disable a dependency moving it to + want/.name + +- Why is the name of the socket "coala"? + Well, coala could mean 'cinit object abstract layer access', but + perhaps it's a much simpler reason. + +- cinit will start a little bit faster if you omit non needed + 'wants' and 'needs' dirs as they need to be scanned if they + do not exist + +- Currently there is no support to react on 'ctr+alt+del': + 1. It is not handled to switch on / off + (Linux: See man 2 reboot and /proc/sys/kernel/ctrl-alt-del) + 2. If the kernel handles it and sends signals to cinit + (SIGINT on Linux) they will be ignored. + There is no problem in implementing a handler for this signal, + the only reason why it is not there + (well, a template is in old/sig_special.c) is that nobody + could tell me what would be the most senseful thing to handle + ctrl-alt-del. If you can, I'll perhaps integrate it. + 3. ctrl-alt-del is currently disabled under Linux within + the service local-tuning/ctrl-alt-del + +- cinit ignores the Keyboard request + Same thing with 'ctr-alt-del': SIGWINCH is sent, but I don't + know what to do when recieving it. + +- cinit does not care about its pid + nor does cinit care if it is already running + + in serv/cinit.c is a line calling run_init_svc(). + If you call that only if getpid() == 1, cinit will behave like sysvinit + and refuse to start if pid is not 1. + + Currently cinit has no chance to control whether it's started or + not as /etc/cinit/tmp mounted again for every start. + +- cinit will sleep after respawing if ... + + a) the service did not terminate normally (!WIFEXITED(status)) + b) the service did return a non-zero exit status + +- sleeping before rechecking if a service is finished can be optimised + + Currently run_svc() checks every SLEEP_RERUN seconds (default: 1), + if the service it should start was finished by another instance + of run_svc(). As run_svc() internally uses nanosleep() for sleeping, + one could modify run_svc to use conf/sleep_rerun as a nanoseconds + value. This would add most likely much often checking, but would + result in faster results from run_svc. + What's the best value for SLEEP_RERUN is currently unknown. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/author b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/availability b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/availability new file mode 100644 index 00000000..cfb3f8a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/availability @@ -0,0 +1 @@ +cinit is currently Linux-specific. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/examples b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/examples new file mode 100644 index 00000000..1a7d2dcb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/examples @@ -0,0 +1 @@ +See http://linux.schottelius.org/cinit/#config diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/files b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/files new file mode 100644 index 00000000..4d6c0921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/files @@ -0,0 +1,5 @@ +/sbin/cinit - the init system +/sbin/cservice - control cinit +/sbin/cinit.reboot (/sbin/reboot if non-existent before) +/sbin/cinit.shutdown (/sbin/shutdown if non-existent before) +/etc/cinit - configuration directory diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/long_description b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/long_description new file mode 100644 index 00000000..18c3c082 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/long_description @@ -0,0 +1,5 @@ +cinit is a fast executing, small and simple init with support for profiles. It +minds dependencies (hard and soft, 'needs' and 'wants') and executes processes +in parallel. And it has a simple configuration, which makes many shell-scripts +unecessary (but you still could use them if you really want), which leads to +better performance and less memory using. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/meta/name new file mode 100644 index 00000000..b853da25 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/meta/name @@ -0,0 +1 @@ +cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/parameters b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/parameters new file mode 100644 index 00000000..54df4727 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/parameters @@ -0,0 +1 @@ +cprofile: diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/path b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/path new file mode 100644 index 00000000..37edf339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/path @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/see also b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit.commands b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit.commands new file mode 100644 index 00000000..d34d13bd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cinit.commands @@ -0,0 +1,73 @@ +-------------------------------------------------------------------------------- +cinit commands, +Nico Schottelius 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +cinit allows communication through a socket (see ipc.thoughs for reasons). + +Sockets allow to find out the accessing uid, gid and pid (using SO_PEERCRED as +socketoption). + +The communication-protocol is binary, the implementation can be found +in comm/* mostly (clients use begin_msg() and server sigio() additonally). + +-------------------------------------------------------------------------------- +Protocol overview +-------------------------------------------------------------------------------- + +Any communication begins with a command. A command is a one byte +unsigned char. Depending on the command, the communication has its own +semantics. + + +Commands are: (values can be found in cinit.h) + + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Detailled command-listing +-------------------------------------------------------------------------------- + +CMD_START_SVC + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: + a) status of service + b) fail + +CMD_CHG_STATUS: I want to change the status of a service. + 0. int len; + 1. char *svc; + 2. char status; /* status: + once: started successfully the service once. + fail: tried to start once, but the service exit ungracefully + respawn: I am on it, as soon it exists I'll restart! */ + 2. pid_t pid /* the pid of the service, if started once + or the pid of the service watcher, if respawning */ + + cinit returns: MSG_OK|MSG_FAIL (char) + +CMD_STOP_SVC: Please shutdown a service and its dependencies. + 1. int len; /* length of service name, including \0 */ + 2. char *svc; /* name of the service, absolute pathname */ + + cinit returns: Status of service (should be ST_OFF) + + +The following commands do not return anything nor do they need any parameter: + +CMD_RESCUE: Kill everything, and spawn a sulogin shell. Irreversible. +CMD_HALT: Halt the system. +CMD_REBOOT: Reboot the system. +CMD_POWEROFF: Power-off the system. +CMD_UPDATE: Update cinit, hot-reboot the system. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/author b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/author new file mode 100644 index 00000000..aa021fa0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/author @@ -0,0 +1 @@ +Nico Schottelius diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/long_description b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/long_description new file mode 100644 index 00000000..82818a93 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/long_description @@ -0,0 +1 @@ +cservice controls cinit. Please use cservice -h for help. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/meta/date b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/meta/date new file mode 100644 index 00000000..7dc64037 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/meta/date @@ -0,0 +1 @@ +2005-08-21 diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/meta/man_section b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/meta/man_section new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/meta/man_section @@ -0,0 +1 @@ +8 diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/meta/name b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/meta/name new file mode 100644 index 00000000..49c847bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/meta/name @@ -0,0 +1 @@ +cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/meta/short_description b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/meta/short_description new file mode 100644 index 00000000..34837bde --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/meta/short_description @@ -0,0 +1 @@ +fast executing, small and simple init with profile-support diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/parameters b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/parameters new file mode 100644 index 00000000..605b08b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/parameters @@ -0,0 +1 @@ +[-eaphru] [thilo] diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/path b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/path new file mode 100644 index 00000000..85b0cb56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/path @@ -0,0 +1 @@ +/sbin/cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/see also b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/see also new file mode 100644 index 00000000..cb5ee6f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/see also @@ -0,0 +1 @@ +http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/synopsis b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/synopsis new file mode 100644 index 00000000..81c1e93c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/cservice-doc/synopsis @@ -0,0 +1 @@ +/sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/extern/README b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/extern/README new file mode 100644 index 00000000..e734d6d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/extern/README @@ -0,0 +1,2 @@ +doc/extern/ + Some things related to cinit from the outside world. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/extern/ipc.thoughts b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/extern/ipc.thoughts new file mode 100644 index 00000000..e2619d34 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/extern/ipc.thoughts @@ -0,0 +1,83 @@ +-------------------------------------------------------------------------------- +Thoughts about different UNIX-IPC, +Nico Schottelius, 2005-04-28 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +Howto cinit communicates with + a) cinit-forks + b) any other program + +a) cinit-forks + +a.1) shared memory + +Access could generally be done with shared memory. The problem with +that is, that -lrt is required, which implicits -lpthread, which +makes linking staticly problematic (at least for glibc). + +a.2) pipes + +A maximum of ~510 pipes could be used ( (1024-3)/2 ), +1024 is the maximum opened file deskriptors, +minus 3 (stdin/stdout/stderr) already opened, divided +by two, because two fds needed per client. + +Pipes cannot be used easily through forks of forks. + +a.3) fifos + +FIFOs are easy to use, but you would need to create two FIFOs +for _every_ service, as with only two FIFOs we cannot reliable +detect, _who_ is writting to us currently and who wants to read. + +The same limit as above is true for fifo, too: A maximum of ~510 +services. + +a.4) system-v-ipc + +No documentation found nor tested. + +a.5) sockets + +Are indeed a very clean way. There's only one problem: +bind() fails on read-only mounted devices: + + - The socket either does not exists and cannot be created + - or the socket exists, but bind() refuses to reuse it + (error: Address already in use) + +Imho bind() should even honour the socket-option SO_REUSEADDR, +which allows to re-use a socket, if there's no other program bound to. + +As far as I can see, SO_REUSEADDR is only honoured, if socket is of +type PF_INET (we use PF_UNIX) and POSIX does only specify how to +check for support, but not that sockets have to be able to use +SO_REUSEADDR (see posix.aardvark.bug.report). + +That way, we are forced to mount a temporarily filesystem on +/etc/cinit/tmp and create the socket below this directory. This is not +the clean and easy solution one would wish. Still, sockets +seem to be the cleanest and most reliable way to have IPC for +this situation. + +See socket(2), bind(2), listen(2), accept(2), socket(7) and unix(7) +for help. + +b) any other program + +What you can do is to tell cinit to + - reboot, + - halt, + - poweroff, + - update itself (hot-reboot) + - and to start a rescue mode (see using.rescue). + +Simple send cinit a signal, what to do: + HUP: reboot + USR1: halt + USR2: rescue + TERM: poweroff + CONT: update + +See signal(2) and signal(7) for help and serv/sig_reboot.c for implementation. +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/extern/ipc.usenet.posting b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/extern/ipc.usenet.posting new file mode 100644 index 00000000..28abcec3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/extern/ipc.usenet.posting @@ -0,0 +1,48 @@ +From: Nico Schottelius +Subject: Unix IPC, socket/AF_UNIX; bind on r/o devices? +Date: 09 May 2005 09:51:27 GMT +To: comp.unix.programmer + +Hello! + +Situation: + - everything mounted readonly (as when starting the system) + - one process with n children, which may have n children (recursive) + - all the children and children of children should be able to talk to the + first parent + +Problem: + - Using bind() will fail, because + a) socket cannot created + b) the existing socket cannot be reused + +Other possibilities not working: + - shared memory is not an option, as one need + -lrt, which needs -lpthread, which is problematic to link statically + + - pipes: handling the pipes from parent to child of child of child + would be hard to program + + - socketpair: should be the same problematic as it's with pipes + + - fifos: one would have to create the fifos before and two fifos + for each child; possible, but very unelegant; and one would have + to memorize, which child is connected to which fifo; again possible, + but somehow unelegant + + - signaling: one could implement communication with some kind of + morse code with signals, but that won't be a good solution + +Questions: + - Is there any way, case b) (socket already existing) can be solved in + a way that I tell bind() to use an existing socket? + - What would be the best solution to talk bidirectional to clients + in this scenario? + +I appreciate any hint, as I really like the socket mechanism and would +like to keep it. + + +Thanks in advance, + +Nico diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/extern/linux.kernel.eats.arguments b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/extern/linux.kernel.eats.arguments new file mode 100644 index 00000000..dbaf57d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/extern/linux.kernel.eats.arguments @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +Linux, the kernel, eats arguments +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +If you specify + + variable=value + +to the Linux kernel, the argument will NOT be passed to cinit. + +Here's the relevant code block from init/main.c of the Linux kernel: + +------------------------------------------------------------------------------- + +From init(void * unused) the function run_init_process(char *init_filename) +is called, which passes argv_init (char * argv_init[MAX_INIT_ARGS+2]) to init. + +First init_setup(char *str) resets all elements of the argv_init to NULL. + +The function unknown_bootoption(char *param, char *val) fills the +argv_init array, but only with parameters, which have no value +(val). + +The function parse_args calls unknown_bootoption with the unknown options. + +------------------------------------------------------------------------------- + +This way the profile support in all cinit versions below cinit-0.1 will +only work if you change conf/profile, because "cprofile=value" will +not be given to cinit, because it's not treated as a command line option. + +The original value "cprofile=" is replaced by "cprofile:" as of cinit-0.1. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/extern/posix.aardvark.bug.report b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/extern/posix.aardvark.bug.report new file mode 100644 index 00000000..0c606b41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/extern/posix.aardvark.bug.report @@ -0,0 +1,52 @@ +To: austin-review-l__AT__opengroup.org +From: nico-posix__AT__schottelius.org +Subject: Bug in TC2-d6 bind - bind a name to a socket +Reply-To: austin-group-l__AT__opengroup.org + + Bug report from : Nico Schottelius , cLinux + +(Note that the reply-to line automatically redirects +to austin-group-l__AT__opengroup.org for further discussion on bug reports) + +@ page 1 line 0 section bind - bind a name to a socket objection {-1} + +Problem: + +bind should 'assign a name to a socket', but in particular environments it will fail, where it could succeed. + +Long Description: + +When opening a new socket, with type PF_UNIX +(sock = socket(PF_UNIX,SOCK_STREAM,0);) and one sets +the socket option SO_REUSEADDR +(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))), +bind does not honour this setting. + +It is reported on irc channels, that SO_REUSEADDR is only supported on +PF_INET sockets and that's what I would claim a bug. + +If a socket exists in the filesystem and no process is bound to +it, bind wail fail anyway. + +This is especially problematic, when one is in an environment, +which is pre-startup (like beeing init) and one wants to use +sockets, but everything is mounted read-only. + +So, if bind() would honour the option, it would be able +to bind() to a socket, which exists (as creating one on a +read-only filesystem is not possible). + + + +Action: + +Proposal: + +Add better specification to either socket(7) or bind(2), which +explains the behaviour of bind, when this option is set +or even better: Specify, that bind should take care of this bit, +also when using PF_UNIX. + +In general the socket(7) manpage should explain more in detail +or at least reference other documents (unix(7)?), which explain what the +option for a specific protocol does. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/fun-testing b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/fun-testing new file mode 100644 index 00000000..47e4b74d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/fun-testing @@ -0,0 +1,20 @@ +kind tot 17 ... +Read path: / +Read path: e +Read path: t +Read path: c +Read path: / +Read path: c +Read path: i +Read path: n +Read path: i +Read path: t +Read path: / +Read path: t +Read path: e +Read path: s +Read path: t +Read path: s +Read path: v +Read path: c + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/how_it_works_internally b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/how_it_works_internally new file mode 100644 index 00000000..9c836cb0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/how_it_works_internally @@ -0,0 +1,26 @@ +The following is a very simple process structure of cinit internals: + +cinit-main starts +\ + |-> execute run_init_svc() + | \ run_svc(CINIT_INIT); + | | check status <-------------------\ + | | set status = temp | + | \ check dependencies | + | | fork(run_svc()) for every WANT | + | | run_svc() for every NEED / + | / check if respawning { do .. while(repawn?) + | \ yes: (remember: run_svc _must_ return!) + | | msg_change_status(respawn) + | | add watcher_signal handler to stop! (SIGTERM) + | | fork(exec_svc) <--| + | | waitpid(fork) | while(1) { ... } + | \ sleep(WAIT_SECS) ---/ + | | no: fork(exec_svc) + | \ waitpid(fork) -> yes, wait! + | | msg_change_status + | / + | / + | -> while(1) + | - listen to signals + | - listen on socket diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/init-idea-first b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/init-idea-first new file mode 100644 index 00000000..2d677d8d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/init-idea-first @@ -0,0 +1,38 @@ +- restarting/respawning + touch respawn +- dependencies + a needs started b +- clean multiply dependencies +- start & stop dependencies + start_depends + stop_depends +- parallel executation +- start and stop commands + start -> link + start_param -> parameters, like minit + stop -> link + stop_param -> parameters, like minit + + if no stop command is available, try to kill the pid we started at stop + +/startup/ + start_depends=gettys +/shutdown/ + stop_depends=power_off + + +gettys/ + start_depends=getty/1 + start_depends=getty/2 + start_depends=getty/3 + start_depends=getty/4 ... + +getty/1/ + start=/sbin/fgetty + respawn + +power_off/ + stop_depend=umount + +umount/ + stop_depend= diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/porting.to.other.os b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/porting.to.other.os new file mode 100644 index 00000000..65fdc07b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/porting.to.other.os @@ -0,0 +1,25 @@ +-------------------------------------------------------------------------------- +Porting cinit to other operating systems, +Nico Schottelius, 2005-06-02 +-------------------------------------------------------------------------------- + +cinit is currently Linux-specific. + +It currently does not compile / work on other Unices, because +we use O_ASYNC flag of open(2) which is _not_ a standard. + +This way we can act very elegant on incoming connections by our +forks. If somebody finds a at least as elegant solution +to act on incoming data which is more portable, I would +be happy to recieve a diff -u. + +Additionally we currently do mount a temporarily filesystem +on /etc/cinit/tmp, which allows us to create a socket, where +nothing is mounted r/w yet. + +If a Unix has some kind of tmpfs, this can easily be changed +to the appropriate value in conf/*tmp*. + +The O_ASYNC thing will perhaps become a compile option to cinit +(via conf/socket_function for instance), so that using standard +mechanism will be possible. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/removing.zombies b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/removing.zombies new file mode 100644 index 00000000..9527e652 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/removing.zombies @@ -0,0 +1,48 @@ +-------------------------------------------------------------------------------- +Removing Zombies, +Nico Schottelius 2005-06-15 (Last Modified: 2005-06-15) +-------------------------------------------------------------------------------- + +First of all, the definition of a zombie: + + ''Defunct ("zombie") process, terminated but not reaped by its parent.'' + [Excerpt from ps(1)] + + ''In the case of a terminated child, performing a wait allows the system to + release the resources associated with the child; if a wait is not performed, + then terminated the child remains in a "zombie" state (see NOTES below). + + [...] + + NOTES + A child that terminates, but has not been waited for becomes a "zom- + bie". The kernel maintains a minimal set of information about the + zombie process (PID, termination status, resource usage information) + in order to allow the parent to later perform a wait to obtain + information about the child. As long as a zombie is not removed + from the system via a wait, it will consume a slot in the kernel + process table, and if this table fills, it will not be possible to + create further processes. If a parent process terminates, then its + "zombie" children (if any) are adopted by init(8), which automati- + cally performs a wait to remove the zombies.'' + [Excerpt from waitpid(2)] + + So you can see, that if some process misbehaves and forgets about + its children, we, cinit, will adopt it. In the first versions of + cinit (cinit-0.0.1 <-> cinit-0.0.7) we ignored SIGCHLD. This way + the zombies stayed in the system. Since cinit-0.0.8 we have + sig_chld(), which removes the zombies. + + So far so good. Now let's remove this feature. Yes, you heard right. + + If cinit does not catch the zombies they will stay in the system. + Yes, that's ugly. And that's how it should be. You should see, which + software is broken and should contact the authors to fix it. + + To restore the 'old' behaviour of cinit, change + generic/set_signals.c (ignore SIGCHLD) + Makefile: remove serv/sig_child.c from modules list + + cinit in general will keep the behaviour of reaping the vestiges, + which broken software left behind (as it is cleaner for the system to + deallocate unused ressources). diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/security b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/security new file mode 100644 index 00000000..f1dac591 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/security @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +security, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +A little note about cinit security and how to exploit it: + +cinit trusts its socket, /etc/cinit/tmp/coala. If somebody not +authorised has access to it, your system is taken over. + +Through this socket anybody with write access can: + + - shutdown, restart and power-off the host + - spawn a local unprotected shell + - execute anything as the user cinit runs (most likely root) + +Currently cinit does not care very much about the socket permissions. +On my system this creates a socket with srwxr-x-rx permissions, which +isi suitable for normal operation, which will not accept connect() +by others than root. + +But you can also loosen the security and allow people from a specfic group +to control your system: + + ei # chmod 770 /etc/cinit/tmp/coala + ei # chown root:cinit /etc/cinit/tmp/coala + +Now everybody in the cinit group can control your system. +Please think twice before doing that, as you read above, anyone from +the cinit group may start a root shell on the initial console then! + +For extra parnoid settings you can do the following: + + ei # chmod 700 /etc/cinit/tmp/coala + ei # chown root:root /etc/cinit/tmp/coala diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/socket.poll_vs_o_async b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/socket.poll_vs_o_async new file mode 100644 index 00000000..477f2bff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/socket.poll_vs_o_async @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------------- +Socket: poll(2) vs. O_ASYNC, +Nico Schottelius 2005-06-22 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +0. General problem +1. O_ASYNC +2. poll(2) + + +0. General problem + +cinit has to react, as soon as there's data on the socket. + +1. O_ASYNC + +When you open a socket with O_ASYNC (or specify it with fcntl(2)) under +Linux, your process recieves the SIGIO signal from the kernel, as soon +as data is available. + +The problem is the handling of signals seems not to be serialised: + +The function, which is called on the SIGIO signal (called sigio() here) +calls other functions. Those functions way recieve SIGIO while working, +so the first data stream is not yet finished, though the next +stream is beeing read. + +This gives very nice race-conditions, which are very nice to debug. + +2. poll(2) + +poll(2) is a standard Unix-call (XPG4-UNIX), which waits a specific +timeout (or infinite time if you specify a value less that zero) for +the socket (or the fd in general) to be in a state where +data is available to read (in fact poll can do much more, but we are +not interested only in POLLIN and POLLPRI). + +While poll(2) seems to be a very bit slower than sigio it works reliable. + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/thoughts.closed b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/thoughts.closed new file mode 100644 index 00000000..91a8e080 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/ancient/thoughts.closed @@ -0,0 +1,52 @@ +-------------------------------------------------------------------------------- +Closed thoughts, +Nico Schottelius, 2005-05-XX (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. using SIDs (service IDs) to communicated with external processes + + This was a very bad idea: The external program could exploit us by + specifying an arbitary big SID (as the SID is simply the index + of our service array). + +2. using function pointers to handle messages + + Seems like it works fine. We have handlers for each + message (do_*), which are called by client and server. + The function pointer is simply to read or write, dependending + if it is the client or the server. This way we don't need + to rewrite communications parts. + +3. Using different storage + + First all services were saved in a service array of the size + MAX_SVC. This has been replaced by a double-linked list. + Have a look at serv/list.c. + +4. Using sockets for IPC (between cinit forks) + + Works very fine, though we have to mount a temporarily fs before. + +5. Removing the maximum number of direct dependencies + + Is not planned, as it looks like the current number (32, see + conf/max_deps) seems to be much more than needed. And if + one really needs more, simply increase conf/max_deps. + +6. Using a directory params with 1,2,3,4 for argv + + This would make substituting a single argument easier, but only + if you know which one you have to change. This would add + an additional dirent(), which would not replace the current read(), but + add more open() and close()s. As this does not seem to make live + easier for system administrators, this is not implemented. + If you really like it, hack client/exec_svc.c + +7. Using TCP/IP sockets + + This would be a very small change in the code, but would allow + to control cinit over network. Since there is no authentication, + this would be highly insecure. On the other hand, cinit + could control the parallel start of many hosts, if they + should become 'one' computer at the end. As this is not needed + currently, it's not implemented. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/README.text b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/README.text new file mode 100644 index 00000000..c4947a13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/README.text @@ -0,0 +1,2 @@ +DO NOT READ CONTENT IN THIS DIRECTORY. +(or at least do not blame me, if you get really confused after reading it) diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/big-picture.text b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/big-picture.text new file mode 100644 index 00000000..4426c236 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/big-picture.text @@ -0,0 +1,122 @@ +Just a small hint-file for me to see how cinit works: + + - cinit starts + * cinit executes either init or a profile + - the dependency-tree begins + + - now cinit begins to try to execute the dependencies + * first the needs (if those fail, wants are never called) + - fork() for every dependency? + +-------------------------------------------------------------------------------- +another idea: + + - cinit starts + - cinit reads the full depedency tree + * it builds n-depth trees + * it begins at the set init service (profile or init!) + * init is the first entry. always. + * read full service information (like on/off/params/respawn) + * design of each tree element: see below + - add a tree for the needs + - add a tree for the wants + - the elements have links, one service is created only once + - after the tree is created, execution begins + * begin from the bottom + * save a pointer to the last level somehow before? + +Pre calculation: + - need to act on changes (some kind of file watcher) + * need to keep status (?) + * what with now missing needs / wants? + - missing needs: shutdown now missing needs? + - simply ignore them? + - shut them down if not needed (no one has a link in needs?) + * +-------------------------------------------------------------------------------- +Sample dependency tree: + + init + / \ + needs wants + / | \ / | \ + a b c d e f + / | \ / | \ + needs needs needs END needs END + / | \ \ | | | | + b c d c f a e a +-------------------------------------------------------------------------------- +How this would be sorted:: + init: + needs: a b c + wants: d e f + a: + needs: b c d + b: + needs: c f + c: + needs: a e + d: + - + e: + needs: a + f: + - +-------------------------------------------------------------------------------- +So in this case, cinit may start services the following way: + d f + -> Wouldn't be possible in pre-calculation, because of circular dependencies. +-------------------------------------------------------------------------------- + Try a 'real' dependency tree: + a needs b c d + b needs c d + c and d do not need other stuff +-------------------------------------------------------------------------------- +Now cinit would it do the following way: + start c, start d + b will be started, as soon as c and d successfully finish + as soon as b is finished, a will be started +-------------------------------------------------------------------------------- +Now let's think about how this could look like in code... +- when we built up the tree, we have some ends (n to say) +- we can / must start starting (;-) at the end +- we would have more than one line back (z may be needed by c, i, and a) + * like in "c is needed by s, c, o" + * maxdepth counter? + * asynchronous rollback? + +--> to think more about it! +-------------------------------------------------------------------------------- + +tree elements: + * name (= path) + * on, off, +params + * respawn_delay + - -1 if not respawning + - >= 0 time to wait between restart + * status + - NOT STARTED (status on initialisation) + - RESPAWNING (running, respawning) + - RESPAWN_DELAY (waiting to respawn it) + - ONCE (started once) + * errormsg + - pointer to an error message in case of failure + * needs + - List of services we need + * wants + - List of services we want + * used_by + - List of services which use this service +-------------------------------------------------------------------------------- + +Conclusions +------------ + +cinit as the main executor +~~~~~~~~~~~~~~~~~~~~~~~~~~ +If cinit should start all services directly and manage dependencies +only internally, it will need to have build a reverse dependency tree, +so it begins starting at the end. + +cinit could execute all possible parallel running services in parallel +and open pipes to the (dumb) service executors. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/circular-dependencies.text b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/circular-dependencies.text new file mode 100644 index 00000000..dcc91ea7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/circular-dependencies.text @@ -0,0 +1,35 @@ +What todo with circular dependencies? + a needs b + b needs a + + - try to start them? + status a: is_starting + status b: not_set + a wants b, so a service starter for b starts + status a: is_starting, waiting for b + status b: is_starting + service starter for b sees that a is needed + service starter for b sees that a is already being started + service starter for b begins to execute b + status a: is_starting, waiting for b + status b: is_starting, executing "on" + service starter b finishes + status a: is_starting, waiting for b + status b: FAILED | RESPAWN | ONCE + service a continues + b successful: execute on + b failed: register / print that we do not start, because + b failed + + -> this would only catch possible deadlocks, if the dependency + tree / status check is done dynamically + -> in case of pre-building the dep-tree this situation must + be concerned: + - start both a and b? + - or stop due to circular dependency? + + - Abort on detection of a circular dependency + * possible without pre-calculating? + - perhaps only with direct communication possible? + * pre calculate + - do not start that services? diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/converting-debian b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/converting-debian new file mode 100644 index 00000000..ee40fdff --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/converting-debian @@ -0,0 +1,30 @@ +# If you would like to automatically convert a debian system, you could +# use this script as a start point +# +# how it could look like +# + +# create cinit base configuration + +# analyse enabled services +level=$(awk -F: '/^id/ { print $2 }' /etc/inittab) +rcdir="/etc/rc${level}.d/" +initdir=/etc/init.d + +cd "$rcdir" +for svc in *; do + if [ -d "${debian_map_dir}/${svc}" ]; then + echo "Adding $svc" + else + + fi +done + +# Also add existing services in /etc/init.d +for ... + if [ ! -e $rcdir/$svc ] + if [ -d "${debian_map_dir}/${svc}" ]; then + echo "Adding, but not enabling" + fi + fi +done diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/converting-general b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/converting-general new file mode 100644 index 00000000..8a0a2e40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/converting-general @@ -0,0 +1,10 @@ +kern=$(uname -s) + +case "${kern}" in + $known_kern) + $scriptdir/$kern + ;; + *) + echo "Unknown system" + ;; +esac diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/creating-new-configurations b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/creating-new-configurations new file mode 100644 index 00000000..a251de5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/creating-new-configurations @@ -0,0 +1,6 @@ +scripts/create_baseconfig.sh # create base +scripts/cinit.install.standard.dirs # create common categories + +- create fsck +- set hostname +- create getty(s) diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/messages.text b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/messages.text new file mode 100644 index 00000000..f4ef769e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/messages.text @@ -0,0 +1,6 @@ +This document describes the messages used between cinit and its +"clients" (i.e. ccontrol, cservice, cinit.halt, ...): + +Signal messages +--------------- +As signals diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/possible_service_pre_calculation.text b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/possible_service_pre_calculation.text new file mode 100644 index 00000000..96ec3a73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/possible_service_pre_calculation.text @@ -0,0 +1,19 @@ +- start at + * create a new service entry (if not exists) <--- + * reads needs | + - follow dependencies ------------------------ + * only if service does not yet exist! | + * read wants | + - follow dependencies ------------------------ + * only if service does not yet exist! + * create + - needed by entry in dependencies + - needs entry in service + - wanted by entry in dependencies + - wants entry in service + + * record + - (on,off)(,.env,.params)? + - alternatively put that code into service starter + * add services without further needs into a special + "begin" structure to be reused at fireing of the services? diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/possible_service_status.text b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/possible_service_status.text new file mode 100644 index 00000000..eb0f21e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/possible_service_status.text @@ -0,0 +1,14 @@ + + - NOT_SET: this service has not yet been initialized + - RESPAWNING: happily respawning + - RESPAWN_DELAY: waiting delay before restarting + * HINT: using alarm()? + - senseful for single process service watcher + * HINT: using nanosleep()? + - senseful for per service process watcher + - NEED_FAILED + * add a (somehow terminated) list of services that failed? + * use global status to checkout which services failed? + - WANT_FAILED? + * NOT NECESSARY, it is a simple want, we do not need it. + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/registering_needs_wants.text b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/registering_needs_wants.text new file mode 100644 index 00000000..ededbd41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/registering_needs_wants.text @@ -0,0 +1,55 @@ +Each service has a list of services it + - needs + - is needed by + - wants + - is wanted by + + +Each entry is a service pointer. +The simplest list could look like this: + + service a: + needs: + b f g NULL + +So the needs pointer is NULL terminated: + needs = realloc(count_links) + -> how to get the count? + 0x02 + 0x + + Better: A double linked list (like the main service list)? + +Could look like: + service a: + needs: + *service + *next + *prev + +This design could also be used for wants. + +On the other hand, we've to register us at the needed/wanted service: + + service b: + needed_by: + *service + *next + *prev + + +So each service needs four pointers: + needs + needed_by + wants + wanted_by + +And on each request both lists have to be modified! + +Example: + + Service "a" adds "b" as needed: + + - add "a" needs "b" + - add "b" needed_by "a" + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/root-vm-testing b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/root-vm-testing new file mode 100644 index 00000000..a8773dea --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/root-vm-testing @@ -0,0 +1,9 @@ +[19:33] denkbrett:root% cat uml-mount.sh +SDIR=$(dirname $0) +DDIR=$(dirname $0)/root +sudo mount "$SDIR/Debian-3.0r0.ext2" "$DDIR" -o loop,acl + +denkbrett# tar cfj ~nico/projekte/cinit/conf-vm-2007-03-05.tar.bz2 cinit +denkbrett# chown -R nico cinit +denkbrett# chown nico ../sbin + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/shutdown.text b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/shutdown.text new file mode 100644 index 00000000..ac76425d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/shutdown.text @@ -0,0 +1,84 @@ +cinit - braindumps - shutdown +============================= +Nico Schottelius +v0.1, for cinit-0.3, 2007-01-11 +:Author Initials: NS + +Just some braindumps. Do not read. + +Introduction +------------ +Shutting down the system. + +When? +----- +- reboot +- halt +- power off +- further needed? + +How / What? +------------ +- Stop services in the correct order + * reuse the service tree / needs / needed_by! + * call off, if existent + * if respawning, send SIGTERM? + - not if off is existent? + * give some variables to off? + - $RESPAWN_PID: if respawning +- send SIGTERM to other apps? + * or put that into special? special/post_svc_shutdown +- call special/{halt,poweroff,reboot} + * no, implemented that directly into cinit! +- implement timely controlled shutdown: + * cinit.shutdown forks (?) itself and waits, then sends a signal + to cinit to initiate the shutdown process + * create mappers for target OS + - Linux + - {free,net,open}bsd + - others may contribute theirself +- also implement poweroff + * kill -TERM 1 +- also implement reboot + * kill -HUP 1 +- also implement halt + * kill -USR1 1 + + +The implementation +----------------- +x shutdown is initiated +x disable communication (nobody can influence us anymore) +x install special signal handler? + - no. we do not care about zombies anymore, we are gone soon anyway + - simply reset to the default +- begin to shutdown services + * where to start? + * begin shutdown at the end of the tree, viewing/sorting it by the 'needed_by' + -> where to begin sort? + -> worst implementation: scan all services (easy for now) + -> result: list of services, that noone needs :-) + * stop those services and step above + - stop a service, as soon as noone needs it anymore + * check all needed_by links + * more or less the inverted gen_svc_tree +- how to shutdown a service + * if existing, call off + - if off does not exist: + * if respawn: send sigterm to the process + * also implement sigkill at this stage? + - think we can delay it to the end + - otherwise users can use off! + - implement environment for off ($cinit_respawn_pid, $cinit_service_name) + - do *NOT* care about the return value, we can't do anything for it + anymore anyway +- after all services are shutdown, kill all remaining services + * SIGTERM + * wait(defined_time_in_seconds) + * SIGKILL +- call the last command + * to cleanup the system + - umount -a (if needed) + - swapoff (if needed) + - sync (if needed) +- switch off diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/sizes b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/sizes new file mode 100644 index 00000000..ddd30f75 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/braindumps/sizes @@ -0,0 +1,6 @@ +sysvinit: +root 1 0.0 0.0 1944 648 ? Ss 02:12 0:00 init [2] + +cinit-0.3pre8-glibc-linux: +compiler 25323 0.0 0.0 1564 392 pts/2 S+ 20:22 0:00 ./cinit + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/devel/README.text b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/README.text new file mode 100644 index 00000000..20524651 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/README.text @@ -0,0 +1,18 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit development documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +(cinit-)developers. + +Content +------- diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/devel/cinit-0.4.text b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/cinit-0.4.text new file mode 100644 index 00000000..61b718f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/cinit-0.4.text @@ -0,0 +1,115 @@ +cinit 0.4 - Redesign of cinit +============================================ +Nico Schottelius +0.4.0, for cinit 0.4, Initial Version from 2006-03-11 +:Author Initials: NS + + +cinit 0.2 ran fine and the general project of developing a +parallel executing init system is finished. +With cinit 0.4 there are new aims to reach. + + +Introduction +------------ + +. AIMS + - portability: no Linux-dependency anymore + - cleaner signal handling + - better documentation so more people can use it + + +Current problems +---------------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The mount(2) system call is os-specific. +The temporary fs is os-specific. + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Race conditions when multiple signals arrive + + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +serv/sig_reboot.c contains umount, remount hard coded. + + +Solutions +--------- + +Temporary filesystem and socket problematic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Remove +- the mount call +- do not create an initial socket + +Wait until we recieve a signal, then we create a socket +under the configured socket directory (see `conf/sockdir`). + + +Signal handlers are not clean +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Reboot code is os specific +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +Misc +~~~~ + +- Configuration + /etc/cinit/config/ + init -> link to initial service + pre_boot + pre_boot_args + post_boot + post_boot_args + /etc/cinit/services/ + /etc/cinit/profiles/ + links to the starting services + + + +cinit - Internals +================= +Nico Schottelius +0.1 for cinit-0.3, Initial version: So Feb 19 10:25:46 CET 2006 +:Author Initials: NS + + +Introduction +------------ +This document describes the internals of cinit. It is thought +to be read by developers. + + +Child handler code in cinit-0.3 +------------------------------- + +In cinit versions <= cinit-0.2.1 the respawning services where +handled by an extra child handler, which was a fork of cinit. This +had some problems: + + - We allocated more memory than necessary, unecessary parts of + cinit were copied + - The SIG_CHILD-handler was not written very clean, in some versions + it was completly missing. + + +. So in `cinit-0.3` we changed it the following way: + - no extra child handlers + - handle everything in the SIG_CHILD handling function + - when sig_child is recieved do: + - check against respawn list + - if it is a respawning service, [do the following in a seperate fork?] + check whether it successfully stoped + - if yes: restart immediatly + - if no: sleep $sleep_time and then restart diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/devel/codingguideline.text b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/codingguideline.text new file mode 100644 index 00000000..d4686d8f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/codingguideline.text @@ -0,0 +1,149 @@ +Coding style +============ +Nico Schottelius +0.1, for cinit, Initial version from 2006-11-13 +:Author Initials: NS + +This document describes the coding style used in cinit. + + +Indent +------ +Indent the code by 3 spaces for each level. +Indent variable names, so the names begin all at the same position. +Use three spaces to place them. + + +Whitespaces +----------- +Where to put or avoid whitespaces (space or linefeed (lf)). + + +Spaces +~~~~~~ +- After closing brace "if(test) return 0;" +- Spaces before and after '=', '>', '<', '==', '!='', '>=', '<=', '>>', '<<', '&', '&&', '|', '||' +- After start of comment and before end of comment: '/* text */' + + + After ')', ',' + +No spaces +~~~~~~~~~ +- Within braces and code "(!test)", +- Before braces "if(code)" +- No space before ), so if '))', do not put a space after the first ')' + + +Linebreaks +~~~~~~~~~~ +This somehow includes the setting of braces (indirectly through (not) setting +spaces. + +If +^^ + +Put the if, the braces and the opening curly brace on one line, +put the closing one together with `else` and the new opening +curly brace on one line: + +------------------------------------------------------------------------------ +if(...) { + /* code */ +} else { + /* else: code */ +} +------------------------------------------------------------------------------ + +While +^^^^^ +------------------------------------------------------------------------------ +while(condition) { + /* repeat */ +} +------------------------------------------------------------------------------ + +Do-While +^^^^^^^^ +------------------------------------------------------------------------------ +do { + /* something */ +} while(running); +------------------------------------------------------------------------------ + +Switch +^^^^^^ + +------------------------------------------------------------------------------ +switch(value) { + case DO_SOMETHING: + /* code */ + break; + default: + break; +} +------------------------------------------------------------------------------ + + + +Where to put curly braces +------------------------- + +Functions +~~~~~~~~~ +Opening and closing curly braces are placed on a seperate row: + +------------------------------------------------------------------------------ +int func(int params) +{ + body +} +------------------------------------------------------------------------------ + + +If, else, while, do-while +~~~~~~~~~~~~~~~~~~~~~~~~~ +See above. + + +Comments +--------- +where necessery, do not state the obvious in comments: + + /* this code increments tmp */ + ++tmp; + +If there is more than one line containing a comment, try to adjust them +so they look the same in width and position: + +------------------------------------------------------------------------------ + int illuminati = 23; /* do not want to comment that */ + int the_answer_to_everything = 42; /* 42. */ + + [...] + + while(illuminati < the_answer_to_everything) { /* only try before them */ + overtake_world(&self); /* overtake is complex */ + } +------------------------------------------------------------------------------ + + +Header +------- +Put a header into each file, containing: + + - Date of file being put into existence (year is enough) + - Name and e-mail (obfuscated if you want) of the author(s) + - Description of the function + - Copyright statement (if not included GPLv2 or later is assumed) + + +Includes +~~~~~~~~ +Include system headers first, then place own headers. Comment the includes, +wherefore you added them. Example: + +------------------------------------------------------------------------------ +#include /* write */ +#include "cinit.h> /* cinit_ipc_* */ +------------------------------------------------------------------------------ diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/devel/communication.text b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/communication.text new file mode 100644 index 00000000..08db7666 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/communication.text @@ -0,0 +1,224 @@ +cinit - communication +===================== +Nico Schottelius +0.1 for cinit-0.3, Initial version: 2006-08-11 +:Author Initials: NS + +This document describes the internal communication of cinit. +It is thought to be read by developers. + + +Introduction +------------ +This document describes the messages used between cinit, cinit forks +and other programs that want to talk to cinit. It does NOT +describe the communication method, but only the messages sent +(for the communication method read "ipc.text"). + +Document status +~~~~~~~~~~~~~~~ +This document is still being written, it is not finished. + + +About Messages +-------------- + +Order +~~~~~ +The client always initiates the communication. +cinit will begin listening to messages directly after its start. + +Data +~~~~~ +A message always conists of a predefined structure (see src/headers/comm.h). +The byte order is host specific (may be little or big endian). + +Type +~~~~ +Messages are binary data. + +The messages +------------ +The client always uses the same structure (struct msg_client) to contact +cinit. This way cinit does not need to handle dynamic data structures. + +cinit in contrast delivers different data structures to its clients, +depending on the question. + +The questions are issued by any type of client, the internal command used is +noted in square brackets ([]). + +The answers are given by cinit. + + +Question: Start a service (and its dependencies) [CMD_START_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to start the service and its dependencies. + +The client must provide cinit with the following information: +. Name of the service to be started +. Reason why to start it +. eventually additional information (see below) + +The reason +^^^^^^^^^^ +Can be one of: +- RS_NONE (it's a manual start request) +- RS_WANTS (a currently starting service wants to start this service) +- RS_NEEDS (a currently starting service needs to start this service) + +If the reason is RS_WANTS or RS_NEEDS the client must supply the name +of the service, which wants it to be started. + + +Question: Start a service (nothing else) [CMD_START_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to start the service and which will +report the status back. + + +Question: Stop a service (and its dependencies) [CMD_STOP_SVC] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command is issued either by a cinit fork or by an external client. +cinit will start a fork, which tries to stop the service and each service +that 'needs' it. + +This function works recursively, thus also killing those services, that +need the service that need the current service. + + +Question: Stop a service (nothing else) [CMD_STOP_SVC_ONLY] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will start a fork, which tries to stop this service and which will +report the status back. + + +Question: Stop a service (plus 'needs' and 'wants') [CMD_STOP_SVC_WANTS] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Same as 'Stop a service (and its dependencies)', but also stop the +services that want to have this service. + +This function works recursively, thus also killing those services, that +'need' or 'want' the service that 'need' or 'want' the current service. + + +Question: Could you change the status? [CMD_CHG_STAT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A cinit fork reports the new status of a service. + + +Question: Could you start the rescue mode? [CMD_RESCUE] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +spawn the rescue program. + + +Question: Could you halt the system? [CMD_HALT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +halt the system. + + +Question: Could you reboot the system? [CMD_REBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +reboot the system. + + +Question: Could you poweroff the system? [CMD_POWEROFF] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +poweroff the system. If poweroff is not possible, the system will +be halted. + + +Question: Could you warmboot the system? [CMD_WBOOT] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will not give an answer to this question. +cinit will stop all services, kill all other processes and after that +restart itself and the bootup process. + + +Question: Could you send information about a service? [CMD_INFO] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This command may only be issued by an external client. +cinit will respond with detailled information about the service +to the client. + + +Answer: Return short status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Start a service (and its dependencies) + - Question: Start a service (nothing else) + - Question: Stop a service (and its dependencies) + - Question: Stop a service (nothing else) + - Question: Stop a service (plus 'needs' and 'wants') + - Question: Could you change the status? + +cinit only responds the status of the asked service. +The structure send is "asw_sstatus", which only include a status byte. + + +Answer: Return long status of a service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This answer is used as a response to: + + - Question: Could you send information about a service? + + +old Messages (to be transferred into this document) +--------------------------------------------------- + CMD_START_SVC: I want to start a service. + CMD_CHG_STATUS: I want to change the status of a service. + CMD_STOP_SVC: Please shutdown a service. + + CMD_RESCUE: Kill everything, and spawn a sulogin shell. + CMD_UPDATE: Hot-reboot system and reload cinit. + + CMD_HALT: Halt the system + CMD_REBOOT: Reboot the system + CMD_POWEROFF: Power-off the system + +-------------------------------------------------------------------------------- +Service status: + +-------------------------------------------------------------------------------- +service status (cinit), +Nico Schottelius 2005-09-29 (Last Modified: -) +-------------------------------------------------------------------------------- + +There are service status and service returns. Service status is a status +a service can have. A service return is a value from a function that +describes what happened with the service. + +Status has ST_ prefix, return has RT_ prefix. +See cinit.h for most up to date versions. + + +ST_NEED_FAIL - this service will not be started, until the needs are started +ST_FAIL - this service failed to start +ST_UNSPEC - some unknown error. This should never happen. +ST_ERR - ??? /* tried earlier, service failed, won't retry */ + +ST_SUCCESS - service was successfully started - senseful? +ST_TMP - some instance is currently working on it +ST_ONCE - executed once sucessfully +ST_RESPAWN - service is running and respawning + +ST_TMPNOW 55 /* now you are on it - only for clients */ +#define ST_OFF 56 /* Switching service off */ + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/devel/configuring.text b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/configuring.text new file mode 100644 index 00000000..405a4d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/configuring.text @@ -0,0 +1,18 @@ +cinit/doc/devel/using-conf.text +================================ +Nico Schottelius +0.1, Initial Version from 2006-07-28 +:Author Initials: NS + +About conf/* and how to use the configurations. + +Introduction +------------ + +Who should read those documents? +-------------------------------- + +Content +------- + + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/devel/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/cross-compiling.text new file mode 100644 index 00000000..fdf70564 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/cross-compiling.text @@ -0,0 +1,36 @@ +TODO: + - merge into "Cross compiling" + +cinit - Problems that may arise +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Max open files + OS dependent + +Installing cinit + +Introduction +------------ +General sections, OS-specific, ... + +Installing +---------- + +From source +~~~~~~~~~~~ + +In General +^^^^^^^^^^ +Download, edit conf/os to the os + +Cross-compiling +^^^^^^^^^^^^^^^ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/devel/ipc.text b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/ipc.text new file mode 100644 index 00000000..7013a985 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/ipc.text @@ -0,0 +1,108 @@ +IPC - in cinit and in general +============================= +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +IPC - Inter process communication + +Introduction +------------ +This document describes the IPC methods used and/or tested for +cinit. + +It does not describe in detail, how the different methods work +(this is already done many times, there's great documentation +available online), but more the advantages and disadvantages +(especially for an init system). + +What is IPC? +~~~~~~~~~~~~ +IPC describes methods to communicate between different processes +(programs). + +IPC as described by SUSV3 (The Single UNIX Specification Version 3) +aka IEEE Std 1003.1, 2004 Edition aka POSIX only defines +MSQ, SHM and Semaphores as IPC. This document also covers +Sockets and FIFOs. + + +What is not (yet) covered by this document? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Speed of different IPC methods, different behaviour on different +unices. + + +Why do you need IPC for an init system? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +cinit IPC history + analysis +---------------------------- + + +FIFOs +~~~~~ +First in - first out +File on the filesystem +Always need two files for two way communication + +Hints +^^^^^ +The first idea for IPC in cinit was to use two FIFOs, like minit does. +Wrong assumption: +runit also uses fifos, but two fifos for each services. That way +more parallel transmissions is possible. +You have to pay attention: Maximum number of opened files! +(On Linux 2.6 this is 1024, which makes a maximum of 512 services. +This limit is most likely never reached, but you have to keep it +in mind). + +Sockets +~~~~~~~ +Clean and beautiful. They allow easy two way communication. + +If you created a socket, fs is r/o, you cannot use it, although +there is SO_REUSE. + +First method: Using memory mapped part (tmpfs). +Second method: use interal communication (pipes!) and external after +/etc/cinit/ becomes writable. + + +Current IPC configuration +-------------------------- + +- switchable (conf/ipc_method) +- each ipc implementation needs: + + ipc.h -> for global variables and ipc specific things + prefix variables with ipc_ + int cinit_ipc_init(void); -> general initialization + return 1 on success, 0 on failure + int cinit_ipc_listen(void); -> begin to listen for messages + int cinit_ipc_send(void *data) -> send data to a client + +-------------------------------------------------------------------------------- +TO SORT: + +1. message queues + o clients schreiben rein + o datenpaket gross genug fuer antwort? + +2. shared memory + o client kann direkt rauslesen, was gestartet werden muss + o client kann direkt abhaengigkeiten starten, muss diese aber + eintragen + +Ausprobieren: + - Mutexe + - Message Queues + - + +Ideen: + Message queue + 1. Client geht auf die normale + als id = pid (cast!) + dann rueck via anderer queue + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/devel/lists.text b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/lists.text new file mode 100644 index 00000000..6360acb3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/lists.text @@ -0,0 +1,22 @@ +Lists in cinit-0.3 are generalized, all have the same general layout: + + - double linked + - have 'prev' and 'next' as pointers + + Add an element to a list + + /--------------------------\ + |<->first<->middle<->last<->| + + + After insert: + + /-------------------------------\ + |<->first<->middle<->last<->new<->| + + We alway have 'first'. + Need to adjust: + - new->prev = last (= first->next) + - new->next = first + - first->prev = new + - first->prev->next (= last->next) = new diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/devel/merging.other.initsystems.text b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/merging.other.initsystems.text new file mode 100644 index 00000000..0baa4789 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/merging.other.initsystems.text @@ -0,0 +1,68 @@ +TODO: + - rewrite to asciidoc + - implement a sample merge + +-------------------------------------------------------------------------------- +Merging other init systems to cinit, +Nico Schottelius, 2005-06-02 (Last Modified: 2005-06-11) +-------------------------------------------------------------------------------- + +1. Preamble +2. General to do +3. Create a script + + +1. Preamble + +There is no tool available to merge any existing init-system-configuration +to cinit style. This is not because the author of cinit does not +care about support for that. He simply he has + + a) no access to every init-system available + b) not the time to analyze every init system + +He instead spends the time to improve and bugfix cinit. +This does not mean that he does not accepts scripts, which do the work. +In fact, creating and submitting a merge tool is much appreciated! + + +2. General to do + + 1. Choose your target init and possibly target platform: + - sysvinit may be different on AIX, SuSE and Debian + - /etc/rc may look different on each *BSD + - Sometimes even same platforms differ in versions: + SuSE 5.1 uses a different configuration then SuSE 9.0 + + So decide whether you want and can write a general merge tool + or if you have to specialize. + After deciding, name the script you want to write with the following + syntax: + + cinit-merge.$init-$platform-$version + + $platform and $version (either both or only platform) can be omitted. + + Examples: + + cinit-merge.sysvinit-debian-3.0 + cinit-merge.minit + + 2. Analyze how it works, detect the mechanism in it + + Your script has to detect if dependencies exist and resolve + them. It has to take care of special configurations and possibly + warn the user. + + +3. Create a script + +Now, after you learned how the old init system works, you can start creating +the merge-script (naming see above). + +This merge script + a) will perhaps not cover full old system (if so, warnings should be printed + b) should try to avoid using old (shell)-scripts, as starting + a shell for every service needed makes starting up slow + c) will include some basic features, that are needed everytime on this + platform (setting kernel configuration, hostname, etc) diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/devel/optimising.cinit b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/optimising.cinit new file mode 100644 index 00000000..4f4b5c02 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/optimising.cinit @@ -0,0 +1,33 @@ +-------------------------------------------------------------------------------- +optimising cinit, +Nico Schottelius, 2005-06-09 (Last Modified: -) +-------------------------------------------------------------------------------- + +0. Warning +1. gcc options +2. striping + + +0. Warning + +Any optimisation may cause cinit (not just cinit, but any program) to fail +and to do mysterious things instead of expected actions. + + +1. gcc options + +gcc knows of several optimisation flags. Mostly interesting is -Os for small +size (this is btw broken on gcc-3.4.3 on x86!). + +One can also pass -Werror so that any warning makes the compile to fail. + +The current standard for cinit is: (see CFLAGS in the Makefile). + + +2. striping + +With strip(1) you can remove specific sections of object files. +You have to find out, which ones you can remove safely +(for instance with objdump(1)). + +The current standard for cinit is: (see STRIP in the Makefile) diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/devel/testing.text b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/testing.text new file mode 100644 index 00000000..5ee12ff8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/devel/testing.text @@ -0,0 +1,14 @@ +-------------------------------------------------------------------------------- +testing cinit in a User-Mode-Linux (uml), +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +1. Get an image you want to install cinit to +2. Compile an UML +3. change bin/cinit.uml.test to your needs +4. put a configuration (/etc/cinit) on to your image +5. ./bin/cinit.uml.test + -> wait, your Linux starts with cinit enabled. + +If you omit 4, you'll see how cinit will fail without having its base +directory. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/logs/2006-10-25.config.wasserstoff b/software/cinit/browse_source/cinit-0.3pre9/doc/logs/2006-10-25.config.wasserstoff new file mode 100644 index 00000000..f28bd71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/logs/2006-10-25.config.wasserstoff @@ -0,0 +1,16 @@ +[17:12] wasserstoff:svc# pwd +/etc/cinit/svc +[17:12] wasserstoff:svc# ls +init +17:12] wasserstoff:svc# mkdir getty +[17:12] wasserstoff:svc# mkdir getty/2/ +[17:12] wasserstoff:svc# cd getty/2 +[17:12] wasserstoff:2# ln -s /sbin/getty on +17:12] wasserstoff:2# echo 38400 > on.params +[17:13] wasserstoff:2# echo tty2 >> on.params +[17:13] wasserstoff:2# cd ../../init +[17:14] wasserstoff:init# mkdir needs +[17:14] wasserstoff:init# cd needs +[17:14] wasserstoff:needs# ln -s ../../getty/2 getty-2 +[17:14] wasserstoff:needs# + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/logs/2006-11-22.startup-with-debug b/software/cinit/browse_source/cinit-0.3pre9/doc/logs/2006-11-22.startup-with-debug new file mode 100644 index 00000000..44121cf4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/logs/2006-11-22.startup-with-debug @@ -0,0 +1,55 @@ +[0:08] wasserstoff:cinit-0.3pre3% ./src/cinit +cinit-0.3pre3: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty:: +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2:: +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout:: +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3:: +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning:: +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout:: +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount:: +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root:: +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network:: +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0:: +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback:: +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::/etc/cinit/svc/init +========> tree_exec() +/etc/cinit/svc/local-tuning/keyboard-layout:::abhaengigkeiten gestartet, exec; add wants, needsdep_needs_wants_add::/etc/cinit/svc/local-tuning/keyboard-layout add: (/etc/cinit/svc/getty/2) + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/logs/2006-11-30.startup-0.3pre5 b/software/cinit/browse_source/cinit-0.3pre9/doc/logs/2006-11-30.startup-0.3pre5 new file mode 100644 index 00000000..2ded7712 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/logs/2006-11-30.startup-0.3pre5 @@ -0,0 +1,1821 @@ +cinit-0.3pre4: Booting from /etc/cinit/svc/init +gen_tree::/etc/cinit/svc/init +CAD::/etc/cinit/svc/init +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/getty +gen_tree::/etc/cinit/svc/getty +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/2 +gen_tree::/etc/cinit/svc/getty/2 +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty/2::/etc/cinit/svc/local-tuning/keyboard-layout +gen_tree::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning/keyboard-layout +START::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/2 +CAD::NEW::/etc/cinit/svc/getty::/etc/cinit/svc/getty/3 +gen_tree::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty/3 +CAD::NEW::/etc/cinit/svc/getty/3::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/getty/3 +CAD::/etc/cinit/svc/getty +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/local-tuning +gen_tree::/etc/cinit/svc/local-tuning +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/local-tuning::/etc/cinit/svc/local-tuning/keyboard-layout +CAD::/etc/cinit/svc/local-tuning +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/mount +gen_tree::/etc/cinit/svc/mount +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/mount::/etc/cinit/svc/mount/root +gen_tree::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount/root +START::/etc/cinit/svc/mount/root +CAD::/etc/cinit/svc/mount +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/network +gen_tree::/etc/cinit/svc/network +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/eth0 +respawn: /etc/cinit/svc/network/eth0 +gen_tree::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +CAD::/etc/cinit/svc/network/eth0 +START::/etc/cinit/svc/network/eth0 +CAD::NEW::/etc/cinit/svc/network::/etc/cinit/svc/network/loopback +gen_tree::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network/loopback +START::/etc/cinit/svc/network/loopback +CAD::/etc/cinit/svc/network +CAD::NEW::/etc/cinit/svc/init::/etc/cinit/svc/test +gen_tree::/etc/cinit/svc/test +CAD::/etc/cinit/svc/test +CAD::NEW::/etc/cinit/svc/test::/etc/cinit/svc/test/env +gen_tree::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test/env +START::/etc/cinit/svc/test/env +CAD::/etc/cinit/svc/test +CAD::/etc/cinit/svc/init +========> tree_exec() +TEX::/etc/cinit/svc/local-tuning/keyboard-layout +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout::/etc/cinit/svc/getty/2::(A)::::/etc/cinit/svc/getty/3::(A)::::/etc/cinit/svc/local-tuning::(A):: +DNWA::/etc/cinit/svc/local-tuning/keyboard-layout +TEX::/etc/cinit/svc/mount/root +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +DNWA::/etc/cinit/svc/mount/root::/etc/cinit/svc/mount::(A):: +DNWA::/etc/cinit/svc/mount/root +TEX::/etc/cinit/svc/network/eth0 +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +DNWA::/etc/cinit/svc/network/eth0::/etc/cinit/svc/network::(A):: +DNWA::/etc/cinit/svc/network/eth0 +TEX::/etc/cinit/svc/network/loopback +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +DNWA::/etc/cinit/svc/network/loopback::/etc/cinit/svc/network +DNWA::/etc/cinit/svc/network/loopback +TEX::/etc/cinit/svc/test/env +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +DNWA::/etc/cinit/svc/test/env::/etc/cinit/svc/test::(A):: +DNWA::/etc/cinit/svc/test/env +TEX::/etc/cinit/svc/getty/2 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/2/on +CBA::/etc/cinit/svc/getty/2/on +DNWA::/etc/cinit/svc/getty/2::/etc/cinit/svc/getty::(A):: +DNWA::/etc/cinit/svc/getty/2 +TEX::/etc/cinit/svc/getty/3 +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/3/on +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +DNWA::/etc/cinit/svc/getty/3::/etc/cinit/svc/getty +DNWA::/etc/cinit/svc/getty/3 +TEX::/etc/cinit/svc/local-tuning +::/etc/cinit/svc/local-tuning/keyboard-layout +/etc/cinit/svc/local-tuning/keyboard-layout: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +CBA::/etc/cinit/svc/local-tuning/on +/etc/cinit/svc/local-tuning/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/local-tuning::/etc/cinit/svc/init::(A):: +DNWA::/etc/cinit/svc/local-tuning +TEX::/etc/cinit/svc/mount +::/etc/cinit/svc/mount/root +/etc/cinit/svc/mount/root: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +CBA::/etc/cinit/svc/mount/on +/etc/cinit/svc/mount/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/mount::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/mount +TEX::/etc/cinit/svc/network +::/etc/cinit/svc/network/eth0 +/etc/cinit/svc/network/eth0: <<16>> +::/etc/cinit/svc/network/loopback +/etc/cinit/svc/network/loopback: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +CBA::/etc/cinit/svc/network/on +/etc/cinit/svc/network/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/network::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/network +TEX::/etc/cinit/svc/test +::/etc/cinit/svc/test/env +/etc/cinit/svc/test/env: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +CBA::/etc/cinit/svc/test/on +/etc/cinit/svc/test/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/test::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/test +TEX::/etc/cinit/svc/getty +::/etc/cinit/svc/getty/2 +/etc/cinit/svc/getty/2: <<4>> +::/etc/cinit/svc/getty/3 +/etc/cinit/svc/getty/3: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +CBA::/etc/cinit/svc/getty/on +/etc/cinit/svc/getty/on: No such file or directory +SC::Cleanup: reparenting +DNWA::/etc/cinit/svc/getty::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/getty +TEX::/etc/cinit/svc/init +::/etc/cinit/svc/getty +/etc/cinit/svc/getty: <<4>> +::/etc/cinit/svc/local-tuning +/etc/cinit/svc/local-tuning: <<4>> +::/etc/cinit/svc/mount +/etc/cinit/svc/mount: <<4>> +::/etc/cinit/svc/network +/etc/cinit/svc/network: <<4>> +::/etc/cinit/svc/test +/etc/cinit/svc/test: <<4>> +abhaengigkeiten gestartet, exec; add wants, needs +ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +DNWA::/etc/cinit/svc/init +DNWA::/etc/cinit/svc/init +=> cinit started. +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/3/on +ORC:/etc/cinit/svc/getty/3/on.params +ORC: 38400 +tty3 + +ORC:/etc/cinit/svc/getty/3/on.env +SFN: NULL +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +ORC:/etc/cinit/svc/init/on.params +ORC:/etc/cinit/svc/getty/2/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test +SC::/etc/cinit/svc/test/env::FAILED::::RESPAWN::ES::/etc/cinit/svc/test/env/on +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +CBA::/etc/cinit/svc/test/env/on +ORC:/etc/cinit/svc/test/env/on.params +SFN: NULL +ORC:/etc/cinit/svc/test/env/on.env +ORC: test=Wunderbar es tut + +pre-test +Wunderbar es tut +post-test + +msgrcv: Interrupted system call +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +CBA::/etc/cinit/svc/getty/2/on +ORC:/etc/cinit/svc/getty/2/on.params +ORC: 38400 +tty2 + +ORC:/etc/cinit/svc/getty/2/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted +SC::/etc/cinit/svc/network/eth0::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/eth0/on +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/eth0/on +ORC:/etc/cinit/svc/network/eth0/on.params +ORC: -f +-i +eth0 + +ORC:/etc/cinit/svc/network/eth0/on.env +SFN: NULL +udhcpc (v0.9.9-pre) started +socket failed!: Operation not permitted + +msgrcv: Interrupted system call +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. +SC::/etc/cinit/svc/init::FAILED::::RESPAWN::ES::/etc/cinit/svc/init/on +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +CBA::/etc/cinit/svc/init/on +ORC:/etc/cinit/svc/init/on.params +ORC: The initial service has been started. + +ORC:/etc/cinit/svc/init/on.env +SFN: NULL +The initial service has been started. + +msgrcv: Interrupted system call +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. +SC::/etc/cinit/svc/network/loopback::FAILED::::RESPAWN::ES::/etc/cinit/svc/network/loopback/on +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +CBA::/etc/cinit/svc/network/loopback/on +ORC:/etc/cinit/svc/network/loopback/on.params +ORC: lo +127.0.0.1 +up + +ORC:/etc/cinit/svc/network/loopback/on.env +SFN: NULL +SIOCSIFADDR: Permission denied +SIOCSIFFLAGS: Permission denied +SIOCSIFFLAGS: Permission denied +Unknown server error +ifconfig: `--help' gives usage information. + +msgrcv: Interrupted system call +mount: only root can do that +SC::/etc/cinit/svc/mount/root::FAILED::::RESPAWN::ES::/etc/cinit/svc/mount/root/on +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +CBA::/etc/cinit/svc/mount/root/on +ORC:/etc/cinit/svc/mount/root/on.params +ORC: -n +-o +remount,rw +/ + +ORC:/etc/cinit/svc/mount/root/on.env +SFN: NULL +mount: only root can do that + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +LSP:: 32705: /etc/cinit/svc/init:1 (0) +LSP:: 32705: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32705: /etc/cinit/svc/test:65 (0) +LSP:: 32705: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32705: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32705: /etc/cinit/svc/network:65 (0) +LSP:: 32705: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32705: /etc/cinit/svc/mount:65 (0) +LSP:: 32705: /etc/cinit/svc/local-tuning:65 (0) +LSP:: 32705: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32705: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32705: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32705: /etc/cinit/svc/getty:65 (0) +LSP:: 32706: /etc/cinit/svc/init:65 (0) +LSP:: 32706: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32706: /etc/cinit/svc/test:65 (0) +LSP:: 32706: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32706: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32706: /etc/cinit/svc/network:65 (0) +LSP:: 32706: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32706: /etc/cinit/svc/mount:65 (0) +LSP:: 32706: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32706: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32706: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32706: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32706: /etc/cinit/svc/getty:65 (0) +LSP:: 32707: /etc/cinit/svc/init:65 (0) +LSP:: 32707: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32707: /etc/cinit/svc/test:65 (0) +LSP:: 32707: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32707: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32707: /etc/cinit/svc/network:65 (0) +LSP:: 32707: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32707: /etc/cinit/svc/mount:4 (32706) +LSP:: 32707: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32707: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32707: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32707: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32707: /etc/cinit/svc/getty:65 (0) +LSP:: 32708: /etc/cinit/svc/init:65 (0) +LSP:: 32708: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32708: /etc/cinit/svc/test:65 (0) +LSP:: 32708: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32708: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32708: /etc/cinit/svc/network:4 (32707) +LSP:: 32708: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32708: /etc/cinit/svc/mount:4 (32706) +LSP:: 32708: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32708: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32708: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32708: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32708: /etc/cinit/svc/getty:65 (0) +LSP:: 32709: /etc/cinit/svc/init:65 (0) +LSP:: 32709: /etc/cinit/svc/test/env:4 (32702) +LSP:: 32709: /etc/cinit/svc/test:4 (32708) +LSP:: 32709: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32709: /etc/cinit/svc/network/eth0:16 (32700) +LSP:: 32709: /etc/cinit/svc/network:4 (32707) +LSP:: 32709: /etc/cinit/svc/mount/root:4 (32699) +LSP:: 32709: /etc/cinit/svc/mount:4 (32706) +LSP:: 32709: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32709: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32709: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +LSP:: 32709: /etc/cinit/svc/getty/2:4 (32703) +LSP:: 32709: /etc/cinit/svc/getty:65 (0) +LSP:: 32702: /etc/cinit/svc/init:4 (32710) +LSP:: 32702: /etc/cinit/svc/test/env:4 (32702) +pid: 0, m_client +LSP:: 32700: /etc/cinit/svc/init:4 (32710) +LSP:: 32700: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32700: /etc/cinit/svc/test:4 (32708) +LSP:: 32700: /etc/cinit/svc/network/loopback:4 (32701) +LSP:: 32700: /etc/cinit/svc/network/eth0:16 (32700) +pid: 0, m_client +LSP:: 32710: /etc/cinit/svc/init:4 (32710) +pid: 0, m_client +LSP:: 32701: /etc/cinit/svc/init:16 (32719) +LSP:: 32701: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32701: /etc/cinit/svc/test:4 (32708) +LSP:: 32701: /etc/cinit/svc/network/loopback:4 (32701) +pid: 0, m_client +LSP:: 32699: /etc/cinit/svc/init:16 (32719) +LSP:: 32699: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32699: /etc/cinit/svc/test:4 (32708) +LSP:: 32699: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32699: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32699: /etc/cinit/svc/network:4 (32707) +LSP:: 32699: /etc/cinit/svc/mount/root:4 (32699) +pid: 0, m_client +LSP::SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz + 32698: /etc/cinit/svc/init:16 (32719) +LSP:: 32698: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32698: /etc/cinit/svc/test:4 (32708) +LSP:: 32698: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32698: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32698: /etc/cinit/svc/network:4 (32707) +LSP:: 32698: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32698: /etc/cinit/svc/mount:4 (32706) +LSP:: 32698: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32698: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32698: /etc/cinit/svc/local-tuning/keyboard-layout:4 (32698) +pid: 0, m_client +LSP:: 32728: /etc/cinit/svc/init:16 (32719) +LSP:: 32728: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32728: /etc/cinit/svc/test:4 (32708) +LSP:: 32728: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32728: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32728: /etc/cinit/svc/network:4 (32707) +LSP:: 32728: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32728: /etc/cinit/svc/mount:4 (32706) +LSP:: 32728: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32728: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32728: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32728) +pid: 0, m_client +LSP:: 32735: /etc/cinit/svc/init:16 (32719) +LSP:: 32735: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32735: /etc/cinit/svc/test:4 (32708) +LSP:: 32735: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32735: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32735: /etc/cinit/svc/network:4 (32707) +LSP:: 32735: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32735: /etc/cinit/svc/mount:4 (32706) +LSP:: 32735: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32735: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32735: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32735) +pid: 0, m_client +LSP:: 32742: /etc/cinit/svc/init:16 (32719) +LSP:: 32742: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32742: /etc/cinit/svc/test:4 (32708) +LSP:: 32742: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32742: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32742: /etc/cinit/svc/network:4 (32707) +LSP:: 32742: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32742: /etc/cinit/svc/mount:4 (32706) +LSP:: 32742: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32742: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32742: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32742) +pid: 0, m_client +LSP:: 32749: /etc/cinit/svc/init:16 (32719) +LSP:: 32749: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32749: /etc/cinit/svc/test:4 (32708) +LSP:: 32749: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32749: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32749: /etc/cinit/svc/network:4 (32707) +LSP:: 32749: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32749: /etc/cinit/svc/mount:4 (32706) +LSP:: 32749: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32749: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32749: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32749) +pid: 0, m_client +LSP:: 32756: /etc/cinit/svc/init:16 (32719) +LSP:: 32756: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32756: /etc/cinit/svc/test:4 (32708) +LSP:: 32756: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32756: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32756: /etc/cinit/svc/network:4 (32707) +LSP:: 32756: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32756: /etc/cinit/svc/mount:4 (32706) +LSP:: 32756: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32756: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32756: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32756) +pid: 0, m_client +LSP:: 32763: /etc/cinit/svc/init:16 (32719) +LSP:: 32763: /etc/cinit/svc/test/env:16 (32717) +LSP:: 32763: /etc/cinit/svc/test:4 (32708) +LSP:: 32763: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 32763: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 32763: /etc/cinit/svc/network:4 (32707) +LSP:: 32763: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 32763: /etc/cinit/svc/mount:4 (32706) +LSP:: 32763: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 32763: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 32763: /etc/cinit/svc/local-tuning/keyboard-layout:16 (32763) +pid: 0, m_client +LSP:: 302: /etc/cinit/svc/init:16 (32719) +LSP:: 302: /etc/cinit/svc/test/env:16 (32717) +LSP:: 302: /etc/cinit/svc/test:4 (32708) +LSP:: 302: /etc/ciSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN:: +msgrcv: Interrupted system call +ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +nit/svc/network/loopback:16 (32720) +LSP:: 302: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 302: /etc/cinit/svc/network:4 (32707) +LSP:: 302: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 302: /etc/cinit/svc/mount:4 (32706) +LSP:: 302: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 302: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 302: /etc/cinit/svc/local-tuning/keyboard-layout:16 (302) +pid: 0, m_client +LSP:: 312: /etc/cinit/svc/init:16 (32719) +LSP:: 312: /etc/cinit/svc/test/env:16 (32717) +LSP:: 312: /etc/cinit/svc/test:4 (32708) +LSP:: 312: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 312: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 312: /etc/cinit/svc/network:4 (32707) +LSP:: 312: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 312: /etc/cinit/svc/mount:4 (32706) +LSP:: 312: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 312: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 312: /etc/cinit/svc/local-tuning/keyboard-layout:16 (312) +pid: 0, m_client +LSP:: 326: /etc/cinit/svc/init:16 (32719) +LSP:: 326: /etc/cinit/svc/test/env:16 (32717) +LSP:: 326: /etc/cinit/svc/test:4 (32708) +LSP:: 326: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 326: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 326: /etc/cinit/svc/network:4 (32707) +LSP:: 326: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 326: /etc/cinit/svc/mount:4 (32706) +LSP:: 326: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 326: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 326: /etc/cinit/svc/local-tuning/keyboard-layout:16 (326) +pid: 0, m_client +LSP:: 333: /etc/cinit/svc/init:16 (32719) +LSP:: 333: /etc/cinit/svc/test/env:16 (32717) +LSP:: 333: /etc/cinit/svc/test:4 (32708) +LSP:: 333: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 333: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 333: /etc/cinit/svc/network:4 (32707) +LSP:: 333: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 333: /etc/cinit/svc/mount:4 (32706) +LSP:: 333: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 333: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 333: /etc/cinit/svc/local-tuning/keyboard-layout:16 (333) +pid: 0, m_client +LSP:: 340: /etc/cinit/svc/init:16 (32719) +LSP:: 340: /etc/cinit/svc/test/env:16 (32717) +LSP:: 340: /etc/cinit/svc/test:4 (32708) +LSP:: 340: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 340: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 340: /etc/cinit/svc/network:4 (32707) +LSP:: 340: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 340: /etc/cinit/svc/mount:4 (32706) +LSP:: 340: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 340: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 340: /etc/cinit/svc/local-tuning/keyboard-layout:16 (340) +pid: 0, m_client +LSP:: 347: /etc/cinit/svc/init:16 (32719) +LSP:: 347: /etc/cinit/svc/test/env:16 (32717) +LSP:: 347: /etc/cinit/svc/test:4 (32708) +LSP:: 347: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 347: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 347: /etc/cinit/svc/network:4 (32707) +LSP:: 347: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 347: /etc/cinit/svc/mount:4 (32706) +LSP:: 347: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 347: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 347: /etc/cinit/svc/local-tuning/keyboard-layout:16 (347) +pid: 0, m_client +LSP:: 354: /etc/cinit/svc/init:16 (32719) +LSP:: 354: /etc/cinit/svc/test/env:16 (32717) +LSP:: 354: /etc/cinit/svc/test:4 (32708) +LSP:: 354: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 354: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 354: /etc/cinit/svc/network:4 (32707) +LSP:: 354: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 354: /etc/cinit/svc/mount:4 (32706) +LSP:: 354: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 354: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 354: /etc/cinit/svc/local-tuning/keyboard-layout:16 (354) +pid: 0, m_client +LSP:: 372: /etc/cinit/svc/init:16 (32719) +LSP:: 372: /etc/cinit/svc/test/env:16 (32717) +LSP:: 372: /etc/cinit/svc/test:4 (32708) +LSP:: 372: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 372: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 372: /etc/cinit/svc/network:4 (32707) +LSP:: 372: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 372: /etc/cinit/svc/mount:4 (32706) +LSP:: 372: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 372: /etc/cinit/svc/getty/3:4 (327SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +04) +LSP:: 372: /etc/cinit/svc/local-tuning/keyboard-layout:16 (372) +pid: 0, m_client +LSP:: 379: /etc/cinit/svc/init:16 (32719) +LSP:: 379: /etc/cinit/svc/test/env:16 (32717) +LSP:: 379: /etc/cinit/svc/test:4 (32708) +LSP:: 379: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 379: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 379: /etc/cinit/svc/network:4 (32707) +LSP:: 379: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 379: /etc/cinit/svc/mount:4 (32706) +LSP:: 379: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 379: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 379: /etc/cinit/svc/local-tuning/keyboard-layout:16 (379) +pid: 0, m_client +LSP:: 386: /etc/cinit/svc/init:16 (32719) +LSP:: 386: /etc/cinit/svc/test/env:16 (32717) +LSP:: 386: /etc/cinit/svc/test:4 (32708) +LSP:: 386: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 386: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 386: /etc/cinit/svc/network:4 (32707) +LSP:: 386: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 386: /etc/cinit/svc/mount:4 (32706) +LSP:: 386: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 386: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 386: /etc/cinit/svc/local-tuning/keyboard-layout:16 (386) +pid: 0, m_client +LSP:: 393: /etc/cinit/svc/init:16 (32719) +LSP:: 393: /etc/cinit/svc/test/env:16 (32717) +LSP:: 393: /etc/cinit/svc/test:4 (32708) +LSP:: 393: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 393: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 393: /etc/cinit/svc/network:4 (32707) +LSP:: 393: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 393: /etc/cinit/svc/mount:4 (32706) +LSP:: 393: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 393: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 393: /etc/cinit/svc/local-tuning/keyboard-layout:16 (393) +pid: 0, m_client +LSP:: 400: /etc/cinit/svc/init:16 (32719) +LSP:: 400: /etc/cinit/svc/test/env:16 (32717) +LSP:: 400: /etc/cinit/svc/test:4 (32708) +LSP:: 400: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 400: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 400: /etc/cinit/svc/network:4 (32707) +LSP:: 400: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 400: /etc/cinit/svc/mount:4 (32706) +LSP:: 400: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 400: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 400: /etc/cinit/svc/local-tuning/keyboard-layout:16 (400) +pid: 0, m_client +LSP:: 407: /etc/cinit/svc/init:16 (32719) +LSP:: 407: /etc/cinit/svc/test/env:16 (32717) +LSP:: 407: /etc/cinit/svc/test:4 (32708) +LSP:: 407: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 407: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 407: /etc/cinit/svc/network:4 (32707) +LSP:: 407: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 407: /etc/cinit/svc/mount:4 (32706) +LSP:: 407: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 407: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 407: /etc/cinit/svc/local-tuning/keyboard-layout:16 (407) +pid: 0, m_client +LSP:: 414: /etc/cinit/svc/init:16 (32719) +LSP:: 414: /etc/cinit/svc/test/env:16 (32717) +LSP:: 414: /etc/cinit/svc/test:4 (32708) +LSP:: 414: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 414: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 414: /etc/cinit/svc/network:4 (32707) +LSP:: 414: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 414: /etc/cinit/svc/mount:4 (32706) +LSP:: 414: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 414: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 414: /etc/cinit/svc/local-tuning/keyboard-layout:16 (414) +pid: 0, m_client +LSP:: 421: /etc/cinit/svc/init:16 (32719) +LSP:: 421: /etc/cinit/svc/test/env:16 (32717) +LSP:: 421: /etc/cinit/svc/test:4 (32708) +LSP:: 421: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 421: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 421: /etc/cinit/svc/network:4 (32707) +LSP:: 421: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 421: /etc/cinit/svc/mount:4 (32706) +LSP:: 421: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 421: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 421: /etc/cinit/svc/local-tuning/keyboard-layout:16 (421) +pid: 0, m_client +LSP:: 428: /etc/cinit/svc/init:16 (32719) +LSP:: 428: /etc/cinit/svc/test/env:16 (32717) +LSP:: 428: /etc/cinit/svc/test:4 (32708) +LSP:: 428: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 428: /etc/cinit/svc/network/eth0:16SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call + (32718) +LSP:: 428: /etc/cinit/svc/network:4 (32707) +LSP:: 428: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 428: /etc/cinit/svc/mount:4 (32706) +LSP:: 428: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 428: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 428: /etc/cinit/svc/local-tuning/keyboard-layout:16 (428) +pid: 0, m_client +LSP:: 435: /etc/cinit/svc/init:16 (32719) +LSP:: 435: /etc/cinit/svc/test/env:16 (32717) +LSP:: 435: /etc/cinit/svc/test:4 (32708) +LSP:: 435: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 435: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 435: /etc/cinit/svc/network:4 (32707) +LSP:: 435: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 435: /etc/cinit/svc/mount:4 (32706) +LSP:: 435: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 435: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 435: /etc/cinit/svc/local-tuning/keyboard-layout:16 (435) +pid: 0, m_client +LSP:: 452: /etc/cinit/svc/init:16 (32719) +LSP:: 452: /etc/cinit/svc/test/env:16 (32717) +LSP:: 452: /etc/cinit/svc/test:4 (32708) +LSP:: 452: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 452: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 452: /etc/cinit/svc/network:4 (32707) +LSP:: 452: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 452: /etc/cinit/svc/mount:4 (32706) +LSP:: 452: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 452: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 452: /etc/cinit/svc/local-tuning/keyboard-layout:16 (452) +pid: 0, m_client +LSP:: 459: /etc/cinit/svc/init:16 (32719) +LSP:: 459: /etc/cinit/svc/test/env:16 (32717) +LSP:: 459: /etc/cinit/svc/test:4 (32708) +LSP:: 459: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 459: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 459: /etc/cinit/svc/network:4 (32707) +LSP:: 459: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 459: /etc/cinit/svc/mount:4 (32706) +LSP:: 459: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 459: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 459: /etc/cinit/svc/local-tuning/keyboard-layout:16 (459) +pid: 0, m_client +LSP:: 466: /etc/cinit/svc/init:16 (32719) +LSP:: 466: /etc/cinit/svc/test/env:16 (32717) +LSP:: 466: /etc/cinit/svc/test:4 (32708) +LSP:: 466: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 466: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 466: /etc/cinit/svc/network:4 (32707) +LSP:: 466: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 466: /etc/cinit/svc/mount:4 (32706) +LSP:: 466: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 466: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 466: /etc/cinit/svc/local-tuning/keyboard-layout:16 (466) +pid: 0, m_client +LSP:: 473: /etc/cinit/svc/init:16 (32719) +LSP:: 473: /etc/cinit/svc/test/env:16 (32717) +LSP:: 473: /etc/cinit/svc/test:4 (32708) +LSP:: 473: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 473: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 473: /etc/cinit/svc/network:4 (32707) +LSP:: 473: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 473: /etc/cinit/svc/mount:4 (32706) +LSP:: 473: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 473: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 473: /etc/cinit/svc/local-tuning/keyboard-layout:16 (473) +pid: 0, m_client +LSP:: 480: /etc/cinit/svc/init:16 (32719) +LSP:: 480: /etc/cinit/svc/test/env:16 (32717) +LSP:: 480: /etc/cinit/svc/test:4 (32708) +LSP:: 480: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 480: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 480: /etc/cinit/svc/network:4 (32707) +LSP:: 480: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 480: /etc/cinit/svc/mount:4 (32706) +LSP:: 480: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 480: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 480: /etc/cinit/svc/local-tuning/keyboard-layout:16 (480) +pid: 0, m_client +LSP:: 487: /etc/cinit/svc/init:16 (32719) +LSP:: 487: /etc/cinit/svc/test/env:16 (32717) +LSP:: 487: /etc/cinit/svc/test:4 (32708) +LSP:: 487: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 487: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 487: /etc/cinit/svc/network:4 (32707) +LSP:: 487: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 487: /etc/cinit/svc/mount:4 (32706) +LSP:: 487: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 487: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 487: /etc/cinit/svc/local-tuning/keyboard-layout:16 (487) +pid: 0, mLoading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +_client +LSP:: 494: /etc/cinit/svc/init:16 (32719) +LSP:: 494: /etc/cinit/svc/test/env:16 (32717) +LSP:: 494: /etc/cinit/svc/test:4 (32708) +LSP:: 494: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 494: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 494: /etc/cinit/svc/network:4 (32707) +LSP:: 494: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 494: /etc/cinit/svc/mount:4 (32706) +LSP:: 494: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 494: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 494: /etc/cinit/svc/local-tuning/keyboard-layout:16 (494) +pid: 0, m_client +LSP:: 501: /etc/cinit/svc/init:16 (32719) +LSP:: 501: /etc/cinit/svc/test/env:16 (32717) +LSP:: 501: /etc/cinit/svc/test:4 (32708) +LSP:: 501: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 501: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 501: /etc/cinit/svc/network:4 (32707) +LSP:: 501: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 501: /etc/cinit/svc/mount:4 (32706) +LSP:: 501: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 501: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 501: /etc/cinit/svc/local-tuning/keyboard-layout:16 (501) +pid: 0, m_client +LSP:: 510: /etc/cinit/svc/init:16 (32719) +LSP:: 510: /etc/cinit/svc/test/env:16 (32717) +LSP:: 510: /etc/cinit/svc/test:4 (32708) +LSP:: 510: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 510: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 510: /etc/cinit/svc/network:4 (32707) +LSP:: 510: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 510: /etc/cinit/svc/mount:4 (32706) +LSP:: 510: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 510: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 510: /etc/cinit/svc/local-tuning/keyboard-layout:16 (510) +pid: 0, m_client +LSP:: 520: /etc/cinit/svc/init:16 (32719) +LSP:: 520: /etc/cinit/svc/test/env:16 (32717) +LSP:: 520: /etc/cinit/svc/test:4 (32708) +LSP:: 520: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 520: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 520: /etc/cinit/svc/network:4 (32707) +LSP:: 520: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 520: /etc/cinit/svc/mount:4 (32706) +LSP:: 520: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 520: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 520: /etc/cinit/svc/local-tuning/keyboard-layout:16 (520) +pid: 0, m_client +LSP:: 533: /etc/cinit/svc/init:16 (32719) +LSP:: 533: /etc/cinit/svc/test/env:16 (32717) +LSP:: 533: /etc/cinit/svc/test:4 (32708) +LSP:: 533: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 533: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 533: /etc/cinit/svc/network:4 (32707) +LSP:: 533: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 533: /etc/cinit/svc/mount:4 (32706) +LSP:: 533: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 533: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 533: /etc/cinit/svc/local-tuning/keyboard-layout:16 (533) +pid: 0, m_client +LSP:: 541: /etc/cinit/svc/init:16 (32719) +LSP:: 541: /etc/cinit/svc/test/env:16 (32717) +LSP:: 541: /etc/cinit/svc/test:4 (32708) +LSP:: 541: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 541: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 541: /etc/cinit/svc/network:4 (32707) +LSP:: 541: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 541: /etc/cinit/svc/mount:4 (32706) +LSP:: 541: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 541: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 541: /etc/cinit/svc/local-tuning/keyboard-layout:16 (541) +pid: 0, m_client +LSP:: 548: /etc/cinit/svc/init:16 (32719) +LSP:: 548: /etc/cinit/svc/test/env:16 (32717) +LSP:: 548: /etc/cinit/svc/test:4 (32708) +LSP:: 548: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 548: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 548: /etc/cinit/svc/network:4 (32707) +LSP:: 548: /etc/cinit/svc/mount/root:16 (32721) +LSP:: 548: /etc/cinit/svc/mount:4 (32706) +LSP:: 548: /etc/cinit/svc/local-tuning:4 (32705) +LSP:: 548: /etc/cinit/svc/getty/3:4 (32704) +LSP:: 548: /etc/cinit/svc/local-tuning/keyboard-layout:16 (548) +pid: 0, m_client +LSP:: 555: /etc/cinit/svc/init:16 (32719) +LSP:: 555: /etc/cinit/svc/test/env:16 (32717) +LSP:: 555: /etc/cinit/svc/test:4 (32708) +LSP:: 555: /etc/cinit/svc/network/loopback:16 (32720) +LSP:: 555: /etc/cinit/svc/network/eth0:16 (32718) +LSP:: 555: /etc/cinit/svc/network:4 (32707) +LSP:: 555: /etc/cinit/svSC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +findkeymap: No such file or directory +cannot open file +Loading /usr/share/keymaps/i386/dvorak/dvorak.kmap.gz +SC::/etc/cinit/svc/local-tuning/keyboard-layout::FAILED::::RESPAWN::ES::/etc/cinit/svc/local-tuning/keyboard-layout/on +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL +CBA::/etc/cinit/svc/local-tuning/keyboard-layout/on +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.params +ORC: dvorak + +ORC:/etc/cinit/svc/local-tuning/keyboard-layout/on.env +SFN: NULL + +msgrcv: Interrupted system call diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/man/cinit.8 b/software/cinit/browse_source/cinit-0.3pre9/doc/man/cinit.8 new file mode 100644 index 00000000..996660e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/man/cinit.8 @@ -0,0 +1,56 @@ +.\" Title: cinit +.\" Author: +.\" Generator: DocBook XSL Stylesheets v1.72.0 +.\" Date: 05/15/2007 +.\" Manual: +.\" Source: +.\" +.TH "CINIT" "8" "05/15/2007" "" "" +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.SH "NAME" +cinit \- fast executing, small and simple init with support for profiles +.SH "SYNOPSIS" +\fIcinit\fR [cprofile:name_of_profile] +.sp +.SH "DESCRIPTION" +Cinit is an init system. It normally gets started by the operating system (Linux, *BSD, \&...) directly after the kernel has been loaded. +.sp +Cinit uses parallel execution of services as far as possible. To ensure the correct boot order you need to specify which service \fIneeds\fR or \fIwants\fR another service. The resulting dependency tree is used at startup to determine which service to start when. +.sp +This may result in different boot orders depending on whether one service is one time faster or slower. Due to the dependencies this is not a problem, but allowed and wished per design. +.sp +For more information refer to the texinfo or html documentation. +.sp +.SH "OPTIONS" +.PP +cprofile:name_of_profile +.RS 4 +If specified, cinit will start the named profile instead of the standard +\fIinit\fR +service +.RE +.SH "BUGS" +cinit is not tested nor documented very well currently. +.sp +The porting to other OS is not finished yet (mainly missing system level binaries: shutdown, reboot, halt). +.sp +Both is work in progress. +.sp +.SH "AUTHOR" +Nico Schottelius +.sp +.SH "RESOURCES" +Main web site: http://unix.schottelius.org/cinit/ +.sp +.SH "COPYING" +Copyright (C) 2006 Nico Schottelius. Free use of this software is granted under the terms of the GNU General Public License (GPL). +.sp +.SH "REFERENCES" +.IP " 1." 4 +nico\-cinit__@__schottelius.org +.RS 4 +\%mailto:nico\-cinit__@__schottelius.org +.RE diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/man/cinit.text b/software/cinit/browse_source/cinit-0.3pre9/doc/man/cinit.text new file mode 100644 index 00000000..bd9bd0ab --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/man/cinit.text @@ -0,0 +1,64 @@ +cinit(8) +======== +Nico Schottelius + + +NAME +---- +cinit - fast executing, small and simple init with support for profiles + + +SYNOPSIS +-------- +'cinit' [cprofile:name_of_profile] + + +DESCRIPTION +----------- +Cinit is an init system. It normally gets started by the operating +system (Linux, *BSD, ...) directly after the kernel has been loaded. + +Cinit uses parallel execution of services as far as possible. To +ensure the correct boot order you need to specify which service +'needs' or 'wants' another service. The resulting dependency tree +is used at startup to determine which service to start when. + +This may result in different boot orders depending on whether +one service is one time faster or slower. Due to the dependencies +this is not a problem, but allowed and wished per design. + +For more information refer to the texinfo or html documentation. + + +OPTIONS +------- + +cprofile:name_of_profile:: + If specified, cinit will start the named profile instead of the + standard 'init' service + + +BUGS +---- +cinit is not tested nor documented very well currently. + +The porting to other OS is not finished yet (mainly missing +system level binaries: shutdown, reboot, halt). + +Both is work in progress. + + +AUTHOR +------ +Nico Schottelius + + +RESOURCES +--------- +Main web site: http://unix.schottelius.org/cinit/[] + + +COPYING +------- +Copyright \(C) 2006 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/man/cinit.xml b/software/cinit/browse_source/cinit-0.3pre9/doc/man/cinit.xml new file mode 100644 index 00000000..a43518e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/man/cinit.xml @@ -0,0 +1,75 @@ + + + + +cinit +8 + + + cinit + fast executing, small and simple init with support for profiles + + +cinit [cprofile:name_of_profile] + + + +DESCRIPTION +Cinit is an init system. It normally gets started by the operating +system (Linux, *BSD, …) directly after the kernel has been loaded. + +Cinit uses parallel execution of services as far as possible. To +ensure the correct boot order you need to specify which service +needs or wants another service. The resulting dependency tree +is used at startup to determine which service to start when. + +This may result in different boot orders depending on whether +one service is one time faster or slower. Due to the dependencies +this is not a problem, but allowed and wished per design. + +For more information refer to the texinfo or html documentation. + + + +OPTIONS + + + +cprofile:name_of_profile + + + + If specified, cinit will start the named profile instead of the + standard init service + + + + + + +BUGS +cinit is not tested nor documented very well currently. + +The porting to other OS is not finished yet (mainly missing +system level binaries: shutdown, reboot, halt). + +Both is work in progress. + + + +AUTHOR +Nico Schottelius <nico-cinit__@__schottelius.org> + + + +RESOURCES +Main web site: http://unix.schottelius.org/cinit/ + + + +COPYING +Copyright (C) 2006 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License (GPL). + + + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/man/cservice b/software/cinit/browse_source/cinit-0.3pre9/doc/man/cservice new file mode 100644 index 00000000..26a472b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/man/cservice @@ -0,0 +1,37 @@ +WARNING: + cservice is not yet ready for cinit-0.3! + +-------------------------------------------------------------------------------- +cservice, +Nico Schottelius, 2005-06-10 (Last Modified: 2005-06-22) +-------------------------------------------------------------------------------- + +cservice - control cinit + +cservice -[phearsu] + -e - (ein) start a service (including all needed dependencies) + -a - (aus) stop a respawing service, don't care about other services + + -r - reboot + -h - halt + -p - poweroff (on some systems the same as halt) + -s - reScue mode - only a shell + + -u - update: hot reboot - shutdown system and execute /sbin/cinit + +A service may be specified either as relative or as absolute path. + +-h, -p, -r, -s and -u need the "Magic Word" to do their work: "thilo" + +-------------------------------------------------------------------------------- + +Some examples: + + cservice -e /etc/cinit/getty/8 # fire up getty/8 + cd /etc/cinit/getty; cservice -a ./8 # shut down getty/8 + cservice -h thilo # halt + cservice -r thilo # reboot + cservice -s thilo # rescue + cservice -u thilo # update + +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/FAQ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/FAQ new file mode 100644 index 00000000..53494f73 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/FAQ @@ -0,0 +1,35 @@ +-------------------------------------------------------------------------------- +FAQ - Frequently asked questions, +Nico Schottelius, 2005-06-05 (Last Modified: 2005-06-12) +-------------------------------------------------------------------------------- + +Q: So, what's good in cinit? +A: Fast executing, clean design, parallel execution, profile support, + small binary size (~50KiB static against uclibc), easy configuration, + just to name the main facts. + +Q: How do I start cinit? +A: You don't start cinit directly, but your kernel does. + Please have a look at your system documentation how to tell your kernel + to load /sbin/cinit as init. You'll also find some examples in + the README file. + +Q: What is /etc/cinit/init used for? +A: The init service is not just a placeholder, it is the beginning of + executing services. + +Q: /etc/cinit/init seems not to be used when I use profiles? +A: That's true. When you select a profile, cinit will begin in this + directory: "cprofile:home" will use /etc/cinit/home as starting + point. + +Q: Why does it take so long before my getty is respawned? +A: cinit only waits 5 seconds (see conf/sleep_svc), if + a) a service didn't exit normally + b) the service had a non-zero exit code + + So fixing the problem would mean fixing your getty / shell. + +Q: I am using a tarball from samples/ and there is no getty on tty1!? +A: That's true, the first console is used for logging purpose in the + examples. You still have six console (tty2-tty7) running getty. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/NEW_using_cinit_freebsd b/software/cinit/browse_source/cinit-0.3pre9/doc/user/NEW_using_cinit_freebsd new file mode 100644 index 00000000..05499166 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/NEW_using_cinit_freebsd @@ -0,0 +1,21 @@ +11:33 < mux> from sys/kern/init_main.c: +11:33 < telmich> mux: that's true; I just tried with linux and I tell the + bootloader, who tells the kernel then +11:33 < mux> static char init_path[MAXPATHLEN] = +11:33 < mux> #ifdef INIT_PATH __XSTRING(INIT_PATH); +11:33 < mux> #else +"/sbin/init:/sbin/oinit:/sbin/init.bak:/rescue/init:/stand/sysinstall"; +11:33 < mux> #endif +11:33 < mux> but you give a loader tunable +11:34 < mux> if ((var = getenv("init_path")) != NULL) { +11:34 < mux> strlcpy(init_path, var, sizeof(init_path)); +11:34 < mux> freeenv(var); +11:34 < mux> } +11:34 < mux> here you are +11:34 < telmich> ahh, that's good +11:34 * telmich has to try cinit on freebsd the next days :-) +12:34 < mux> (s/you give/you can give/) +11:35 < mux> so, simply init_path)="/sbin/cinit" in /boot/loader.conf should do + it +11:35 < mux> minus the typo + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/README.text b/software/cinit/browse_source/cinit-0.3pre9/doc/user/README.text new file mode 100644 index 00000000..3467ba63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/README.text @@ -0,0 +1,21 @@ +cinit/doc/devel +=============== +Nico Schottelius +0.1, Initial Version from 2006-07-09 +:Author Initials: NS + +This directory contains cinit user documents. + +Introduction +------------ +This file describes the related documents in the current directory. + +Who should read those documents? +-------------------------------- +People using cinit. + +Content +------- + +hints.text: Some general hints +tuning.text: Some tuning hints diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/TODO b/software/cinit/browse_source/cinit-0.3pre9/doc/user/TODO new file mode 100644 index 00000000..6044e97a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/TODO @@ -0,0 +1,4 @@ +All the content in this file is unsorted. Reading may harm you. + +Confdir: /etc/cinit/conf/ +panic: /etc/cinit/conf/panic, /etc/cinit/conf/panic.params diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/compiles.on.text b/software/cinit/browse_source/cinit-0.3pre9/doc/user/compiles.on.text new file mode 100644 index 00000000..ad467d38 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/compiles.on.text @@ -0,0 +1,19 @@ +cinit - known configurations cinit compiles on +============================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-12-08 +:Author Initials: NS + + +This document lists all the configuration known to me on that +cinit compiles. If you compiled cinit with another configuration, +drop a mail to nico-cinit-report [at] schottelius.org. + +The list +-------- +cinit is known to compile on: + +- x86-Linux-Debian-3.0-gcc-4-glibc-2.3.2 +- x86-Linux-Debian-3.0-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-glibc-2.3.5 +- ppc-Linux-Gentoo-2004.3-gcc-3.4.3-uclibc-0.9.27 diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/conf-system.text b/software/cinit/browse_source/cinit-0.3pre9/doc/user/conf-system.text new file mode 100644 index 00000000..600112c3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/conf-system.text @@ -0,0 +1,34 @@ +The conf/ system +================= +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-08 +:Author Initials: NS + +This documentes describes the configuration system used by cinit. + + +What is the conf/ system? +------------------------- +The conf/ system is the configuration system for the cinit build. +The first line of each file below conf/ is a configuration value +with the name of the file: + +---------------------------------------------------------------------- +[9:00] hydrogenium:cinit-0.3pre6% head -n 1 conf/cc +gcc +---------------------------------------------------------------------- + +This means that the variable "cc" has the value "gcc". + + +What is the reason for conf/? +----------------------------- +I needed a small and simple configuration system, which may be included +in the full build process. + + +Is conf/ also usable for other projects? +---------------------------------------- +In its current state conf/ is just a prototype, with which I experiement +a lot. But it is possible that the future aim is to provide a simele +configuration and autoconfiguraton mechanism. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/config-dirs b/software/cinit/browse_source/cinit-0.3pre9/doc/user/config-dirs new file mode 100644 index 00000000..4a8fbb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/config-dirs @@ -0,0 +1,19 @@ +configuring + + /etc/cinit/defaults/panic -> link to something to execute on panic + (most likely /sbin/sulogin) + + /etc/cinit/defaults/tmp -> link to a directory where + the socket should be created, + after finishing boot + + What todo right before halting/rebooting/powering off + /etc/cinit/special/ + -> halt + -> reboot + -> poweroff + +Configuration +------------- + +Send kill signal diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/configuring.cinit.text b/software/cinit/browse_source/cinit-0.3pre9/doc/user/configuring.cinit.text new file mode 100644 index 00000000..1de033fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/configuring.cinit.text @@ -0,0 +1,320 @@ +cinit - Configuring +=================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2005-05-28 +:Author Initials: NS + + +This documentes describes how to configure cinit. +You should already have cinit installed, otherwise read +"cinit - Installing" first. + + +General configuration layout +---------------------------- +Cinit uses the <<>> configuration syntax, which means that +the configuration is kept as simple as possible. The following +sections will show you what that means. + +The cinit configuration consists of +- a special configuration directory +- and the service definitions. + +Paths +----- +Normally the configuration is kept below '/etc/cinit' +(though you can change this before compiling in conf/cinit_dir). + +The full description of the path layout of cinit and how to change it +can be found in 'paths.text'. + +Conf +---- +The special configuration directory is normally called `conf/` +(defined at compile-time in `conf/c_confdir`). + +For all executables into this directory apply the same rules as mentioned +below in "Execution: on and off": Appened .params specifies parameters, +appended .env specifies environment. + + +conf/last +~~~~~~~~~ +This is the last part that will be executed. After it has finished, cinit +will halt, power-off or reboot your machine. + +You can use it for whatever task to accomplish (as most things of cinit), but +the idea behind it is to use it for cleaning up things that are not covered +by the off parts of the services. This maybe swapoff (although this is an unecessary +call before poweroff, imho and even if needed this could be handled within the +off part of the same services that enabled it) or `umount -a` for everything +manually mounted and not unmounted yet. + + +conf/sleep_before_kill +~~~~~~~~~~~~~~~~~~~~~~ +This file contains just one line: The number of seconds to sleep after SIGTERM was sent +to every remaining process before sending SIGKILL to all processes. If this file +is unreadable or not existent, cinit will fall back to the value compiled in +(which was specified at build time in conf/sleep_kill). + + +Services +-------- +cinit is service based. Other init systems use shell +scripts (for instance /etc/rc, /etc/init.d/rc as starters +and /etc/rc*.d/* as "service definitions"). + +'current-init-problems.text' explains why cinit does *not* +use nor recommends the use of shell scripts. + +A service is simply a directory. This directory contains information about + +- what should be started when starting the service +- what should be started when stoping the service +- what dependencies the service has +- whether to restart it, when it exits + + +Full service definition +~~~~~~~~~~~~~~~~~~~~~~~ +. A service consists of + - a base directory (like /etc/cinit/svc/mount/root/) + - dependency configuration (`needs` and `wants`) + - start/stop programs (`on` and `off`) + - respawn flag (`respawn`) + + +Base directory +^^^^^^^^^^^^^^ +You can create the base directory everywhere below /etc/cinit/svc. +You may and it is recommened to create a directory structure +(see 'example-directory-structure.text'). + + +Dependencies +^^^^^^^^^^^^ +The subdirectories + +- `wants` +- and `needs` + +contain the dependencies for the service. + +Read 'dependencies.text' for more information. + + +Respawning +^^^^^^^^^^^ +If you create the empty file 'respawn' (adjustable via conf/c_respawn) +the service will be restarted after it exits. + +-------------------------------------------------------------------------------- +# Tell cinit to respawn the eth0.udhcpc service +touch /etc/cinit/svc/network/eth0.udhcpc +-------------------------------------------------------------------------------- + + +Execution: on and off +^^^^^^^^^^^^^^^^^^^^^ +When a service starts, the file `on` in the service +directory is executed. It is ok, if this file is not existing. +When a service stops, the file `off` in the service +directory is executed. + +The file with the extension `.params` is used to specify the arguments +to pass. Each line contains exactly one parameter. + +The file with the extension `.env` is used to specify the environment +to pass. Each line contains exactly one variable definition in the form +'variable=value'. + +. The following six files are possibly used on starting/stoping: + - ./on (the program called on startup) + - ./on.params (the parameters to pass to the program, see conf/c_params) + - ./on.env (the environment to pass to the program, see conf/c_env) + - ./off (the program called when shutting down the service) + - ./off.params (the parameters to pass to the program) + - ./on.env (the environment to pass to the program) + +Some examples: +---------------------------------------------------------------------- + /etc/cinit/svc/init: + ./wants -> services it wants + ./needs -> services it needs +---------------------------------------------------------------------- + +A more or less normal service without dependencies: +---------------------------------------------------------------------- + /etc/cinit/testsvc: + on -> link to program + on.param -> parameters to program + respawn -> restart it +---------------------------------------------------------------------- + +A service with all options used: +---------------------------------------------------------------------- + /etc/cinit/fullsvc: + on -> program to start when switching on + on.params -> parameters to pass to start program + on.env -> environment to pass to start program + + respawn -> respawn service + + off -> program to start when switching off + off.params -> parameters to pass to stop program + off.env -> environment to pass to stop program + + wants/* -> services it wants before starting (non-critical ones) + needs/* -> links to needed services (critical!) before starting +---------------------------------------------------------------------- + + +Profiles +-------- +Profiles allow you to define different startup scenarios and select +those before bootup. Read 'profiles.text' for more information about +profiles. + +The profile support was added in cinit-0.0.6. + + +Service execution order +------------------------ +The first service executed is '/etc/cinit/svc/init'. +If a profile is selected '/etc/cinit/svc/`profilename`' is used +instead. + +Cinit builds a full service dependency tree through the `wants` +and `needs` of the first service and its dependencies +(recursively). + +After the tree is generated, cinit begins to start the services +at the end of the tree. These services have no `needs`. + +If you manage to create circular dependencies your system will not startup. +You can verify the correctness your configuration with the script +`cinit.check.config`. + + +Hints +----- + +Service executing / parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The on and off files can and should be links to the programs you want +to execute instead of a shell script. This way you save yourself the overhead +of loading a shell. The speed enhancement is very big if you have shells +like bash installed as /bin/sh (which is *not* senseful anyway, I would +recommend dash or ksh for /bin/sh). + +The on.params and off.params files could also be links to system configuration: + +Assume the service is called local-tuning/keyboard. +The service could look like this: +---------------------------------------------------------------------- + on -> /bin/loadkeys + on.params -> /etc/sys/keyboard.mapping + + And /etc/sys/keyboard.mapping would contain only the string + "dvorak" (or "de-latin1" or "sg-latin1" or ...). +---------------------------------------------------------------------- + + +Daemons +~~~~~~~~ +Daemons are programs that go away to the background (using fork()) after +start). + +The fork-away strategy seems to be some illness introduced by traditional +init systems, that are dependent on the fact, that a process exits on +startup. + +cinit in contrast remembers the process ID (pid) of the services it +restarts (those with `respawn` enabled). + +So when the daemon fork()s away and the parent process exits it looks to +cinit like the watched service died and cinit will restart it. + +Happily, most processes can be taught not to go to background. +Some processes even do that by default and very less are broken that +one cannot tell them not to background. + +A list of known processes that are normally used in respawn +processes can be found in 'daemons.backgrounding.text'. + +If your process is not listed in `daemons.backgrounding.text', +check the documentation of your daemon program, if may have a +switch to disable forking. + +But, with a small hack it is even possible to respawn those broken processes: + +We start a program, that + - starts the daemon, + - monitors the pidfile of the daemon, + - waits until that pid does not exist anymore + - and then exits. + +Such a program is included into the cinit source tarball, +though I do not recommend using it. The better way is to implement +non forking mode into your process. + +The name of the program (actually a shell script) is 'cinit.wait.for.daemon'. + +You can use it as the `on` part of a service and add + + - the pidfile, + - the process binary + - and the process parameters + +to `on.params`. + +Thus the service could look like: +---------------------------------------------------------------------- + svc-broken-daemon/ + on -> /sbin/cinit.wait.for.daemon + on.params: + /var/run/apache.pid + /usr/packages/apache-2.0.51/bin/httpd + -DSSL +---------------------------------------------------------------------- +(This is not a so good example, because Apache supports non-forking mode). + +Be aware: This is just a hack, first try to avoid backgrounding +and you won't need this hack! + + +Logging +~~~~~~~ +Currently there's no special logging support. +When a process writes to stdout, it will be displayed on +the same stdout cinit is connected to. + +In newer versions cinit (perhaps cinit-0.4) will also support logging +stdout and stderr of a service. + + +How to migrate your old init-system configuration to cinit +---------------------------------------------------------- +This is highly dependent on your actual system, your system +configuration and your own ideas. + +Cinit is able to replace all other init systems I know about. + +So the only question is "How to do it?". + +There are some hints on how to migrate to cinit in general and also +some os specific help in the file 'migrating-init-systems.text', + +Examples +-------- +Currently there are no example configurations available. +As soon as they are, you will be able to download them at +cinit's homepage. + +--> configuration.example.text + + +References +---------- ++ [[[cconfig]]] http://nico.schotteli.us/papers/linux/cconfig/ diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/cross-compiling.text b/software/cinit/browse_source/cinit-0.3pre9/doc/user/cross-compiling.text new file mode 100644 index 00000000..67208534 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/cross-compiling.text @@ -0,0 +1,6 @@ +conf/os to destination os +conf/cc +conf/ld +conf/cflags +conf/ldflags + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/current-init-problems.text b/software/cinit/browse_source/cinit-0.3pre9/doc/user/current-init-problems.text new file mode 100644 index 00000000..529c2f84 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/current-init-problems.text @@ -0,0 +1,170 @@ +Currently available init systems and their problems +=================================================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-12-11 +:Author Initials: NS + + +This document describes some other init systems, especially +the "traditional" ones and describes their problems. + + +Introduction +------------- +some history, sysv, bsd, + +minit, runit, initng, cinit, upstart + + +Implementations +--------------- +List of current implementations as of 2006-12-12. + + +Linux Sys-V-Init +~~~~~~~~~~~~~~~~ +Debian Sid + +/etc/inittab + +"First script" /etc/init.d/rcS (specified +/etc/init.d/rcS: Bourne shell script text executable + +Runlevels: 0-6, different states + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% /sbin/runlevel +N 2 +-------------------------------------------------------------------------------- + + +Depending on runlevel, the init calls /etc/init.d/rc $runlevel. + +This is manually configured in /etc/inittab + +/etc/init.d/rc: Bourne shell script text executable + +/etc/init.d/rc + +Calls symlinks in /etc/rc?.d. Each runlevel a directory: + +-------------------------------------------------------------------------------- +[9:51] hydrogenium:cinit-0.3pre6% ls -ld /etc/rc*.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc0.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc1.d +drwxr-xr-x 3 root root 4096 2006-12-01 16:56 /etc/rc2.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc3.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc4.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc5.d +drwxr-xr-x 2 root root 4096 2006-12-01 16:56 /etc/rc6.d +drwxr-xr-x 2 root root 4096 2006-11-28 23:17 /etc/rcS.d +-------------------------------------------------------------------------------- + + + +rlmanager: sys-v-init hack +~~~~~~~~~~~~~~~~~~~~~~~~~~ +rlmanager: one script to be executed, sources +simply configuration + +Gentoo Linux +~~~~~~~~~~~~ +no content yet + +BSD init +~~~~~~~~ +Analyzed on FreeBSD. +/etc/rc +/etc/rc.d/ system services +/usr/local/etc/rc.d/ user installed services +Scripts may use values from /etc/rc.conf to check whether +they should be started or not. + +runit +~~~~~ +Three stages: Script1, dependencies, Script3 + + +Initng +~~~~~~ +no content yet + +minit +~~~~~ +Focus on being small. Needs libowfat. +Log support through pipe. + + + + + +Problems overview +----------------- + +Scripts +~~~~~~~ +Scripts are slow. Startup time. Execution time. Unecessary overhead. + + +Sequential startup +~~~~~~~~~~~~~~~~~~ +In the 'old' init systems there is no support of parallel execution. +So if one services hangs at startup, the whole system has to wait +(for instance a dhcp request). In the worst case this may result in +a non-booting system. Systems with dependencies can start the gettys +for login before, in parallel to or even after blocking services are +started. The fact, that they *are* started means you can interact with +the system, you can end looping or blocking services. + +So sequential startup may not only be the reason for a pretty +slow system, but also for an unmaintainable one. + +Unecessary services +~~~~~~~~~~~~~~~~~~~ +Many implementations try to do whatever-is-possible on boot, trying to +cover every possible and impossible situation. + +Portmap without any program that needs it. + +Starting all installed services per default (Debian) vs. let the +user choose what to start (Gentoo). + +Nicht entfernte Altlasten ab und zu. + + +No dependencies +~~~~~~~~~~~~~~~ +Systems without dependencies may result in a chaos state after booting up. + + +Only soft dependencies +~~~~~~~~~~~~~~~~~~~~~~~ +The dependencies are used, but because of soft dependencies, services +may be started although their dependency is missing. + + +Parallel init system debugging +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In contrast to the old init systems, parallel executing init systems +are much harder to debug. If the starting init systems does not have +proper logging / reporting to the user (like cinit-0.2 has), the user +may never find out, what happened and why. + + +Parallel / dependency checking init system with variable boot order +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The boot order may be different each time you boot and is dependent +on the success or failure of services. This way you can never tell +exactly how and in which order they are executed. On multiprocessor +machines, where processes may be truely executed in parallel, there +is no order anymore, but there are n orders on n processors. + +To solve this issue, init systems which support parallel execution +should ship with some testing tools, that simulate a startup. + +cinit will ship with such a tool in cinit-0.4. + + +References +---------- +no content yet diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/daemons.backgrounding.text b/software/cinit/browse_source/cinit-0.3pre9/doc/user/daemons.backgrounding.text new file mode 100644 index 00000000..1218f9a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/daemons.backgrounding.text @@ -0,0 +1,83 @@ +cinit - Daemons backgrounding +============================= +Nico Schottelius +0.1, for cinit 0.3, Initial versinon from 2005-06-12 + + +This document describes the backgrounding process and how to disable it. + + + +Definition +----------- +A daemon is a program which runs in the background. +Running in the background means you cannot access the process +directly (like you can press a key in a shell). + + +Daemons and cinit +------------------ +cinit normally watches system services and restarts them +(`respawn` flag in the configuration). If the process goes to background, +cinit cannot control it directly anymore. + +List of daemons and non-forking parameters +------------------------------------------- + +The following daemons / servers are known to avoid backgrounding easily: + +- acpid [x86 power management]: -f (undocumentated but works) +- apache [webserver]: -DFOREGROUND +- asterisk [pbx]: -f +- bind [dns server/caching]: -f +- cardmgr [pcmcia/cardbus]: -f +- cron (vixie) [schedular]: -f +- cupsd [printer server]: -f or -F +- dhclient [dhcp client]: -d +- dhcp3 (isc) [dhcp server]: -f +- distccd [compile server]: normal behaviour +- dovecot [imap/pop3 server]: -F +- fam [file alteration monitor]:-f +- fcron [schedular]: -f +- frox [ftp proxy]: "NoDetach" in config +- freeradius [radiusd]: -f +- gdm [display manager]: -nodaemon +- hybrid [irc server]: -foreground +- icecast2 [sound streamer]: normal behaviour +- mini-lpd [printer server]: normal behaviour +- metalog [log server]: normal behaviour +- monotone [vcs]: normal behaviour +- mpd [music server]: --no-daemon +- nessusd ["security server"]: normal behaviour +- ntpd [time server]: -n +- nylon [socks proxy]: -f (prints output to terminal) +- oidentd [identd server]: -i +- oops [http proxy]: normal behaviour +- openpbx [pbx]: -f +- openssh [ssh server]: -D +- openvpn [vpn server]: normal behaviour +- pbbuttonsd [power management]:normal behaviour +- portmap [portmapper]: -f +- proftpd [ftp server]: -n +- qmail [mta]: normal behaviour +- rsync ["file server"]: --no-detach +- silcd ["secure chat server"]: -F, --foreground +- slapd [ldap]: -d +- snmpd [snmp daemon]: -f +- stunnel [ssl wrapper]: "foreground = yes" in config +- svnserve [vcs]: --foreground +- syslogd [log server]: -n +- syslog-ng [log server]: -F +- tcpserver [super server]: normal behaviour +- udhcpc [dhcp client]: normal behaviour +- vsftpd [ftp server]: normal behaviour (or: config: background=no) +- xinetd [super server]: -dontfork + + +Problematic daemons +------------------- +Those are the daemons that do not offer the possibility (as of release 0.2): + +- atd (no switch, no configuraton option) +- inetd (some variants) +- nscd (no switch, no configuraton option) diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/debugging.configuration b/software/cinit/browse_source/cinit-0.3pre9/doc/user/debugging.configuration new file mode 100644 index 00000000..1289865e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/debugging.configuration @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +Debugging your init configuration, +Nico Schottelius 2005-06-17 (Last Modified: 2005-06-17) +-------------------------------------------------------------------------------- + +As writing an init configuration is not the easiest thing, +here are some problems (P) and debugging hints (H): + +P: There's no output! +H: If you don't start a service which outputs something there won't be any, + cinit starts up silently. + +P: Service XYZ seems not to work? +H: Try the following in your shell: + cd /etc/cinit/the-service; ./on "$(on.params)" + If that succeeds it has perhaps something missing which should have been + started before. +H: Create a test-service, which contains the following: + on: link to /bin/echo + on.params: "A test string" (with or without the quotes) + Now add the test-service to the needs directory of service XYZ. + If you see output the next time, the service is started. + Otherwise you forgot to make another service dependent on service + XYZ. + +P: How can I test if a non-outputting service successfully started? +H: Create another service, which depends on your service and make + it echo something. + +P: Does that profile support really work? +H: Try that: cprofile:NONEXISTENT and you'll see. + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/dependencies.text b/software/cinit/browse_source/cinit-0.3pre9/doc/user/dependencies.text new file mode 100644 index 00000000..e1154a54 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/dependencies.text @@ -0,0 +1,68 @@ +cinit - Dependencies +==================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-13 +:Author Initials: NS + +This document describes the different dependency types of cinit. + + +Dependencies in general +----------------------- +Each service may have two types (non-exclusive) types of dependencies: +The so called `needs` or `wants`. These are directories below the service +directory and contain symbolic links to the dependencies. +The name of the link can be freely chosen. + +An example: + +The service '/etc/cinit/svc/getty/2' needs the service +'/etc/cinit/svc/local-tuning/keyboard-layout': +-------------------------------------------------------------------------------- +[21:35] hydrogenium:needs# cd /etc/cinit/svc/getty/2/needs +[21:35] hydrogenium:needs# ls -l +insgesamt 0 +lrwxrwxrwx 1 root root 37 2006-10-26 17:51 keyboard-layout -> ../../../local-tuning/keyboard-layout +[21:35] hydrogenium:needs# cd keyboard-layout/ +[21:35] hydrogenium:keyboard-layout# pwd -P +/etc/cinit/svc/local-tuning/keyboard-layout +-------------------------------------------------------------------------------- +(Warning: This is an incomplete example, it misses at least `mount/root` +as dependency) + +This service could additionally want something else, too. It is also +possible that a service only `wants` another service or that a service +has no dependencies. + + +Absolute versus relative links +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +cinit does not care whether a link is relative or absolute. And +as far as I can see it does not make any difference to usability. + +In general, it seems to be a little bit 'easier' to use relative links +when manually configuring cinit ('ln -s ../../../service' versus +'ln -s /etc/cinit/svc/category/service'), but easier readable when +analysing them (with `ls -l'). + + +The two types +------------- + +needs +~~~~~ +`Needs` are the 'hard dependencies': If a services fails to start that +is linked in the `needs` directory, the service will not be started. + + +wants +~~~~~ +`Wants` are the 'soft dependencies': cinit will try to start the dependencies +found in `wants` before the service, but the service will also be started, +indenpendend of success of the dependencies. + + +Circular dependency problem +---------------------------- +If you manage to create circular dependencies cinit will fall into an +endless loop. Use `cinit.check.config` to verify your configuration. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/example-directory-structure.text b/software/cinit/browse_source/cinit-0.3pre9/doc/user/example-directory-structure.text new file mode 100644 index 00000000..d19ac1fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/example-directory-structure.text @@ -0,0 +1,140 @@ +cinit - Example directory structure +=================================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-12-12 +:Author Initials: NS + + +This document describes a tested directory hierarchy that +you could adapt for your setup. But this is no need, you +are free to design your own layout and/or improve this one. + + +Main idea +--------- +The main reason for this layout is that all services directly located +in /etc/cinit/svc/ would create a not-so-easy maintainable chaos. + + +Categories +---------- +When thinking about grouping some parts together, there came some categories +to my mind: + +- init: This must be there. It is no real choice (well, working with profiles + is an alternative) +- we need to mount things +- things that are used to 'configure' my local system +- network connectivity +- services only locally reachable +- services remote reachable +- something that let me login + +With these requirements the following categories (=directories) were created: + + +getty +~~~~~ +Gettys are those little and nice programs that allow you to login. +As we normally want to have more than one it seems to be senseful +to create a category for it. + +For the creation of the getty services itself, an extremly simply +scheme is used: Simply create services with the number of the getty +that is running. This results in the following setup: + +-------------------------------------------------------------------------------- + /etc/cinit/svc/getty/ + 2/ + 3/ + 4/ + ... +-------------------------------------------------------------------------------- + +The number '1' is skipped, because cinit normally logs to stdout that is +connected to the first console. + +`/etc/cinit/svc/getty/needs/` contains all enabled gettys. This way +`/etc/cinit/svc/init/needs/` can refer to `/etc/cinit/svc/getty/` only +but will catch all gettys. + +If you want to allow users to login via a graphical login screen +(also known as X11 with xdm/gdm/kdm) you could add this service as +`getty/gdm` for instance, because gdm is just another getty (just with +more colours). + + +init +~~~~ +`init` is the service everything begins with. You simply put all other +categories into the `needs` (or if soft-dependencies to `wants`) of this +service. + + +local-services +~~~~~~~~~~~~~~ +This directory contains all the services that are only locally reachable. +This may contain local webserver, a MTA that only accepts mails +via /usr/sbin/sendmail (like qmail is capable of) or some other local +only available services. + + +local-tuning +~~~~~~~~~~~~ +This directory is used for local configuration. It contains services, +that setup the keyboard layout (perhaps called `local-tuning/keyboard-layout` +needed by `getty`!), adjust system to hardware time, cleans /tmp +(`local-tuning/tmpclean`), ... + + +mount +~~~~~ +This directory contains the service to remount the root filesystem +read-write (`mount/root`) which is dependend on the filesystem +check (`mount/root/fsck`, also have a look at 'special-services.text'). +It also contains the services that mount the pseudo filesystems +(`mount/proc` (FreeBSD, Linux) and `mount/sys` (Linux)) and all +other partitions (`mount/home`, `mount/usr`,...) which again contain +a dependency to the filesystem check, if necessary. + + +network +~~~~~~~ +The `network` directory should cover all of the network basics. +This includes setting the hostname (`network/hostname`) configuring +network devices (`network/eth0.static`, `network.ath0.master`) limiting +network accesses (`network/firewall`), enable packet forwarding +(`network/ip-forward`), adjusting the available bandwith +(`network/traffic-shaping`), ... + + +If there are too many network devices, you could create a subfolder named +`network/devices/`. + +I used to suffix the network devices with the mode they run, so I can +use different modes in different profiles (setup the wireless card in +master mode at home, in ad-hoc mode at a friend and in managed mode at +work). + + +remote-services +~~~~~~~~~~~~~~~~ +Remote-services are all services that are reachable from remote hosts. +This includes ssh (`remote-services/opensshd`), webserver +(`remote-services/lighttpd` or `remote-services/apache22`). + +Most servers `need` a working network interface, before they can be +started, but mostly it is enough to have the loopback interface up. + +This results in the possible `needs` dependency for `network/loopback` +and soft dependencies, what we call `wants` on `network`. + +Other examples for remote services are +- dns (`remote-services/dnscache`, `remote-services/tinydns`, + `remote-services/bind`) +- fileserver (`remote-services/smbd`, `remote-services/mmbd`) +- network infrastructure (`remote-services/bgpd`) +- many others + +Many daemons used for `remote-services` are described in +'daemons.backgrounding.text'. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/ideas b/software/cinit/browse_source/cinit-0.3pre9/doc/user/ideas new file mode 100644 index 00000000..d3f13d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/ideas @@ -0,0 +1,3 @@ +- cinit-multi-machine-daemon: + coordinating bootup with several machines + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/installing-cinit.text b/software/cinit/browse_source/cinit-0.3pre9/doc/user/installing-cinit.text new file mode 100644 index 00000000..34902057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/installing-cinit.text @@ -0,0 +1,63 @@ +cinit - Installing +================== +Nico Schottelius +0.1, for cinit 0.3, Initial version from 2006-06-02 +:Author Initials: NS + +This documentes describes how to install cinit. + + +Installing +---------- +Installing cinit is not a big deal, so is this document. +Where possible I added a list of commands to execute at the +end of each section. + + +From source +~~~~~~~~~~~ +Retrieve the latest source from http://unix.schottelius.org/cinit/. +Then extract it, change to the source directory, adjust your OS in the +file "conf/os" and type "make all". + +To report success run scripts/report.compile and send the output +to nico-cinit-report |at| schottelius.org. I will use this information +to know how and where cinit is compiled. Personal values like hostnames +or your e-mail address will *not* be published. + +Code to install cinit: +---------------------------------------------------------------------- +# the program we use to retrieve the source (fetch on FreeBSD) +get=wget +# change to current version +version=0.3pre6 +url=http://unix.schottelius.org/cinit/cinit-${version}.tar.bz2 +# get it +$get "$url" +# exctract it +tar xvjf "cinit-${version}.tar.bz2" +# build it and report success +who=nico-cinit-report +where=schottelius.org +cd cinit-${version} && make all && \ +./scripts/report.compile | mail -s "cinit: compile report" "${who}@${where}" +---------------------------------------------------------------------- + +Warning: Currently the install target is missing. Simply copy +"src/cinit" to /sbin/cinit. + + +Changing compile time parameters +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +All compile time configurations are kept below the "conf" +directory. Please read 'conf-system.text' for more information. + + +Cross-compiling +--------------- +For cross compiling see 'cross-compiling.text'. + + +Continue reading +---------------- +After having installed cinit, continue reading the document "Configuring cinit". diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/main.text b/software/cinit/browse_source/cinit-0.3pre9/doc/user/main.text new file mode 100644 index 00000000..ddf88304 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/main.text @@ -0,0 +1,113 @@ +cinit - a modern init system +============================= +Nico Schottelius +v0.1, for cinit-0.2.2, 2005-01-18 +:Author Initials: NS + + +Introduction +============ + +cinit is a fast init system with dependency features and +profile support. It was orientated on the design off Richard Gooch's +need [0] and Felix von Leitner's minit[1]. Minit does not support real +dependencies (you don't know whether the service you depend on really +started) and the need concept is somehow slow (as seen in gentoo). +In addition, minit needs libowfat and dietlibc, which may not be found +on every Unix system. + +cinit main features: +- portability: it should run on every Linux system (and it's quite easy + to port it to other Unices) +- true dependencies +- parallel execution +- highly customisable (see conf/*) +- profile support (specify what services to start depending on the profile) + + +Getting cinit +============= + +This README is part of the source, so you should have it. +If not, goto the homepage [2] and download the tar archive +or get the lastest snapshot via git. + + +Pre-Configuring +=============== + +If you want to fine tune cinit parameters, add different path names, +change the DESTDIR, ... have a look at conf/*. + + +Installing +========== + +You can install cinit parallel to any other init-system, it won't +kill other init's config nor /sbin/init, if it exists. + +You only have to tell your kernel to execute /sbin/cinit instead +of /sbin/init. + +Everybody do: +# make all install + +This will create /sbin/cinit. +If /sbin/init does not exist, it will be linked to /sbin/cinit. + +If it's the first time you operate with cinit, you can also do: +# make install-test + +This will populate /etc/cinit with a testing configuration, +which is somehow minimalistic +(mounting root r/w, starting gettys, setting hostname). + +Although this should work on most Linux systems, it's really +minimalistic. Please configure your cinit installation yourself, +see below how to do that. + +After configuring you need to tell your kernel to boot cinit instead +of your current init system. How to do that depends on your system: + + Linux/LILO and Linux/yaboot (ppc): + append="init=/sbin/cinit" + Linux/grub1 and Linux/grub2: + kernel init=/sbin/cinit + + +Configuring +=========== + +You'll have to configure /etc/cinit and add your existing services. + +Please read doc/configuring.cinit for details. +Please read doc/FAO if there are still questions open. +Please join #cLinux on irc.freenode.org if there are still questions open. + +There can be found some (currently only one) testing examples +below samples/ (some I do use for testing, beware if you use it: +It loads the dvorak keymapping at startup!). + +There are currently no tools to merge your existing init-system +to cinit (like sysvinit-merge, bsd-merge or minit-merge) available. +If someone cares and tries to do that, I would be happy to include +the script(s). + +Additionally I would be thankful for tar-balls containing a complete +replacement of $your_unix_init. + + +Author, Contact, Bug reports, etc. +================================== +Nico Schottelius (nico-linux-cinit<>schottelius [[dot]] org) is the +author. Bug reports should be send to this address. + +The homepage of cinit is [2]. + + +References: +=========== + +[0]: need: http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ +[1]: minit: http://www.fefe.de/minit/ +[2]: cinit: http://linux.schottelius.org/cinit/ diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/meta.dependencies b/software/cinit/browse_source/cinit-0.3pre9/doc/user/meta.dependencies new file mode 100644 index 00000000..fe743c48 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/meta.dependencies @@ -0,0 +1,58 @@ +-------------------------------------------------------------------------------- +Meta-dependencies, +Nico Schottelius, 2005-05-24 +-------------------------------------------------------------------------------- + +1. What are Meta-Dependencies? +2. What are the advantages / disadvantages of it? +3. The solutions + +1. What are Meta-Dependencies? + +A Meta-depedency describes the type of service another service wants, but +not the exact service. + +Example: + remote-services/ssh wants a dns-resolver, it does not care about + what it is (tinycache, bind, maradns, ...), but that it does + name caching. + + +2. What are the advantages / disadvantages of it? + +Meta means beeing indirect. Indirect means beeing slow. So, if +cinit would have to care about meta-dependencies, the code would become +much bigger and slower. + +On the other hand, one would perhaps like to use meta-dependencies, if +one tests different services with the same functionality or switches +them dependending on the situation (see profile.support). + + +3. The solutions + +As told above, cinit won't care about meta-dependencies and as you'll see +why it does not even need to. + +The first solution would be to have a mapping table outside of cinit. +This table could be a file for every meta-dependency and contain the +possibilities: + + dns-resolver: + remote-services/bind + local-services/tinydns + ... + +So one would have to call a program, which creates the real cinit +configuration. This is imho not a very elegant solution and could cause +problems, when handling self-written services. + +Another possibility is to use symlinks: Create service-directories +for all services beeing installed, but do dependencies in "wants/" +and "needs/" to a symlink (for instance create /etc/cinit/meta +and link to real services in there): + + /etc/cinit/meta/dns-resolver -> ../remote-services/bind/ + +This way you have the indirection (meta-dependencies) in the filesystem +and cinit does not need any additional code. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/paths.text b/software/cinit/browse_source/cinit-0.3pre9/doc/user/paths.text new file mode 100644 index 00000000..d44bca61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/paths.text @@ -0,0 +1,121 @@ +cinit - Configuration +====================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2006-06-03 +:Author Initials: NS + +Configuring cinit - the paths used + + +Main structure +--------------- +The base directory under which all configurations are found +is '/etc/cinit' (changable via conf/cinit_dir). + +The basic hierarchy is shown below: +---------------------------------------------------------------------- +/etc/cinit + svc -> services (adjustable: conf/svcdir) + conf -> general configuration (adjustable: conf/confdir) +---------------------------------------------------------------------- + + +The subdirectory 'conf' +~~~~~~~~~~~~~~~~~~~~~~~ +In this directory are general configurations located. +See below for the list of files that are located in this +directory. + + +The subdirectory 'svc' +~~~~~~~~~~~~~~~~~~~~~~ +This directory contains the services. A service is a directory. + + +Filenams for executable files +------------------------------ +When you create something that cinit should execute (like on +starting a service, on stopping a service, on panic, ...), cinit +will recognize the following extensions: + +. cinit executions extensions + - 'name' - the file that should be executed + - `'name'.params` - the parameter to pass to 'name' when executing + - `'name'.env` - the environment to pass to 'name' when executing + + +Name.params +~~~~~~~~~~~ +The 'params' file is a simple file containing one argument on each +line. + +Example: +---------------------------------------------------------------------- +[17:34] hydrogenium:cinit-0.3pre6% ls -l /etc/cinit/svc/init/on +lrwxrwxrwx 1 root root 9 2006-11-16 09:12 /etc/cinit/svc/init/on -> /bin/echo +[17:34] hydrogenium:cinit-0.3pre6% cat /etc/cinit/svc/init/on.params +The initial service has been started. (first parameter) +Some other useful information. (second parameter) +---------------------------------------------------------------------- + +Name.env +~~~~~~~~ +The 'env' file contains the environment definition. +Specify one assignment on each line, containing only "variable=value". + +Example: +---------------------------------------------------------------------- +[18:00] hydrogenium:% cat /etc/cinit/svc/remote-services/tinydns/on.env +IP=192.168.42.23 +---------------------------------------------------------------------- + +eof + +List of executable files +------------------------ +This list shows you what files are executable for cinit. + +on / off +~~~~~~~~~ +The files `on` and `off` are executed if found within a service +definition. `on` is called when starting the service, `off` +is called when stoping it. + + +conf/panic +~~~~~~~~~~ +This file will be executed by cinit if it has to panic. +Panic situation may occur, when there are heavy problems +like failing memory allocation in core areas. You can +change the name of the file in the pre-compilation settings +in `conf/c_panic`. + +If `conf/panic` is missing and cinit has to panic, a builtin +panic action will be called (see `conf/sulogin`). + + +conf/halt +~~~~~~~~~ +`conf/halt` will be called when cinit has shutdown all services +and wants to halt the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_halt`. + + +conf/poweroff +~~~~~~~~~~~~~ +`conf/poweroff` will be called when cinit has shutdown all services +and wants to poweroff the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_poweroff`. + + +conf/reboot +~~~~~~~~~~~ +`conf/reboot` will be called when cinit has shutdown all services +and wants to reboot the system. + +You can change the name of the file in the pre-compilation settings +in `conf/c_reboot`. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/problems.text b/software/cinit/browse_source/cinit-0.3pre9/doc/user/problems.text new file mode 100644 index 00000000..6acbb058 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/problems.text @@ -0,0 +1,114 @@ +Problems using cinit +==================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2007-04-24 +:Author Initials: NS + + +Using a high-speed, true dependency aware, profile supporting +logical acting and reliable init system like cinit is not +completly problem free. This document describes some common +problems you may have and their solutions. + + +Possible problems +----------------- + +Confused users +~~~~~~~~~~~~~~ +Compared to traditional init systems like sys-v-init or bsd-init +cinit introduces a complet new boot concept. This does not just +mean that you have services instead of shell-scripts (which is +one reason cinit is starting up faster), but also that the boot +order may be changed dynamically at bootup:, if a service fails. +And even if no service fails, the boot order may be different +on each boot, because processes are started in parallel and +may return earlier or later on each boot. To coordinate the +parallel running processes, cinit uses depencies, which are pretty +easy to understad when configurung, but may need some more +detailled watching at boot to understand it. + +The 'confused users'-problem is perhaps also the biggest +problem for introducing cinit as a replacement to current +init systems. + + +Configuration issues +~~~~~~~~~~~~~~~~~~~~ + +Not marking services as respawn +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +When cinit starts, it will wait for every service to exit. +So if you have a dependency on a service +that never exits, the whole init process may hang (dependending +on the dependencies). If you have services that are intendet +*not* to exit after start, you *have* to mark those with +`respawn`: Those services are started and watched by cinit +and will be restarted. This was a design choice to ensure +that all 'always running' processes *are* restarted. + +I did not find any service that should not exit and not +have a respawn flag. If you really really really have such +a service and you can prove to me that the respawn flag +would do harm to your system, I will think about implementing +a flag that tells cinit not to wait for it, but mark it +as successfully run after it has been started. + +User interaction +~~~~~~~~~~~~~~~~ + +User input +~~~~~~~~~~ +There may be the situation that you have to press a key +or enter some data when a service starts up (like entering +the password for your crypto harddisks). With cinit, this +will look like a mess, because other services may write to +the same console the service wrote a user prompt. + +The best solution for this problem is in my humble +opinion to create an user-input daemon that serialises +the requests and displays one after another. + +This could look like this: Your daemon wants to ask for +a passphrase for the SSL-certificate. You add aa needs +to this daemon to the 'input-daemon'. When you +start this service, it will contact the input-daemon +running on another virtual console and displaying a text +and an input field that is passed back to this service. +After that the input daemon changes back to the initial +console or asks for the next input, if there is another +request available. + +This input daemon may also be run on a graphical (X11) display. +. +Output to the user +~~~~~~~~~~~~~~~~~~ +When cinit starts up there may be many messages printed +out that also may look like printed random order. +To prevent your endusers from being confused you can create +some kind of graphical interface (like a framebuffer +or X11 display) that reads the output of cinit and converts +it to flashing images. It could look like this: + +---------------------------------------------------------------------- + + Your (graphical?) display: + -------------------------------------------------------------- + | /-----------------\ | + | | Red border, | | + | | failed to start | | + | \-----------------/ | + | | + | /------ | + | | Green border, | + | image van | + | | + | | + | | + | | + | | + | | + -------------------------------------------------------------- + + +---------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/profiles.text b/software/cinit/browse_source/cinit-0.3pre9/doc/user/profiles.text new file mode 100644 index 00000000..ab4d3c4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/profiles.text @@ -0,0 +1,79 @@ +cinit - Profiles +================ +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2005-06-04 +:Author Initials: NS + + +cinit profiles described. + + +What are profiles? +------------------ +Profiles are different configurations for different scenarios. +This means you can use the 'home' profile to setup things +differently than at work, where you would use either +no profile (standard configuration) or the 'work' profile. + + +How to use profiles? +--------------------- +Simply pass 'cprofile:PROFILENAME' (like cprofile:home) to cinit. + + +How to pass argumenents to cinit? +--------------------------------- +How to pass arguments to your init system depends on your operating +system and on your bootloader. + +Linux +~~~~~ +Under Linux the init-system gets the kernel arguments +(see linux.kernel.eats.arguments) as arguments. +So you can use + + kernel /usr/src/linux/vmlinuz cprofile:work (grub1,grub2) + append="cprofile:work" (LILO,yaboot) + +Other Unices should work like Linux, please consult your local +documentation. + + +How to configure profiles? +-------------------------- +It's very simple: Normally cinit would call /etc/cinit/svc/init as +the first service (with all its dependencies). If you pass 'cprofile=wireless' +to it, cinit will start from /etc/cinit/svc/wireless +instead. + +So the only thing you have to do is to create a service directory +below /etc/cinit/svc with the name of the profile you want to use. + +You can simply copy the init-dir and use it as a template: + + ei # cd /etc/cinit/svc; rsync -a init yourprofile + + Standard cp will copy the linked files, not the links, that's why I use rsync + You could also use tar: + + ei # cd /etc/cinit/svc/init; tar c . | (mkdir ../myprof; cd ../myprof; tar x ) + +That's it! + + +Some examples +------------- + +Here are some examples we found in #cLinux: + +-------------------------------------------------------------------------------- + profile name what it does + + musibox only start mp3blaster + terminal start only minicom, which opens the serial line + net-terminal start a respawning shell script, which starts + ssh to the selected host + video start X+mplayer, which plays the dvd/cdrom + wireless What to start when beeing in an unknown wlan + home/work selected services (nfs, ip, ...) for home or work +-------------------------------------------------------------------------------- diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/replacing.init b/software/cinit/browse_source/cinit-0.3pre9/doc/user/replacing.init new file mode 100644 index 00000000..2858c56c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/replacing.init @@ -0,0 +1,13 @@ +-------------------------------------------------------------------------------- +replacing your current init system, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +Simply install cinit (make install), configure cinit +(see configuring.cinit), restart system using +cinit (see README/Installing) delete /sbin/init +and link, move or copy cinit to init (ln -s /sbin/cinit /sbin/init), reboot. + +That's everything in general, the biggest part will be to configuring cinit. + +See also doc/merging.other.initsystems. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/respawning-sleep.text b/software/cinit/browse_source/cinit-0.3pre9/doc/user/respawning-sleep.text new file mode 100644 index 00000000..24ed17e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/respawning-sleep.text @@ -0,0 +1,52 @@ +cinit - Respawning and sleeping +=============================== +Nico Schottelius +0.1, for cinit 0.3, Initial Version from 2007-04-13 +:Author Initials: NS + + +How cinit sleeps, before a service is respawned. + +Introduction +------------ +When a service, that is configured to be respawning, exits cinit restarts it. +Because services may be broken and thus cinit would try to restart it many +times in a second, it is necessary to sleep between restarts. + +The big question: How to sleep? +------------------------------------ +The first possibility is to sleep a fixed amount of time between restarts: +For instance one second. This is not a good solution, because this waits +one unecessary second if the process just crashed. It may be too less, if +the service is really broken. + +The second possibility is to sleep a dynamic amount of time. + + +The next big question: How long to sleep? +----------------------------------------- +I think that as long as a service is broken we should not investigate to much +time into restarting it. So we can define a maximum amount of time to sleep +(for instance 30 seconds). The minimum amount of time to sleep is zero seconds. + +When the service is first started, the sleep time defaults to the minimum +amount of time. Each time the service is restarted, the sleep time is adjusted: + +sleep time (st) = Maximum sleep time (mst) / Time the process was running (tr) + +- If tr is < 1 it is adjusted to 1 and thus st is set to mst. +- If tr is > mst, st is set to 0. + + +How to force restart of a service? +---------------------------------- +Use cvsc (to be implemented). + + +Hom is it implemented? +---------------------- +Everytime cinit has to respawn a service it has to fork() itself. +The sleep call is implemented in the fork, so cinit itself does not have +to care about it. After the sleep time is over or the fork() recieves +SIGALARM it executes the real service. cinit itself records as start time +the current time plus sleep time. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/special-services.text b/software/cinit/browse_source/cinit-0.3pre9/doc/user/special-services.text new file mode 100644 index 00000000..4367bed1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/special-services.text @@ -0,0 +1,12 @@ +at: + no non-forking mode +fsck: + returns non-zero if it repaired something. + You have to wrap it into a shell-script :-( + + #!/bin/sh + fsck $@ + [ $? -le 1 ] && exit 0 + exit 1 + +Non-zero exit in general diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/supported-os.text b/software/cinit/browse_source/cinit-0.3pre9/doc/user/supported-os.text new file mode 100644 index 00000000..97b29506 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/supported-os.text @@ -0,0 +1,32 @@ +Supported operating systems +=============== +Nico Schottelius +0.1, Initial Version from 2007-02-15 +:Author Initials: NS + +This document lists the supported operating systems. + + +Supported OS +------------ +This means currently that cinit compiles on that system + +Tested by the author +~~~~~~~~~~~~~~~~~~~~ +- GNU/Linux +- FreeBSD +- NetBSD + +Reported by others +~~~~~~~~~~~~~~~~~~ +[none] + +Unsupported OS +-------------- + +OpenBSD +~~~~~~~ +Seems to not comply to Posix / XSI. Have a look at +http://home.schottelius.org/~nico/unix/openbsd/ftok-sys-ipc.h-problem. +This is a demo of the problem on OpenBSD 4.0 with cinit-0.3pre7-git. + diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/updating.cinit b/software/cinit/browse_source/cinit-0.3pre9/doc/user/updating.cinit new file mode 100644 index 00000000..fc0d3fef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/updating.cinit @@ -0,0 +1,17 @@ +-------------------------------------------------------------------------------- +updating cinit, +Nico Schottelius 2005-06-14 (Last Modified: 2005-06-14) +-------------------------------------------------------------------------------- + +To exchange cinit without rebooting do the following: + + 1. install new cinit (make install) + 2. call cservice -u thilo (if you have cinit-0.1 or later) + + For older versions: + + 2. go to rescue mode (cservice -s thilo) + 3. re-exec cinit (exec /sbin/cinit) + +Attention: This will kill everything running and restart as if you would just + have booted. diff --git a/software/cinit/browse_source/cinit-0.3pre9/doc/user/using.rescue b/software/cinit/browse_source/cinit-0.3pre9/doc/user/using.rescue new file mode 100644 index 00000000..f58ff512 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/doc/user/using.rescue @@ -0,0 +1,30 @@ +-------------------------------------------------------------------------------- +How to use the rescue mode, +Nico Schottelius 2005-06-13 (Last Modified: 2005-06-13) +-------------------------------------------------------------------------------- + +cinit knows of a so called "rescue mode" (other init systems also +name it "Single user"). + +In this rescue mode you have a shell. Exactly one shell. + +No getty, no daemon, nothing will be alive, not even cinit. + +You start the rescue mode either by + a) sending SIGUSR2 to cinit (kill -USR2 1) + b) using cservice (cservice -s thilo) + +You can do maintaining then. When you finished, you can either + a) hard-reboot/poweroff/halt + b) restart cinit and restart the system without needing to reboot + +In the later case, you simply have to replace your shell with +cinit. In most shells you can do that by entering the following: + +shell # exec /sbin/cinit + +This assumes that you left the system in a clean state: Exactly as +the kernel would start (Well, cinit may ignore if some things are there, +but do not wonder if some services will fail, if their job is already done.). + +Oh, and yes, you could even update cinit this way ;-) diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/cinit.build-env b/software/cinit/browse_source/cinit-0.3pre9/scripts/cinit.build-env new file mode 100644 index 00000000..94e093e9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/cinit.build-env @@ -0,0 +1,12 @@ +#!/bin/sh +# Nico Schottelius +# cinit: build environment to be used in scripts +# * Should be sourced by using scripts +# 2006-10-26 +# + +. $(dirname $0)/cinit.read-conf + +export BASEDIR=${DESTDIR}${CINIT_DIR} +export SERVICES=${BASEDIR}/${SVCDIR} +export CONFIG=${BASEDIR}/${CONFDIR} diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/cinit.get-confdir b/software/cinit/browse_source/cinit-0.3pre9/scripts/cinit.get-confdir new file mode 100644 index 00000000..38d8572d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/cinit.get-confdir @@ -0,0 +1,17 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# Date: 2005-05-24 (Last Changed: 2005-08-08) + +# try environment first +if [ "$CINIT_CONF_DIR" ]; then + CONFDIR=$CINIT_CONF_DIR +elif [ -d $(dirname $0)/../conf/ ]; then + CONFDIR=$(dirname $0)/../conf/ +else + echo 'Did not find cinit configuration!' >&2 + echo "Please set the variable CINIT_CONF_DIR" >&2 + exit 1 +fi + +echo $CONFDIR diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/cinit.install.standard.dirs b/software/cinit/browse_source/cinit-0.3pre9/scripts/cinit.install.standard.dirs new file mode 100644 index 00000000..22cf273d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/cinit.install.standard.dirs @@ -0,0 +1,13 @@ +#!/bin/sh +# Nico Schottelius +# cinit: install standard sub-configuration directories +# Date: 2005-08-07 +# + +. $(dirname $0)/cinit.build-env + +for svc in $SERVICE_CATEGORIES; do + "$INSTALL_PROG" "$INSTALL_DIRECTORY" "${SERVICES}/${svc}" +done + +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/cinit.mkheader b/software/cinit/browse_source/cinit-0.3pre9/scripts/cinit.mkheader new file mode 100644 index 00000000..80e3f7cf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/cinit.mkheader @@ -0,0 +1,32 @@ +#!/bin/sh +# Nico Schottelius +# cinit: create header file +# + + +CONFS=$($(dirname $0)/cinit.get-confdir)/../conf/* + +echo "/* Warning: Autogenerated by $0, do not edit. */" +for conf in $CONFS; do + NAME="$(basename $conf | tr a-z A-Z)" + value=$(head -n 1 $conf) + + # check if numeric: no quotes needed + is_numeric=$(echo $value | awk '/^((0[xX])[0-9a-fA-F]+)|([0-9]+)$/ { print }') + is_string="$(echo $value | grep '^"')" + + # + # Check for quote type + # + if [ ! "$is_numeric" -a ! "$is_string" ]; then + one_char=$(echo -n $value | wc -c) + + if [ "$one_char" -eq 1 ]; then + value="'$value'" + else + # is a string + value="\"$value\"" + fi + fi + echo "#define" "$NAME" "$value" +done diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/cinit.read-conf b/software/cinit/browse_source/cinit-0.3pre9/scripts/cinit.read-conf new file mode 100644 index 00000000..80a32463 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/cinit.read-conf @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# cinit: read configuration into variables +# ~ 2005 +# + +CONFS=$($(dirname $0)/cinit.get-confdir) + +set -e + +for conf in ${CONFS}/*; do + NAME="$(basename $conf | tr a-z A-Z)" + if eval test -z \$$NAME; then + eval $NAME=\"$(head -n 1 $conf)\" + eval export $NAME + fi +# eval echo $NAME = \$$NAME +done diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/create_baseconfig.sh b/software/cinit/browse_source/cinit-0.3pre9/scripts/create_baseconfig.sh new file mode 100644 index 00000000..7c9b69e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/create_baseconfig.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Nico Schottelius +# 2006-10-23 +# cLinux/cinit + +. $(dirname $0)/cinit.build-env + +set -e + +mkdir -p "${BASEDIR}" + +mkdir -p "${SERVICES}" +mkdir -p "${SERVICES}/${C_INIT}" + +mkdir -p "${CONFIG}" diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/README b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/README new file mode 100644 index 00000000..2162b6b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/README @@ -0,0 +1 @@ +Only to be used by Nico Schottelius. diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/cinit.release b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/cinit.release new file mode 100644 index 00000000..dc65c0a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/cinit.release @@ -0,0 +1,64 @@ +#!/bin/sh +# Nico Schottelius +# Build release tar +# Date: Sat Oct 15 21:38:29 CEST 2005 +# Last Changed: ls -l + +# only release if I tell it to release +[ "$1" = "now" ] || exit 23 + +#if [ $# -ne 2 ]; then +# echo "This is a maintainer-only script to release cinit" +# echo $(basename $0): source-dir version +# exit 1 +#fi + +set -x + +DDIR="$(cd $(dirname $0)/../../../; pwd -P)" +DIR="$(cd $(dirname $0)/../../; pwd -P)" +RDIR=$(basename "$DIR") +REL_DIR="$(echo $DIR | sed 's;.*/;;')" +VERSION="$(cd "$DIR"; pwd -P | sed 's;.*/cinit-;;')" +VERSION_CONF="$(head -n1 $(dirname $0)/../../conf/version | sed 's/^"\(.*\)"$/\1/')" +VERSION_CHANGES="$(head -n1 "$(dirname $0)/../../CHANGES" | sed 's/cinit-\(.*\):$/\1/')" + +echo "=> Version directory: $VERSION" +echo "=> Version conf/version: $VERSION_CONF" +echo "=> Version CHANGES: $VERSION_CHANGES" + +if [ "$VERSION" = "$VERSION_CONF" -a "$VERSION" = "$VERSION_CHANGES" ]; then + echo "=> Version confirmed." +fi + +echo -n "=> Continue? " +read yes + +OUT_NAME="cinit-${VERSION}.tar.bz2" +D_HOST=home.schottelius.org +D_BASE=www/org/schottelius/unix/www/cinit +D_DIR=${D_BASE}/archives/ +D_SOURCE=${D_BASE}/browse_source/ +LINK=current + +if [ ! -d "$DIR" ]; then + echo "$DIR is not a directory" + exit 1 +fi + +( cd "$DIR" && make dist ) || exit 1 + +echo "Creating bzip2 compressed tar" +#tar cj -X $DIR/.exclude -C "$DDIR" -f "$OUT_NAME" "$REL_DIR" +cd $DDIR +tar cj -X $DIR/.exclude -f "$OUT_NAME" "$RDIR" +chmod 0644 "$OUT_NAME" +echo "Transfering to $D_HOST" +scp "$OUT_NAME" "$D_HOST:$D_DIR" +echo "Extracting to $D_SOURCE" +ssh "$D_HOST" "tar xfj $D_DIR/$OUT_NAME -C $D_SOURCE" +echo "Correcting paranoid permissions" +ssh "$D_HOST" "find \"$D_SOURCE/$RDIR\" -type f -exec chmod 0644 {} \\;" +ssh "$D_HOST" "find \"$D_SOURCE/$RDIR\" -type d -exec chmod 0755 {} \\;" +ssh "$D_HOST" "cd \"$D_SOURCE\" && rm -f \"$LINK\" && ln -s \"$DIR\" \"$LINK\"" +echo "Please do not forget to update the website..." diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/compile+run.sh b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/compile+run.sh new file mode 100644 index 00000000..30ec68a6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/compile+run.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# yah - yet another hack + +if [ ! "$1" ]; then + echo "HOSTNAME" + exit 23 +fi + +host="$1" + +hier=$(dirname $0) + +$hier/compile_test.sh "$host" + +if [ $? -ne 0 ]; then + echo "aborting, did not compile on $1" + exit 1 +fi + +ssh "${host}" './cinit/src/cinit & (sleep 30; kill -9 $(pgrep cinit))' diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/compile_local.sh b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/compile_local.sh new file mode 100644 index 00000000..e2bfce5e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/compile_local.sh @@ -0,0 +1,24 @@ +# just a hack + +dir=$(dirname $0) + +sys=$(uname -s) +sys_small=$(echo $sys | tr '[A-Z]' '[a-z]') + +case $(uname -s) in + NetBSD|OpenBSD) + make=gmake + ;; + *) + make=make + ;; +esac + +cd "${dir}/../../" +echo $sys_small > conf/os +# automatically called by make.. +#./bin/cinit.configure.os + +cd "src" +$make clean +$make cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/compile_run_as_compiler.sh b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/compile_run_as_compiler.sh new file mode 100644 index 00000000..f1ba01d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/compile_run_as_compiler.sh @@ -0,0 +1,14 @@ +what=$(dirname $0)/../../ +what_real=$(cd "$what" && pwd -P) +dest=~compiler/cinit-test + +set -e +sudo rsync -av "${what_real}/" "$dest" +sudo chown -R compiler "$dest" +sudo -u compiler "${dest}/scripts/internal/compile_local.sh" +sudo -u compiler "${dest}/src/cinit" & +sleep 13 +sudo -u compiler "${dest}/scripts/internal/stop_cinit.sh" + +# exit 0 for make +exit 0 diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/compile_test.sh b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/compile_test.sh new file mode 100644 index 00000000..335f31ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/compile_test.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# yah - yet another hack + +host="$1" +what=$(dirname $0)/../../ + +rsync --exclude .git --exclude \*.o -av "${what}" "${host}:cinit" +ssh "${host}" "./cinit/scripts/internal/compile_local.sh" diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/create_test_config.sh b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/create_test_config.sh new file mode 100644 index 00000000..720ce969 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/create_test_config.sh @@ -0,0 +1,18 @@ +hier=$(dirname $0) + +set -e +${hier}/../cinit.install.standard.dirs +cat > /etc/cinit/svc/init/on << eof +#!/bin/sh +echo test1 +sleep 4 +echo test2 - \$@ +eof +chmod 0755 /etc/cinit/svc/init/on + +cat > /etc/cinit/svc/init/on.params << eof +es +scheint +zu +gehen +eof diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/find_right_version.sh b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/find_right_version.sh new file mode 100644 index 00000000..759f23c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/find_right_version.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +src="$(dirname $0)/../../" +src_abs=$(cd "$src" && pwd -P) + +for commit in $( git log --pretty=short | awk '/^commit/ { print $2 }'); do + set -e + cd "$src_abs" + temp=$(mktemp -d /tmp/cinit.XXXXXXXXXX) + git-archive --format=tar "$commit" | ( cd "$temp"; tar x ) + cd "${temp}/src" + set +e + make clean && make cinit && ./cinit + if [ "$?" -eq 0 ]; then + echo "Commit $commit is ok" + exit 0 + fi + echo "Broken $commit" + sleep 1 + set -e + rm -rf "$temp" +done + +exit 1 diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/stop_cinit.sh b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/stop_cinit.sh new file mode 100644 index 00000000..86e4d82b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/stop_cinit.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# Linux specific, but don't care, I am the only person that should use it + +killall -TERM cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/test_on_hosts.sh b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/test_on_hosts.sh new file mode 100644 index 00000000..e6df35ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/test_on_hosts.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# yah + +hosts="penrose.bsdprojects.net bot.unixkiste.org suckz.eu jiffies.forkbomb.ch" + +set -e + +for host in $hosts; do + echo "$1 on $host" + "$1" "$host" | sed "s/^/${host}: /" + echo "==> Finished $host" +done diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/valgrind b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/valgrind new file mode 100644 index 00000000..f769f9da --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/internal/valgrind @@ -0,0 +1 @@ +valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes --leak-resolution=high ./cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/scripts/report.compile b/software/cinit/browse_source/cinit-0.3pre9/scripts/report.compile new file mode 100644 index 00000000..ac591412 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/scripts/report.compile @@ -0,0 +1,18 @@ +#!/bin/sh +# Nico Schottelius +# 2006-12-08 +# Report compile success +# + +echo "cinit compile success report" +echo "----------------------------" +"$(dirname $0)/cinit.mkheader" +echo "----------------------------" +uname -a +echo "----------------------------" +. "$(dirname $0)/cinit.read-conf" +echo '$CC' +"$CC" -v +echo "----------------------------" +echo -n "Size: " +ls -l "$(dirname $0)/../src/cinit" diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-14:54:44 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-14:54:44 new file mode 100644 index 00000000..cb646bb8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-14:54:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 74380 Apr 26 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-16:47:50 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-16:47:50 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-16:47:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-16:48:48 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-16:48:48 new file mode 100644 index 00000000..204585a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-16:48:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581695 Apr 26 16:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-16:50:45 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-16:50:45 new file mode 100644 index 00000000..7a0db7d2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-16:50:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 581179 Apr 26 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-17:12:48 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-17:12:48 new file mode 100644 index 00000000..d239e089 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-17:12:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582701 Apr 26 17:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-17:13:43 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-17:13:43 new file mode 100644 index 00000000..aad49034 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 582297 Apr 26 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-23:05:33 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-23:05:33 new file mode 100644 index 00000000..4a636b8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-26-23:05:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 26 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-27-00:39:24 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-27-00:39:24 new file mode 100644 index 00000000..e93028d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-27-00:39:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 36307 Apr 27 00:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:18:22 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:18:22 new file mode 100644 index 00000000..f0d2e75f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:18:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:20:40 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:20:40 new file mode 100644 index 00000000..3b01bfe1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:20:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:23:25 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:23:25 new file mode 100644 index 00000000..750e3303 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:23:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585344 Apr 30 15:23 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:25:44 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:25:44 new file mode 100644 index 00000000..5ed85ca3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:25:44 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:32:43 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:32:43 new file mode 100644 index 00000000..3c54e71a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:32:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:32 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:33:37 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:33:37 new file mode 100644 index 00000000..c24acefd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:33:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 585364 Apr 30 15:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:41:18 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:41:18 new file mode 100644 index 00000000..b29d001c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-15:41:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586400 Apr 30 15:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-16:48:16 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-16:48:16 new file mode 100644 index 00000000..413bd06c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-16:48:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 587874 Apr 30 16:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-17:02:27 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-17:02:27 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-17:05:11 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-17:05:11 new file mode 100644 index 00000000..c2e30760 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-17:05:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583878 Apr 30 17:05 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-17:06:15 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-17:06:15 new file mode 100644 index 00000000..d11fe194 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-17:06:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583958 Apr 30 17:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-17:11:59 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-17:11:59 new file mode 100644 index 00000000..513f7663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-17:11:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583974 Apr 30 17:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-17:13:43 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-17:13:43 new file mode 100644 index 00000000..76110937 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-17:13:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 17:13 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-22:28:13 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-22:28:13 new file mode 100644 index 00000000..1370e416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-22:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584050 Apr 30 22:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-22:34:23 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-22:34:23 new file mode 100644 index 00000000..ceba126c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-04-30-22:34:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583838 Apr 30 22:34 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:27:51 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:27:51 new file mode 100644 index 00000000..b21e993d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584543 May 2 13:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:46:31 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:46:31 new file mode 100644 index 00000000..95c008db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:46:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584719 May 2 13:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:49:29 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:49:29 new file mode 100644 index 00000000..284469ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:49:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584775 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:49:58 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:49:58 new file mode 100644 index 00000000..9b87df79 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:49:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584843 May 2 13:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:52:20 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:52:20 new file mode 100644 index 00000000..a4705b4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:52:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584711 May 2 13:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:55:50 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:55:50 new file mode 100644 index 00000000..847e1f56 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:55:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:58:14 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:58:14 new file mode 100644 index 00000000..a9094c6f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:58:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584759 May 2 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:59:53 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:59:53 new file mode 100644 index 00000000..921e7860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-13:59:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 13:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-14:00:26 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-14:00:26 new file mode 100644 index 00000000..aeb6907a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-14:00:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 584915 May 2 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-14:04:19 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-14:04:19 new file mode 100644 index 00000000..138af335 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-02-14:04:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 583802 May 2 14:04 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-15:47:56 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-15:47:56 new file mode 100644 index 00000000..87f3513e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-15:47:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586826 May 6 15:47 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:02:41 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:02:41 new file mode 100644 index 00000000..85073f60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:02:41 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586774 May 6 20:02 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:40:55 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:40:55 new file mode 100644 index 00000000..34e3fd85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:40:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586578 May 6 20:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:44:39 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:44:39 new file mode 100644 index 00000000..2b6d7b2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:44:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586594 May 6 20:44 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:48:57 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:48:57 new file mode 100644 index 00000000..55fa5821 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:48:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586646 May 6 20:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:49:46 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:49:46 new file mode 100644 index 00000000..533c3fd6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:49:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586546 May 6 20:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:54:45 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:54:45 new file mode 100644 index 00000000..bffbdd24 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:54:45 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:57:17 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:57:17 new file mode 100644 index 00000000..071f56c6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-20:57:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586354 May 6 20:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-21:07:11 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-21:07:11 new file mode 100644 index 00000000..2c71d62b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-21:07:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 586414 May 6 21:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:22:43 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:22:43 new file mode 100644 index 00000000..6963a07e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:22:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:22 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:39:12 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:39:12 new file mode 100644 index 00000000..90e36387 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:39:12 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590128 May 6 22:39 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:43:21 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:43:21 new file mode 100644 index 00000000..9f5f1b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:43:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:56:58 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:56:58 new file mode 100644 index 00000000..5c7685ba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:56:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590148 May 6 22:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:58:39 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:58:39 new file mode 100644 index 00000000..4720079f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:58:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590180 May 6 22:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:59:17 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:59:17 new file mode 100644 index 00000000..d7c4fd66 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-22:59:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590232 May 6 22:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-23:19:24 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-23:19:24 new file mode 100644 index 00000000..cd0fb013 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-23:19:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 590364 May 6 23:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-23:53:59 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-23:53:59 new file mode 100644 index 00000000..873c4553 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-06-23:53:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 83116 May 6 23:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:18:32 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:18:32 new file mode 100644 index 00000000..00b835d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:18:32 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591984 May 7 00:18 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:20:46 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:20:46 new file mode 100644 index 00000000..3b1a8332 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:20:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:24:11 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:24:11 new file mode 100644 index 00000000..cb129627 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:24:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:26:55 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:26:55 new file mode 100644 index 00000000..d681556a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:26:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:27:53 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:27:53 new file mode 100644 index 00000000..b1ac1360 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:27:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:27 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:28:24 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:28:24 new file mode 100644 index 00000000..df645c5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:28:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:37:58 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:37:58 new file mode 100644 index 00000000..a5eaa893 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:37:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591992 May 7 00:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:41:50 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:41:50 new file mode 100644 index 00000000..634db82e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:41:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591988 May 7 00:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:55:51 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:55:51 new file mode 100644 index 00000000..2066a3b4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:55:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:55 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:59:30 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:59:30 new file mode 100644 index 00000000..03900b64 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-00:59:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 00:59 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-01:07:13 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-01:07:13 new file mode 100644 index 00000000..f2b3d846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-01:07:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-01:08:19 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-01:08:19 new file mode 100644 index 00000000..17cb5c2b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-01:08:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574191 May 7 01:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-01:16:38 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-01:16:38 new file mode 100644 index 00000000..9433ec26 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-01:16:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:16 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-01:19:48 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-01:19:48 new file mode 100644 index 00000000..0c40f566 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-01:19:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592323 May 7 01:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-01:52:58 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-01:52:58 new file mode 100644 index 00000000..1aaadbc1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-01:52:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592343 May 7 01:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:41:29 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:41:29 new file mode 100644 index 00000000..2be2f9a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:41:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591445 May 7 12:41 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:43:55 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:43:55 new file mode 100644 index 00000000..30ec92e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:43:55 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:43 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:45:38 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:45:38 new file mode 100644 index 00000000..c5d8b280 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:45:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:45 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:48:21 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:48:21 new file mode 100644 index 00000000..2525b992 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:48:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:48 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:49:22 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:49:22 new file mode 100644 index 00000000..aafaa448 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:49:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591525 May 7 12:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:50:57 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:50:57 new file mode 100644 index 00000000..689e0fd2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:50:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591589 May 7 12:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:52:26 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:52:26 new file mode 100644 index 00000000..b7771920 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:52:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591729 May 7 12:52 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:57:56 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:57:56 new file mode 100644 index 00000000..271bb163 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-12:57:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591933 May 7 12:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:06:20 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:06:20 new file mode 100644 index 00000000..d2c651e8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:06:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 591981 May 7 13:06 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:21:37 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:21:37 new file mode 100644 index 00000000..8d92e4f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:21:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:21 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:24:40 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:24:40 new file mode 100644 index 00000000..a025210f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:24:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:25:56 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:25:56 new file mode 100644 index 00000000..15de8275 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:25:56 @@ -0,0 +1 @@ +-rwx------ 1 nico users 592137 May 7 13:25 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:26:49 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:26:49 new file mode 100644 index 00000000..fa232442 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:26:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593597 May 7 13:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:30:20 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:30:20 new file mode 100644 index 00000000..37d26b60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:30:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:30 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:33:50 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:33:50 new file mode 100644 index 00000000..3a8a3343 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:33:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 593613 May 7 13:33 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:51:24 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:51:24 new file mode 100644 index 00000000..139a41ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:51:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595209 May 7 13:51 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:53:11 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:53:11 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:53:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:53:22 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:53:22 new file mode 100644 index 00000000..a4a9383c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:53:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594213 May 7 13:53 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:57:27 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:57:27 new file mode 100644 index 00000000..4d0c5820 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:57:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594245 May 7 13:57 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:58:26 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:58:26 new file mode 100644 index 00000000..f62f9890 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-13:58:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594201 May 7 13:58 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:00:47 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:00:47 new file mode 100644 index 00000000..1b1c2687 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:00:47 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:00 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:12:17 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:12:17 new file mode 100644 index 00000000..eb6c69a8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:12:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 594209 May 7 14:12 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:40:38 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:40:38 new file mode 100644 index 00000000..5cce7d61 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:40:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597457 May 7 14:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:46:22 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:46:22 new file mode 100644 index 00000000..17920fb6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:46:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597349 May 7 14:46 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:49:20 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:49:20 new file mode 100644 index 00000000..be0db14c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:49:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597465 May 7 14:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:54:30 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:54:30 new file mode 100644 index 00000000..a7bb306d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:54:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:54 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:56:35 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:56:35 new file mode 100644 index 00000000..2a3d7b76 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-14:56:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 597521 May 7 14:56 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:11:31 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:11:31 new file mode 100644 index 00000000..6d39491b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:11:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 65883 May 7 15:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:19:50 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:19:50 new file mode 100644 index 00000000..f6cbfa60 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:19:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:19 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:20:58 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:20:58 new file mode 100644 index 00000000..44f8ed6e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:20:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600423 May 7 15:20 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:24:21 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:24:21 new file mode 100644 index 00000000..ac80b6cc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:24:21 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600487 May 7 15:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:28:54 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:28:54 new file mode 100644 index 00000000..c010ebe3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:28:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600483 May 7 15:28 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:40:58 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:40:58 new file mode 100644 index 00000000..97b6ef8b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-15:40:58 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600479 May 7 15:40 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-16:11:52 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-16:11:52 new file mode 100644 index 00000000..f4b32610 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-16:11:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 601444 May 7 16:11 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-16:26:18 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-16:26:18 new file mode 100644 index 00000000..a52756b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-16:26:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:26 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-16:35:42 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-16:35:42 new file mode 100644 index 00000000..601a1bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-16:35:42 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602192 May 7 16:35 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-16:50:11 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-16:50:11 new file mode 100644 index 00000000..4c5693a0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-16:50:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602260 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-16:50:40 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-16:50:40 new file mode 100644 index 00000000..1a1cd156 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-16:50:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 16:50 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-17:03:50 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-17:03:50 new file mode 100644 index 00000000..8b6f5a43 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-17:03:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602248 May 7 17:03 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-17:07:50 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-17:07:50 new file mode 100644 index 00000000..d19fc7ae --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-17:07:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 596181 May 7 17:07 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-17:08:26 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-17:08:26 new file mode 100644 index 00000000..de1d5756 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-17:08:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575617 May 7 17:08 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-17:10:57 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-17:10:57 new file mode 100644 index 00000000..ccf3d46e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-17:10:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 17:10 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-18:24:22 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-18:24:22 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-18:24:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-18:24:59 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-18:24:59 new file mode 100644 index 00000000..9b515805 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-18:24:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575513 May 7 18:24 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-18:37:23 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-18:37:23 new file mode 100644 index 00000000..4c797f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-18:37:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 575521 May 7 18:37 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-18:49:16 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-18:49:16 new file mode 100644 index 00000000..f6a6637e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-07-18:49:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 26118 May 7 18:49 cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-08-12:41:22 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-08-12:41:22 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-08-12:42:57 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-08-12:42:57 new file mode 100644 index 00000000..60f39860 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-08-12:42:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 12:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-08-22:41:37 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-08-22:41:37 new file mode 100644 index 00000000..eeb969f5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-08-22:41:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 574244 May 8 22:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-08-23:03:37 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-08-23:03:37 new file mode 100644 index 00000000..7b69f761 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-08-23:03:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 595364 May 8 23:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-08-23:11:20 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-08-23:11:20 new file mode 100644 index 00000000..b79e90ca --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-08-23:11:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600779 May 8 23:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-08-23:40:29 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-08-23:40:29 new file mode 100644 index 00000000..6cf221bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-08-23:40:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600887 May 8 23:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-09-12:03:27 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-09-12:03:27 new file mode 100644 index 00000000..78304c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-09-12:03:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600967 May 9 12:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-09-12:05:57 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-09-12:05:57 new file mode 100644 index 00000000..a810ae44 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-09-12:05:57 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600971 May 9 12:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-19:10:50 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-19:10:50 new file mode 100644 index 00000000..e8e895de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-19:10:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 600979 May 10 19:10 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-19:16:39 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-19:16:39 new file mode 100644 index 00000000..14426e45 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-19:16:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-19:26:14 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-19:26:14 new file mode 100644 index 00000000..c1ba5203 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-19:26:14 @@ -0,0 +1 @@ +-rwx------ 1 nico users 602483 May 10 19:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-19:39:23 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-19:39:23 new file mode 100644 index 00000000..9b30a737 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-19:39:23 @@ -0,0 +1 @@ +-rwx------ 1 nico users 603383 May 10 19:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:13:51 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:13:51 new file mode 100644 index 00000000..81fab8bc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:13:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 10 20:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:14:40 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:14:40 new file mode 100644 index 00000000..f73e7147 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:14:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:27:10 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:27:10 new file mode 100644 index 00000000..a7fa3a2e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:27:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604511 May 10 20:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:28:11 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:28:11 new file mode 100644 index 00000000..e3597646 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:28:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604507 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:28:31 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:28:31 new file mode 100644 index 00000000..f5b63078 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:28:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:32:29 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:32:29 new file mode 100644 index 00000000..b46425f9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:32:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:33:30 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:33:30 new file mode 100644 index 00000000..ad3cb32e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:33:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604471 May 10 20:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:38:26 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:38:26 new file mode 100644 index 00000000..b78fde41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-20:38:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604245 May 10 20:38 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-21:52:18 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-21:52:18 new file mode 100644 index 00000000..5319df7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-21:52:18 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604533 May 10 21:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-22:06:53 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-22:06:53 new file mode 100644 index 00000000..34791fa3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-22:06:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604641 May 10 22:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-22:24:49 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-22:24:49 new file mode 100644 index 00000000..0d88b035 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-22:24:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95668 May 10 22:24 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-22:27:59 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-22:27:59 new file mode 100644 index 00000000..a2b8778b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-22:27:59 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95400 May 10 22:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-22:30:25 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-22:30:25 new file mode 100644 index 00000000..ae278de2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-22:30:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95456 May 10 22:30 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-23:42:29 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-23:42:29 new file mode 100644 index 00000000..11bcf1e3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-23:42:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606417 May 10 23:42 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-23:44:10 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-23:44:10 new file mode 100644 index 00000000..6ffc3a31 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-23:44:10 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606369 May 10 23:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-23:46:40 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-23:46:40 new file mode 100644 index 00000000..e3aa20c0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-10-23:46:40 @@ -0,0 +1 @@ +-rwx------ 1 nico users 606373 May 10 23:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-00:17:19 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-00:17:19 new file mode 100644 index 00000000..fdaa4339 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-00:17:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 604923 May 11 00:17 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-00:23:52 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-00:23:52 new file mode 100644 index 00000000..7e94e61a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-00:23:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605007 May 11 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-08:04:16 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-08:04:16 new file mode 100644 index 00000000..33d8fd01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-08:04:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-08:06:26 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-08:06:26 new file mode 100644 index 00000000..c96a3211 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-08:06:26 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95830 May 11 08:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-08:09:49 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-08:09:49 new file mode 100644 index 00000000..0e444a28 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-08:09:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95854 May 11 08:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-08:11:49 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-08:11:49 new file mode 100644 index 00000000..856ac480 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-11-08:11:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95862 May 11 08:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-13-20:34:19 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-13-20:34:19 new file mode 100644 index 00000000..86818bfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-13-20:34:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 69502 May 13 20:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-13-22:33:53 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-13-22:33:53 new file mode 100644 index 00000000..77c8fb8c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-13-22:33:53 @@ -0,0 +1 @@ +-rwx------ 1 nico users 579289 May 13 22:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-00:20:52 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-00:20:52 new file mode 100644 index 00000000..a053d473 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-00:20:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605317 May 16 00:20 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-00:23:43 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-00:23:43 new file mode 100644 index 00000000..d43f64a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605373 May 16 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-00:27:36 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-00:27:36 new file mode 100644 index 00000000..ca2ccc40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-00:27:36 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605569 May 16 00:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-00:37:24 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-00:37:24 new file mode 100644 index 00000000..ea664c90 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-00:37:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 00:37 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-00:39:43 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-00:39:43 new file mode 100644 index 00000000..3eb8d279 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-00:39:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605267 May 16 00:39 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-10:14:43 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-10:14:43 new file mode 100644 index 00000000..d7555f0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-10:14:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605461 May 16 10:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-10:27:48 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-10:27:48 new file mode 100644 index 00000000..b8f9fc63 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-10:27:48 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605493 May 16 10:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-10:44:17 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-10:44:17 new file mode 100644 index 00000000..a4b493e5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-10:44:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:44 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-10:52:29 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-10:52:29 new file mode 100644 index 00000000..20f10201 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-16-10:52:29 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605561 May 16 10:52 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-17-00:19:15 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-17-00:19:15 new file mode 100644 index 00000000..4f112228 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-17-00:19:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 00:19 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-17-16:02:33 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-17-16:02:33 new file mode 100644 index 00000000..e1b6b2d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-17-16:02:33 @@ -0,0 +1 @@ +-rwx------ 1 nico users 605405 May 17 16:02 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:01:28 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:01:28 new file mode 100644 index 00000000..f084d66c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:01:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97550 May 21 15:01 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:03:46 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:03:46 new file mode 100644 index 00000000..3300d96b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:03:46 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97546 May 21 15:03 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:06:24 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:06:24 new file mode 100644 index 00000000..c07965d9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:06:24 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95186 May 21 15:06 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:12:50 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:12:50 new file mode 100644 index 00000000..58d948d6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:12:50 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:14:38 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:14:38 new file mode 100644 index 00000000..a54dbd5f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:14:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:15:28 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:15:28 new file mode 100644 index 00000000..fb57cba5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:15:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:15 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:16:15 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:16:15 new file mode 100644 index 00000000..7411b66d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:16:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:16 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:26:25 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:26:25 new file mode 100644 index 00000000..48fc5eb9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:26:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:26 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:27:30 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:27:30 new file mode 100644 index 00000000..f9ceed5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:27:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97562 May 21 15:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:32:52 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:32:52 new file mode 100644 index 00000000..9e7e39a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:32:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97622 May 21 15:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:36:19 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:36:19 new file mode 100644 index 00000000..8f465621 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-15:36:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97638 May 21 15:36 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:05:20 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:05:20 new file mode 100644 index 00000000..fdd3f0f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:05:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95350 May 21 17:05 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:08:31 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:08:31 new file mode 100644 index 00000000..ee8a1e86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:08:31 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95358 May 21 17:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:11:25 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:11:25 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:11:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:12:15 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:12:15 new file mode 100644 index 00000000..164d40ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:12:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95334 May 21 17:11 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:12:49 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:12:49 new file mode 100644 index 00000000..125b84d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:12:49 @@ -0,0 +1 @@ +-rwx------ 1 nico users 95422 May 21 17:12 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:33:25 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:33:25 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:33:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:47:39 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:47:39 new file mode 100644 index 00000000..2c6102d8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:47:39 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97722 May 21 17:33 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:47:52 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:47:52 new file mode 100644 index 00000000..f86bd095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-21-17:47:52 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 21 17:47 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-23-21:04:37 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-23-21:04:37 new file mode 100644 index 00000000..e9159f80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-23-21:04:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71102 May 23 21:04 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-26-07:55:38 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-26-07:55:38 new file mode 100644 index 00000000..d814eb2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-26-07:55:38 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97762 May 26 07:55 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-26-08:27:51 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-26-08:27:51 new file mode 100644 index 00000000..3d6940fd --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-26-08:27:51 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-26-08:32:19 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-26-08:32:19 new file mode 100644 index 00000000..1528030b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-26-08:32:19 @@ -0,0 +1 @@ +-rwx------ 1 nico users 97923 May 26 08:32 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-27-05:51:30 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-27-05:51:30 new file mode 100644 index 00000000..9f0f1c2a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-05-27-05:51:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 May 27 05:51 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-04-00:23:43 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-04-00:23:43 new file mode 100644 index 00000000..0fbb4e6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-04-00:23:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 4 00:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-04-10:08:43 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-04-10:08:43 new file mode 100644 index 00000000..13fa7ebf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-04-10:08:43 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53748 Jun 4 10:08 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-04-10:54:35 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-04-10:54:35 new file mode 100644 index 00000000..2af16040 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-04-10:54:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53692 Jun 4 10:54 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-05-12:34:54 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-05-12:34:54 new file mode 100644 index 00000000..bde025a7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-05-12:34:54 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:34 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-05-12:41:25 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-05-12:41:25 new file mode 100644 index 00000000..8069fae4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-05-12:41:25 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 5 12:41 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-05-14:40:37 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-05-14:40:37 new file mode 100644 index 00000000..bba7655d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-05-14:40:37 @@ -0,0 +1 @@ +-rwx------ 1 nico users 14692 Jun 5 14:40 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-08-09:48:34 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-08-09:48:34 new file mode 100644 index 00000000..8f26ae30 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-08-09:48:34 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48484 Jun 8 09:48 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-08-10:09:27 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-08-10:09:27 new file mode 100644 index 00000000..e1eeb6a9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-08-10:09:27 @@ -0,0 +1 @@ +-rwx------ 1 nico users 48480 Jun 8 10:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-09-09:59:47 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-09-09:59:47 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-09-10:00:40 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-09-10:00:40 new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-09-11:27:17 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-09-11:27:17 new file mode 100644 index 00000000..2b821ff2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-09-11:27:17 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53652 Jun 9 11:27 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-09-11:28:30 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-09-11:28:30 new file mode 100644 index 00000000..66dcc65d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-09-11:28:30 @@ -0,0 +1 @@ +-rwx------ 1 nico users 53660 Jun 9 11:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-09-11:46:28 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-09-11:46:28 new file mode 100644 index 00000000..f106b674 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-09-11:46:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 9 11:46 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-10-07:07:35 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-10-07:07:35 new file mode 100644 index 00000000..9c72c2f8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-10-07:07:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 52576 Jun 10 07:07 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-10-18:14:28 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-10-18:14:28 new file mode 100644 index 00000000..6b4262c7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-10-18:14:28 @@ -0,0 +1 @@ +-rwx------ 1 nico users 71206 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-10-18:18:11 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-10-18:18:11 new file mode 100644 index 00000000..fb6745a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-10-18:18:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 10 18:14 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-11-16:28:13 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-11-16:28:13 new file mode 100644 index 00000000..7fb4b100 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-11-16:28:13 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 16:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-11-19:13:20 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-11-19:13:20 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-11-19:13:20 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-11-19:22:16 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-11-19:22:16 new file mode 100644 index 00000000..cc6a8ef3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-11-19:22:16 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:13 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-11-19:25:11 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-11-19:25:11 new file mode 100644 index 00000000..68e12d0e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-11-19:25:11 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50856 Jun 11 19:25 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-12-18:09:22 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-12-18:09:22 new file mode 100644 index 00000000..82ce820c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-12-18:09:22 @@ -0,0 +1 @@ +-rwx------ 1 nico users 50860 Jun 12 18:09 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-13-13:28:35 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-13-13:28:35 new file mode 100644 index 00000000..b744b7e4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-13-13:28:35 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46764 Jun 13 13:28 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-13-21:23:15 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-13-21:23:15 new file mode 100644 index 00000000..4bcdddba --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-13-21:23:15 @@ -0,0 +1 @@ +-rwx------ 1 nico users 46868 Jun 13 21:23 sbin/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-13-21:26:52 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-13-21:26:52 new file mode 100644 index 00000000..b88d9416 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-13-21:26:52 @@ -0,0 +1,3 @@ +total 88 +-rwx------ 1 nico users 46868 Jun 13 21:26 cinit +-rwx------ 1 nico users 38568 Jun 13 21:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-13-21:57:26 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-13-21:57:26 new file mode 100644 index 00000000..d8953654 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-13-21:57:26 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 46868 Jun 13 21:57 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-06:35:49 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-06:35:49 new file mode 100644 index 00000000..91ebffd7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-06:35:49 @@ -0,0 +1,3 @@ +total 92 +-rwx------ 1 nico users 47044 Jun 14 06:35 cinit +-rwx------ 1 nico users 44148 Jun 13 21:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-09:51:51 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-09:51:51 new file mode 100644 index 00000000..11a36249 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-09:51:51 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52236 Jun 14 09:51 cinit +-rwx------ 1 nico users 47356 Jun 14 09:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-09:58:58 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-09:58:58 new file mode 100644 index 00000000..a6d36a9c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-09:58:58 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52324 Jun 14 09:58 cinit +-rwx------ 1 nico users 47356 Jun 14 09:58 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-13:16:40 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-13:16:40 new file mode 100644 index 00000000..a4445099 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-13:16:40 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 52692 Jun 14 13:16 cinit +-rwx------ 1 nico users 47324 Jun 14 13:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-13:21:47 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-13:21:47 new file mode 100644 index 00000000..80015aa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-13:21:47 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:21 cinit +-rwx------ 1 nico users 47324 Jun 14 13:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-13:26:18 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-13:26:18 new file mode 100644 index 00000000..74b71d92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-14-13:26:18 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 14 13:26 cinit +-rwx------ 1 nico users 47324 Jun 14 13:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-06:38:49 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-06:38:49 new file mode 100644 index 00000000..7cb89e92 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-06:38:49 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 06:38 cinit +-rwx------ 1 nico users 47324 Jun 15 06:38 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-09:17:57 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-09:17:57 new file mode 100644 index 00000000..efff0d89 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-09:17:57 @@ -0,0 +1,2 @@ +total 48 +-rwx------ 1 nico users 47324 Jun 15 08:46 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-11:13:26 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-11:13:26 new file mode 100644 index 00000000..a6d7b57a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-11:13:26 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:13 cinit +-rwx------ 1 nico users 48196 Jun 15 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-11:16:39 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-11:16:39 new file mode 100644 index 00000000..6e551c3f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-11:16:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:16 cinit +-rwx------ 1 nico users 48196 Jun 15 11:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-11:30:39 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-11:30:39 new file mode 100644 index 00000000..c6962be4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-11:30:39 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:30 cinit +-rwx------ 1 nico users 48180 Jun 15 11:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-11:31:16 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-11:31:16 new file mode 100644 index 00000000..54d722c8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-11:31:16 @@ -0,0 +1,3 @@ +total 104 +-rwx------ 1 nico users 54956 Jun 15 11:31 cinit +-rwx------ 1 nico users 48180 Jun 15 11:31 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-14:08:57 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-14:08:57 new file mode 100644 index 00000000..b4a1905c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-14:08:57 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:08 cinit +-rwx------ 1 nico users 50860 Jun 15 14:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-14:19:46 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-14:19:46 new file mode 100644 index 00000000..4b9133d4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-14:19:46 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 14:19 cinit +-rwx------ 1 nico users 50860 Jun 15 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-20:37:50 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-20:37:50 new file mode 100644 index 00000000..1196c864 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-15-20:37:50 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 15 20:37 cinit +-rwx------ 1 nico users 50860 Jun 15 20:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-16-14:18:59 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-16-14:18:59 new file mode 100644 index 00000000..82a8e92a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-16-14:18:59 @@ -0,0 +1,3 @@ +total 100 +-rwx------ 1 nico users 51800 Jun 16 14:18 cinit +-rwx------ 1 nico users 47568 Jun 16 14:18 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-16-14:19:22 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-16-14:19:22 new file mode 100644 index 00000000..14d12028 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-16-14:19:22 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 16 14:19 cinit +-rwx------ 1 nico users 46760 Jun 16 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-17-19:03:48 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-17-19:03:48 new file mode 100644 index 00000000..e379e004 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-17-19:03:48 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 17 19:03 cinit +-rwx------ 1 nico users 46760 Jun 17 19:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-20-12:16:40 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-20-12:16:40 new file mode 100644 index 00000000..1f0c3325 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-20-12:16:40 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 20 12:16 cinit +-rwx------ 1 nico users 50860 Jun 20 12:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-20-15:16:31 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-20-15:16:31 new file mode 100644 index 00000000..75dc3e7a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-20-15:16:31 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 15:16 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-20-16:29:28 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-20-16:29:28 new file mode 100644 index 00000000..1294bde5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-20-16:29:28 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 15:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-20-16:29:50 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-20-16:29:50 new file mode 100644 index 00000000..69fe7490 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-20-16:29:50 @@ -0,0 +1,3 @@ +total 136 +-rwx------ 1 nico users 68355 Jun 20 16:29 cinit +-rwx------ 1 nico users 66247 Jun 20 16:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-21-11:53:35 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-21-11:53:35 new file mode 100644 index 00000000..4a1e7b6d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-21-11:53:35 @@ -0,0 +1,3 @@ +total 192 +-rwx------ 1 nico users 102039 Jun 21 11:53 cinit +-rwx------ 1 nico users 87871 Jun 21 11:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-07:33:11 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-07:33:11 new file mode 100644 index 00000000..e6c8ff14 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-07:33:11 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47544 Jun 22 07:33 cinit +-rwx------ 1 nico users 46760 Jun 22 07:33 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-07:57:13 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-07:57:13 new file mode 100644 index 00000000..17161d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-07:57:13 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47536 Jun 22 07:57 cinit +-rwx------ 1 nico users 46760 Jun 22 07:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-08:08:40 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-08:08:40 new file mode 100644 index 00000000..770083f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-08:08:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47424 Jun 22 08:08 cinit +-rwx------ 1 nico users 46760 Jun 22 08:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-08:30:42 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-08:30:42 new file mode 100644 index 00000000..aa95fb3c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-08:30:42 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47360 Jun 22 08:30 cinit +-rwx------ 1 nico users 46760 Jun 22 08:30 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-09:19:42 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-09:19:42 new file mode 100644 index 00000000..70c261bb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-09:19:42 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 09:19 cinit +-rwx------ 1 nico users 50860 Jun 22 09:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-10:43:24 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-10:43:24 new file mode 100644 index 00000000..b8bc4076 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-10:43:24 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 22 10:43 cinit +-rwx------ 1 nico users 50860 Jun 22 10:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-12:42:57 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-12:42:57 new file mode 100644 index 00000000..c8119859 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-12:42:57 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47568 Jun 22 12:42 cinit +-rwx------ 1 nico users 46760 Jun 22 12:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-13:52:41 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-13:52:41 new file mode 100644 index 00000000..793b92fa --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-13:52:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:52 cinit +-rwx------ 1 nico users 46760 Jun 22 13:52 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-13:59:40 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-13:59:40 new file mode 100644 index 00000000..d114c557 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-13:59:40 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47624 Jun 22 13:59 cinit +-rwx------ 1 nico users 46760 Jun 22 13:59 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-14:19:41 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-14:19:41 new file mode 100644 index 00000000..8d56882f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-14:19:41 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47640 Jun 22 14:19 cinit +-rwx------ 1 nico users 46760 Jun 22 14:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-14:37:18 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-14:37:18 new file mode 100644 index 00000000..b7c3e4c2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-22-14:37:18 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 22 14:37 cinit +-rwx------ 1 nico users 46760 Jun 22 14:37 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-23-06:22:23 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-23-06:22:23 new file mode 100644 index 00000000..9e38a5e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-23-06:22:23 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47648 Jun 23 06:22 cinit +-rwx------ 1 nico users 46760 Jun 23 06:22 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-24-17:53:55 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-24-17:53:55 new file mode 100644 index 00000000..3b750eaf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-24-17:53:55 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:53 cinit +-rwx------ 1 nico users 46760 Jun 24 17:53 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-24-17:55:29 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-24-17:55:29 new file mode 100644 index 00000000..c30dcaf6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-24-17:55:29 @@ -0,0 +1,3 @@ +total 96 +-rwx------ 1 nico users 47720 Jun 24 17:55 cinit +-rwx------ 1 nico users 46760 Jun 24 17:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-26-13:19:49 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-26-13:19:49 new file mode 100644 index 00000000..a4de830b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-06-26-13:19:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jun 26 13:19 cinit +-rwx------ 1 nico users 50860 Jun 26 13:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:07:13 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:07:13 new file mode 100644 index 00000000..e2c59ddf --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:07:13 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:07 cinit +-rwx------ 1 nico users 50860 Jul 6 08:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:12:20 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:12:20 new file mode 100644 index 00000000..e562350c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:12:20 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:12 cinit +-rwx------ 1 nico users 50860 Jul 6 08:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:13:39 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:13:39 new file mode 100644 index 00000000..32fd8268 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:13:39 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:13 cinit +-rwx------ 1 nico users 50860 Jul 6 08:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:14:19 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:14:19 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:14:19 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:14:59 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:14:59 new file mode 100644 index 00000000..f68919a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:14:59 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:14 cinit +-rwx------ 1 nico users 50860 Jul 6 08:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:15:56 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:15:56 new file mode 100644 index 00000000..cf26e6f7 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-08:15:56 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 08:15 cinit +-rwx------ 1 nico users 50860 Jul 6 08:15 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-10:12:22 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-10:12:22 new file mode 100644 index 00000000..d5f0f2c4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-10:12:22 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:08 cinit +-rwx------ 1 nico users 50860 Jul 6 10:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-10:12:31 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-10:12:31 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-10:12:31 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-10:12:49 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-10:12:49 new file mode 100644 index 00000000..6bd138ad --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-07-06-10:12:49 @@ -0,0 +1,3 @@ +total 108 +-rwx------ 1 nico users 54956 Jul 6 10:12 cinit +-rwx------ 1 nico users 50860 Jul 6 10:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-08-29-21:21:34 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-08-29-21:21:34 new file mode 100644 index 00000000..e651a8ed --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-08-29-21:21:34 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 root root 444508 2005-08-29 21:21 cinit +-rwx------ 1 root root 440412 2005-08-29 21:21 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-08-29-23:50:55 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-08-29-23:50:55 new file mode 100644 index 00000000..a279aee3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-08-29-23:50:55 @@ -0,0 +1,3 @@ +insgesamt 856 +-rwx------ 1 nico nico 437564 2005-08-29 23:50 cinit +-rwx------ 1 nico nico 436316 2005-08-29 23:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-03-03:36:59 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-03-03:36:59 new file mode 100644 index 00000000..01e555f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-03-03:36:59 @@ -0,0 +1,3 @@ +insgesamt 868 +-rwx------ 1 nico nico 444508 2005-09-03 03:36 cinit +-rwx------ 1 nico nico 440412 2005-09-03 03:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-03-04:34:35 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-03-04:34:35 new file mode 100644 index 00000000..1832930a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-03-04:34:35 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 04:34 cinit +-rwx------ 1 nico nico 440412 Sep 3 04:34 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-03-05:51:17 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-03-05:51:17 new file mode 100644 index 00000000..4e465d06 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-03-05:51:17 @@ -0,0 +1,3 @@ +total 868 +-rwx------ 1 nico nico 444508 Sep 3 05:51 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:51 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-03-05:54:20 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-03-05:54:20 new file mode 100644 index 00000000..9c040d29 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-03-05:54:20 @@ -0,0 +1,4 @@ +total 1300 +-rwx------ 1 nico nico 440412 Sep 3 05:54 ccontrol +-rwx------ 1 nico nico 444508 Sep 3 05:54 cinit +-rwx------ 1 nico nico 440412 Sep 3 05:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-03-09:01:59 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-03-09:01:59 new file mode 100644 index 00000000..880422a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-03-09:01:59 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 3 09:01 cinit +-rwxr-xr-x 1 root root 440412 Sep 3 09:01 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-05-19:41:12 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-05-19:41:12 new file mode 100644 index 00000000..0f07d86e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-05-19:41:12 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 root root 440412 2005-09-05 19:41 ccontrol +-rwx------ 1 root root 444508 2005-09-05 19:41 cinit +-rwx------ 1 root root 440412 2005-09-05 19:41 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-05-19:50:35 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-05-19:50:35 new file mode 100644 index 00000000..32ff19fb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-05-19:50:35 @@ -0,0 +1,4 @@ +total 1300 +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 ccontrol +-rwxr-xr-x 1 root root 444508 Sep 5 19:50 cinit +-rwxr-xr-x 1 root root 440412 Sep 5 19:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-24-01:42:38 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-24-01:42:38 new file mode 100644 index 00000000..0da6126e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-24-01:42:38 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-09-24 01:42 ccontrol +-rwx------ 1 nico nico 437628 2005-09-24 01:42 cinit +-rwx------ 1 nico nico 436316 2005-09-24 01:42 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-30-22:50:50 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-30-22:50:50 new file mode 100644 index 00000000..0d510174 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-30-22:50:50 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 22:50 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 22:50 cinit +-rwx------ 1 nico nico 436316 2005-09-30 22:50 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-30-23:06:39 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-30-23:06:39 new file mode 100644 index 00000000..23450914 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-09-30-23:06:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-09-30 23:06 ccontrol +-rwx------ 1 nico nico 437340 2005-09-30 23:06 cinit +-rwx------ 1 nico nico 436316 2005-09-30 23:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-01-22:09:13 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-01-22:09:13 new file mode 100644 index 00000000..a62b9eb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-01-22:09:13 @@ -0,0 +1,4 @@ +insgesamt 1288 +-rwx------ 1 nico nico 436316 2005-10-01 22:09 ccontrol +-rwx------ 1 nico nico 437308 2005-10-01 22:09 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-01-22:17:39 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-01-22:17:39 new file mode 100644 index 00000000..b1d8b11b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-01-22:17:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-01 22:17 ccontrol +-rwx------ 1 nico nico 437532 2005-10-01 22:17 cinit +-rwx------ 1 nico nico 436316 2005-10-01 22:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-02-11:12:29 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-02-11:12:29 new file mode 100644 index 00000000..e5f7b13d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-02-11:12:29 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:12 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-02-11:13:35 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-02-11:13:35 new file mode 100644 index 00000000..d7c14471 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-02-11:13:35 @@ -0,0 +1,4 @@ +insgesamt 1300 +-rwx------ 1 nico nico 440412 2005-10-02 11:12 ccontrol +-rwx------ 1 nico nico 444508 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 440412 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-02-11:13:43 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-02-11:13:43 new file mode 100644 index 00000000..1711d01a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-02-11:13:43 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 11:13 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 11:13 cinit +-rwx------ 1 nico nico 436316 2005-10-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-02-16:00:24 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-02-16:00:24 new file mode 100644 index 00000000..ab23228c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-02-16:00:24 @@ -0,0 +1,4 @@ +total 1284 +-rwx------ 1 nico nico 436316 Oct 2 16:00 ccontrol +-rwx------ 1 nico nico 437884 Oct 2 16:00 cinit +-rwx------ 1 nico nico 436316 Oct 2 16:00 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-02-23:17:11 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-02-23:17:11 new file mode 100644 index 00000000..92041cd9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-02-23:17:11 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-02 23:17 ccontrol +-rwx------ 1 nico nico 437884 2005-10-02 23:17 cinit +-rwx------ 1 nico nico 436316 2005-10-02 23:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-03-00:54:39 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-03-00:54:39 new file mode 100644 index 00000000..df47a057 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-03-00:54:39 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:54 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:54 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:54 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-03-00:56:29 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-03-00:56:29 new file mode 100644 index 00000000..08db7fec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-03-00:56:29 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 nico nico 436316 2005-10-03 00:56 ccontrol +-rwx------ 1 nico nico 437884 2005-10-03 00:56 cinit +-rwx------ 1 nico nico 436316 2005-10-03 00:56 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-13-09:55:52 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-13-09:55:52 new file mode 100644 index 00000000..d54a7ff4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-13-09:55:52 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:55 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:55 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:55 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-13-09:57:11 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-13-09:57:11 new file mode 100644 index 00000000..3b1af9ec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-13-09:57:11 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 09:57 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 09:57 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 09:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-13-10:07:28 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-13-10:07:28 new file mode 100644 index 00000000..58d25315 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-13-10:07:28 @@ -0,0 +1,4 @@ +insgesamt 1292 +-rwxr-xr-x 1 pp pp 433912 Okt 13 10:07 ccontrol +-rwxr-xr-x 1 pp pp 436664 Okt 13 10:07 cinit +-rwxr-xr-x 1 pp pp 434360 Okt 13 10:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-15-15:26:52 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-15-15:26:52 new file mode 100644 index 00000000..a88291e2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-15-15:26:52 @@ -0,0 +1,4 @@ +insgesamt 1284 +-rwx------ 1 root root 436316 2005-10-15 15:26 ccontrol +-rwx------ 1 root root 437916 2005-10-15 15:26 cinit +-rwx------ 1 root root 436316 2005-10-15 15:26 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-15-21:23:56 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-15-21:23:56 new file mode 100644 index 00000000..43a4504d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-10-15-21:23:56 @@ -0,0 +1,4 @@ +total 36 +-rwx------ 1 nico nico 9148 Oct 15 21:23 ccontrol +-rwx------ 1 nico nico 11872 Oct 15 21:23 cinit +-rwx------ 1 nico nico 9768 Oct 15 21:23 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2005-11-17-17:03:53 b/software/cinit/browse_source/cinit-0.3pre9/size/2005-11-17-17:03:53 new file mode 100644 index 00000000..78543f15 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2005-11-17-17:03:53 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2005-11-17 17:03 ccontrol +-rwx------ 1 nico nico 11872 2005-11-17 17:03 cinit +-rwx------ 1 nico nico 9768 2005-11-17 17:03 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-11-23:45:54 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-11-23:45:54 new file mode 100644 index 00000000..f4852c81 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-11-23:45:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-11 23:45 cinit +-rwx------ 1 nico nico 9768 2006-02-11 23:45 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-12-00:06:11 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-12-00:06:11 new file mode 100644 index 00000000..2fe41351 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-12-00:06:11 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9132 2006-02-11 23:45 ccontrol +-rwx------ 1 nico nico 11476 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-12-00:06:42 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-12-00:06:42 new file mode 100644 index 00000000..bf2ddc36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-12-00:06:42 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:06 ccontrol +-rwx------ 1 nico nico 11560 2006-02-12 00:06 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:06 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-12-00:08:24 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-12-00:08:24 new file mode 100644 index 00000000..e25a49ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-12-00:08:24 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:08 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:08 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-12-00:09:33 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-12-00:09:33 new file mode 100644 index 00000000..0b64fa00 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-12-00:09:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:09 ccontrol +-rwx------ 1 nico nico 11556 2006-02-12 00:09 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:09 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-12-00:13:32 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-12-00:13:32 new file mode 100644 index 00000000..b6c5c38e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-12-00:13:32 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-12 00:13 ccontrol +-rwx------ 1 nico nico 11500 2006-02-12 00:13 cinit +-rwx------ 1 nico nico 9768 2006-02-12 00:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-16-23:57:29 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-16-23:57:29 new file mode 100644 index 00000000..86b9fda9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-16-23:57:29 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11620 2006-02-16 23:57 cinit +-rwx------ 1 nico nico 9768 2006-02-16 23:57 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-17-00:16:18 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-17-00:16:18 new file mode 100644 index 00000000..28c853a5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-17-00:16:18 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-16 23:57 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 00:16 cinit +-rwx------ 1 nico nico 9768 2006-02-17 00:16 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-17-22:48:35 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-17-22:48:35 new file mode 100644 index 00000000..5935acfe --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-17-22:48:35 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-17 22:48 ccontrol +-rwx------ 1 nico nico 11636 2006-02-17 22:48 cinit +-rwx------ 1 nico nico 9768 2006-02-17 22:48 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:03:54 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:03:54 new file mode 100644 index 00000000..9222f0b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:03:54 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:03 cinit +-rwx------ 1 nico nico 9768 2006-02-20 19:43 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:04:33 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:04:33 new file mode 100644 index 00000000..c5797edc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:04:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:03 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:04:36 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:04:36 new file mode 100644 index 00000000..fbcf9fa5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:04:36 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:04 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:04 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:07:47 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:07:47 new file mode 100644 index 00000000..7e1fe18f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:07:47 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:04 ccontrol +-rwx------ 1 nico nico 11680 2006-02-20 20:07 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:07 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:12:33 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:12:33 new file mode 100644 index 00000000..2b4fda40 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:12:33 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:12 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:12 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:12 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:14:56 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:14:56 new file mode 100644 index 00000000..bccb5d65 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-02-20-20:14:56 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9148 2006-02-20 20:14 ccontrol +-rwx------ 1 nico nico 11676 2006-02-20 20:14 cinit +-rwx------ 1 nico nico 9768 2006-02-20 20:14 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-01-23:32:43 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-01-23:32:43 new file mode 100644 index 00000000..fcbaf372 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-01-23:32:43 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-01 23:32 ccontrol +-rwx------ 1 nico nico 11640 2006-06-01 23:32 cinit +-rwx------ 1 nico nico 9768 2006-06-01 23:32 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-01:08:28 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-01:08:28 new file mode 100644 index 00000000..7683546c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-01:08:28 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:08 ccontrol +-rwx------ 1 nico nico 11688 2006-06-02 01:08 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:08 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-01:29:13 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-01:29:13 new file mode 100644 index 00000000..adbc6846 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-01:29:13 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 01:29 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 01:29 cinit +-rwx------ 1 nico nico 9768 2006-06-02 01:29 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-11:13:39 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-11:13:39 new file mode 100644 index 00000000..46eaef4f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-11:13:39 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:13 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:13 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:13 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-11:36:37 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-11:36:37 new file mode 100644 index 00000000..306402f6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-11:36:37 @@ -0,0 +1,4 @@ +insgesamt 36 +-rwx------ 1 nico nico 9164 2006-06-02 11:36 ccontrol +-rwx------ 1 nico nico 11604 2006-06-02 11:36 cinit +-rwx------ 1 nico nico 9768 2006-06-02 11:36 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-15:17:17 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-15:17:17 new file mode 100644 index 00000000..7bb59095 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-15:17:17 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:17 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:17 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:17 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-15:19:52 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-15:19:52 new file mode 100644 index 00000000..ce65256f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-06-02-15:19:52 @@ -0,0 +1,4 @@ +insgesamt 48 +-rwx------ 1 nico nico 12316 2006-06-02 15:19 ccontrol +-rwx------ 1 nico nico 16268 2006-06-02 15:19 cinit +-rwx------ 1 nico nico 13432 2006-06-02 15:19 cservice diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-11-29-235834 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-11-29-235834 new file mode 100644 index 00000000..c2c83117 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-11-29-235834 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73645 2006-11-29 23:57 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-02-172536 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-02-172536 new file mode 100644 index 00000000..4079d5db --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-02-172536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73617 2006-12-02 17:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-02-174429 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-02-174429 new file mode 100644 index 00000000..5506928d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-02-174429 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73497 2006-12-02 17:44 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-02-182536 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-02-182536 new file mode 100644 index 00000000..14526d13 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-02-182536 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 72092 2006-12-02 18:25 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-03-173231 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-03-173231 new file mode 100644 index 00000000..aca9d380 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-03-173231 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71944 2006-12-03 17:32 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-03-174544 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-03-174544 new file mode 100644 index 00000000..3c1cfea2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-03-174544 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71952 2006-12-03 17:45 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-03-191215 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-03-191215 new file mode 100644 index 00000000..4f2a2fa1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-03-191215 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-03 19:12 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-06-084947 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-06-084947 new file mode 100644 index 00000000..487af844 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-06-084947 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71736 2006-12-06 08:49 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-14-213559 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-14-213559 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-14-213559 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-14-213717 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-14-213717 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-14-213717 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-14-213739 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-14-213739 new file mode 100644 index 00000000..a1665a41 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-14-213739 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-06 18:02 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-14-215315 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-14-215315 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-14-215315 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-14-215334 b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-14-215334 new file mode 100644 index 00000000..3e144e5d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2006-12-14-215334 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 73466 2006-12-14 21:53 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2007-02-17-210059 b/software/cinit/browse_source/cinit-0.3pre9/size/2007-02-17-210059 new file mode 100644 index 00000000..69179604 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2007-02-17-210059 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 75783 2007-02-17 20:59 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2007-02-23-202443 b/software/cinit/browse_source/cinit-0.3pre9/size/2007-02-23-202443 new file mode 100644 index 00000000..19cb71b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2007-02-23-202443 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 69439 2007-02-23 20:15 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2007-02-23-202720 b/software/cinit/browse_source/cinit-0.3pre9/size/2007-02-23-202720 new file mode 100644 index 00000000..19cb71b8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2007-02-23-202720 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 69439 2007-02-23 20:15 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2007-03-07-231936 b/software/cinit/browse_source/cinit-0.3pre9/size/2007-03-07-231936 new file mode 100644 index 00000000..c2ef3d0b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2007-03-07-231936 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71213 2007-03-07 23:18 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/size/2007-04-06-011811 b/software/cinit/browse_source/cinit-0.3pre9/size/2007-04-06-011811 new file mode 100644 index 00000000..73de8724 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/size/2007-04-06-011811 @@ -0,0 +1 @@ +-rwx------ 1 nico nico 71281 2007-04-06 01:17 src/cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/Makefile b/software/cinit/browse_source/cinit-0.3pre9/src/Makefile new file mode 100644 index 00000000..b988afb2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/Makefile @@ -0,0 +1,139 @@ +# +# cinit +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +#include Makefile.tests + +# Build tools / locations +CC=../tmpbin/cc +CFLAGS= +LD=../tmpbin/ld +LDFLAGS= +STRIP=../tmpbin/strip +SBIN=../sbin + +# directories and files +CONFIG_H=include/config.h + +BIN=cinit + +# +# All objects depend on headers. More or less. FIXME: use gcc -M +# +CINIT_HEADERS=$(shell cat include/listing) + +# NEW +CINIT_OBJ=$(shell cat object_lists/cinit) + +# +# Client modules +# +CLIENT=client/msg_svc_on_off.o client/msg_change_status.o client/run_svc.o \ + client/exec_svc.o client/respawn_svc.o client/run_run_svcs.o \ + client/connect_sock.o client/begin_msg.o client/sig_terminate.o + +COMMUNICATION=comm/do_change_status.o comm/do_result.o comm/do_svc_name.o + +OBJ=$(SERV) $(SERV_OS) $(CLIENT) $(BOTH) $(COMMUNICATION) + +CSVC_OBJ=util/cservice.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) + +CCO_OBJ=util/ccontrol.o generic/mini_printf.o util/msg_reboot.o \ + generic/usage.o \ + $(CLIENT) $(COMMUNICATION) +# +# End user target +# +#all: cinit cservice ccontrol sizecheck docs +#all: $(BIN) +all: cinit + + +# +# Generic +# +$(CINIT_OBJ): $(CINIT_HEADERS) + +%.o: %.c + $(CC) -c -o $@ $< + + + +# +# First do configuration, so we include the right variables +# +Makefile: .configured + +.configured: ../conf/* + @../bin/cinit.configure.os + @../bin/cinit.configure.tools + @../bin/cinit.configure.ipc + @../bin/cinit.configure.mark + +$(CINIT_OBJ): $(CONFIG_H) + + +$(CONFIG_H): ../conf/* + ../scripts/cinit.mkheader > $(CONFIG_H) + +cservice: $(SBIN)/cservice + +$(SBIN)/cservice util/cservice: $(SBIN) $(CSVC_OBJ) + $(LD) $(LDFLAGS) $(CSVC_OBJ) -o $@ + $(STRIP) $@ + +ccontrol: $(SBIN)/ccontrol + +$(SBIN)/ccontrol util/ccontrol: config.h $(SBIN) $(CCO_OBJ) + $(LD) $(LDFLAGS) $(CCO_OBJ) -o $@ + $(STRIP) $@ + +install: install-dir cinit cservice ccontrol + @echo '*** Installing cinit ***' + ./bin/cinit.install.binary + +install-miniconf: + ./bin/cinit.install.miniconf + +install-dir: + ./bin/cinit.install.dir + + +################################################################################ +# +# Build targets +# +cinit: $(CINIT_OBJ) + $(LD) $^ -o $@ + +uml: cinit + ../../vm/uml/uml-mount.sh + cp cinit ../../vm/uml/root/sbin/cinit + ../../vm/uml/uml-umount.sh + +umlstart: uml + ../../vm/uml/uml-start.sh + +################################################################################ +# +# Generic targets +# + +.PHONY: dist +dist: distclean + +.PHONY: distclean +distclean: clean + rm -f os/current ipc/current .configured + +.PHONY: clean +clean: + rm -f ../tmpbin/*.configured + rm -f $(BIN) $(CINIT_OBJ) + rm -f test/*.o diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/Makefile.tests b/software/cinit/browse_source/cinit-0.3pre9/src/Makefile.tests new file mode 100644 index 00000000..0f4b4626 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/Makefile.tests @@ -0,0 +1,27 @@ +# +# Makefile for cinit tests +# +# Nico Schottelius +# +# Don't edit Makefiles, use conf/* for configuration. +# + +TEST_BUILD_ARGV=test/test_build_argv.o core/build_argv.o + +PROGS=test_build_argv test_build_argv_link + +tests: $(PROGS) + +test_build_argv: test/test_build_argv.o core/build_argv.o +test_build_argv_link: test/test_build_argv+link.o core/build_argv.o + +test_gen_svc_tree: test/test_gen_svc_tree.o svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/list_display_all.o \ + svc/gen_svc_tree.o \ + generic/mini_printf.o \ + svc/list_display_all.o + +test_openreadclose: test/test_openreadclose.o generic/openreadclose.o diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ancient/run_init_svc.c b/software/cinit/browse_source/cinit-0.3pre9/src/ancient/run_init_svc.c new file mode 100644 index 00000000..f41c1f4e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/ancient/run_init_svc.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include +#include +#include +#include +#include + +#include "cinit.h" + +#include + +/*********************************************************************** + * start the first service + */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ancient/run_init_svc2.c b/software/cinit/browse_source/cinit-0.3pre9/src/ancient/run_init_svc2.c new file mode 100644 index 00000000..b613ed6c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/ancient/run_init_svc2.c @@ -0,0 +1,45 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * run initial service(s) + */ + +#include /* _exit, fork */ + +#include "cinit.h" +#include "messages.h" +#include "ipc.h" + +int run_svc(char *rpath) { rpath = "test"; return 0; } /* a hack to compile cinit for now */ + +int run_init_svc(char *cinit_svc) +{ + pid_t pid; + + /* leave cinit alone */ + pid = fork(); + + if(pid == -1) { /* err */ + print_errno(MSG_ERR_FORK); + return 0; + } else if(pid == 0) { /* child */ + cinit_ipc_sclose(); + set_signals(ACT_CLIENT); + + if(!cinit_ipc_logon()) _exit(1); + + /* FIXME: open stderr, stdin, stdout to files / syslog / logable ? + * IMPLEMENT PER SERVICE! + */ + + run_svc(cinit_svc); + + _exit(0); /* nobody cares about us, so exit successfully anyway */ + } + /* parent exits, we don't care about our children */ + return 1; +} +/* ready for cinit-0.2 */ diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ancient/run_svc.c b/software/cinit/browse_source/cinit-0.3pre9/src/ancient/run_svc.c new file mode 100644 index 00000000..95cc324d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/ancient/run_svc.c @@ -0,0 +1,131 @@ +/* + * (c) 2005 Nico Schottelius (nico-cinit at schottelius.org) + * run_svc + * part of cinit + */ + +/* headers are clean */ +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +#error "needs to be cleaned up" + +/*********************************************************************** + * run_svc: run a service and before all dependencies + */ +int run_svc(char *rpath) +{ + int tmp; + pid_t pid; + char abspath[PATH_MAX], pathtmp[PATH_MAX]; /* pathtmp will be misused */ + struct stat buf; + struct timespec ts; + + /******************* absolute PATH ***************/ + /* save current working dir */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + print_errno(pathtmp); + return RT_UNSPEC; + } + + /* change to rpath */ + if(chdir(rpath) == -1) { + print_errno(rpath); + return RT_NOTEXIST; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(abspath,PATH_MAX)) { + perror(abspath); + return RT_UNSPEC; + } + + /* change back */ + if(chdir(pathtmp) == -1) { + perror(pathtmp); + return RT_UNSPEC; + } + D_PRINTF(abspath); + + /******************* REGISTER SERVICE ***************/ + do { + tmp = msg_svc_on_off(abspath,CMD_START_SVC); /* check status */ + + switch(tmp) { + case ST_FAIL: /* somebody failed before, we won't retry */ + return RT_SVC_FAILED; + break; + case ST_TMP: /* someone is working on it */ + ts.tv_sec = SLEEP_RERUN; + nanosleep(&ts,NULL); + break; + case ST_ONCE: /* somebody did our work */ + case RT_ERR_COMM: /* communication failed */ + case ST_RESPAWN: /* somebody does our work */ + case ST_NEED_FAIL: /* the needs failed before */ + return tmp; + break; + case RT_TMPNOW: /* do not go to default: */ + break; + default: + mini_printf(MSG_SHOULD_NOT_HAPPEN,1); + return RT_UNSPEC; + break; + } + } while(tmp != RT_TMPNOW); + + /******************* BEGIN DEPENDENCIES ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_NEEDS); + + /* check for needs */ + if( stat(pathtmp,&buf) == 0 ) { + if( ! run_run_svcs(pathtmp) ) { + SERVICE_LOG(abspath,LOG_NEED_FAIL); + msg_change_status(abspath, ST_NEED_FAIL, 0); + return ST_NEED_FAIL; + } + } + + /********** WANTS ************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_WANTS); + + if( stat(pathtmp,&buf) == 0 ) { + run_run_svcs(pathtmp); /* don't care about what happens with the want svc */ + } + + /******************* execute services ***************/ + strcpy(pathtmp,abspath); + strcat(pathtmp,SLASH); + strcat(pathtmp,C_RESPAWN); + + if( stat(pathtmp,&buf) == 0) { + pid = respawn_svc(abspath); + tmp = ST_RESPAWN; + } else { + pid = exec_svc(abspath, CMD_START_SVC); + tmp = ST_ONCE; + } + + if(!pid) { + msg_change_status(abspath, ST_FAIL, pid); + return ST_FAIL; + } + + if(!msg_change_status(abspath, tmp, pid) ) { + return RT_ERR_COMM; + } + + return tmp; /* ST_ONCE || ST_RESPAWN */ +} +/* cinit-0.2 return codes implemented */ diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/client/cmd.c b/software/cinit/browse_source/cinit-0.3pre9/src/client/cmd.c new file mode 100644 index 00000000..61dea321 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/client/cmd.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * cmd - the cinit client program - sends commands to cinit + */ + + +/* Arguments: + + -e: enable + -d: disable + + +*/ +int main(int argc, char **argv) +{ + +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/comm/README b/software/cinit/browse_source/cinit-0.3pre9/src/comm/README new file mode 100644 index 00000000..74a0b376 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/comm/README @@ -0,0 +1,20 @@ +All abstracted communication functions. Do not depend on the underlying +inter process communication mechanism. + + - send_command(): client function: sends a command to cinit + - send_service(): client function: send the service name to operate on + + - read_command(): server function: reads beginning of a command + * Extracts the command + * reads client identification (=pid) + * calls other functions, depending on the command send => switch() + - read_service(): server function: reads service + + - write_answer(): server function: answer? + * sends answers to clients => senseful? + + + TODO: + - define information function, that returns various information about + a service + diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/comm/read_command.c b/software/cinit/browse_source/cinit-0.3pre9/src/comm/read_command.c new file mode 100644 index 00000000..ebc7e2dc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/comm/read_command.c @@ -0,0 +1,56 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * cinit reads a command sent by a client, called by ipc listener + * + */ + +#include "comm.h" /* message struct definition */ +#include "reboot.h" /* reboot abstraction layer */ + +int read_command(struct s_cmd cmd) +{ + switch(cmd.cmd) { + case CMD_SVC_START: + break; + + case CMD_SVC_START_ONLY: + break; + + case CMD_SVC_START_NEEDS: + break; + + case CMD_SVC_STOP: + break; + + case CMD_SVC_STOP_ONLY: + break; + + case CMD_SVC_STOP_WANTS + break; + + /* halt/shutdown/poweroff */ + case CMD_HALT: + cinit_do_halt(); + break; + + case CMD_REBOOT: + cinit_do_halt(); + break; + + case CMD_POWEROFF: + cinit_do_poweroff(); + break; + + /* return error to client */ + default: + break; + + + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/comm/send_command.c b/software/cinit/browse_source/cinit-0.3pre9/src/comm/send_command.c new file mode 100644 index 00000000..bd2849dc --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/comm/send_command.c @@ -0,0 +1,15 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * A client sends a command to cinit + */ + +#include "comm.h" /* message struct definition */ + +send_command(struct s_cmd cmd) +{ + /* cinit_ipc_to_server() */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/core/build_argv.c b/software/cinit/browse_source/cinit-0.3pre9/src/core/build_argv.c new file mode 100644 index 00000000..9672393f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/core/build_argv.c @@ -0,0 +1,166 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Build **argv for execution in cinit way: + * 1. check whether cmd is a valid executable + * 2. try to read cmd.params and write parameters + * 3. try to read cmd.env and setup environment + * + * Returns: + * BA_OK: Everything went well, you can use the struct + * BA_NOTFOUND: Binary executable is not available + * BA_PARAMS: Reading the parameters failed (ignoring non-existence!) + * BA_ENV: Reading the environment failed (same as above) + * BA_OTHER: Other error + */ + +#include /* open() */ +#include /* *alloc() */ +#include /* readlink */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* NULL */ +#include /* strchr */ +#include /* stat() */ + +#include "cinit.h" +#include "build_argv.h" + + /* + * char *basename: something we should execute + * (*basename) + ".params" will be added as parameters + * (*basename) + ".env" will be added as environment + */ + +int cinit_build_argv(char *basename, struct ba_argv *bav) +{ + int tmp; + int argc; + char pathtmp[PATH_MAX+1]; + char *sbuf = NULL; + char *p; + + /* sane values */ + bav->argv = NULL; + bav->envp = NULL; + + /*********************************************************************** + * Try to get realname (for links) + */ + if((tmp = readlink(basename,pathtmp,PATH_MAX)) == -1) { + /* nothing there? */ + if(errno == ENOENT) { + return BA_E_NOTFOUND; + } + if (errno != EINVAL) { + return BA_E_OTHER; + } + tmp=strlen(basename); + strncpy(pathtmp,basename,tmp); + } + pathtmp[tmp] = '\0'; + ++tmp; /* the byte to add to memory for \0; + neither readlink nor strlen count the \0 */ + + /*********************************************************************** + * prepare argv0 + */ + bav->argv = malloc(sizeof(char *)); + if(bav->argv == NULL) return BA_E_MEM; + + *bav->argv = malloc(tmp); + if(*(bav->argv) == NULL) return BA_E_MEM; + + strncpy(*(bav->argv),pathtmp,tmp); + + /********************** read params *********************/ + /* FIXME check bounds! */ + strcpy(pathtmp,basename); + strcat(pathtmp,C_PARAMS); + /* ORC_ERR_NONEXISTENT: Ok, have sbuf set to NULL + * ORC_OK: Ok, have a filled buffer (perhaps NULL, too) + * other: Error, print errno + */ + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /*********************************************************************** + * Now split the string, converting \n to \0 + */ + argc = 1; /* argv0 */ + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = sbuf; /* here begins the current argument */ + + if(p != NULL) { /* found another \n */ + *p = '\0'; + sbuf = p+1; + } else { /* end of string */ + sbuf = NULL; + } + + ++argc; + } + + /************ close argv list **************/ + bav->argv = realloc(bav->argv, sizeof(char *) * (argc + 1)); + if(bav->argv == NULL) return BA_E_MEM; + bav->argv[argc] = NULL; /* terminate argv list */ + + /********************** read environment *********************/ + strcpy(pathtmp,basename); + strcat(pathtmp,C_ENV); + + tmp = argc = 0; + sbuf = NULL; + + tmp = openreadclose(pathtmp,&sbuf); + + if(tmp != ORC_ERR_NONEXISTENT && tmp != ORC_OK) { + print_errno(pathtmp); + return BA_E_PARAMS; + } + + sbuf = strip_final_newline(sbuf); + + /************** build environment string **************/ + argc = 0; + while(sbuf != NULL) { + p = strchr(sbuf,'\n'); + + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) return BA_E_MEM; + + bav->envp[argc] = sbuf; + + /* if we found \n */ + if(p != NULL) { + *p = '\0'; + sbuf = p+1; + } else { + sbuf = NULL; + } + ++argc; + } + + /************ close env list **************/ + bav->envp = realloc(bav->envp, sizeof(char *) * (argc + 1)); + if(bav->envp == NULL) { + return BA_E_MEM; + } + bav->envp[argc] = NULL; + + return BA_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/core/cinit.c b/software/cinit/browse_source/cinit-0.3pre9/src/core/cinit.c new file mode 100644 index 00000000..e0fd5405 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/core/cinit.c @@ -0,0 +1,94 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The main file + * + */ + +#include /* getpid,chdir */ +#include /* str(ncmp,len,cpy,cat) */ +#include /* perror */ +#include /* malloc */ + +#include "cinit.h" /* general things */ +#include "messages.h" /* messages */ +#include "ipc.h" /* general ipc methods */ +#include "svc.h" /* gen_svc_tree */ + +struct listitem *svc_list = NULL; +struct dep *svc_init = NULL; + +int main(int argc, char **argv) +{ + char *initdir = CINIT_INIT; /* default init dir */ +// pid_t cpid; + + + /* FIXME: RE-ENABLE as SOON AS PRODUCTIVE cpid = getpid(); + * Is this really needed or should we lock() ourselves? + if(cpid != 1) { + mini_printf(CINIT_VERSION,2); + mini_printf(MSG_USAGE,2); + return 0; + }*/ + + /* Look whether we should start a profile */ + while(argc > 1) { + if(!strncmp(PROFILE, argv[argc-1], strlen(PROFILE) ) ) { + initdir = (char *) malloc( + strlen(CINIT_SVCDIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2); + if(initdir == NULL) { + panic(); + } + strcpy(initdir, CINIT_SVCDIR); + strcat(initdir, SLASH); + strcat(initdir, &argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* Bootup "logo" */ + mini_printf(MSG_BOOTING,1); mini_printf(initdir,1); mini_printf("\n",1); + + if(chdir(initdir) == -1) { + print_errno(initdir); + panic(); + } + + /* initialize ipc method */ + if(!cinit_ipc_init()) { + panic(); + } + + /* listen to signals */ + set_signals(ACT_SERV); + + /* pre-calculate service tree */ + if(!gen_svc_tree(initdir)) { + panic(); + } + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* start tree from the bottom */ + if(!tree_exec(svc_init)) { + panic(); + } + + mini_printf("=> cinit started.\n",1); + + /* listen for incomming messages: should never return */ + if(!cinit_ipc_listen()) { + panic(); + } + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/core/do_reboot.c b/software/cinit/browse_source/cinit-0.3pre9/src/core/do_reboot.c new file mode 100644 index 00000000..e8807ab1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/core/do_reboot.c @@ -0,0 +1,97 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#include +#include +#include +#include +#include +#include + +#include "ipc.h" + +/* cleaned up own headers */ +#include "cinit.h" /* set_signals */ +#include "svc.h" /* shutdown_services */ +#include "messages.h" /* messages */ +#include "reboot.h" /* cinit_poweroff&co */ + +/* cleaned headers */ +#include /* kill() */ + +/*********************************************************************** + * sig_reboot + * Shutdown the system + */ + +void do_reboot(int signal) +{ + //struct listitem *tmp; + //char **cmd; + //int i; + + /* + * New code: + * 0. close user ipc + * - notify user! + * - do not allow user interupt anymore + * 1. shutdown services + * - notify user! + * 2. kill -TERM all processes + * - notify user! + * 3. kill -KILL all processes + * - notify user! + * 4. execute /etc/cinit/conf/{halt,reboot,poweroff} + * - notify user! + */ + + /* do not listen to client requests anymore */ + /* and tell the user what happens */ + LOG(MSG_SHUTDOWN_START); + cinit_ipc_destroy(); + set_signals(ACT_CLIENT); /* reset signal handlers */ + + /* shutdown all services: take care about the dependency tree */ + LOG(MSG_SHUTDOWN_SVC); + shutdown_services(svc_list); + + LOG(MSG_SHUTDOWN_KILL); + /* now: all services are down, let's kill all other processes */ + if(kill(-1,SIGTERM) == -1) { + print_errno(MSG_TERMKILL); + } + + sleep_before_kill(); + + if(kill(-1,SIGKILL) == -1) { + print_errno(MSG_KILLBILL); + } + + /* Execute the last command */ + LOG(MSG_SHUTDOWN_LAST); + execute_and_wait(CINIT_LAST); + + /* do what we really wanted to do */ + switch(signal) { + case SIGTERM: /* power off */ + LOG(MSG_POWER_OFF); + cinit_poweroff(); + break; + case SIGHUP: /* reboot */ + LOG(MSG_REBOOT); + cinit_reboot(); + break; + case SIGUSR1: /* halt */ + LOG(MSG_HALT); + cinit_halt(); + break; + } + /* FIXME: should we exit? */ + _exit(0); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/core/panic.c b/software/cinit/browse_source/cinit-0.3pre9/src/core/panic.c new file mode 100644 index 00000000..48a5d17f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/core/panic.c @@ -0,0 +1,34 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something + */ + +#include /* execv */ + +#include "cinit.h" +#include "messages.h" + +void panic(void) +{ + char *nargv[2]; + + if(execute_and_wait(CINIT_PANIC)) _exit(0); + + /*********************************************************************** + * THIS SHOULD NOT HAPPEN, fallback to hardcoded sulogin + * (conf/sulogin) + */ + nargv[0] = SULOGIN; + nargv[1] = NULL; + + if(execv(SULOGIN,nargv) == -1) { + print_errno(MSG_FATAL_PANIC); + } + + /* there's nothing todo, if everything fails */ + _exit(23); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/core/set_signals.c b/software/cinit/browse_source/cinit-0.3pre9/src/core/set_signals.c new file mode 100644 index 00000000..b16ad9ef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/core/set_signals.c @@ -0,0 +1,39 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Define signal handlers + */ + + +#include /* sigaction, sigemtpyset */ +#include /* NULL */ +#include "cinit.h" /* defines */ +#include "reboot.h" /* reboot related */ + +void set_signals(int action) +{ + struct sigaction sa; + + sigemptyset(&sa.sa_mask); /* no other signals should be blocked */ + sa.sa_flags = 0; + + if(action == ACT_SERV) { + sa.sa_handler = sig_child; + sa.sa_flags = SA_NOCLDSTOP; + } else { + sa.sa_handler = SIG_DFL; + } + + sigaction(SIGCHLD,&sa,NULL); /* what todo when a child exited */ + + sa.sa_flags = 0; /* reset flags */ + if(action == ACT_SERV) { + sa.sa_handler = do_reboot; + } + sigaction(SIGHUP, &sa, NULL); /* reboot */ + sigaction(SIGTERM, &sa, NULL); /* poweroff */ + sigaction(SIGUSR1, &sa, NULL); /* halt */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/core/sig_child.c b/software/cinit/browse_source/cinit-0.3pre9/src/core/sig_child.c new file mode 100644 index 00000000..f3f72f4c --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/core/sig_child.c @@ -0,0 +1,93 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * The child handler + * + */ + +#include /* waitpid */ +#include /* NULL */ +#include /* gettimeofday() */ /* FIXME: CHECK POSIX */ +#include /* time(),gettime.. */ /* FIXME: CHECK POSIX */ + +#include "cinit.h" /* */ +#include "svc.h" /* list_search_pid */ +#include "messages.h" /* messages */ + +/*********************************************************************** + * sig_child: (c)collect the children + */ +void sig_child(int tmp) +{ + /* New code: + * - search for pid in service list + * * if (respawn) -> start new + * - insert delay? if exit code is non-zero? if uptime too less? + * * if (once) -> update service status + * * else ignore, but reap away + */ + pid_t pid; + int delay; + struct listitem *svc; +// struct timeval now; + + while((pid = waitpid(-1, &tmp, WNOHANG)) > 0) { + /* check if it's a watched child */ + svc = list_search_pid((pid_t) pid); + + mini_printf("WHILE1: hier drinne?\n",1); + + if(svc != NULL) { + /* Check, that we are operating on it =. that it is no normal child */ + if(svc->status & ST_ONCE_RUN + || svc->status & ST_SH_RESPAWN + || svc->status & ST_RESPAWNING) { + mini_printf("WHILE: svc bekannt!\n",1); + if(WIFEXITED(tmp) && !WEXITSTATUS(tmp)) { + svc_success(svc); + } else { + svc_fail(svc); + } + } + + mini_printf("WHILE: Vorm respawn!\n",1); + /* respawn: restart: FIXME Delay for regular dying services */ + if(svc->status == ST_RESPAWNING) { + mini_printf("WHILE: IM respawn!\n",1); + svc_report_status(svc->abs_path,MSG_SVC_RESTART,NULL); + mini_printf("WHILE: IM respawn: nach report status!\n",1); + + //delay = MAX_DELAY / (time(NULL) - svc->start); + /* if(gettimeofday(&now,NULL) == -1) { + print_errno(MSG_GETTIMEOFDAY);; + delay = 0; + } else { + delay = MAX_DELAY / (now.tv_sec - svc->start); + } */ + + delay = 5; + + /* int test = time(NULL); + test++; + mini_printf("WHILE: IM respawn / for printf!\n",1); + printf("sig_child: %d, %d, %d, %d\n", + MAX_DELAY, + (int) time(NULL), + (int) svc->start, + (int) (test - svc->start) + ); */ + + mini_printf("WHILE: Vorm SVC_START!\n",1); + svc_start(svc,delay); + } + mini_printf("WHILE: NACH respawn!\n",1); + } else { + /* FIXME remove in production version */ + mini_printf("Cleanup: reparenting\n",1); + } + mini_printf("WHILE2: Ende sigchild\n",1); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/generic/execute_and_wait.c b/software/cinit/browse_source/cinit-0.3pre9/src/generic/execute_and_wait.c new file mode 100644 index 00000000..9cc78475 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/generic/execute_and_wait.c @@ -0,0 +1,44 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Execute something, but fork() before + * + */ + +#include /* pid_t */ +#include /* waitpid */ +#include /* fork */ +#include "messages.h" /* MSG_* */ +#include "cinit.h" /* print_errno, execute_sth */ + +int execute_and_wait(char *svc) +{ + pid_t pid; + int status; + + /* fork */ + pid = fork(); + + if(pid == -1) { + print_errno(MSG_ERR_FORK); + return 0; + } + + /* exec / child */ + if(pid == 0) { + execute_sth(svc); /* exits itself */ + } + + /* wait / parent */ + waitpid(pid,&status,0); + + if(WIFEXITED(status)) { + if(WEXITSTATUS(status) == 0) { + return 1; + } + } + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/generic/execute_sth.c b/software/cinit/browse_source/cinit-0.3pre9/src/generic/execute_sth.c new file mode 100644 index 00000000..6b7d74a2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/generic/execute_sth.c @@ -0,0 +1,36 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Executes something: replaces us + */ + +#include /* _exit */ +#include "cinit.h" +#include "build_argv.h" + +void execute_sth(char *basename) +{ + int tmp; + struct ba_argv bav; + + /* FIXME remove later */ + mini_printf("ES::",1); + mini_printf(basename,1); + mini_printf("\n",1); + + tmp = cinit_build_argv(basename,&bav); + if((tmp = cinit_build_argv(basename,&bav)) != BA_OK) { + if(tmp != BA_E_MEM) { /* do not print something on memory errors */ + print_errno(basename); + } + _exit(1); + } + + execve((bav.argv)[0], bav.argv, bav.envp); + print_errno(basename); + _exit(1); /* simply exit non-zero. That's enough for cinit to recognize + it as faulty */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/generic/file_exists.c b/software/cinit/browse_source/cinit-0.3pre9/src/generic/file_exists.c new file mode 100644 index 00000000..118397de --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/generic/file_exists.c @@ -0,0 +1,63 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * check whether file exists and is a file + */ + +#include /* errno */ +#include /* stat */ +#include /* NULL */ +#include "cinit.h" /* print_errno() */ +#include "svc.h" /* svc_report_status() */ +#include "messages.h" /* messages.. */ + +int file_exists(char *filename) +{ + struct stat buf; + + mini_printf("FE: ",1); + mini_printf(filename,1); + mini_printf("\n",1); + + /* check: + * - is it a link? if so, is it broken? report! + * - is it non existent? -> return non-existent + * - is it existent, but not a regular file? report! + */ + if(lstat(filename,&buf) == -1) { /* lstat fails? */ + if(errno == ENOENT) { + mini_printf("NIX DA: ok.\n",1); + return FE_NOT; + } else { + mini_printf("anderer fehler.\n",1); + print_errno(filename); + return FE_ERR; + } + } else { + if(S_ISLNK(buf.st_mode)) { /* is a link */ + mini_printf("ist nen link\n",1); + + /* check link destination */ + if(stat(filename,&buf) == -1) { /* do real stat(): */ + if(errno == ENOENT) { + svc_report_status(filename,MSG_BROKENLINK,NULL); + return FE_NOLINK; + } else { + mini_printf("anderer fehler.\n",1); + print_errno(filename); + return FE_ERR; + } + } + } + } /* caught all stat() errors */ + + if(!S_ISREG(buf.st_mode)) { + svc_report_status(filename,MSG_NONREGULAR,NULL); + return FE_OTHER; + } + + return FE_FILE; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/generic/mini_printf.c b/software/cinit/browse_source/cinit-0.3pre9/src/generic/mini_printf.c new file mode 100644 index 00000000..d5b0d1f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/generic/mini_printf.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Print the world! + * + */ + +#include + +void mini_printf(char *str,int fd) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) return; + + p = str; + while(*p) p++; + + write(fd,str,(size_t) (p - str)); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/generic/openreadclose.c b/software/cinit/browse_source/cinit-0.3pre9/src/generic/openreadclose.c new file mode 100644 index 00000000..6cf7abe9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/generic/openreadclose.c @@ -0,0 +1,66 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * read a file + * + */ + +#include /* open, read, close */ +#include /* strncpy */ +#include /* realloc */ +#include /* errno */ +#include /* NULL */ +#include /* open */ +#include "cinit.h" + +int openreadclose(char *filename, char **where) +{ + + int tmp; + int cnt; + int fd; + char buf[512]; + + *where = NULL; + + /* what a wonderful loop */ + while((fd = open(filename,O_RDONLY)) == -1) { + if(errno == ENOENT) return ORC_ERR_NONEXISTENT; + if(errno != EINTR) return ORC_ERR_OPEN; + } + + cnt = 0; + while (1) { + tmp = read(fd,buf,512); + + if(tmp == -1) { + if(errno == EINTR) + continue; + else + return ORC_ERR_READ; + } else if(tmp == 0) { + break; + } + + cnt += tmp; + *where = realloc(*where,cnt + 1); + if(*where == NULL) return ORC_ERR_MEM; + + /* FIXME check correctness of copied buffer... + * and get some sleep..soon, very soon! */ + strncpy(&(*where)[cnt-tmp],buf,tmp); + } + + while((fd = close(fd)) == -1) { + if(errno == EINTR) continue; + return ORC_ERR_CLOSE; + } + + /* terminate string! */ + (*where)[cnt] = '\0'; + + return ORC_OK; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/generic/path_absolute.c b/software/cinit/browse_source/cinit-0.3pre9/src/generic/path_absolute.c new file mode 100644 index 00000000..691a3a38 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/generic/path_absolute.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create an absulte path + */ + +#include /* chdir(),getcwd */ +#include /* PATH_MAX */ +#include "cinit.h" /* print_errno */ +#include "messages.h" /* print_errno */ + +int path_absolute(char *relpath, char *newpath, size_t size) +{ + char oldpath[PATH_MAX+1]; + + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + if(chdir(relpath) == -1) { + print_errno(relpath); + return 0; + } + + if(!getcwd(newpath,size)) { + print_errno(relpath); + return 0; + } + + if(chdir(oldpath) == -1) { + print_errno(oldpath); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/generic/path_append.c b/software/cinit/browse_source/cinit-0.3pre9/src/generic/path_append.c new file mode 100644 index 00000000..c6617ba9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/generic/path_append.c @@ -0,0 +1,28 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * create path to needs + */ + +#include /* strlen */ +#include /* PATH_MAX */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +int path_append(char *path, char *append) +{ + size_t end = strlen(path); + + if(strcmp(&path[end-1],SLASH)) { + if((end + strlen(SLASH) + strlen(append)) > PATH_MAX) return 0; + strcat(path,SLASH); + } else { + if((end + strlen(append)) > PATH_MAX) return 0; + } + strcat(path,append); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/generic/print_errno.c b/software/cinit/browse_source/cinit-0.3pre9/src/generic/print_errno.c new file mode 100644 index 00000000..7415d556 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/generic/print_errno.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * stolen from tcpserver_blocker + * + * Author: Nico Schottelius + * Date: 2006-08-24 + * + * Print the error found in errno + */ + +#include /* strerror */ +#include /* errno */ + +#include "cinit.h" /* mini_printf, PD_ERR */ + +void print_errno(char *msg) +{ + if(msg) { + mini_printf(msg, FD_ERR); + mini_printf(": ", FD_ERR); + } + mini_printf(strerror(errno), FD_ERR); + mini_printf("\n", FD_ERR); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/generic/sleep_before_kill.c b/software/cinit/browse_source/cinit-0.3pre9/src/generic/sleep_before_kill.c new file mode 100644 index 00000000..731ce16b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/generic/sleep_before_kill.c @@ -0,0 +1,43 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Sleep: + * read configuration, + * fallback to builtin value if not possible, + * sleep. + * + */ + +#include /* nanosleep */ +#include /* strtol() */ +#include /* errno */ + +#include "cinit.h" /* print_errno */ +#include "messages.h" /* messages */ + +void sleep_before_kill() +{ + char *content; + int tmp; + struct timespec ts; + + if(openreadclose(CINIT_SLEEPFILE,&content) == ORC_OK) { + errno = 0; + tmp = strtol(content, NULL, 10); + if(errno != 0) tmp = SLEEP_KILL; + free(content); + } else { + mini_printf(MSG_BUILTIN_SLEEP,1); + tmp = SLEEP_KILL; + } + + ts.tv_sec = tmp; + ts.tv_nsec = 0; + + if(nanosleep(&ts,NULL) == -1) { + print_errno(MSG_ERR_SLEEP); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/generic/strip_final_newline.c b/software/cinit/browse_source/cinit-0.3pre9/src/generic/strip_final_newline.c new file mode 100644 index 00000000..4629bb9f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/generic/strip_final_newline.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * If the last character is \n, shrink the memory and remove it + * + */ + +#include /* NULL */ +#include /* strchr */ +#include /* alloc */ + +char *strip_final_newline(char *str) +{ + char *p; + + /* don't get fooled by bad pointers */ + if(str == NULL) { + return NULL; + } + + p = strrchr(str,'\n'); + if(p) { + if(*(p+1) == '\0') { + *p = '\0'; /* DO NOT FORGET TO TERMINATE STRING */ + str = realloc(str,(p-str)); + } + } + + return str; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/generic/usage.c b/software/cinit/browse_source/cinit-0.3pre9/src/generic/usage.c new file mode 100644 index 00000000..2304ea39 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/generic/usage.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * usage: tell the world what we want - seriously no capitalism + * usage: tell the user what's wrong and a help text + * + */ + +#include +#include "cinit.h" + +void usage(char *banner, char *text) +{ + /* print banner + error message */ + mini_printf(banner,1); + mini_printf(text,1); + _exit(1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/include/build_argv.h b/software/cinit/browse_source/cinit-0.3pre9/src/include/build_argv.h new file mode 100644 index 00000000..b61b27a4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/include/build_argv.h @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * build **argv + */ + +#ifndef CINIT_BA_HEADER +#define CINIT_BA_HEADER + +/***************************************************************************** + * Defines: return values + */ +enum { + BA_OK, + BA_E_NOTFOUND, + BA_E_PARAMS, + BA_E_ENV, + BA_E_MEM, + BA_E_OTHER +}; + +/***************************************************************************** + * Structures + */ +struct ba_argv { + char **argv; + char **envp; +}; + +/***************************************************************************** + * Functions + */ +int cinit_build_argv(char *basename, struct ba_argv *bav); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/include/cinit.h b/software/cinit/browse_source/cinit-0.3pre9/src/include/cinit.h new file mode 100644 index 00000000..9ebba9eb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/include/cinit.h @@ -0,0 +1,107 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + */ + +#ifndef _CINIT_H +#define _CINIT_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/*********************************************************************** + * Defines + */ +#define SLASH "/" +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC + +enum { /* FIXME: there are some default defines somewhere for that */ + FD_IN=0, + FD_OUT=1, + FD_ERR=2 +}; + +enum { /* returns of openreadclose */ + ORC_OK, /* everything went fine */ + ORC_ERR_NONEXISTENT, /* file does not exist */ + ORC_ERR_OPEN, /* error opening the file */ + ORC_ERR_READ, + ORC_ERR_CLOSE, + ORC_ERR_MEM +}; + +/* values for execute_sth: + * STRICT: print and error, if .../on does not exist + * NOSTRICT: no .../on is fine + */ +enum { + EXEC_STRICT, + EXEC_NOSTRICT +}; + +enum { + FE_FILE, /* file exists and is a file */ + FE_OTHER, /* file exists, but is no file */ + FE_NOT, /* file does not exist */ + FE_NOLINK, /* file is a broken symbolic link*/ + FE_ERR /* some error occured */ +}; + +/*********************************************************************** + * Paths + */ +#define CINIT_SVCDIR CINIT_DIR SLASH SVCDIR +#define CINIT_INIT CINIT_SVCDIR SLASH C_INIT +#define CINIT_TMNT CINIT_DIR SLASH C_TMP +#define CINIT_SOCK CINIT_TMNT SLASH C_SOCK +#define CINIT_BIN PREFIX SLASH "sbin" SLASH "cinit" + +#define CINIT_CONFDIR CINIT_DIR SLASH C_CONFDIR +#define CINIT_PANIC CINIT_CONFDIR SLASH C_PANIC +#define CINIT_LAST CINIT_CONFDIR SLASH C_LAST +#define CINIT_SLEEPFILE CINIT_CONFDIR SLASH SLEEP_BEFORE_KILL + +/* actions for i/o handlers (see comm/do_*) */ +#define ACT_SERV 0 +#define ACT_CLIENT 1 + +/* functions (used by server and client) */ +int run_svc(char *rpath); +void mini_printf(char *str, int fd); +void set_signals(int action); +void usage(char *banner, char *stext); + +int do_svc_name(int sock2, char *svc, int action); +int do_change_status(char *svc, char *status, pid_t *pid, int sock2, int action); +char do_result(int sock2, char *value); + +/* core functions */ +void panic(void); +void sig_child(int signal); + +/* client / message functions */ +int msg_svc_on_off(char *svc, char action); +int msg_change_status(char *svc, char status, pid_t pid); +int begin_msg(char cmd); + +/* client functions */ +pid_t respawn_svc(char *abspath); +char **read_file(char *file); +void sig_terminate(int signal); + +/* generic */ +void execute_sth(char *basename); +int execute_and_wait(char *svc); +int path_append(char *path, char *append); +int path_absolute(char *relpath, char *buf, size_t size); +int openreadclose(char *filename, char **where); +char *strip_final_newline(char *str); +int file_exists(char *filename); +void sleep_before_kill(); + +/* util */ +//int msg_reboot(char cmd); +void print_errno(char *text); + +#endif /* _CINIT_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/include/comm.h b/software/cinit/browse_source/cinit-0.3pre9/src/include/comm.h new file mode 100644 index 00000000..4fbe8c50 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/include/comm.h @@ -0,0 +1,81 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit (at) schottelius.org) + * + * part of cLinux/cinit + * + * Communication defines + */ + +#ifndef CINIT_COMM_HEADER +#define CINIT_COMM_HEADER + +#include /* PATH_MAX */ +#include /* pid_t */ + +/*********************************************************************** + * Commands the clients may issue to us + * maximum number of commands: 2^8 = 256 + */ +enum commands { + CMD_MIN='A', /* minimum command number */ + CMD_SVC_START, /* the client wants US to start a service */ + CMD_SVC_START_ONLY, /* start this service without dependencies */ + CMD_SVC_START_NEEDS, /* start this service, needs, but no wants */ + CMD_SVC_STOP, /* stop svc and all svcs that need it */ + CMD_SVC_STOP_ONLY, /* we should stop _only_ this service */ + CMD_SVC_STOP_WANTS, /* stop svc, all svcs that need or want it */ + CMD_CHG_STAT, /* the client reports a status change */ /* FIXME: NEEDED? */ + CMD_RESCUE, /* we should start the rescue mode */ /* UNIMPLEMENTED */ + CMD_HALT, /* halt the system */ + CMD_REBOOT, /* reboot the system */ + CMD_POWEROFF, /* poweroff the system */ + CMD_WBOOT, /* shutdown and restart everything */ /* UNIMPLEMENTED */ + CMD_INFO, /* send information about that service */ /* UNIMPLEMENTED */ + CMD_MAX , /* maximum command number */ +}; + +/* old + RT_ERR_COMM, * communication failed * + RT_ERR, * service starting failed * + RT_UNSPEC, * some kind of error, unspecified * + RT_SUCCESS, * successfully started: respawning or once * + RT_SVC_FAILED, * tried earlier, service failed, won't retry * + +*/ + +/*********************************************************************** + * client issues a command: start_command + */ +struct s_cmd { + char cmd; + pid_t pid; +}; + +/*********************************************************************** + * messages from the client + * Prefix: qst_ (question) + */ +struct msg_client { + pid_t pid; /* pid of the telling client */ + char cmd; /* which cmd is issued to us */ + char status; /* status of the service */ + char svc[PATH_MAX]; /* name of the service */ + char svc_orig[PATH_MAX]; /* the service, which wants to start us */ +}; + +/*********************************************************************** + * messages from the server + * Prefix: asw_ (answer) + */ + +/*********************************************************************** + * return short status + */ +struct asw_sstatus { + long mtype; + char status; + char msg[PATH_MAX]; +}; + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/include/ipc.h b/software/cinit/browse_source/cinit-0.3pre9/src/include/ipc.h new file mode 100644 index 00000000..66b3bc86 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/include/ipc.h @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * Prototypes for ipc handler + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +/***************************************************************************** + * Functions: in server + */ +int cinit_ipc_init(void); /* init in init */ +int cinit_ipc_listen(void); /* listen in init */ +int cinit_ipc_sclose(void); /* fork of cinit come from outside! */ +int cinit_ipc_ssend(void *data); /* send to a client from the server */ +void cinit_ipc_destroy(void); /* destroy ipc handler in cinit */ + +/***************************************************************************** + * Functions: in clients + */ +int cinit_ipc_logon(void); /* logon to init (client init) */ +int cinit_ipc_connect(void); /* connect to init */ +int cinit_ipc_csend(void *data); /* send to the server from a client */ + +/***************************************************************************** + * Functions: shared + */ + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/include/listing b/software/cinit/browse_source/cinit-0.3pre9/src/include/listing new file mode 100644 index 00000000..df30f408 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/include/listing @@ -0,0 +1,5 @@ +include/cinit.h +include/config.h +include/ipc.h +include/messages.h +include/os.h diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/include/messages.h b/software/cinit/browse_source/cinit-0.3pre9/src/include/messages.h new file mode 100644 index 00000000..ab87cdb3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/include/messages.h @@ -0,0 +1,148 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit (at) schottelius.org) + * + * part of cLinux/cinit + * + * All messages + */ + +#ifndef _CINIT_MSG_H +#define _CINIT_MSG_H + +/* version */ +#define CINIT_VERSION "cinit-" VERSION +#define MSG_BOOTING CINIT_VERSION ": Booting from " + +#define MSG_DP ": " + +/* Messages to the outside */ +#define MSG_BIND "bind" +#define MSG_CONNECT "connect" +#define MSG_FCNTL "fcntl" +#define MSG_KILLBILL "sigkill" +#define MSG_LISTEN "listen" +#define MSG_SOCKET "socket" +#define MSG_TERMKILL "sigterm" +#define MSG_USAGE_1 ": fast executing, small and simple init " +#define MSG_USAGE_2 "with support for profiles\n" +#define MSG_USAGE_3 "\nError: cinit must be started as PID 1.\n" +#define MSG_USAGE MSG_USAGE_1 MSG_USAGE_2 MSG_USAGE_3 +#define MSG_ERR_FORK "fork" +#define MSG_ERR_IO "i/o" +#define MSG_ERR_OPEN "open" +#define MSG_ERR_PIPE "pipe" +#define MSG_ERR_READ "read" +#define MSG_ERR_EXECVE "execve" +#define MSG_ERR_ALLOC "memory allocation" +#define MSG_ERR_UMOUNT "umount" +#define MSG_ERR_MOUNT "mount" +#define MSG_NOT_DIR "not a directory" +#define MSG_CHDIR "chdir" +#define MSG_READLINK "readlink" +#define MSG_ERR_ADD_SVC "Adding service failed" +#define MSG_CMD_UNKNOWN "Unknown command" + +#define MSG_ERR_DEPS "Too many dependencies" +#define MSG_ERR_ACCEPT "accept" +#define MSG_ERR_WAITPID "waitpid" +#define MSG_ERR_POLL "poll" +#define MSG_ERR_MODIFY "modify list failed" +#define MSG_ERR_COMM "Communication failed" + +#define MSG_ERR_LESS_ARGS "Too less arguments!" +#define MSG_ERR_BAD_ARGS "Wrong arguments / parameter" +#define MSG_ERR_ARGS_LEN "Wrong parameter length" + +#define LOG_SVC_STOPED "Service stoped" +#define LOG_SVC_ONCE "Started once" +#define LOG_SVC_RESPAWN "Respawns now" +#define LOG_NEED_FAIL "One or more need failed" +#define LOG_SVC_FAILED "Service already failed, not starting." +#define LOG_SVC_NOTEXIST "Service does not exist" + +#define MSG_EXEC_FAILED "Failed to execute " + +#define MSG_RESCUE "Switching to rescue mode ..." +#define MSG_UPDATE "Updating cinit ..." +#define MSG_HOT_REBOOT "Hot reboot in progress ..." + +#define MSG_SHOULD_NOT_HAPPEN "This should not happen, I do not know what todo!" + +/* DEBUG */ +#ifdef DEBUG +# define D_PRINTF(x) ( printf("[%s:%d]: %s\n",__FILE__,__LINE__,x) ) +#else +# define D_PRINTF(x) if(0) +#endif + +/* macros */ +#define SERVICE_LOG(svc,message) { \ + mini_printf(svc,1); \ + mini_printf(MSG_DP,1); \ + mini_printf(message,1); \ + mini_printf("\n",1); \ +} +#define LOG(s) { \ + mini_printf(s,1); \ + mini_printf("\n",1); \ +} +#define P_START_SERVICE(name) { mini_printf(MSG_START_SVC,1); mini_printf(name,1); mini_printf("\n",1); } +#define P_EXEC_FAILED(name) { mini_printf(MSG_EXEC_FAILED,1); mini_printf(name,1); mini_printf("\n",1); } + +/* NEW (clean) Service status: Messages to the outside */ + +/* services: how they should be printed + * /etc/cinit/svc/long/name: started once + * /etc/cinit/svc/long/name: is respawning + * /etc/cinit/svc/long/name: FAILED (why it happened) + */ + +#define MSG_INTRO_CINIT "cinit:" +#define MSG_INTRO_SPACE MSG_INTRO_CINIT " " +#define MSG_INTRO_SVC MSG_INTRO_CINIT +//#define MSG_INTRO_SVC MSG_INTRO_CINIT "service:" +#define MSG_INTRO_STOP MSG_INTRO_CINIT "stop: " + +/* FIXME: remove/append, but no intro! */ +#define MSG_INTRO_FAIL "FAILED " +#define MSG_INTRO_RESPAWN MSG_INTRO_CINIT "respawn: " +#define MSG_INTRO_OK MSG_INTRO_CINIT "ok: " + +#define MSG_SVC_FORK "fork() failed" +#define MSG_SVC_NEED_FAIL MSG_INTRO_FAIL "Needs failed for service" +#define MSG_SVC_FAIL MSG_INTRO_FAIL "Service failed!" + + +#define MSG_BUILTIN_SLEEP MSG_INTRO_STOP "Using built-in sleep" + +#define MSG_TREE_EXEC MSG_INTRO_SPACE "Execution of reverse service tree\n" + +/* general errors */ +#define MSG_GETCWD "Getcwd failed! Your system is most likely broken!" +#define MSG_FATAL_PANIC MSG_INTRO_SPACE "I tried everything, but even panic() failed: " +#define MSG_ERR_SLEEP MSG_INTRO_SPACE "Sleep did not succeed" +#define MSG_GETTIMEOFDAY MSG_INTRO_SPACE "gettimeofday() failed!" + +/* stat() errors */ +#define MSG_NONREGULAR "Is not a regular file." +#define MSG_BROKENLINK "Is a broken link." + +/* Service messages */ +#define MSG_SVC_START "Starting... " +#define MSG_SVC_STOP "Stoping... " +#define MSG_SVC_RESTART "Restarted." +#define MSG_SVC_SLEEP "Sleeping before restart" +#define MSG_SVC_OK_ONCE "Started once." +#define MSG_SVC_OK_RESPAWN "Is respawning." + +/* Status messages */ +#define MSG_SHUTDOWN_START MSG_INTRO_STOP "\nBeginning the shutdown process..." +#define MSG_SHUTDOWN_SVC MSG_INTRO_STOP "Shutting down services now..." +#define MSG_SHUTDOWN_KILL MSG_INTRO_STOP "Killing remaining processes..." +#define MSG_SHUTDOWN_LAST MSG_INTRO_STOP "Executing final service..." +#define MSG_POWER_OFF MSG_INTRO_STOP "Powering off..." +#define MSG_HALT MSG_INTRO_STOP "Halting system ..." +#define MSG_REBOOT MSG_INTRO_STOP "Rebooting ..." + +#endif /* _CINIT_MSG_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/include/os.h b/software/cinit/browse_source/cinit-0.3pre9/src/include/os.h new file mode 100644 index 00000000..b3320c0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/include/os.h @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit //@\\ schottelius.org) + * + * part of cLinux/cinit + * + * os specific functions + */ + +#ifndef CINIT_OS_HEADER +#define CINIT_OS_HEADER + +/***************************************************************************** + * Functions + */ +void cinit_halt(void); +void cinit_poweroff(void); +void cinit_reboot(void); + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/include/reboot.h b/software/cinit/browse_source/cinit-0.3pre9/src/include/reboot.h new file mode 100644 index 00000000..cd8a345e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/include/reboot.h @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot specific functions + * + */ + +#ifndef CINIT_REBOOT_HEADER +#define CINIT_REBOOT_HEADER + +/***************************************************************************** + * the main reboot function + */ +void do_reboot(int signal); + + +/***************************************************************************** + * os specific functions + */ +void cinit_reboot(void); +void cinit_halt(void); +void cinit_poweroff(void); + + +/***************************************************************************** + * Functions: abstract do_reboot + */ +#define cinit_do_reboot() do_reboot(SIGHUP) +#define cinit_do_halt() do_reboot(SIGUSR1) +#define cinit_do_poweroff() do_reboot(SIGTERM) + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/include/svc.h b/software/cinit/browse_source/cinit-0.3pre9/src/include/svc.h new file mode 100644 index 00000000..1f78e427 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/include/svc.h @@ -0,0 +1,129 @@ +/*********************************************************************** + * + * 2006,2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + + +#ifndef _CINIT_SVC_H +#define _CINIT_SVC_H + +/* includes */ +#include /* pid_t */ +#include "config.h" /* paths, socket options, etc. */ + +/* service list */ +struct listitem { + struct listitem *prev; /* previous item */ + struct listitem *next; /* next item */ + + char *abs_path; /* name of service */ + long int status; /* current status */ + pid_t pid; /* pid of service / respawn watcher */ + time_t start; /* time the process was started last time */ + + + struct dep *wanted; /* list of services that want this service */ + struct dep *needed; /* list of services that need this service */ + + struct dep *wants; /* list of services that this service wants */ + struct dep *needs; /* list of services that this service needs */ +}; + +/* list of dependencies */ +struct dep { + struct dep *prev; + struct dep *next; + struct listitem *svc; +}; + +/* variables */ +extern struct dep *svc_init; /* the services to start */ +extern struct listitem *svc_list; /* the list of services */ + +/* list functions */ +struct listitem *list_insert(char *path, int status); +int list_delete(char *path); +int list_modify(char *path, int new_status, pid_t new_pid); +struct listitem *list_search(char *path); +struct listitem *list_search_pid(pid_t pid); +//int list_display_all(); /* debug only */ + + +/* service */ +struct listitem *svc_create(char *svc); +struct listitem *gen_svc_tree(char *svc); +int check_add_deps(struct listitem *svc, int type); +void dep_entry_add(struct dep **list, struct dep *new); +struct dep *dep_entry_del(struct dep *del); +int tree_exec(struct dep *start); +int svc_set_status(struct listitem *li, int status); +int svc_should_respawn(struct listitem *li); +int svc_needs_status(struct listitem *li); +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type); +struct dep *dep_create(struct listitem *svc); +void svc_success(struct listitem *li); +void svc_fail(struct listitem *li); +void svc_report_status(char *svc, char *msg, char *err); +void svc_start(struct listitem *li, int delay); +void shutdown_services(struct listitem *start); + + +/*********************************************************************** + * to decide whether to operate on needs or wants + */ +enum dep_types { + DEP_WANTS, + DEP_NEEDS +}; + +/*********************************************************************** + * status of a service and return codes - errors and success + */ +enum svc_status_old { + ST_TMPNOW=1, /* the client is now starting the service NEEDED??? */ + ST_NOTEXIST, /* service does not exist */ + + ST_NEED_FAIL, /* failed to start a need for this service */ + ST_FAIL, /* failed to start service */ + + ST_OFF, /* service is off */ + ST_OFF_ALL, /* service and those that need it are off */ + ST_OFF_ALL_F, /* same, but something failed */ + ST_OFF_WANTS, /* service + those that need or want it are off */ + ST_OFF_WANTS_F, /* same, but something failed */ + + ST_TMP, /* currently working on it */ + ST_ONCE, /* executed once */ + ST_RESPAWN /* running and respawning */ +}; + +/*********************************************************************** + * The real status types a service may have (ignore above) + * We have 32 Bits, we should use them ;-) + */ +enum svc_status { + /* first define basics */ + ST_SH_ONCE = 0x1, /* service SHould be started once */ + ST_SH_RESPAWN = 0x2, /* service SHould respawn */ + ST_ONCE_OK = 0x4, /* service was successfully started once */ + ST_ONCE_FAIL = 0x8, /* service failed to start */ + ST_RESPAWNING = 0x10, /* service is respawning */ + ST_NEED_FAILD = 0x20, /* this service is not started, need failed */ + ST_IN_LIST = 0x40, /* this service is being started (= in list) */ + ST_BAD_ERR = 0x80, /* some kind of error that SHOULD NOT happen */ + ST_ONCE_RUN = 0x100 /* the once process is currently running */ +}; + +/*********************************************************************** + * Possibilities the needs of a service may have + */ +enum svc_needs_status { + SNS_NEEDS_STARTED = 1, /* all needs are started. We may start, too */ + SNS_NEEDS_FAILED, /* one ore more needs failed */ + SNS_NEEDS_UNFINISHED /* one ore more needs are not yet started */ +}; +#endif /* _CINIT_SVC_H */ diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq-rt/README b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq-rt/README new file mode 100644 index 00000000..cc1a1b7e --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq-rt/README @@ -0,0 +1,2 @@ +This implementation uses the new realtime inferface of +posix instead of the old one functions. diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq-rt/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq-rt/cinit_ipc_init.c new file mode 100644 index 00000000..ef22b6d1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq-rt/cinit_ipc_init.c @@ -0,0 +1,21 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include + +#include "cinit.h" +#include "config.h" +#include "msgq-rt.h" + +int cinit_ipc_init(void) +{ + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq-rt/mq_open.c b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq-rt/mq_open.c new file mode 100644 index 00000000..445e7dc6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq-rt/mq_open.c @@ -0,0 +1,20 @@ +#include +#include + +int main() +{ + mqd_t readq = mq_open("/test",O_RDWR|O_CREAT|O_EXCL); + //mqd_t readq = mq_open("/bin/ls",O_RDWR|O_CREAT|O_EXCL); + + if(readq == -1) { + perror("oh nein"); + return 1; + } + mqd_t writeq = mq_open("/bin/cp",O_WRONLY|O_CREAT|O_EXCL); + if(readq == -1) { + perror("oh oh nein"); + return 1; + } +} + + diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq-rt/msgq-rt.h b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq-rt/msgq-rt.h new file mode 100644 index 00000000..d09a2808 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq-rt/msgq-rt.h @@ -0,0 +1,39 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +#define MSGQ_PATHNAME "/cinit" /* identifier */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + pid_t pid; + struct msg_client msg; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server_short { + long mtype; + struct asw_sstatus answer; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq-rt/test b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq-rt/test new file mode 100644 index 00000000..9b54eee0 Binary files /dev/null and b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq-rt/test differ diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/README.text b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/README.text new file mode 100644 index 00000000..c9a1acf2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/README.text @@ -0,0 +1,20 @@ +cinit/src/ipc/msgq: About this msqg implementation +=================================================== +Nico Schottelius +0.1, Initial Version from 2006-08-04 +:Author Initials: NS + +Intro here + +Introduction +------------ + +cinit opens a + +Files +----- +- README.text: This file +- cinit_init_ipc.c: Init +msgq.h +objects + diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/cinit_ipc_destroy.c b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/cinit_ipc_destroy.c new file mode 100644 index 00000000..d703bef8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/cinit_ipc_destroy.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Destory ipc mechanism, cinit is gonna die soon. + * + */ + +#include /* msgget */ +#include /* NULL */ + +#include "msgq.h" /* mq_in, mq_out */ +#include "cinit.h" /* print_errno */ + +void cinit_ipc_destroy(void) +{ + if(msgctl(mq_in,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } + if(msgctl(mq_out,IPC_RMID,NULL) == -1) { + print_errno(MSG_MSGQ_DESTROY); /* print warning, continue */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/cinit_ipc_init.c new file mode 100644 index 00000000..11c610ef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/cinit_ipc_init.c @@ -0,0 +1,47 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-linux-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Create new queues: One for recieving, one for sending + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "cinit.h" +#include "config.h" +#include "msgq.h" + +int cinit_ipc_init(void) +{ + key_t k_tmp; + + /* to_server */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + if(k_tmp == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + mq_in = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_in == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + /* to_client */ + k_tmp = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + if(k_tmp == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + mq_out = msgget(k_tmp,MSGQ_PERMS | IPC_CREAT); + if(mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/cinit_ipc_listen.c new file mode 100644 index 00000000..81052022 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/cinit_ipc_listen.c @@ -0,0 +1,61 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* printf() */ + +#include /* ftok */ +#include /* msgget */ +#include /* errno */ + +#include "cinit.h" /* print_errno */ +#include "config.h" +#include "msgq.h" +#include "comm.h" /* the cmd struct */ + +int cinit_ipc_listen(void) +{ + int tmp; + + //struct msg_client m_client; + + struct s_cmd cmd; + + while (1) { + mini_printf("IPC loop\n",1); + + /* FIXME: change msg structure */ + //tmp = msgrcv(mq_in,&m_client,(sizeof m_client),0,0); + tmp = msgrcv(mq_in,&cmd,(sizeof cmd),0,0); + + if(tmp == -1) { + if(errno != EINTR) { + print_errno(MSG_MSGQ_MSGRCV); + } + continue; + } + + printf("pid: %d, cmd: %c\n",cmd.pid,cmd.cmd); + + /* read_command() */ + + /* use pid as the message type + m_serv.mtype = (long) m_client.pid; + strcpy(m_serv.text,"Alles ok\n"); + + tmp = msgsnd(mq_out, &m_serv, sizeof(m_serv), 0); + + if(tmp == -1) { + perror("msgsnd"); + return 0; + } */ + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/cinit_ipc_logon.c b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/cinit_ipc_logon.c new file mode 100644 index 00000000..6df05ce4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/cinit_ipc_logon.c @@ -0,0 +1,41 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-linux-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Listen to messages + * + */ + +#include /* ftok */ +#include /* msgget */ + +#include "config.h" +#include "cinit.h" /* print_errno */ +#include "msgq.h" + +int cinit_ipc_logon(void) +{ + key_t k_in, k_out; /* FIXME: remove one variable */ + + /* generiere nen schluessel: andersrum als im Server */ + k_in = ftok(MSGQ_PATHNAME,MSGQ_TO_CLIENT); + k_out = ftok(MSGQ_PATHNAME,MSGQ_TO_SERVER); + + if(k_in == -1 || k_out == -1) { + print_errno(MSG_MSGQ_FTOK); + return 0; + } + + /* neue queue */ + mq_in = msgget(k_in,0666 | IPC_CREAT); + mq_out = msgget(k_out,0666 | IPC_CREAT); + + if(mq_in == -1 || mq_out == -1) { + print_errno(MSG_MSGQ_MSGGET); + return 0; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/cinit_ipc_sclose.c b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/cinit_ipc_sclose.c new file mode 100644 index 00000000..cce784a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/cinit_ipc_sclose.c @@ -0,0 +1,14 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-linux-cinit schottelius.org) + * + * part of cLinux/cinit + * + * Close the ressources from the server, clean state for forks. + * + */ + +int cinit_ipc_sclose(void) +{ + return 1; /* nothing to do when using message queues */ +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/msgq.h b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/msgq.h new file mode 100644 index 00000000..01c6e769 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/msgq.h @@ -0,0 +1,52 @@ +/* + * (c) 2006 Nico Schottelius (nico-linux-cinit //@\\ schottelius.org) + * part of cinit + */ + +#ifndef CINIT_IPC_HEADER +#define CINIT_IPC_HEADER + +#include /* structures */ + +/*********************************************************************** + * configuration + */ + +#define MSGQ_PATHNAME "/bin/sh" /* should be on every *nix */ +#define MSGQ_TO_SERVER 'i' /* also for ftok */ +#define MSGQ_TO_CLIENT 'o' /* also for ftok */ +#define MSGQ_PERMS 0660 /* queue permissions */ + +/*********************************************************************** + * global variables + */ +int mq_in; /* input */ +int mq_out; /* output */ + +/*********************************************************************** + * structures + */ + +/* messages _from_ the client _to_ the server */ +struct msgq_client { + long mtype; + pid_t pid; + struct msg_client msg; +}; + +/* messages _from_ the server _to_ the client */ +struct msgq_server_short { + long mtype; + struct asw_sstatus answer; +}; + +/*********************************************************************** + * Messages + */ + +#define MSG_MSGQ_FTOK "ftok" +#define MSG_MSGQ_MSGGET "msgget" +#define MSG_MSGQ_MSGRCV "msgrcv" +#define MSG_MSGQ_DESTROY "msgq-destroy" + +#endif diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/objects b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/objects new file mode 100644 index 00000000..7c99d09f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/msgq/objects @@ -0,0 +1,5 @@ +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c new file mode 100644 index 00000000..88c310f4 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/socket+linux-tmpfs/cinit_ipc_init.c @@ -0,0 +1,125 @@ +/* + * (c) 2005, 2006 Nico Schottelius (nico-linux at schottelius.org) + * cinit.c + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* siggnal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * create a socket, when we recieved a signal + */ +int main(int argc, char **argv) +{ + struct sockaddr_un addr; + struct pollfd plist; + char *initdir; + + list = NULL; /* list of services is empty currently */ + initdir = CINIT_INIT; /* default init dir */ + + cpid = getpid(); + if(cpid != 1) { + usage(MSG_USAGE,MSG_NOT_ONE); + } + + set_signals(ACT_SERV); /* set signal handlers */ + + /* read args, profile support */ + while(argc > 1) { + if( !strncmp(PROFILE, argv[argc-1], strlen(PROFILE)) ) { + initdir = (char *) malloc( + strlen(CINIT_DIR) + + strlen(&argv[argc-1][strlen(PROFILE)]) + 2 + ); + if(initdir == NULL) { + panic(); + } + strcpy(initdir,CINIT_DIR); + strcat(initdir,SLASH); + strcat(initdir,&argv[argc-1][strlen(PROFILE)]); + break; + } + argc--; + } + + /* tell the world we are there FIXME: do we really need three calls? */ + mini_printf(MSG_CINIT,1); mini_printf(initdir,1); mini_printf("\n",1); + + if( chdir(CINIT_INIT) == -1) { + perror(MSG_CHDIR); + panic(); + } + + /******************** TMPDIR **********************/ + if( mount(C_TMPMOUNT,CINIT_TMNT,C_TMPFS,0,NULL) == -1 ) { + perror(MSG_ERR_MOUNT); + panic(); + } + + /******************** begin socket **********************/ + sock = socket(AF_UNIX,SOCK_STREAM,0); /* create socket */ + if( sock == -1 ) { + perror(MSG_SOCKET); + panic(); + } + + memset(&addr, 0, sizeof(addr) ); /* clear addr */ + strcpy(addr.sun_path, CINIT_SOCK); + addr.sun_family = AF_UNIX; + + if(bind(sock,(struct sockaddr *)&addr,sizeof(addr)) == -1) { + perror(MSG_BIND); + panic(); + } + + /* start listening */ + if(listen(sock,SOCK_QUEUE) == -1) { + perror(MSG_LISTEN); + panic(); + } + + /* start init or profile */ + run_init_svc(initdir); + + /* free, if we malloc()ed before */ + if(initdir != CINIT_INIT) { + free(initdir); + } + + /* our life is polling a socket */ + plist.fd = sock; + plist.events = POLLIN | POLLPRI; + while(1) { + if(poll(&plist, 1, -1) != -1) { + if( (plist.revents & POLLIN) == POLLIN || + (plist.revents & POLLPRI) == POLLPRI) { + sigio(sock); + } + } + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c new file mode 100644 index 00000000..a174d78d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/ipc/socket+linux-tmpfs/cinit_ipc_listen.c @@ -0,0 +1,141 @@ +/* + * cinit + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * handle client requests + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cinit.h" + +/*********************************************************************** + * sigio: client handling + */ + +/* we are called, if one or _more_ connections are waiting */ +void sigio(int socket) +{ + int tmp, nsock; + char buf[PATH_MAX+1], status; + struct listitem *list_tmp; + pid_t pid; + + while ( (nsock = accept(socket,(struct sockaddr *) NULL, + (socklen_t *) NULL)) != -1) { + + if( read(nsock,&buf[0],1) == -1) { + perror(MSG_ERR_READ); + close(nsock); + continue; + } + + switch(buf[0]) { + + /********************** START SERVICE *******************/ + case CMD_START_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + + buf[tmp] = 0; + list_tmp = list_search(buf); + + if(list_tmp != NULL) { /* service already exists, return status */ + status = list_tmp->status; + do_result(nsock,&status); + break; + } + + tmp = list_insert(buf,ST_TMP); /* add service */ + if(!tmp) { /* failed */ + LOG(MSG_ERR_ADD_SVC); + status = ST_FAIL; + } else { + status = RT_TMPNOW; + } + do_result(nsock,&status); + break; + + /********************** STOP (RESPAWNING) *******************/ + case CMD_STOP_SVC: + tmp = do_svc_name(nsock,buf,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; + list_tmp = list_search(buf); + + /* FIXME: + - handle off + - handle switching off once services + - perhaps remove old cinit code, which has respawing childs + */ + + if(list_tmp != NULL) { /* service exists */ + if(list_tmp->status == ST_RESPAWN) { + /* kill cinit watcher, which kills the real process */ + kill(list_tmp->pid,SIGTERM); + + /* wait for watcher to terminate */ + waitpid(list_tmp->pid,&tmp,0); + } + + status = ST_OFF; + if(!list_modify(buf,status,list_tmp->pid)) { + status = ST_FAIL; + } else { /* return status */ + status = list_tmp->status; + } + } else { /* no service there */ + status = RT_NOTEXIST; + } + do_result(nsock,&status); + break; + + /********************** CHANGE SERVICE STATUS *******************/ + case CMD_CHG_STATUS: + tmp = do_change_status(buf,&status,&pid,nsock,ACT_SERV); + if(!tmp) break; + buf[tmp] = 0; /* terminate buf */ + + if(!list_modify(buf,status,pid)) { + SERVICE_LOG(buf,MSG_ERR_MODIFY); + status = 0; + } + do_result(nsock,&status); + break; + + /********************** SPECIAL ACTIONS *******************/ + case CMD_REBOOT: + sig_reboot(SIGHUP); + break; + case CMD_POWEROFF: + sig_reboot(SIGTERM); + break; + case CMD_HALT: + sig_reboot(SIGUSR1); + break; + case CMD_RESCUE: + sig_reboot(SIGUSR2); + break; + case CMD_UPDATE: + sig_reboot(SIGCONT); + break; + default: + LOG(MSG_CMD_UNKNOWN); + break; + } + close(nsock); + } + + /* hier kommt man haeufiger herein, interrupted system call */ + if( errno != EAGAIN && errno != EINTR) { /* report, but don't panic */ + perror(MSG_ERR_ACCEPT); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/object_lists/cinit b/software/cinit/browse_source/cinit-0.3pre9/src/object_lists/cinit new file mode 100644 index 00000000..b080f1b2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/object_lists/cinit @@ -0,0 +1,51 @@ +core/build_argv.o +core/cinit.o +core/panic.o +core/set_signals.o +core/do_reboot.o +core/sig_child.o +generic/execute_sth.o +generic/file_exists.o +generic/mini_printf.o +generic/path_absolute.o +generic/path_append.o +generic/print_errno.o +generic/openreadclose.o +generic/strip_final_newline.o +generic/sleep_before_kill.o +generic/execute_and_wait.o +ipc/current/cinit_ipc_init.o +ipc/current/cinit_ipc_listen.o +ipc/current/cinit_ipc_sclose.o +ipc/current/cinit_ipc_destroy.o +ipc/current/cinit_ipc_logon.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o +svc/gen_svc_tree.o +svc/gen_halt_tree.o +svc/list_delete.o +svc/list_insert.o +svc/list_search.o +svc/list_search_pid.o +svc/svc_create.o +svc/check_add_deps.o +svc/dep_entry_add.o +svc/dep_entry_del.o +svc/shutdown_services.o +svc/tree_exec.o +svc/svc_set_status.o +svc/svc_should_respawn.o +svc/svc_needs_status.o +svc/dep_needs_wants_add.o +svc/dep_create.o +svc/svc_success.o +svc/svc_report_status.o +svc/svc_start.o +svc/svc_fail.o diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/os/freebsd/halt.c b/software/cinit/browse_source/cinit-0.3pre9/src/os/freebsd/halt.c new file mode 100644 index 00000000..37064cc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/os/freebsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/os/freebsd/objects b/software/cinit/browse_source/cinit-0.3pre9/src/os/freebsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/os/freebsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/os/freebsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre9/src/os/freebsd/poweroff.c new file mode 100644 index 00000000..c73dd079 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/os/freebsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWEROFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/os/freebsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre9/src/os/freebsd/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/os/freebsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/os/linux/halt.c b/software/cinit/browse_source/cinit-0.3pre9/src/os/linux/halt.c new file mode 100644 index 00000000..5ee3eb53 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/os/linux/halt.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * How to halt the system + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT_SYSTEM); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/os/linux/objects b/software/cinit/browse_source/cinit-0.3pre9/src/os/linux/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/os/linux/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/os/linux/poweroff.c b/software/cinit/browse_source/cinit-0.3pre9/src/os/linux/poweroff.c new file mode 100644 index 00000000..c7d2b1c1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/os/linux/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff the system + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_POWER_OFF); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/os/linux/reboot.c b/software/cinit/browse_source/cinit-0.3pre9/src/os/linux/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/os/linux/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/os/netbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre9/src/os/netbsd/halt.c new file mode 100644 index 00000000..972aecf9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/os/netbsd/halt.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_halt(void) +{ + reboot(RB_HALT,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/os/netbsd/objects b/software/cinit/browse_source/cinit-0.3pre9/src/os/netbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/os/netbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/os/netbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre9/src/os/netbsd/poweroff.c new file mode 100644 index 00000000..17d7b259 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/os/netbsd/poweroff.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_poweroff(void) +{ + reboot(RB_HALT|RB_POWERDOWN,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/os/netbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre9/src/os/netbsd/reboot.c new file mode 100644 index 00000000..14313e17 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/os/netbsd/reboot.c @@ -0,0 +1,19 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#define _NETBSD_SOURCE 1 +#include /* reboot */ +#include /* reboot */ +#include /* NULL */ + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT,NULL); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/os/openbsd/halt.c b/software/cinit/browse_source/cinit-0.3pre9/src/os/openbsd/halt.c new file mode 100644 index 00000000..37064cc2 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/os/openbsd/halt.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * halt the system + * + */ + +#include +#include + +void cinit_halt(void) +{ + reboot(RB_HALT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/os/openbsd/objects b/software/cinit/browse_source/cinit-0.3pre9/src/os/openbsd/objects new file mode 100644 index 00000000..020f1efb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/os/openbsd/objects @@ -0,0 +1,3 @@ +os/current/halt.o +os/current/poweroff.o +os/current/reboot.o diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/os/openbsd/poweroff.c b/software/cinit/browse_source/cinit-0.3pre9/src/os/openbsd/poweroff.c new file mode 100644 index 00000000..bf4120e1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/os/openbsd/poweroff.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * poweroff + * + */ + +#include +#include + +void cinit_poweroff(void) +{ + reboot(RB_HALT | RB_POWERDOWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/os/openbsd/reboot.c b/software/cinit/browse_source/cinit-0.3pre9/src/os/openbsd/reboot.c new file mode 100644 index 00000000..03dc660a --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/os/openbsd/reboot.c @@ -0,0 +1,17 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * reboot the system + * + */ + +#include +#include + +void cinit_reboot(void) +{ + reboot(RB_AUTOBOOT); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/check_add_deps.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/check_add_deps.c new file mode 100644 index 00000000..9c1edc85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/check_add_deps.c @@ -0,0 +1,128 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +/* FIXME: clean headers, check: + * getcwd */ +#include + +#include +#include +#include +#include +#include +#include +#include + + +#include /* PATH_MAX */ +#include /* malloc */ +#include /* strcpy */ + +#include "cinit.h" /* mini_printf */ +#include "messages.h" +#include "svc.h" + +int check_add_deps(struct listitem *svc, int type) +{ + char buf[PATH_MAX+1]; + char oldpath[PATH_MAX+1]; + struct dirent *tdirent; + struct dep *deps = NULL; + struct listitem *new_svc; + DIR *d_tmp; + + /* remember where we started */ + if(!getcwd(oldpath,PATH_MAX+1)) { + print_errno(MSG_GETCWD); + return 0; + } + + /* FIXME remove in production */ + mini_printf("CAD::",1); + mini_printf(svc->abs_path,1); + mini_printf("\n",1); + + /* Create path */ + strcpy(buf,svc->abs_path); + if(type == DEP_NEEDS) { + if(!path_append(buf,C_NEEDS)) return 0; + } else { + if(!path_append(buf,C_WANTS)) return 0; + } + + d_tmp = opendir(buf); + if(d_tmp == NULL) { + if(errno != ENOENT) { + print_errno(buf); + return 0; + } + return 1; /* it's fine when there's no dependencies */ + } + + if(chdir(buf) == -1) { /* change to needs or wants */ + print_errno(buf); + return 0; + } + + while((tdirent=readdir(d_tmp))!=NULL) { + if(*(tdirent->d_name) == '.') continue; /* ignore .* */ + + /* skip non-working directories / broken links + * path_absolute reports errors on failure */ + if(!path_absolute(tdirent->d_name,buf,PATH_MAX+1)) continue; + + /* 1. create the service we depend on + * 2. initialize its dependencies + */ + if(!(new_svc = gen_svc_tree(buf))) return 0; + + /* We need ALL dependencies, as we are called only once + * per service; no need to test that first! + * + * And the other service CANNOT know anything about us yet, + * so we always add us to its list. + */ + + /* Dependencies: + * - a.needs b; add b to the list of dependencies. + * - a.needs b; add a to the list of needed by b. + * + * 1. check whether the dependency already exists + * 2. otherwise add it + * 3. do it once for needs, once for needed_by + */ + + /* create a dependency entry containing us */ + deps = dep_create(svc); + if(!deps) return 0; + + if(type == DEP_NEEDS) { + dep_entry_add(&(new_svc->needed),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->needs),deps); + } else { + dep_entry_add(&(new_svc->wanted),deps); + + /* second link */ + deps = dep_create(new_svc); + if(!deps) return 0; + dep_entry_add(&(svc->wants),deps); + } + } + if(chdir(oldpath) == -1) { + print_errno(buf); + return 0; + } + closedir(d_tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/dep_create.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/dep_create.c new file mode 100644 index 00000000..691d66b9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/dep_create.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Create dependency + */ + +#include /* NULL */ +#include /* malloc() */ +#include "svc.h" /* structs */ + +/* search for an entry by path, reverse: from end to the beginning */ +struct dep *dep_create(struct listitem *svc) +{ + struct dep *entry; + + entry = malloc(sizeof(struct dep)); + if(!entry) return NULL; + entry->svc = svc; + + return entry; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/dep_entry_add.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/dep_entry_add.c new file mode 100644 index 00000000..2ac16443 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/dep_entry_add.c @@ -0,0 +1,31 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include "svc.h" /* types */ + +/* + * list: pointer to the list + * new: pointer to data to insert (already filled up) + * + * We add the new element BEFORE the existing element! + */ +void dep_entry_add(struct dep **deplist, struct dep *new) +{ + if(*deplist == NULL) { /* new list */ + *deplist = new; + (*deplist)->prev = *deplist; + (*deplist)->next = *deplist; + } else { /* already existing */ + new->next = *deplist; /* new-> first */ + new->prev = (*deplist)->prev; /* last <- new */ + (*deplist)->prev->next = new; /* last -> new */ + (*deplist)->prev = new; /* new <- first */ + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/dep_entry_del.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/dep_entry_del.c new file mode 100644 index 00000000..fd9fbab6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/dep_entry_del.c @@ -0,0 +1,36 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Add a new item to a (non-)empty list + */ + +#include /* NULL */ +#include /* free() */ +#include "svc.h" + +/* + * tmp: pointer to data to remove (must not be NULL) + * + * Returns either the next object or NULL if there's no next object + */ +struct dep *dep_entry_del(struct dep *del) +{ + struct dep *tmp; + + /* last service in the list */ + if(del->next == del && del->prev == del) { + tmp=NULL; + } else { + /* remove from list */ + del->prev->next = del->next; + del->next->prev = del->prev; + tmp = del->next; + } + + free(del); + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/dep_needs_wants_add.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/dep_needs_wants_add.c new file mode 100644 index 00000000..b7afb02b --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/dep_needs_wants_add.c @@ -0,0 +1,64 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Add all wants or needs from a specific service to dep list + * -> this builds the needs and needed_by and + * -> or this builds the wants and wanted_by and + * + * This function is used to fillup the starting list with dependencies + * after a service has sucessfully been executed. + */ + +#include /* NULL */ +#include "svc.h" + +/* + * list: pointer to the list + * svc: pointer to data to the service + */ + +int dep_needs_wants_add(struct dep **list, struct listitem *svc, int type) +{ + struct dep *tmp, *new, *end; + + if(type == DEP_NEEDS) { + end = svc->needed; + } else { + end = svc->wanted; + } + + /* Place to the first dependency of this service */ + tmp = end; + if(tmp != NULL) { + do { + /* Add service to the starter list, which + * - should be started once + * - should be respawned (both VIRGIN services!) + * - and which are not already in the list! + */ + if(((tmp->svc->status & ST_SH_ONCE) || + (tmp->svc->status & ST_SH_RESPAWN)) && + !(tmp->svc->status & ST_IN_LIST)) { + new = dep_create(tmp->svc); + if(!new) return 0; + tmp->svc->status |= ST_IN_LIST; + dep_entry_add(list,new); + } + /* FIXME: Clearify if we should go forward or backwards? + * this decision will influence starting order + * and may thereby add a minimal mount of speed enhancement + * + * As far as I can see it is not predictable, which way is + * better, because it heavily depends on the other services. + * + * If you know better, provide me with a patch ;-) + */ + tmp = tmp->next; + } while(tmp != end); + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/gen_halt_tree.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/gen_halt_tree.c new file mode 100644 index 00000000..1ff53921 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/gen_halt_tree.c @@ -0,0 +1,43 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * This function reads the full service tree and generates + * a list of services to begin shutdown (those that are not + * wanted or needed by any other service). + */ + +#include /* NULL */ +#include "svc.h" /* structs */ +#include "cinit.h" /* structs */ + +struct dep *gen_halt_list(struct listitem *svc_tree) +{ + struct dep *list = NULL, *new = NULL; + struct listitem *tmp; + + /* no tree? nothing to shutdown. */ + if(!svc_tree) { + return NULL; + } + + /* find all services that do not depend on other services: + * - empty wants? (currently ignore them) + * - empty needs! + */ + tmp = svc_tree; + do { + if(tmp->needs == NULL) { + /* create new dependency */ + new = dep_create(tmp); + if(!new) return NULL; + + dep_entry_add(&list,new); + } + tmp = tmp->next; + } while(tmp != svc_tree); + + return list; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/gen_svc_tree.c new file mode 100644 index 00000000..65f4028f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/gen_svc_tree.c @@ -0,0 +1,40 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Pre calculate the service tree + */ + +#include +#include "cinit.h" +#include "svc.h" + +struct listitem *gen_svc_tree(char *svc) +{ + struct listitem *li; + struct dep *deps; + + /* only do something if the service is not already known */ + if((li=list_search(svc))) return li; + + /* create a template, so other instances won't try to recreate us */ + if(!(li=svc_create(svc))) return NULL; + + if(!check_add_deps(li,DEP_NEEDS)) return NULL; + if(!check_add_deps(li,DEP_WANTS)) return NULL; + + /* no dependencies? then you are a start service */ + if(!li->wants && !li->needs) { + deps = dep_create(li); + if(!deps) return NULL; + dep_entry_add(&svc_init,deps); + + /* Mark it as being in the startup list, so it does not + * get added again in a dep_needs_wants_add call */ + li->status |= ST_IN_LIST; + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_delete.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_delete.c new file mode 100644 index 00000000..5a742fe9 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_delete.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* free */ +#include "cinit.h" /* list_search */ +#include "svc.h" /* listitem */ + +/* ... */ +int list_delete(char *path) +{ + struct listitem *tmp; + + tmp = list_search(path); + + if(tmp == NULL) { + return 0; + } + + tmp->next->prev = tmp->prev; + tmp->prev->next = tmp->next; + + free(tmp->abs_path); + free(tmp); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_display_all.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_display_all.c new file mode 100644 index 00000000..12adff80 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_display_all.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Show all list elements - mainly for debugging + */ + +#include /* NULL */ +#include "cinit.h" +#include "svc.h" + +int list_display_all() +{ + struct listitem *tmp; + + if(svc_list == NULL) { + return 0; + } else { + tmp = svc_list; + } + + do { + mini_printf("Service: ",1); + mini_printf(tmp->abs_path,1); + mini_printf("\n",1); + tmp = tmp->prev; + } while(tmp != svc_list); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_insert.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_insert.c new file mode 100644 index 00000000..a0ad6f2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_insert.c @@ -0,0 +1,42 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* malloc */ +#include /* bzero / memset */ +#include "svc.h" /* the list pointer */ + +struct listitem *list_insert(char *path, int status) +{ + struct listitem *tmp; + + tmp = malloc(sizeof(struct listitem)); + if(tmp == NULL) return NULL; + memset(tmp, '\0', sizeof(struct listitem)); + + if(svc_list == NULL) { /* list is empty, we have to init it */ + svc_list = tmp; + svc_list->next = svc_list; + svc_list->prev = svc_list; + } else { /* list has members,add this one */ + tmp->next = svc_list; /* begin after the new element */ + tmp->prev = svc_list->prev; /* change to the ex-last */ + svc_list->prev->next = tmp; /* change last element */ + svc_list->prev = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc(strlen(path) + 1); + if(tmp->abs_path == NULL) return NULL; + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return tmp; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_modify.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_modify.c new file mode 100644 index 00000000..73891117 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_modify.c @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED. Not in use anymore. + * + * part of cLinux/cinit + * + * List handling + */ + +#include +#include +#include "cinit.h" +#include "comm.h" /* for ST_OFF */ +#include "svc.h" /* for ST_OFF */ + +/* change pid and status of a process */ +int list_modify(char *path, int new_status, pid_t new_pid) +{ + struct listitem *tmp; + + tmp = list_search(path); + if(tmp == NULL) { + return 0; + } + + /* delete objects, which are killed */ + if(new_status == ST_OFF) { + return list_delete(path); + } else { + tmp->status = new_status; + tmp->pid = new_pid; + } + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_search.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_search.c new file mode 100644 index 00000000..b40fae23 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_search.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-linux-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling + */ + +#include /* NULL */ +#include /* strcmp */ +#include "cinit.h" +#include "svc.h" + +/* search for an entry by path, reverse: from end to the beginning */ +struct listitem *list_search(char *path) +{ + struct listitem *tmp; + + if(svc_list == NULL) { /* think positive */ + return NULL; + } else { + tmp = svc_list; + } + + do { + if(!strcmp(path, tmp->abs_path)) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_search_pid.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_search_pid.c new file mode 100644 index 00000000..f8731bec --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/list_search_pid.c @@ -0,0 +1,33 @@ +/*********************************************************************** + * + * (c) 2005 Marcus Przyklink (downhill-clinux (at) burningchaos.org) + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * List handling: Search by pid + */ + +#include /* NULL */ +#include /* pid_t */ +#include "svc.h" /* struct listitem */ + +struct listitem *list_search_pid(pid_t pid) +{ + struct listitem *tmp; + + if(svc_list == NULL) { + return NULL; + } else { + tmp = svc_list; + } + + do { + if(pid == tmp->pid) { + return tmp; + } + tmp = tmp->prev; + } while(tmp != svc_list); + + return NULL; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/shutdown_services.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/shutdown_services.c new file mode 100644 index 00000000..3432c8ac --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/shutdown_services.c @@ -0,0 +1,32 @@ +/*********************************************************************** + * + * 2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Shutdown all services: This is more or less the negative + * version of 'tree_exec()' + */ + +#include "svc.h" /* struct */ +void shutdown_services(struct listitem *svc) +{ + while(0) { + svc++; + } + /* stop services in the correct order: + * - begin at a random process, and walk the tree up to the wanted_by and needed_by + * - switch to next service, as soon as this tree is finished + */ + +// while(we_are_wanted_or_needed) { +// shutdown_services(next_wants_or_needs_us); +// } + +// shutdown_services(svc) + + /* begin at svc, iterate until a service without dependencies is found, + * continue stopping through wanted-by / needed-by / wants / needs */ + + return; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_add_needs.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_add_needs.c new file mode 100644 index 00000000..325e61a1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_add_needs.c @@ -0,0 +1,67 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED! + * + * part of cLinux/cinit + * + * List handling + */ + +#include "cinit.h" +#include "messages.h" + +int svc_add_needs(char *needs, char *is_needed) +{ + struct listitem *svc_needs, *svc_is_needed; + + + /* retrieve service entries in global service list */ + svc_needs = svc_is_needed = NULL; + svc_needs = list_search(needs); + svc_is_needed = list_search(is_needed); + + /* and exit if one is missing */ + if( !svc_needs || !svc_is_needed ) { + return 0; + } + + /* first add needs */ + + /* now add needed_by */ + + malloc... /* for adding */ + + if(svc->needs == NULL) { + svc->needs = neu; + } else { + svc->next = neu; + } + + /* write generic function for dependencies or even all lists */ + dep_entry_add(list_pointer,new_entry); + + if( list == NULL ) { /* list is empty, we have to init it */ + list = tmp; + list->after = list; + list->before = list; + } else { /* list has members,add this one */ + tmp->after = list; /* begin after the new element */ + tmp->before = list->before; /* change to the ex-last */ + list->before->after = tmp; /* change last element */ + list->before = tmp; /* first refers to previous now */ + } + + tmp->abs_path = malloc( strlen(path) + 1); + if( tmp->abs_path == NULL ) { + LOG(MSG_ERR_ALLOC); + return 0; + } + + strcpy(tmp->abs_path,path); + tmp->status = status; + tmp->pid = 0; + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_create.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_create.c new file mode 100644 index 00000000..b6d4a415 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_create.c @@ -0,0 +1,49 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* strcpy */ +#include /* stat */ +#include /* stat */ +#include /* PATH_MAX */ +#include /* errno */ +#include "svc.h" /* listitem */ +#include "cinit.h" /* path_append */ + +/* checking for existence is done before! */ +/* FIXME: check heedars for conformance with POSIX */ +struct listitem *svc_create(char *svc) +{ + char buf[PATH_MAX+1]; + struct stat statbuf; + struct listitem *li; + + li = list_insert(svc,-1); + if(!li) return NULL; + + /* FIXME: add two path length checks? svc and svc+strlen(C_RESPAWN)? */ + strcpy(buf,svc); + if(!path_append(buf,C_RESPAWN)) return NULL; + + if(stat(buf,&statbuf) == -1) { + if(errno == ENOENT) { + svc_set_status(li,ST_SH_ONCE); + } else { + return NULL; + } + } else { + /* FIXME remove debug */ + mini_printf("respawn: ",1); + mini_printf(li->abs_path,1); + mini_printf("\n",1); + svc_set_status(li,ST_SH_RESPAWN); + } + + return li; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_fail.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_fail.c new file mode 100644 index 00000000..7c150c85 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_fail.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Mark the service as being failed + */ + +#include "svc.h" + +void svc_fail(struct listitem *li) +{ + if(li->status & ST_ONCE_RUN) + li->status = ST_ONCE_FAIL; + else { + /* FIXME: do something senseful, record time of dead? */ + li->status = ST_RESPAWNING; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_needs_status.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_needs_status.c new file mode 100644 index 00000000..ccf4cb8f --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_needs_status.c @@ -0,0 +1,38 @@ +/*********************************************************************** + * + * 2005-2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return status of the needs of this service + */ + +#include /* NULL */ +#include "svc.h" /* service information */ + +// DEBUG #include "cinit.h" /* service information */ + +int svc_needs_status(struct listitem *svc) +{ + int retval = SNS_NEEDS_STARTED; + struct dep *deps = svc->needs; + + if(deps == NULL) return SNS_NEEDS_STARTED; /* no needs, everything fine */ + + do { + /* worst case: need failed */ + if((deps->svc->status & ST_NEED_FAILD) || + (deps->svc->status & ST_ONCE_FAIL)) { + retval = SNS_NEEDS_FAILED; + break; + } + /* services are being started */ + if((deps->svc->status & ST_SH_ONCE) || + (deps->svc->status & ST_SH_RESPAWN)) { + retval = SNS_NEEDS_UNFINISHED; + } + deps = deps->next; + } while(deps != svc->needs); + + return retval; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_report_status.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_report_status.c new file mode 100644 index 00000000..4cc1edf8 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_report_status.c @@ -0,0 +1,25 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Tell the world what happened to the service + */ + +#include "cinit.h" /* mini_printf */ +#include "messages.h" /* MSG_INTRO_SVC */ + +void svc_report_status(char *svc, char *msg, char *err) +{ + mini_printf(MSG_INTRO_SVC,1); + mini_printf(svc,1); + mini_printf(": ",1); + mini_printf(msg,1); + if(err) { + mini_printf(" (",1); + mini_printf(err,1); + mini_printf(")",1); + } + mini_printf("\n",1); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_respawn_check.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_respawn_check.c new file mode 100644 index 00000000..e1802894 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_respawn_check.c @@ -0,0 +1,23 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * OBSOLETED? not in use. + * + * part of cLinux/cinit + * + * Check whether service is existent + */ + +#include /* NULL */ +#include /* PATH_MAX */ +#include "svc.h" + +/* checking for existence is done before! */ +int svc_respawn_check(struct listitem *svc) +{ + char buf[PATH_MAX+1]; + + strcpy(buf,svc->abs_path); + if(!path_append(buf,C_RESPAWN)) return 0 +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_set_status.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_set_status.c new file mode 100644 index 00000000..73d5da91 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_set_status.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2005-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_set_status(struct listitem *li, int status) +{ + return (li->status = status); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_should_respawn.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_should_respawn.c new file mode 100644 index 00000000..04acfe1d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_should_respawn.c @@ -0,0 +1,16 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Return whether should respawn or not + */ + +#include "svc.h" + +/* checking for existence is done before! */ +int svc_should_respawn(struct listitem *li) +{ + return (li->status & ST_SH_RESPAWN); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_start.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_start.c new file mode 100644 index 00000000..1e4f25f3 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_start.c @@ -0,0 +1,93 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start a service + */ + +#include /* NULL */ +#include /* fork */ +#include /* strerror */ +#include /* errno */ +#include /* PATH_MAX */ +#include /* nanosleep() */ +//#include /* gettimeofday() */ + +#include "svc.h" /* struct * */ +#include "messages.h" /* MSG_* */ +#include "cinit.h" /* execute_sth */ + +//void svc_start(struct listitem *li, int strict) +void svc_start(struct listitem *li, int delay) +{ + char buf[PATH_MAX+1]; + struct timespec ts; + + /* FIXME: All cleanup must go here + * close(fds); + * reset signals + * reset env? + * + * FIXME: Add logging possibility to here + * open (0,1,2) to other processes, if specified */ + mini_printf("VORM Fork()\n",1); + li->pid = fork(); + + /********************** Error ************************/ + if(li->pid < 0) { + svc_report_status(li->abs_path,MSG_SVC_FORK,strerror(errno)); + svc_set_status(li,ST_BAD_ERR); + return; + } + /********************** parent ************************/ + if(li->pid > 0) { + mini_printf("ELTERN\n",1); + /* set start time */ + li->start = time(NULL); + + if(li->status & ST_SH_ONCE) + li->status = ST_ONCE_RUN; + else + li->status = ST_RESPAWNING; + return; + } + + /********************** Client / fork() ************************/ + /* sleep, if necesseray */ + printf("Delay: %d\n", delay); + if(delay) { + ts.tv_sec = delay; + ts.tv_nsec = 0; + + /* FIXME: also report value; int2char */ + svc_report_status(li->abs_path,MSG_SVC_SLEEP,NULL); + + /* do not need to check for errors, because we can continue anyway */ + nanosleep(&ts,NULL); + } + svc_report_status(li->abs_path,MSG_SVC_START,NULL); + + /* length check is done by path_append */ + strcpy(buf,li->abs_path); + if(!path_append(buf,C_ON)) return; + + /* Check for existence */ + li->status = file_exists(buf); + + if(li->status == FE_NOT) { + _exit(0); /* nothing there? fine! */ + } + + if(li->status == FE_FILE) { + /* FIXME: reset signals: Is this necessary? Or does fork clean it anyway? */ + set_signals(ACT_CLIENT); + + /* and now, fire it up */ + execute_sth(buf); + } else { + /* either no file or an error */ + _exit(1); + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_success.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_success.c new file mode 100644 index 00000000..dc4057e0 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/svc_success.c @@ -0,0 +1,24 @@ +/*********************************************************************** + * + * 2006-2007 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Set the status of a service + */ + +#include /* NULL */ + +#include "svc.h" /* listitem, svc_report_status */ +#include "messages.h" /* messages */ + +void svc_success(struct listitem *li) +{ + if(li->status & ST_ONCE_RUN) { + svc_report_status(li->abs_path,MSG_SVC_OK_ONCE,NULL); + li->status = ST_ONCE_OK; + } else { + svc_report_status(li->abs_path,MSG_SVC_OK_RESPAWN,NULL); + li->status = ST_RESPAWNING; + } +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/svc/tree_exec.c b/software/cinit/browse_source/cinit-0.3pre9/src/svc/tree_exec.c new file mode 100644 index 00000000..30ab5a2d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/svc/tree_exec.c @@ -0,0 +1,66 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * Start the service tree we created + */ + +#include /* NULL */ +#include "cinit.h" /* mini_printf */ +#include "svc.h" /* svc_init */ +#include "messages.h" /* messages */ + +/* some thoughts... + * + * - we already generated the tree, we now need to start it from + * the ends + * + * - after starting the first service we have to care about SIG_CHILD + * to record changes + * + * - we execute all services in parallel without problems, because of + * SIG_CHILD notification + * + * - After successfully starting the service we start the services that + * need or want that service + */ +int tree_exec(struct dep *start) +{ + struct dep *tmp = start; + + mini_printf(MSG_TREE_EXEC,1); + + /* the main starting loop: All services in this list should be + * started, but it is possible that dependent services are in the + * list. In this case simply skip the current service + */ + do { + switch(svc_needs_status(tmp->svc)) { + case SNS_NEEDS_STARTED: + svc_report_status(tmp->svc->abs_path,"Needs sind durch",NULL); + /* execute service, add dependencies, remowe from list */ + svc_start(tmp->svc,0); + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_NEEDS)) return 0; + if(!dep_needs_wants_add(&tmp,tmp->svc,DEP_WANTS)) return 0; + tmp = dep_entry_del(tmp); + break; + + case SNS_NEEDS_FAILED: + /* mark service as NEED_FAILD and delete from list */ + svc_report_status(tmp->svc->abs_path,MSG_SVC_NEED_FAIL,NULL); + svc_set_status(tmp->svc,ST_NEED_FAILD); + tmp = dep_entry_del(tmp); + break; + + case SNS_NEEDS_UNFINISHED: + svc_report_status(tmp->svc->abs_path,"Needs am abarbeiten",NULL); + /* continue with the next item */ + tmp = tmp->next; + break; + } + } while(tmp != NULL); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/test/test-newline.c b/software/cinit/browse_source/cinit-0.3pre9/src/test/test-newline.c new file mode 100644 index 00000000..95e03a36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/test/test-newline.c @@ -0,0 +1,29 @@ +#include +#include +#include +#include + +char *strip_final_newline(char *test1); + +int main() +{ + //char *test1 = "zeile1\nzeile2\n"; + //char *test2 = "zeile1\nzeile2\nzeile3"; + char *test1; + char *test2; + + test1 = malloc(50); + test2 = malloc(50); + + strcpy(test1,"zeile1\nzeile2\n"); + strcpy(test2,"zeile1\nzeile2\nzeile3"); + + char *result; + result = strip_final_newline(test1); + printf("A%sA\n",result); + + result = strip_final_newline(test2); + printf("B%sB\n",result); + + return 0; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/test/test_build_argv+link.c b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_build_argv+link.c new file mode 100644 index 00000000..f74b4f36 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_build_argv+link.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec_link"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/test/test_build_argv.c b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_build_argv.c new file mode 100644 index 00000000..3938aa0d --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_build_argv.c @@ -0,0 +1,35 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test build_argv + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + char *file = "./test_exec"; + struct ba_argv cargv; + int tmp; + + if( ( tmp = cinit_build_argv(file,&cargv) ) != BA_OK) { + if(tmp != BA_E_MEM) { + perror("fehler:"); + exit(24); + } else exit(23); + } + + printf("code: %s\n", cargv.argv[0]); + execve((cargv.argv)[0],cargv.argv,cargv.envp); + + perror("execve"); + + return 1; +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec new file mode 100644 index 00000000..e5cf3f01 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec @@ -0,0 +1,7 @@ +#!/bin/sh +# Nico Schottelius +# Test-skript for cinit + +echo '$0': "$0" +echo '$@': "$@" +echo 'cinit_is_great:' $cinit_is_great diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec.env b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec.env new file mode 100644 index 00000000..853e0663 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec.env @@ -0,0 +1 @@ +cinit_is_great=yes diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec.params b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec.params new file mode 100644 index 00000000..afe0f2ef --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec.params @@ -0,0 +1 @@ +Let's see if we read the arguments....YES! diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec_link b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec_link new file mode 120000 index 00000000..c2ec9306 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec_link @@ -0,0 +1 @@ +test_exec \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec_link.env b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec_link.env new file mode 120000 index 00000000..30ea4990 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec_link.env @@ -0,0 +1 @@ +test_exec.env \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec_link.params b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec_link.params new file mode 120000 index 00000000..0b77c256 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_exec_link.params @@ -0,0 +1 @@ +test_exec.params \ No newline at end of file diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/test/test_gen_svc_tree.c b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_gen_svc_tree.c new file mode 100644 index 00000000..c13c46b1 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_gen_svc_tree.c @@ -0,0 +1,20 @@ +/*********************************************************************** + * + * 2006 Nico Schottelius (nico-cinit at schottelius.org) + * + * part of cLinux/cinit + * + * test gen_svc_tree + */ + +#include +#include +#include + +#include "build_argv.h" + +int main() +{ + gen_svc_tree("/etc/cinit/svc/init"); + list_display_all(); +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/src/test/test_openreadclose.c b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_openreadclose.c new file mode 100644 index 00000000..2f722da5 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/src/test/test_openreadclose.c @@ -0,0 +1,16 @@ +#include + +int openreadclose(char *filename, char **where); + +int main() +{ + char *data; + char *file = "test_openreadclose.c"; + + openreadclose(file,&data); + + printf("%s\n",data); + + return 1; + +} diff --git a/software/cinit/browse_source/cinit-0.3pre9/util/README b/software/cinit/browse_source/cinit-0.3pre9/util/README new file mode 100644 index 00000000..f66e0ddb --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/util/README @@ -0,0 +1,4 @@ +-- OBSOLETED -- + -> This code is not in use in cinit-0.3 anymore! +util/ + External programs, which work with cinit diff --git a/software/cinit/browse_source/cinit-0.3pre9/util/ccontrol.c b/software/cinit/browse_source/cinit-0.3pre9/util/ccontrol.c new file mode 100644 index 00000000..95bc5212 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/util/ccontrol.c @@ -0,0 +1,94 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * ccontrol: control cinit + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit + */ + +#define USAGE_TEXT "ccontrol - control cinit\n\n" \ + "Usage:\n\nccontrol -[phurs]\n" \ + "\t-p\t- (power off) Power off the system\n" \ + "\t-h\t- (halt) Halt the system \n" \ + "\t-u\t- (update) Reboot (warm) and update cinit\n" \ + "\t-r\t- (reboot) Reboot the system\n" \ + "\t-s\t- (single user/rescue) Rescue mode\n\n" \ + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * ccontrol: control cinit + */ +int main(int argc, char **argv) +{ + /* argv */ + if(argc != 2) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + + switch(argv[1][1]) { + case 'p': /* power off */ + LOG(MSG_POWER_OFF); + msg_reboot(CMD_POWEROFF); + break; + + case 'h': /* halt */ + LOG(MSG_HALT); + msg_reboot(CMD_HALT); + break; + + case 'r': /* reboot */ + LOG(MSG_REBOOT); + msg_reboot(CMD_REBOOT); + break; + + case 's': /* rescue */ + LOG(MSG_RESCUE); + msg_reboot(CMD_RESCUE); + break; + + case 'u': /* update */ + LOG(MSG_UPDATE); + msg_reboot(CMD_UPDATE); + break; + + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* cinit-0.2 return codes implemented - nothing changed*/ diff --git a/software/cinit/browse_source/cinit-0.3pre9/util/cservice.c b/software/cinit/browse_source/cinit-0.3pre9/util/cservice.c new file mode 100644 index 00000000..66be6563 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/util/cservice.c @@ -0,0 +1,164 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux-cinit at schottelius.org) + * cservice: control cinit services + * part of cLinux/cinit + */ + +/* *stat() */ +#include +#include + +/* open */ +#include + +/* signal */ +#include + +/* PATH_MAX */ +#include + +/* str* */ +#include + +/* sockets */ +#include +#include +#include + +#include +#include +#include + +#include "cinit.h" + +/* global variable */ +struct listitem *list; +int sock; +pid_t cpid; + +/*********************************************************************** + * cservice - control cinit services + */ + +#define USAGE_TEXT "cservice - start and stop cinit services\n\n" \ + "cservice -[ear] \n" \ + "\t-e\t- (ein,on ) start a service (respawn if respawning is set)\n" \ + "\t-a\t- (aus,off) stop a respawing service\n" \ + "\t-r\t- (restart) stop and start a service\n" + +/*********************************************************************** + * fuzzy_path: allow other kinds of path specification .. + */ +char *fuzzy_path(char *rpath) +{ + char pathtmp[PATH_MAX]; + char *re = NULL; + + /* change to rpath */ + if(chdir(rpath) == -1) { + perror(rpath); + return NULL; + } + + /* get absolute name of rpath */ + if(! (int) getcwd(pathtmp,PATH_MAX)) { + perror(rpath); + return NULL; + } + + re = malloc( strlen(pathtmp) + 1); + + if(re != NULL) { + strcpy(re,pathtmp); + } + + return re; +} + +#define C_USAGE(error) usage(USAGE_TEXT,error) + +/*********************************************************************** + * cservice: the main part for controlling cinit from outside + */ +int main(int argc, char **argv) +{ + char *real_name = NULL; + + /* argv */ + if(argc != 3) C_USAGE(MSG_ERR_LESS_ARGS); + if(argv[1][0] != '-') C_USAGE(MSG_ERR_BAD_ARGS); + if(strlen(argv[1]) != 2) C_USAGE(MSG_ERR_ARGS_LEN); + + real_name = fuzzy_path(argv[2]); + + /* fuzzy path failed, exit! */ + if(real_name == NULL) { + return 1; + } + switch(argv[1][1]) { + case 'a': /* aus */ + case 'r': /* restart */ + switch( msg_svc_on_off(real_name,CMD_STOP_SVC) ) { + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_OFF: + SERVICE_LOG(real_name,LOG_SVC_STOPED); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + /* FIX THIS AFTER cinit-0.2 */ + case RT_TMPNOW: + case RT_ERR: + case RT_SVC_FAILED: + case RT_UNSPEC: + case RT_SUCCESS: + case ST_NEED_FAIL: + case ST_TMP: + case ST_ONCE: + case RT_NOTEXIST: + case ST_RESPAWN: +// SERVICE_LOG(real_name,"Ein bekanntest ding"); + break; +/* default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; */ + } + if( argv[1][1] == 'a') break; /* only continue if restarting */ + + case 'e': /* ein */ + switch (run_svc(real_name)) { /* run_svc fuzzys itself */ + case RT_NOTEXIST: + SERVICE_LOG(real_name,LOG_SVC_NOTEXIST); + break; + case RT_SVC_FAILED: + SERVICE_LOG(real_name,LOG_SVC_FAILED); + break; + case ST_FAIL: + SERVICE_LOG(real_name,LOG_SVC_FAIL); + break; + case ST_ONCE: + SERVICE_LOG(real_name,LOG_SVC_ONCE); + break; + case RT_ERR_COMM: + SERVICE_LOG(real_name,MSG_ERR_COMM); + break; + case ST_RESPAWN: + SERVICE_LOG(real_name,LOG_SVC_RESPAWN); + break; + case ST_NEED_FAIL: + SERVICE_LOG(real_name,LOG_NEED_FAIL); + break; + default: + SERVICE_LOG(real_name,MSG_SHOULD_NOT_HAPPEN); + break; + } + break; + default: + C_USAGE(MSG_ERR_BAD_ARGS); + break; + } + return 0; +} +/* uses cinit-0.2 return code style */ diff --git a/software/cinit/browse_source/cinit-0.3pre9/util/msg_reboot.c b/software/cinit/browse_source/cinit-0.3pre9/util/msg_reboot.c new file mode 100644 index 00000000..efe78ec6 --- /dev/null +++ b/software/cinit/browse_source/cinit-0.3pre9/util/msg_reboot.c @@ -0,0 +1,21 @@ +/* + * (c) 2005 Nico Schottelius (nico-linux at schottelius.org) + * reboot/halt/poweroff/rescue + * part of cinit + */ + +#include +#include +#include +#include + +#include "cinit.h" + +/* we trust the caller */ +int msg_reboot(char cmd) +{ + if(!begin_msg(cmd)) return 0; + close(sock); + return 1; +} +/* clean for cinit-0.2 */ diff --git a/software/cinit/browse_source/current b/software/cinit/browse_source/current new file mode 120000 index 00000000..da556b65 --- /dev/null +++ b/software/cinit/browse_source/current @@ -0,0 +1 @@ +cinit-0.3pre14 \ No newline at end of file diff --git a/software/cinit/cat.html b/software/cinit/cat.html new file mode 100644 index 00000000..8cac31b4 --- /dev/null +++ b/software/cinit/cat.html @@ -0,0 +1,30 @@ + + + +unix.schottelius.org + + + +

Nico Schottelius +
unix.schottelius.org +
cinit

+
+

cinit

+

closed assigned tasks

+
+
    +
  1. Writing the tool "cinit.graph.text" which draws + a dependency tree in ASCII and/or UTF-8. +
    It should print the service dependency hierarchy: At the + top should be /etc/cinit/init (or if given on command line: The starting + profile [cprofile=home]) and then below it should be printed the pyramide + of dependency. +
    (thanks to Marcus Przykling!) +
  2. Writing the tool "cinit.graph.xml" which visualizes dependency + tree in XHTML or XML. +
    The same function as above. Command line switches should be something + like -t and --type xhtml or xml. +
    (thanks to René Nussbaumer!) +
+ + diff --git a/software/cinit/documentation.html b/software/cinit/documentation.html new file mode 100644 index 00000000..772ef247 --- /dev/null +++ b/software/cinit/documentation.html @@ -0,0 +1,25 @@ + + + +unix.schottelius.org + + + +

Nico Schottelius +
unix.schottelius.org +
cinit

+
+

Documentation

+

+

    +
  • The documentation is currently being rewritten for cinit-0.3. +
  • The current documentation of the latest release can be found + here. +
  • Expect nice HTML and plain text documentation written in asciidoc format + to be shipped with cinit-0.3. +
    The old documentation is included in the package (see doc/*). +
  • There is now also a speech (in German) + available.

    +
+ + diff --git a/software/cinit/get.html b/software/cinit/get.html new file mode 100644 index 00000000..6adbaa46 --- /dev/null +++ b/software/cinit/get.html @@ -0,0 +1,27 @@ + + + +unix.schottelius.org + + + +

Nico Schottelius +
unix.schottelius.org +
cinit

+
+

Get cinit

+
    +
  • The recommend way is to use the +latest source tarball. +
  • If you want the latest development version, get it via +git repository (project name is "cLinux/cinit.git"). +
      +
    • cg-clone http://unix.schottelius.org/git/cLinux/cinit.git +
    +
  • A (currently outdated) Debian package for x86 is also + available. +
  • Gentoo has cinit in its portage, use emerge cinit. +
+ + + diff --git a/software/cinit/indexold.html b/software/cinit/indexold.html new file mode 100644 index 00000000..f982a132 --- /dev/null +++ b/software/cinit/indexold.html @@ -0,0 +1,73 @@ + + + +unix.schottelius.org + + + +

Nico Schottelius +
unix.schottelius.org

+
+

cinit

+ +

cinit is a fast, small and simple init with support for profiles. +


+
    +
  • cinit minds dependencies (hard and soft, 'needs' and 'wants') + and executes processes in parallel. +
  • It has a simple configuration + (cconfig style) +
  • It makes many shell-scripts unecessary + (but you still could use them if you really want). +
+
+ +

+Archives and source +
Documentation +
Get cinit +
Open unassigned tasks +
Support +
Links to other cinit related pages +

+ +

News

+ + + + diff --git a/software/cinit/links.html b/software/cinit/links.html new file mode 100644 index 00000000..a884d3fe --- /dev/null +++ b/software/cinit/links.html @@ -0,0 +1,29 @@ + + + +unix.schottelius.org + + + +

Nico Schottelius +
unix.schottelius.org +
cinit

+
+

Links

+

Other init systems

+ +

Sites reporting about cinit

+ + + diff --git a/software/cinit/misc/ps-axuwwwf-scice b/software/cinit/misc/ps-axuwwwf-scice new file mode 100644 index 00000000..cff178df --- /dev/null +++ b/software/cinit/misc/ps-axuwwwf-scice @@ -0,0 +1,49 @@ +USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND +root 1 0.3 0.0 564 116 ? S 02:50 0:02 /sbin/cinit +root 2 0.0 0.0 0 0 ? SN 02:50 0:00 [ksoftirqd/0] +root 3 0.1 0.0 0 0 ? S< 02:50 0:01 [events/0] +root 4 0.0 0.0 0 0 ? S< 02:50 0:00 \_ [khelper] +root 5 0.0 0.0 0 0 ? S< 02:50 0:00 \_ [kacpid] +root 32 0.0 0.0 0 0 ? S< 02:50 0:00 \_ [kblockd/0] +root 42 0.0 0.0 0 0 ? S 02:50 0:00 \_ [pdflush] +root 43 0.0 0.0 0 0 ? S 02:50 0:00 \_ [pdflush] +root 45 0.0 0.0 0 0 ? S< 02:50 0:00 \_ [aio/0] +root 5312 0.0 0.0 0 0 ? S< 02:57 0:00 \_ [reiserfs/0] +root 44 0.0 0.0 0 0 ? S 02:50 0:00 [kswapd0] +root 295 0.0 0.0 0 0 ? S 02:50 0:00 [kjournald] +root 5163 0.0 0.0 584 148 ? S 02:55 0:00 /sbin/cinit +root 5164 0.0 0.0 596 164 ? S 02:55 0:00 \_ /sbin/cinit +root 5250 0.0 0.1 1756 716 ? S 02:57 0:00 \_ /usr/sbin/cron -f +root 5176 0.0 0.0 600 164 ? S 02:55 0:00 /sbin/cinit +root 5177 0.0 0.2 1840 812 ? S 02:55 0:00 \_ /sbin/syslog-ng -F +root 5200 0.0 0.0 600 168 ? S 02:55 0:00 /sbin/cinit +root 5201 0.0 0.4 3468 1504 ? S 02:55 0:00 \_ /usr/sbin/sshd -D +root 5220 0.0 0.0 600 164 ? S 02:57 0:00 /sbin/cinit +root 5238 0.0 0.1 1500 488 tty2 Ss+ 02:57 0:00 \_ /sbin/getty 38400 tty2 linux +root 5222 0.0 0.0 600 164 ? S 02:57 0:00 /sbin/cinit +root 5223 0.0 0.1 1500 488 tty3 Ss+ 02:57 0:00 \_ /sbin/getty 38400 tty3 linux +root 5226 0.0 0.0 600 164 ? S 02:57 0:00 /sbin/cinit +root 5227 0.0 0.1 1500 488 tty5 Ss+ 02:57 0:00 \_ /sbin/getty 38400 tty5 linux +root 5230 0.0 0.0 600 164 ? S 02:57 0:00 /sbin/cinit +root 5231 0.0 0.1 1500 488 tty6 Ss+ 02:57 0:00 \_ /sbin/getty 38400 tty6 linux +root 5234 0.0 0.0 600 164 ? S 02:57 0:00 /sbin/cinit +root 5235 0.0 0.1 1500 488 tty7 Ss+ 02:57 0:00 \_ /sbin/getty 38400 tty7 linux +root 5240 0.0 0.0 600 164 ? S 02:57 0:00 /sbin/cinit +root 5241 0.0 0.1 1500 488 tty4 Ss+ 02:57 0:00 \_ /sbin/getty 38400 tty4 linux +root 5326 0.0 0.0 600 168 ? S 02:57 0:00 /sbin/cinit +root 5327 0.1 0.6 8920 2328 ? S 02:57 0:00 \_ /usr/bin/gdm -nodaemon +root 5445 0.1 0.7 9268 2780 ? S 02:57 0:00 \_ /usr/bin/gdm -nodaemon +root 5663 6.1 2.5 29140 9492 ? S 02:57 0:10 \_ /usr/X11R6/bin/X :0 -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt8 +nico 5987 1.5 0.8 4716 3040 ? Ss 02:58 0:02 \_ /usr/bin/ion3 +nico 6054 0.0 0.2 2988 932 ? Ss 02:58 0:00 \_ /usr/bin/ssh-agent /usr/bin/ion3 +nico 6061 0.0 0.0 0 0 ? Z 02:58 0:00 \_ [ion-completefil] +nico 6062 0.2 0.2 1892 796 ? S 02:58 0:00 \_ /usr/lib/ion3/ion-statusd -c /home/nico/.ion3/default-session--0/cfg_statusd.lua -M date -M load -M mail +nico 6064 0.8 0.4 3596 1840 ? S 02:58 0:01 \_ x-terminal-emulator +nico 6065 0.4 0.4 3432 1684 pts/0 Ss 02:58 0:00 | \_ zsh +nico 6282 0.0 0.2 2488 832 pts/0 R+ 03:00 0:00 | \_ ps axuwwwf +nico 6277 0.7 0.4 3596 1796 ? S 02:59 0:00 \_ x-terminal-emulator -T ssh creme.schottelius.org -e /usr/share/ion3/ion-runinxterm -phase2 ssh creme.schottelius.org +nico 6278 0.0 0.3 2740 1248 pts/1 Ss+ 02:59 0:00 \_ /bin/sh /usr/share/ion3/ion-runinxterm -phase2 ssh creme.schottelius.org +nico 6279 1.5 0.5 4136 1940 pts/1 S+ 02:59 0:01 \_ ssh creme.schottelius.org +root 5421 0.0 0.0 580 140 ? S 02:57 0:00 /sbin/cinit +root 6256 0.0 0.0 600 168 ? S 02:58 0:00 /sbin/cinit +root 6257 0.0 0.2 2380 912 ? S 02:58 0:00 \_ /sbin/dhclient -d eth0 diff --git a/software/cinit/monotone.html b/software/cinit/monotone.html new file mode 100644 index 00000000..0236e273 --- /dev/null +++ b/software/cinit/monotone.html @@ -0,0 +1,69 @@ + + + +unix.schottelius.org + + + +

Nico Schottelius +
unix.schottelius.org +
cinit +

+
+

cinit

+

using monotone

+

Monotone is a cvs +successor. You have to retrieve the collection "info.clinux.cinit" from +"monotone.schottelius.org" (not unix.schottelius.org anymore!). +You can get the public server key from +here. +


+ +

Monotone - get (aka "pull")

+

Here's a small manual howto get cinit via monotone: +

+
+# create a database
+scice% monotone --db=cinit.db db init 
+
+# get the server key
+scice% wget -q  http://unix.schottelius.org/gpm/server-key.pub 
+
+# read the server key
+scice% monotone --db=cinit.db read < server-key.pub
+monotone: read 1 packet
+
+# do an anonymous pull
+scice% monotone --key="" --db=cinit.db pull monotone.schottelius.org info.clinux.cinit
+monotone: warning: doing anonymous pull
+monotone: rebuilding merkle trees for collection info.clinux.cinit
+monotone: connecting to monotone.schottelius.org
+monotone: [bytes in: 722110] [bytes out: 7405] 
+monotone: exchanged goodbyes and flushed output on fd 7 (peer monotone.schottelius.org), disconnecting
+
+# extract source from the database to a directory
+scice% monotone --db=cinit.db --branch=info.clinux.cinit checkout your-destination-directory                                           
+monotone: fetching heads of branch 'info.clinux.cinit'
+
+

How to change files (aka "push")

+

I assume you've got a database initialised (see above). +

+# generate a key pair
+scice% monotone -db=cinit.db genkey you@example.com
+monotone: generating key-pair 'you@example.com'
+Enter password: 
+Confirm password: 
+monotone: storing key-pair 'you@example.com' in database
+
+# extract the key from the database
+scice% monotone --db=cinit.db pubkey you@example.com > you@example.com.pubkey
+
+Now send the key to me, so I can add it to the monotone server on +monotone.schottelius.org. +Note: This is only for people, who want to contribute to cinit, +you'll not need to do this, if you only want to get the sources! + +

For more information visit monotone's homepage, it has excellent +documentation!

+ + diff --git a/software/cinit/oldnews.html b/software/cinit/oldnews.html new file mode 100644 index 00000000..fa01dddd --- /dev/null +++ b/software/cinit/oldnews.html @@ -0,0 +1,38 @@ + + + +unix.schottelius.org + + + +

Nico Schottelius +
unix.schottelius.org +
cinit

+
+

Old news

+ + + diff --git a/software/cinit/other.html b/software/cinit/other.html new file mode 100644 index 00000000..2e8bc7d5 --- /dev/null +++ b/software/cinit/other.html @@ -0,0 +1,25 @@ + + + +unix.schottelius.org + + + +

Nico Schottelius +
unix.schottelius.org +
cinit

+
+

Other init implementations

+ + + diff --git a/software/cinit/out.html b/software/cinit/out.html new file mode 100644 index 00000000..77698fc1 --- /dev/null +++ b/software/cinit/out.html @@ -0,0 +1,72 @@ + + + +unix.schottelius.org + + + +

Nico Schottelius +
unix.schottelius.org +
cinit

+
+

Open unassigned Tasks

+These are tasks that should be done, but no one is working on them currently. +If you have some programming experience and want to take a task simply contact +me or somenone on #cLinux. +Those tasks, which are finished can be found on the +closed assigned tasks page. +
    +
  1. Writing the tool "cinit.graph.graphic" which visualizes the + dependency tree in a graphic. +
    It should print the service dependency hierarchy: At the + top should be the init directore (/etc/cinit/svc/init or if given on + command line: The starting profile [cprofile=home]) and then below it + should be printed the pyramide of dependency. +
    Output should be PNG and SVG. One should be able to switch between + PNG and SVG via command line (like -t and --type png or svg). +
  2. porting cinit - currently cinit is Linux specific: +
      +
    • The tempfs setting will most likely be Linux specfic (conf/*tmp*) + as the mount call is. +
    + One would have to change cinit +
      +
    • to use os-specific mount parameters / call and use the specfic + tempfs +
    + You are free to implement it and make a patch available, which +
      +
    • is either maintained outside of cinit (like the openssh guys do) +
    • or which incorporates cleanly into cinit (use conf/*, bin/* to + configure, try to avoid ugly #ifdefs) +
    + The main parts to change in cinit would be: +
      +
    • changing serv/cinit.c to allow different mount calls +
    • changing conf/*tmp* to fit to the unix you use +
    • or add a script to bin/, which sets conf/*tmp* depending on + the output of uname -s +
    +
  3. Writing a HOWTO install, configure and use cinit. + It should be understandable by people which never touched cinit + before. The format should be anything which can be read or + converted easily + (cconfig + variant or LaTeX for documentation?). + Or the howto should be written in the + wiki + (currently down, contact me in #cLinux, irc.freenode.org) +
  4. Preparing cinit-master-configuration, a clean configuration, which + may be used by a cinit-config program to extract a service to + the real configuration directory. Access should be done via + git or similar to allow different people to upload their configuration. +
  5. Programming cinit-config, a program, most likely a gui + (dialog based?), which helps people to configure cinit. Perhaps + using a/the master configuration and prompting the user to configure + a template and copy the result + needs to /etc/cinit then. +
  6. Programming convert tools, to convert other init systems + automatically to cinit (see + cinit-0.1/doc/merging.other.initsystems). +
+ + diff --git a/software/cinit/samples/cinit-0.3/denkbrett/README b/software/cinit/samples/cinit-0.3/denkbrett/README new file mode 100644 index 00000000..0b059353 --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/README @@ -0,0 +1,5 @@ +This directory contains configuration examples from +'denkbrett' which is Nico Schottelius' main notebook. + +It's a x86 Linux notebook, so x86 and Linux specific +services will be loaded (like acpid, udev). diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-1.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-1.tar.bz2 new file mode 100644 index 00000000..22889cc0 Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-1.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-1.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-1.tar.bz2.README new file mode 100644 index 00000000..e0582b25 --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-1.tar.bz2.README @@ -0,0 +1 @@ +shell running, getty missing diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-2.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-2.tar.bz2 new file mode 100644 index 00000000..bc129f72 Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-2.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-2.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-2.tar.bz2.README new file mode 100644 index 00000000..b5a39918 --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-2.tar.bz2.README @@ -0,0 +1,3 @@ +getty on tty2 running, but displays +"Unable to determine your tty name". +Possibly problem with empty /dev. diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-3.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-3.tar.bz2 new file mode 100644 index 00000000..2b1bc744 Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-3.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-3.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-3.tar.bz2.README new file mode 100644 index 00000000..9f87a662 --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-3.tar.bz2.README @@ -0,0 +1,2 @@ +Added fsck for root filesystem +and added (currently) unneeded /proc service. diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-4.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-4.tar.bz2 new file mode 100644 index 00000000..31a73e9a Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-4.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-4.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-4.tar.bz2.README new file mode 100644 index 00000000..3f43b0d9 --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-4.tar.bz2.README @@ -0,0 +1,2 @@ +Added needs /proc to getty/1 and 2. +Now we can login through getty! diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-5.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-5.tar.bz2 new file mode 100644 index 00000000..9a490a32 Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-5.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-5.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-5.tar.bz2.README new file mode 100644 index 00000000..cb778400 --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-5.tar.bz2.README @@ -0,0 +1,2 @@ +Added service "network/hostname" and added it as wants to +the gettys. diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-6.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-6.tar.bz2 new file mode 100644 index 00000000..42d30cdc Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-6.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-6.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-6.tar.bz2.README new file mode 100644 index 00000000..b1aac768 --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-6.tar.bz2.README @@ -0,0 +1,3 @@ +Added respawn to the rescue-shell and the gettys. +Also added TERM=linux so agetty can pass that to +the shell. diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-7.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-7.tar.bz2 new file mode 100644 index 00000000..9b75a07b Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-7.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-7.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-7.tar.bz2.README new file mode 100644 index 00000000..cdedced3 --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-7.tar.bz2.README @@ -0,0 +1,3 @@ +Added eth0 and a driver loader as well as added it +to the init list. If everything goes well, I'll have +dynamic network running after reboot :-) diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-8.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-8.tar.bz2 new file mode 100644 index 00000000..2a50bf51 Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-8.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-8.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-8.tar.bz2.README new file mode 100644 index 00000000..d54c9da3 --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070423-8.tar.bz2.README @@ -0,0 +1 @@ +Added luksopen and dm_crypt support. UNTESTED. diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070424-1.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070424-1.tar.bz2 new file mode 100644 index 00000000..4d53ad3c Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070424-1.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070424-1.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070424-1.tar.bz2.README new file mode 100644 index 00000000..6e166f28 --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070424-1.tar.bz2.README @@ -0,0 +1,2 @@ +Added acpid, removed luksopen currently from the dependency +list. diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070424-2.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070424-2.tar.bz2 new file mode 100644 index 00000000..7af7167f Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070424-2.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070424-2.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070424-2.tar.bz2.README new file mode 100644 index 00000000..b45f2595 --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070424-2.tar.bz2.README @@ -0,0 +1 @@ +Added support for the loopback device (network/loopback). diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070425-1.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070425-1.tar.bz2 new file mode 100644 index 00000000..907f4bf1 Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070425-1.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070425-1.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070425-1.tar.bz2.README new file mode 100644 index 00000000..0fa9cf4f --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070425-1.tar.bz2.README @@ -0,0 +1,3 @@ +Added two more getties: getty/3 and getty/4 and added +them to init/needs. And yes, this configuration is in +use on my production system :-) diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070503-01.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070503-01.tar.bz2 new file mode 100644 index 00000000..f91c0c58 Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070503-01.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070503-01.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070503-01.tar.bz2.README new file mode 100644 index 00000000..80b538b3 --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070503-01.tar.bz2.README @@ -0,0 +1,3 @@ +Added unicode_start/stop and made it wants for gettys. +Added the sys-v-init-udev-script to init/wants, I am currently +to lazy to reimplement the whole udev bunch. Anyone else? ;-) diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070503-02.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070503-02.tar.bz2 new file mode 100644 index 00000000..98454c86 Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070503-02.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070503-02.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070503-02.tar.bz2.README new file mode 100644 index 00000000..78e81d56 --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070503-02.tar.bz2.README @@ -0,0 +1 @@ +Sleep before kill decreased to 2. diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070717-1.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070717-1.tar.bz2 new file mode 100644 index 00000000..1880c52d Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070717-1.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070717-1.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070717-1.tar.bz2.README new file mode 100644 index 00000000..740026e4 --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070717-1.tar.bz2.README @@ -0,0 +1 @@ +Added support for cpufreq (ondemand) on IBM T60. diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070831-1.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070831-1.tar.bz2 new file mode 100644 index 00000000..f79a8ee6 Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070831-1.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070831-1.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070831-1.tar.bz2.README new file mode 100644 index 00000000..bfc5c0ae --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070831-1.tar.bz2.README @@ -0,0 +1 @@ +- Added mount /proc as requirement for acpid! diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070831-2.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070831-2.tar.bz2 new file mode 100644 index 00000000..a2b8fdea Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070831-2.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070831-2.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070831-2.tar.bz2.README new file mode 100644 index 00000000..3493ca3d --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070831-2.tar.bz2.README @@ -0,0 +1 @@ +- Added dmesg -n1 so there's less noise on startup. diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070901-1.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070901-1.tar.bz2 new file mode 100644 index 00000000..8df7a9c9 Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070901-1.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070901-1.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070901-1.tar.bz2.README new file mode 100644 index 00000000..cb6f8d8e --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070901-1.tar.bz2.README @@ -0,0 +1,7 @@ +- Added needs: + unicode / console: /proc + udev: /proc + syslog-ng: mount/root + +- fixed mount/root/fsck: missed "then" + diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070901-2.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070901-2.tar.bz2 new file mode 100644 index 00000000..33f75a62 Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070901-2.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070901-2.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070901-2.tar.bz2.README new file mode 100644 index 00000000..07e6f29e --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070901-2.tar.bz2.README @@ -0,0 +1 @@ +- Added respawn for syslog-ng diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070906-1.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070906-1.tar.bz2 new file mode 100644 index 00000000..e3b7df82 Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070906-1.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070906-1.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070906-1.tar.bz2.README new file mode 100644 index 00000000..650274b7 --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070906-1.tar.bz2.README @@ -0,0 +1,2 @@ +Add TERM=linux to console-unicode and also depend it on udev so +devices are existing. diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070909-1.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070909-1.tar.bz2 new file mode 100644 index 00000000..d8c7dd55 Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070909-1.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070909-1.tar.bz2.README b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070909-1.tar.bz2.README new file mode 100644 index 00000000..f6d5eb89 --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/denkbrett-20070909-1.tar.bz2.README @@ -0,0 +1 @@ +acpid needs to write to /var/run! diff --git a/software/cinit/samples/cinit-0.3/denkbrett/rsync b/software/cinit/samples/cinit-0.3/denkbrett/rsync new file mode 100755 index 00000000..f9649179 --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/rsync @@ -0,0 +1,2 @@ +chmod a+r * +rsync -av ./ nico@home.schottelius.org:unix/cinit/samples/cinit-0.3/denkbrett/ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/rsync.local b/software/cinit/samples/cinit-0.3/denkbrett/rsync.local new file mode 100755 index 00000000..d7ee374b --- /dev/null +++ b/software/cinit/samples/cinit-0.3/denkbrett/rsync.local @@ -0,0 +1,3 @@ +DIR=~nico/projekte/cinit/configs/denkbrett/ +rsync -av ./ "$DIR" +chown nico "$DIR"/* diff --git a/software/cinit/samples/cinit-0.3/denkbrett/test+conf-last-2007-02-23.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/test+conf-last-2007-02-23.tar.bz2 new file mode 100644 index 00000000..1b760767 Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/test+conf-last-2007-02-23.tar.bz2 differ diff --git a/software/cinit/samples/cinit-0.3/denkbrett/test-2007-02-23.tar.bz2 b/software/cinit/samples/cinit-0.3/denkbrett/test-2007-02-23.tar.bz2 new file mode 100644 index 00000000..61cf45c1 Binary files /dev/null and b/software/cinit/samples/cinit-0.3/denkbrett/test-2007-02-23.tar.bz2 differ diff --git a/software/cinit/samples/index.html b/software/cinit/samples/index.html new file mode 100644 index 00000000..41067561 --- /dev/null +++ b/software/cinit/samples/index.html @@ -0,0 +1,102 @@ + + + +unix.schottelius.org + + + +

Nico Schottelius +
unix.schottelius.org +
cinit

+
+

cinit configuration examples

+
+ +

overview

+

ei +
pc-it-nico +
scice +
hydrogenium +
wasserstoff +

+ +

ei (ppc-gentoo-iBook)

+This ppc configuration +was made on my small, broken G3-iBook. It has the following +services enabled: +
    +
  • Cleaning /etc/mtab, /var/run, /tmp +
  • Configuring keyboard: Rate and Layout (dvorak) +
  • Hostname is set to 'cinit-host' +
  • Local MTA (qmail) (found in /usr/packages/qmail-1.03-ssl/) using env + params +
  • Mount /home via dm-crypt (/dev/hda7) +
  • Mount /mnt/clinux +
  • Mouse-Button-emulation is enabled (Apple has only one button) +
  • Power Management (pbbuttonsd) +
  • Restoring / storing sound mixer values (alsactl) +
  • Setup clock (using hardware clock) (loads genrtc) +
  • Setup eth0 with a dynamic IP (udhcpc) fallback via udhcpc-scripts +
  • Spawns Getty (/sbin/getty) on tty2-tty7 (tty1 is for logging) +
  • SSH (openssh) +
  • Syslog service (metalog) +
  • Udev support +
+ +

pc-it-nico (x86-gentoo-UML)

+

This is a somehow minimalistic configuration: +

    +
  • Cleaning /etc/mtab, /var/run, /tmp +
  • Configuring keyboard: Rate and Layout (dvorak) +
  • Hostname is set to 'cinit-host' +
  • Mount root r/w +
  • Spawns Getty (/sbin/getty) on tty2-tty7 (tty1 is for logging) +
  • SSH (openssh) +
  • Udev support +
+This configuration was used to test cinit in UML (User-Mode-Linux). + +

scice (x86-debian-notebook)

+

I use this configuration on my Transmeta notebook on +Debian Sarge: +

    +
  • Cleaning /etc/mtab, /var/run, /tmp +
  • Configuring keyboard: Rate and Layout (dvorak) +
  • Cron (Vixie cron) +
  • Deactivated services (syslogd, test/, atd, ...) +
  • Graphical login (gdm) +
  • Hostname is set to 'cinit-host' +
  • Hotplug (SLOW!) (automatic driver loading) +
  • MTA (exim4) +
  • Restoring / storing sound mixer values (alsactl) +
  • Setup eth0 with a dynamic IP (dhclient) +
  • Spawns Getty (/sbin/getty) on tty2-tty7 (tty1 is for logging) +
  • SSH (openssh) +
  • Syslog service (syslog-ng) +
  • Udev support +
+ +

hydrogenium (x86-debian-notebook)

+

Hydrogenium is my current work-notebook. +

    +
  • Spawns Getty (/sbin/getty) on tty2-tty8 (tty1 is for logging) +
  • Syslog service (metalog) +
  • udev support - most clean configuration, uses /sbin/udevsend +
  • Local MTA (qmail) (found in /usr/packages/qmail-1.03-ssl/) + using qmail-start +
  • SSH (openssh) +
  • Power management with acpid +
  • Setup eth0 with a dynamic IP (udhcpc) +
  • Mounts /sys, /proc, / (r/w with fsck for jfs) +
  • Unicode and console font beeing loaded (since 20051103) +
  • Currently broken lukscrypt +
+
+ + +

wasserstoff (x86-gentoo-notebook)

+

I use the first /etc/csys configuration +on wasserstoff. +It is a try for a simply system configuration without the need to parse +configurations. But it's still in the early pre-alpha phase. + + diff --git a/software/cinit/samples/ppc/ei/README b/software/cinit/samples/ppc/ei/README new file mode 100644 index 00000000..ba524387 --- /dev/null +++ b/software/cinit/samples/ppc/ei/README @@ -0,0 +1 @@ +This is the configuration I use to test on my iBook named 'ei'. diff --git a/software/cinit/samples/ppc/ei/cinit-conf-ppc-20050704-01.tar.bz2 b/software/cinit/samples/ppc/ei/cinit-conf-ppc-20050704-01.tar.bz2 new file mode 100644 index 00000000..8c95af28 Binary files /dev/null and b/software/cinit/samples/ppc/ei/cinit-conf-ppc-20050704-01.tar.bz2 differ diff --git a/software/cinit/samples/ppc/ei/old/cinit-conf-ppc-20050620-01.tar.bz2 b/software/cinit/samples/ppc/ei/old/cinit-conf-ppc-20050620-01.tar.bz2 new file mode 100644 index 00000000..44ebfa21 Binary files /dev/null and b/software/cinit/samples/ppc/ei/old/cinit-conf-ppc-20050620-01.tar.bz2 differ diff --git a/software/cinit/samples/ppc/ei/old/cinit-conf-ppc-20050627-01.tar.bz2 b/software/cinit/samples/ppc/ei/old/cinit-conf-ppc-20050627-01.tar.bz2 new file mode 100644 index 00000000..a8a0914e Binary files /dev/null and b/software/cinit/samples/ppc/ei/old/cinit-conf-ppc-20050627-01.tar.bz2 differ diff --git a/software/cinit/samples/ppc/ei/old/cinit-conf-ppc-20050627-02.tar.bz2 b/software/cinit/samples/ppc/ei/old/cinit-conf-ppc-20050627-02.tar.bz2 new file mode 100644 index 00000000..47f9f8d7 Binary files /dev/null and b/software/cinit/samples/ppc/ei/old/cinit-conf-ppc-20050627-02.tar.bz2 differ diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926.tar.bz2 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926.tar.bz2 new file mode 100644 index 00000000..966602a4 Binary files /dev/null and b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926.tar.bz2 differ diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/2/needs/hostname b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/2/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/2/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/2/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/2/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/2/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/2/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/2/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/2/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/2/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/2/on.params new file mode 100644 index 00000000..78694004 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/2/on.params @@ -0,0 +1,3 @@ +38400 +tty2 +linux diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/2/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/2/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/3/needs/hostname b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/3/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/3/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/3/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/3/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/3/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/3/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/3/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/3/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/3/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/3/on.params new file mode 100644 index 00000000..370f9846 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/3/on.params @@ -0,0 +1,3 @@ +38400 +tty3 +linux diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/3/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/3/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/4/needs/hostname b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/4/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/4/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/4/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/4/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/4/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/4/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/4/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/4/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/4/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/4/on.params new file mode 100644 index 00000000..d69982d6 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/4/on.params @@ -0,0 +1,3 @@ +38400 +tty4 +linux diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/4/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/4/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/5/needs/hostname b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/5/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/5/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/5/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/5/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/5/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/5/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/5/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/5/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/5/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/5/on.params new file mode 100644 index 00000000..9fd834ed --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/5/on.params @@ -0,0 +1,3 @@ +38400 +tty5 +linux diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/5/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/5/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/6/needs/hostname b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/6/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/6/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/6/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/6/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/6/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/6/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/6/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/6/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/6/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/6/on.params new file mode 100644 index 00000000..08274a3c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/6/on.params @@ -0,0 +1,3 @@ +38400 +tty6 +linux diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/6/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/6/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/7/needs/hostname b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/7/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/7/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/7/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/7/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/7/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/7/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/7/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/7/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/7/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/7/on.params new file mode 100644 index 00000000..69efe75b --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/7/on.params @@ -0,0 +1,3 @@ +38400 +tty7 +linux diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/7/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/7/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/8/needs/hostname b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/8/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/8/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/8/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/8/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/8/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/8/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/8/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/8/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/8/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/8/on.params new file mode 100644 index 00000000..8001a552 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/8/on.params @@ -0,0 +1,3 @@ +38400 +tty8 +linux diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/8/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/8/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/2 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/2 new file mode 120000 index 00000000..fd9b9c8f --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/2 @@ -0,0 +1 @@ +../2/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/3 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/3 new file mode 120000 index 00000000..a334e9e8 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/3 @@ -0,0 +1 @@ +../3 \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/4 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/4 new file mode 120000 index 00000000..481d918e --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/4 @@ -0,0 +1 @@ +../4 \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/5 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/5 new file mode 120000 index 00000000..00f5743b --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/5 @@ -0,0 +1 @@ +../5 \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/6 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/6 new file mode 120000 index 00000000..2b98e9c3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/6 @@ -0,0 +1 @@ +../6 \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/7 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/7 new file mode 120000 index 00000000..4eb54964 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/7 @@ -0,0 +1 @@ +../7 \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/8 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/8 new file mode 120000 index 00000000..3a0fadf1 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/8 @@ -0,0 +1 @@ +../8 \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/aoeeoaeaoeoaoeeoa b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/aoeeoaeaoeoaoeeoa new file mode 120000 index 00000000..1f882d19 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/getty/wants/aoeeoaeaoeoaoeeoa @@ -0,0 +1 @@ +/aoeeoaeaoeoaoeeoa \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/on new file mode 120000 index 00000000..7bbf7ccd --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/on @@ -0,0 +1 @@ +/bin/echo \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/on.params new file mode 100644 index 00000000..7b01d94b --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/on.params @@ -0,0 +1 @@ +*** cinit started *** diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/getty b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/getty new file mode 120000 index 00000000..de2f483b --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/getty @@ -0,0 +1 @@ +../../getty/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/local-services b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/local-services new file mode 120000 index 00000000..cca95ce5 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/local-services @@ -0,0 +1 @@ +../../local-services/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/local-tuning b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/local-tuning new file mode 120000 index 00000000..9c8675b2 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/local-tuning @@ -0,0 +1 @@ +../../local-tuning/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/mount b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/mount new file mode 120000 index 00000000..29a1edc0 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/mount @@ -0,0 +1 @@ +../../mount/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/network b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/network new file mode 120000 index 00000000..6c993356 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/network @@ -0,0 +1 @@ +../../network/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/remote-services b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/remote-services new file mode 120000 index 00000000..64edcfac --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/init/wants/remote-services @@ -0,0 +1 @@ +../../remote-services/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/acpid/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/acpid/on new file mode 120000 index 00000000..43369f77 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/acpid/on @@ -0,0 +1 @@ +/usr/sbin/acpid \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/acpid/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/acpid/on.params new file mode 100644 index 00000000..105c5f3d --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/acpid/on.params @@ -0,0 +1 @@ +-f diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/acpid/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/acpid/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/acpid/wants/metalog b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/acpid/wants/metalog new file mode 120000 index 00000000..59ef01be --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/acpid/wants/metalog @@ -0,0 +1 @@ +../../metalog \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/metalog/README b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/metalog/README new file mode 100644 index 00000000..2ad003fd --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/metalog/README @@ -0,0 +1,2 @@ +Metalog is a syslog replacement, it writes to the HD and creates +a socket below /dev. diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/metalog/needs/mount-root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/metalog/needs/mount-root new file mode 120000 index 00000000..b46717bb --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/metalog/needs/mount-root @@ -0,0 +1 @@ +../../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/metalog/needs/mount-udev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/metalog/needs/mount-udev new file mode 120000 index 00000000..36ea9bb0 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/metalog/needs/mount-udev @@ -0,0 +1 @@ +../../../mount/udev \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/metalog/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/metalog/on new file mode 120000 index 00000000..54fdda86 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/metalog/on @@ -0,0 +1 @@ +/usr/sbin/metalog \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/metalog/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/metalog/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/qmail/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/qmail/needs/root new file mode 120000 index 00000000..b46717bb --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/qmail/needs/root @@ -0,0 +1 @@ +../../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/qmail/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/qmail/on new file mode 120000 index 00000000..ce65dcea --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/qmail/on @@ -0,0 +1 @@ +/usr/packages/qmail-1.03-ssl/bin/qmail-start \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/qmail/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/qmail/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/wants/metalog b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/wants/metalog new file mode 120000 index 00000000..68bf59c5 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/wants/metalog @@ -0,0 +1 @@ +../metalog \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/wants/qmail b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/wants/qmail new file mode 120000 index 00000000..fb7e8c86 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-services/wants/qmail @@ -0,0 +1 @@ +../qmail \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/keyboard/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/keyboard/on new file mode 120000 index 00000000..a5ce029b --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/keyboard/on @@ -0,0 +1 @@ +/bin/loadkeys \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/keyboard/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/keyboard/on.params new file mode 120000 index 00000000..3f0f9e84 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/keyboard/on.params @@ -0,0 +1 @@ +/etc/csys/keyboard-layout \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/quiet-kernel/README b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/quiet-kernel/README new file mode 100644 index 00000000..9d6e4f05 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/quiet-kernel/README @@ -0,0 +1,2 @@ +dmesg -n1 tells the kernel only to write PANIC()s on the +console. This way typing is not interrupted by kernel messages. diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/quiet-kernel/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/quiet-kernel/on new file mode 120000 index 00000000..09bd56b7 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/quiet-kernel/on @@ -0,0 +1 @@ +/bin/dmesg \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/quiet-kernel/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/quiet-kernel/on.params new file mode 100644 index 00000000..d22a4869 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/quiet-kernel/on.params @@ -0,0 +1 @@ +-n1 diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/initial-setup/mount-dev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/initial-setup/mount-dev new file mode 120000 index 00000000..36ea9bb0 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/initial-setup/mount-dev @@ -0,0 +1 @@ +../../../mount/udev \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/initial-setup/mount-sys b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/initial-setup/mount-sys new file mode 120000 index 00000000..5c2c655d --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/initial-setup/mount-sys @@ -0,0 +1 @@ +../../../mount/sys \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/initial-setup/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/initial-setup/on new file mode 120000 index 00000000..cd9310d6 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/initial-setup/on @@ -0,0 +1 @@ +/sbin/udevstart \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/needs/initial-setup b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/needs/initial-setup new file mode 120000 index 00000000..ee6d0dd6 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/needs/initial-setup @@ -0,0 +1 @@ +../initial-setup \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/needs/replace-hotplug b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/needs/replace-hotplug new file mode 120000 index 00000000..376f667b --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/needs/replace-hotplug @@ -0,0 +1 @@ +../replace-hotplug \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/replace-hotplug/needs/proc b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/replace-hotplug/needs/proc new file mode 120000 index 00000000..78dc8f06 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/replace-hotplug/needs/proc @@ -0,0 +1 @@ +../../../../mount/proc \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/replace-hotplug/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/replace-hotplug/on new file mode 120000 index 00000000..b8cdb34f --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/replace-hotplug/on @@ -0,0 +1 @@ +/sbin/sysctl \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/replace-hotplug/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/replace-hotplug/on.params new file mode 100644 index 00000000..ba266390 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/udev/replace-hotplug/on.params @@ -0,0 +1 @@ +kernel.hotplug=/sbin/udevsend diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/wants/keyboard b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/wants/keyboard new file mode 120000 index 00000000..e1b4e3fc --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/wants/keyboard @@ -0,0 +1 @@ +../keyboard/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/wants/quiet-kernel b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/wants/quiet-kernel new file mode 120000 index 00000000..2867c76d --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/local-tuning/wants/quiet-kernel @@ -0,0 +1 @@ +../quiet-kernel \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/fsck/root/needs/udev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/fsck/root/needs/udev new file mode 120000 index 00000000..c868e175 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/fsck/root/needs/udev @@ -0,0 +1 @@ +../../../../local-tuning/udev \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/fsck/root/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/fsck/root/on new file mode 120000 index 00000000..bc0813ef --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/fsck/root/on @@ -0,0 +1 @@ +/sbin/fsck \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/fsck/root/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/fsck/root/on.params new file mode 120000 index 00000000..349ce1cf --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/fsck/root/on.params @@ -0,0 +1 @@ +/etc/csys/root \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/home/lukscrypt/README b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/home/lukscrypt/README new file mode 100644 index 00000000..5374458e --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/home/lukscrypt/README @@ -0,0 +1 @@ +Enable en-/decrypting /home via Linux Unified Key Setup (LUKS) diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/home/lukscrypt/needs/keyboard b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/home/lukscrypt/needs/keyboard new file mode 120000 index 00000000..34376346 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/home/lukscrypt/needs/keyboard @@ -0,0 +1 @@ +../../../../local-tuning/keyboard \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/home/lukscrypt/needs/udev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/home/lukscrypt/needs/udev new file mode 120000 index 00000000..c868e175 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/home/lukscrypt/needs/udev @@ -0,0 +1 @@ +../../../../local-tuning/udev \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/home/lukscrypt/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/home/lukscrypt/on new file mode 120000 index 00000000..efb28869 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/home/lukscrypt/on @@ -0,0 +1 @@ +/usr/packages/cryptsetup-luks-1.0.1/sbin/cryptsetup \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/home/lukscrypt/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/home/lukscrypt/on.params new file mode 100644 index 00000000..ab2cda1c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/home/lukscrypt/on.params @@ -0,0 +1,3 @@ +luksOpen +/dev/hda4 +home diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/proc/off b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/proc/off new file mode 120000 index 00000000..a6ebdff7 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/proc/off @@ -0,0 +1 @@ +/bin/umount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/proc/off.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/proc/off.params new file mode 100644 index 00000000..4c3fcfb4 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/proc/off.params @@ -0,0 +1 @@ +/proc diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/proc/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/proc/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/proc/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/proc/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/proc/on.params new file mode 100644 index 00000000..4c3fcfb4 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/proc/on.params @@ -0,0 +1 @@ +/proc diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/create-dir/needs/udev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/create-dir/needs/udev new file mode 120000 index 00000000..fb83a3dd --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/create-dir/needs/udev @@ -0,0 +1 @@ +../../../udev \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/create-dir/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/create-dir/on new file mode 120000 index 00000000..9c6e0f8a --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/create-dir/on @@ -0,0 +1 @@ +/bin/mkdir \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/create-dir/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/create-dir/on.params new file mode 100644 index 00000000..b2e8b82f --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/create-dir/on.params @@ -0,0 +1,2 @@ +-p +/dev/pts diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/needs/create-dir b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/needs/create-dir new file mode 120000 index 00000000..84bddf39 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/needs/create-dir @@ -0,0 +1 @@ +../create-dir/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/off b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/off new file mode 120000 index 00000000..a6ebdff7 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/off @@ -0,0 +1 @@ +/bin/umount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/off.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/off.params new file mode 100644 index 00000000..68195bba --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/off.params @@ -0,0 +1 @@ +/dev/pts diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/on.params new file mode 100644 index 00000000..2dd04515 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/pts/on.params @@ -0,0 +1,4 @@ +pts +-t +devpts +/dev/pts diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/root/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/root/needs/root new file mode 120000 index 00000000..f7dfa0b2 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/root/needs/root @@ -0,0 +1 @@ +../../fsck/root \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/root/needs/udev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/root/needs/udev new file mode 120000 index 00000000..3ec64dc1 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/root/needs/udev @@ -0,0 +1 @@ +../../../local-tuning/udev/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/root/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/root/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/root/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/root/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/root/on.params new file mode 100644 index 00000000..f0e68389 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/root/on.params @@ -0,0 +1,3 @@ +-o +remount,rw +/ diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/swap/needs/udev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/swap/needs/udev new file mode 120000 index 00000000..3ec64dc1 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/swap/needs/udev @@ -0,0 +1 @@ +../../../local-tuning/udev/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/swap/off b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/swap/off new file mode 120000 index 00000000..a6ebdff7 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/swap/off @@ -0,0 +1 @@ +/bin/umount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/swap/off.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/swap/off.params new file mode 120000 index 00000000..ba5128d2 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/swap/off.params @@ -0,0 +1 @@ +/etc/csys/swap \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/swap/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/swap/on new file mode 120000 index 00000000..c544fa46 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/swap/on @@ -0,0 +1 @@ +/sbin/swapon \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/swap/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/swap/on.params new file mode 120000 index 00000000..ba5128d2 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/swap/on.params @@ -0,0 +1 @@ +/etc/csys/swap \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/sys/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/sys/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/sys/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/sys/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/sys/on.params new file mode 100644 index 00000000..a6b724ca --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/sys/on.params @@ -0,0 +1,4 @@ +sysfs +-t +sysfs +/sys diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/udev/off b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/udev/off new file mode 120000 index 00000000..a6ebdff7 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/udev/off @@ -0,0 +1 @@ +/bin/umount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/udev/off.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/udev/off.params new file mode 100644 index 00000000..f42e49b2 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/udev/off.params @@ -0,0 +1 @@ +/dev diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/udev/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/udev/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/udev/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/udev/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/udev/on.params new file mode 100644 index 00000000..6f076f24 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/udev/on.params @@ -0,0 +1,4 @@ +udev +-t +tmpfs +/dev diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/wants/proc b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/wants/proc new file mode 120000 index 00000000..a74efc41 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/wants/proc @@ -0,0 +1 @@ +../proc \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/wants/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/wants/root new file mode 120000 index 00000000..a830569b --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/wants/root @@ -0,0 +1 @@ +../root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/wants/swap b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/wants/swap new file mode 120000 index 00000000..6f0f4e0a --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/wants/swap @@ -0,0 +1 @@ +../swap/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/wants/sys b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/wants/sys new file mode 120000 index 00000000..587910c7 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/wants/sys @@ -0,0 +1 @@ +../sys \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/wants/udev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/wants/udev new file mode 120000 index 00000000..ada83a6f --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/mount/wants/udev @@ -0,0 +1 @@ +../udev \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0.static/driver/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0.static/driver/on new file mode 120000 index 00000000..722ec623 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0.static/driver/on @@ -0,0 +1 @@ +/sbin/modprobe \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0.static/driver/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0.static/driver/on.params new file mode 100644 index 00000000..aa8f1e6d --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0.static/driver/on.params @@ -0,0 +1 @@ +e100 diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0.static/needs/driver b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0.static/needs/driver new file mode 120000 index 00000000..1f094b50 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0.static/needs/driver @@ -0,0 +1 @@ +../driver \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0.static/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0.static/on new file mode 120000 index 00000000..e27843a4 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0.static/on @@ -0,0 +1 @@ +/sbin/ifconfig \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0.static/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0.static/on.params new file mode 120000 index 00000000..8c3543d6 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0.static/on.params @@ -0,0 +1 @@ +/etc/csys/eth0.static \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/driver/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/driver/on new file mode 120000 index 00000000..722ec623 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/driver/on @@ -0,0 +1 @@ +/sbin/modprobe \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/driver/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/driver/on.params new file mode 100644 index 00000000..aa8f1e6d --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/driver/on.params @@ -0,0 +1 @@ +e100 diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/needs/driver b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/needs/driver new file mode 120000 index 00000000..1f094b50 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/needs/driver @@ -0,0 +1 @@ +../driver \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/needs/mount-root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/needs/mount-root new file mode 120000 index 00000000..b46717bb --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/needs/mount-root @@ -0,0 +1 @@ +../../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/on new file mode 120000 index 00000000..639430c4 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/on @@ -0,0 +1 @@ +/sbin/udhcpc \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/on.params new file mode 100644 index 00000000..105c5f3d --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/on.params @@ -0,0 +1 @@ +-f diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/eth0/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/hostname/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/hostname/on new file mode 120000 index 00000000..5779a119 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/hostname/on @@ -0,0 +1 @@ +/bin/hostname \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/hostname/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/hostname/on.params new file mode 120000 index 00000000..c5c298ce --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/hostname/on.params @@ -0,0 +1 @@ +/etc/csys/hostname \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/lo/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/lo/on new file mode 120000 index 00000000..e27843a4 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/lo/on @@ -0,0 +1 @@ +/sbin/ifconfig \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/lo/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/lo/on.params new file mode 100644 index 00000000..e58476c5 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/lo/on.params @@ -0,0 +1,3 @@ +lo +127.0.0.1 +up diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/wants/eth0 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/wants/eth0 new file mode 120000 index 00000000..b104cd79 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/wants/eth0 @@ -0,0 +1 @@ +../eth0 \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/wants/hostname b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/wants/hostname new file mode 120000 index 00000000..83ce34f6 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/wants/hostname @@ -0,0 +1 @@ +../hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/wants/lo b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/wants/lo new file mode 120000 index 00000000..13eee547 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/network/wants/lo @@ -0,0 +1 @@ +../lo/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/opensshd/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/opensshd/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/opensshd/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/opensshd/needs/udev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/opensshd/needs/udev new file mode 120000 index 00000000..3ec64dc1 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/opensshd/needs/udev @@ -0,0 +1 @@ +../../../local-tuning/udev/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/opensshd/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/opensshd/on new file mode 120000 index 00000000..cf9865a6 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/opensshd/on @@ -0,0 +1 @@ +/usr/sbin/sshd \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/opensshd/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/opensshd/on.params new file mode 100644 index 00000000..eb11be00 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/opensshd/on.params @@ -0,0 +1 @@ +-D diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/opensshd/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/opensshd/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/opensshd/wants/network b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/opensshd/wants/network new file mode 120000 index 00000000..49e0fadd --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/opensshd/wants/network @@ -0,0 +1 @@ +../../../network/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/wants/opensshd b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/wants/opensshd new file mode 120000 index 00000000..b90c7a1c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20050926/cinit/remote-services/wants/opensshd @@ -0,0 +1 @@ +../opensshd \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103.tar.bz2 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103.tar.bz2 new file mode 100644 index 00000000..964a9be1 Binary files /dev/null and b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103.tar.bz2 differ diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/README b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/README new file mode 100644 index 00000000..092a29a4 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/README @@ -0,0 +1,8 @@ +cinit-configuration (hydrogenium, Nico Schottelius) + +- uses udev +- setup console font +- setup the console to use unicode +- starts sshd +- starts qmail (only reachable locally, delivers to remote) +- metalog as syslog replacement diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/2/needs/hostname b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/2/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/2/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/2/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/2/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/2/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/2/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/2/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/2/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/2/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/2/on.params new file mode 100644 index 00000000..78694004 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/2/on.params @@ -0,0 +1,3 @@ +38400 +tty2 +linux diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/2/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/2/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/3/needs/hostname b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/3/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/3/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/3/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/3/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/3/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/3/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/3/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/3/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/3/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/3/on.params new file mode 100644 index 00000000..370f9846 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/3/on.params @@ -0,0 +1,3 @@ +38400 +tty3 +linux diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/3/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/3/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/4/needs/hostname b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/4/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/4/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/4/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/4/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/4/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/4/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/4/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/4/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/4/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/4/on.params new file mode 100644 index 00000000..d69982d6 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/4/on.params @@ -0,0 +1,3 @@ +38400 +tty4 +linux diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/4/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/4/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/5/needs/hostname b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/5/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/5/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/5/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/5/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/5/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/5/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/5/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/5/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/5/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/5/on.params new file mode 100644 index 00000000..9fd834ed --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/5/on.params @@ -0,0 +1,3 @@ +38400 +tty5 +linux diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/5/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/5/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/6/needs/hostname b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/6/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/6/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/6/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/6/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/6/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/6/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/6/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/6/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/6/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/6/on.params new file mode 100644 index 00000000..08274a3c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/6/on.params @@ -0,0 +1,3 @@ +38400 +tty6 +linux diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/6/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/6/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/7/needs/hostname b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/7/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/7/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/7/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/7/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/7/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/7/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/7/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/7/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/7/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/7/on.params new file mode 100644 index 00000000..69efe75b --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/7/on.params @@ -0,0 +1,3 @@ +38400 +tty7 +linux diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/7/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/7/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/8/needs/hostname b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/8/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/8/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/8/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/8/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/8/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/8/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/8/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/8/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/8/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/8/on.params new file mode 100644 index 00000000..8001a552 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/8/on.params @@ -0,0 +1,3 @@ +38400 +tty8 +linux diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/8/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/8/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/2 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/2 new file mode 120000 index 00000000..fd9b9c8f --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/2 @@ -0,0 +1 @@ +../2/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/3 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/3 new file mode 120000 index 00000000..a334e9e8 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/3 @@ -0,0 +1 @@ +../3 \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/4 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/4 new file mode 120000 index 00000000..481d918e --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/4 @@ -0,0 +1 @@ +../4 \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/5 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/5 new file mode 120000 index 00000000..00f5743b --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/5 @@ -0,0 +1 @@ +../5 \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/6 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/6 new file mode 120000 index 00000000..2b98e9c3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/6 @@ -0,0 +1 @@ +../6 \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/7 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/7 new file mode 120000 index 00000000..4eb54964 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/7 @@ -0,0 +1 @@ +../7 \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/8 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/8 new file mode 120000 index 00000000..3a0fadf1 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/getty/wants/8 @@ -0,0 +1 @@ +../8 \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/on new file mode 120000 index 00000000..7bbf7ccd --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/on @@ -0,0 +1 @@ +/bin/echo \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/on.params new file mode 100644 index 00000000..7b01d94b --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/on.params @@ -0,0 +1 @@ +*** cinit started *** diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/getty b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/getty new file mode 120000 index 00000000..de2f483b --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/getty @@ -0,0 +1 @@ +../../getty/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/local-services b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/local-services new file mode 120000 index 00000000..cca95ce5 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/local-services @@ -0,0 +1 @@ +../../local-services/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/local-tuning b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/local-tuning new file mode 120000 index 00000000..9c8675b2 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/local-tuning @@ -0,0 +1 @@ +../../local-tuning/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/mount b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/mount new file mode 120000 index 00000000..29a1edc0 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/mount @@ -0,0 +1 @@ +../../mount/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/network b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/network new file mode 120000 index 00000000..6c993356 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/network @@ -0,0 +1 @@ +../../network/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/remote-services b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/remote-services new file mode 120000 index 00000000..64edcfac --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/init/wants/remote-services @@ -0,0 +1 @@ +../../remote-services/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/acpid/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/acpid/on new file mode 120000 index 00000000..43369f77 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/acpid/on @@ -0,0 +1 @@ +/usr/sbin/acpid \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/acpid/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/acpid/on.params new file mode 100644 index 00000000..105c5f3d --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/acpid/on.params @@ -0,0 +1 @@ +-f diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/acpid/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/acpid/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/acpid/wants/metalog b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/acpid/wants/metalog new file mode 120000 index 00000000..59ef01be --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/acpid/wants/metalog @@ -0,0 +1 @@ +../../metalog \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/metalog/README b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/metalog/README new file mode 100644 index 00000000..2ad003fd --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/metalog/README @@ -0,0 +1,2 @@ +Metalog is a syslog replacement, it writes to the HD and creates +a socket below /dev. diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/metalog/needs/mount-root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/metalog/needs/mount-root new file mode 120000 index 00000000..b46717bb --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/metalog/needs/mount-root @@ -0,0 +1 @@ +../../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/metalog/needs/mount-udev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/metalog/needs/mount-udev new file mode 120000 index 00000000..36ea9bb0 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/metalog/needs/mount-udev @@ -0,0 +1 @@ +../../../mount/udev \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/metalog/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/metalog/on new file mode 120000 index 00000000..54fdda86 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/metalog/on @@ -0,0 +1 @@ +/usr/sbin/metalog \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/metalog/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/metalog/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/qmail/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/qmail/needs/root new file mode 120000 index 00000000..b46717bb --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/qmail/needs/root @@ -0,0 +1 @@ +../../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/qmail/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/qmail/on new file mode 120000 index 00000000..ce65dcea --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/qmail/on @@ -0,0 +1 @@ +/usr/packages/qmail-1.03-ssl/bin/qmail-start \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/qmail/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/qmail/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/wants/acpid b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/wants/acpid new file mode 120000 index 00000000..acc69cd0 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/wants/acpid @@ -0,0 +1 @@ +../acpid \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/wants/metalog b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/wants/metalog new file mode 120000 index 00000000..68bf59c5 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/wants/metalog @@ -0,0 +1 @@ +../metalog \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/wants/qmail b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/wants/qmail new file mode 120000 index 00000000..fb7e8c86 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-services/wants/qmail @@ -0,0 +1 @@ +../qmail \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/console-font/README b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/console-font/README new file mode 100644 index 00000000..8b8f882e --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/console-font/README @@ -0,0 +1 @@ +Load a font for the console diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/console-font/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/console-font/on new file mode 120000 index 00000000..2bd5c543 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/console-font/on @@ -0,0 +1 @@ +/usr/bin/consolechars \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/console-font/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/console-font/on.params new file mode 100644 index 00000000..b44f4cf2 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/console-font/on.params @@ -0,0 +1,2 @@ +-f +/usr/share/consolefonts/lat9u-08.psf.gz diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/keyboard/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/keyboard/on new file mode 120000 index 00000000..a5ce029b --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/keyboard/on @@ -0,0 +1 @@ +/bin/loadkeys \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/keyboard/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/keyboard/on.params new file mode 120000 index 00000000..3f0f9e84 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/keyboard/on.params @@ -0,0 +1 @@ +/etc/csys/keyboard-layout \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/modules/README b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/modules/README new file mode 100644 index 00000000..786b6829 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/modules/README @@ -0,0 +1,2 @@ +This service SHOULD be empty as loading modules manully is not +the right way. Though for modules like 'evdev' it's currently here :-( diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/modules/evdev/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/modules/evdev/on new file mode 120000 index 00000000..722ec623 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/modules/evdev/on @@ -0,0 +1 @@ +/sbin/modprobe \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/modules/evdev/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/modules/evdev/on.params new file mode 100644 index 00000000..97a5e58a --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/modules/evdev/on.params @@ -0,0 +1 @@ +evdev diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/modules/wants/evdev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/modules/wants/evdev new file mode 120000 index 00000000..862de3fd --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/modules/wants/evdev @@ -0,0 +1 @@ +../evdev \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/quiet-kernel/README b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/quiet-kernel/README new file mode 100644 index 00000000..9d6e4f05 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/quiet-kernel/README @@ -0,0 +1,2 @@ +dmesg -n1 tells the kernel only to write PANIC()s on the +console. This way typing is not interrupted by kernel messages. diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/quiet-kernel/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/quiet-kernel/on new file mode 120000 index 00000000..09bd56b7 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/quiet-kernel/on @@ -0,0 +1 @@ +/bin/dmesg \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/quiet-kernel/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/quiet-kernel/on.params new file mode 100644 index 00000000..d22a4869 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/quiet-kernel/on.params @@ -0,0 +1 @@ +-n1 diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/README b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/README new file mode 100644 index 00000000..21995570 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/README @@ -0,0 +1 @@ +Load mixer settings via alsactl, preload driver. diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/driver/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/driver/on new file mode 120000 index 00000000..722ec623 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/driver/on @@ -0,0 +1 @@ +/sbin/modprobe \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/driver/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/driver/on.params new file mode 100644 index 00000000..520a4016 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/driver/on.params @@ -0,0 +1 @@ +snd-maestro3 diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/needs/driver b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/needs/driver new file mode 120000 index 00000000..1f094b50 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/needs/driver @@ -0,0 +1 @@ +../driver \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/off b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/off new file mode 120000 index 00000000..db608c9e --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/off @@ -0,0 +1 @@ +/usr/sbin/alsactl \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/off.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/off.params new file mode 100644 index 00000000..b25ca904 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/off.params @@ -0,0 +1 @@ +store diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/on new file mode 120000 index 00000000..db608c9e --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/on @@ -0,0 +1 @@ +/usr/sbin/alsactl \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/on.params new file mode 100644 index 00000000..a9db91d1 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/sound/on.params @@ -0,0 +1 @@ +restore diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/initial-setup/mount-dev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/initial-setup/mount-dev new file mode 120000 index 00000000..36ea9bb0 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/initial-setup/mount-dev @@ -0,0 +1 @@ +../../../mount/udev \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/initial-setup/mount-sys b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/initial-setup/mount-sys new file mode 120000 index 00000000..5c2c655d --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/initial-setup/mount-sys @@ -0,0 +1 @@ +../../../mount/sys \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/initial-setup/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/initial-setup/on new file mode 120000 index 00000000..cd9310d6 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/initial-setup/on @@ -0,0 +1 @@ +/sbin/udevstart \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/needs/initial-setup b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/needs/initial-setup new file mode 120000 index 00000000..ee6d0dd6 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/needs/initial-setup @@ -0,0 +1 @@ +../initial-setup \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/needs/replace-hotplug b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/needs/replace-hotplug new file mode 120000 index 00000000..376f667b --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/needs/replace-hotplug @@ -0,0 +1 @@ +../replace-hotplug \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/replace-hotplug/needs/proc b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/replace-hotplug/needs/proc new file mode 120000 index 00000000..78dc8f06 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/replace-hotplug/needs/proc @@ -0,0 +1 @@ +../../../../mount/proc \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/replace-hotplug/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/replace-hotplug/on new file mode 120000 index 00000000..b8cdb34f --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/replace-hotplug/on @@ -0,0 +1 @@ +/sbin/sysctl \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/replace-hotplug/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/replace-hotplug/on.params new file mode 100644 index 00000000..ba266390 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/udev/replace-hotplug/on.params @@ -0,0 +1 @@ +kernel.hotplug=/sbin/udevsend diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/unicode/README b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/unicode/README new file mode 100644 index 00000000..b8b011cb --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/unicode/README @@ -0,0 +1,2 @@ +Switch unicode in the console on. It needs +a font loaded before. diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/unicode/needs/console-font b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/unicode/needs/console-font new file mode 120000 index 00000000..fd74cc2b --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/unicode/needs/console-font @@ -0,0 +1 @@ +../../console-font \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/unicode/off b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/unicode/off new file mode 120000 index 00000000..d1b3dabc --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/unicode/off @@ -0,0 +1 @@ +/usr/bin/unicode_stop \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/unicode/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/unicode/on new file mode 120000 index 00000000..1a8ea15c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/unicode/on @@ -0,0 +1 @@ +/usr/bin/unicode_start \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/console-font b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/console-font new file mode 120000 index 00000000..16381174 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/console-font @@ -0,0 +1 @@ +../console-font \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/keyboard b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/keyboard new file mode 120000 index 00000000..e1b4e3fc --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/keyboard @@ -0,0 +1 @@ +../keyboard/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/modules b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/modules new file mode 120000 index 00000000..464b823a --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/modules @@ -0,0 +1 @@ +../modules \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/quiet-kernel b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/quiet-kernel new file mode 120000 index 00000000..2867c76d --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/quiet-kernel @@ -0,0 +1 @@ +../quiet-kernel \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/sound b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/sound new file mode 120000 index 00000000..2cc9f360 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/sound @@ -0,0 +1 @@ +../sound \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/unicode b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/unicode new file mode 120000 index 00000000..6a719851 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/local-tuning/wants/unicode @@ -0,0 +1 @@ +../unicode \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/fsck/root/needs/udev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/fsck/root/needs/udev new file mode 120000 index 00000000..c868e175 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/fsck/root/needs/udev @@ -0,0 +1 @@ +../../../../local-tuning/udev \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/fsck/root/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/fsck/root/on new file mode 120000 index 00000000..bc0813ef --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/fsck/root/on @@ -0,0 +1 @@ +/sbin/fsck \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/fsck/root/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/fsck/root/on.params new file mode 120000 index 00000000..349ce1cf --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/fsck/root/on.params @@ -0,0 +1 @@ +/etc/csys/root \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/lukscrypt/README b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/lukscrypt/README new file mode 100644 index 00000000..5374458e --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/lukscrypt/README @@ -0,0 +1 @@ +Enable en-/decrypting /home via Linux Unified Key Setup (LUKS) diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/lukscrypt/needs/keyboard b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/lukscrypt/needs/keyboard new file mode 120000 index 00000000..34376346 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/lukscrypt/needs/keyboard @@ -0,0 +1 @@ +../../../../local-tuning/keyboard \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/lukscrypt/needs/udev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/lukscrypt/needs/udev new file mode 120000 index 00000000..c868e175 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/lukscrypt/needs/udev @@ -0,0 +1 @@ +../../../../local-tuning/udev \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/lukscrypt/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/lukscrypt/on new file mode 120000 index 00000000..efb28869 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/lukscrypt/on @@ -0,0 +1 @@ +/usr/packages/cryptsetup-luks-1.0.1/sbin/cryptsetup \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/lukscrypt/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/lukscrypt/on.params new file mode 100644 index 00000000..ab2cda1c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/lukscrypt/on.params @@ -0,0 +1,3 @@ +luksOpen +/dev/hda4 +home diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/needs/lukscrypt b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/needs/lukscrypt new file mode 120000 index 00000000..172822a6 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/home/needs/lukscrypt @@ -0,0 +1 @@ +../lukscrypt \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/proc/off b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/proc/off new file mode 120000 index 00000000..a6ebdff7 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/proc/off @@ -0,0 +1 @@ +/bin/umount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/proc/off.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/proc/off.params new file mode 100644 index 00000000..4c3fcfb4 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/proc/off.params @@ -0,0 +1 @@ +/proc diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/proc/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/proc/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/proc/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/proc/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/proc/on.params new file mode 100644 index 00000000..4c3fcfb4 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/proc/on.params @@ -0,0 +1 @@ +/proc diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/create-dir/needs/udev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/create-dir/needs/udev new file mode 120000 index 00000000..fb83a3dd --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/create-dir/needs/udev @@ -0,0 +1 @@ +../../../udev \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/create-dir/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/create-dir/on new file mode 120000 index 00000000..9c6e0f8a --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/create-dir/on @@ -0,0 +1 @@ +/bin/mkdir \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/create-dir/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/create-dir/on.params new file mode 100644 index 00000000..b2e8b82f --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/create-dir/on.params @@ -0,0 +1,2 @@ +-p +/dev/pts diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/needs/create-dir b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/needs/create-dir new file mode 120000 index 00000000..84bddf39 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/needs/create-dir @@ -0,0 +1 @@ +../create-dir/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/off b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/off new file mode 120000 index 00000000..a6ebdff7 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/off @@ -0,0 +1 @@ +/bin/umount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/off.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/off.params new file mode 100644 index 00000000..68195bba --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/off.params @@ -0,0 +1 @@ +/dev/pts diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/on.params new file mode 100644 index 00000000..2dd04515 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/pts/on.params @@ -0,0 +1,4 @@ +pts +-t +devpts +/dev/pts diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/needs/root new file mode 120000 index 00000000..f7dfa0b2 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/needs/root @@ -0,0 +1 @@ +../../fsck/root \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/needs/udev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/needs/udev new file mode 120000 index 00000000..3ec64dc1 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/needs/udev @@ -0,0 +1 @@ +../../../local-tuning/udev/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/off b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/off new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/off @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/off.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/off.params new file mode 100644 index 00000000..1a9d2bd4 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/off.params @@ -0,0 +1,4 @@ +-n +-o +remount,ro +/ diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/on.params new file mode 100644 index 00000000..f0e68389 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/root/on.params @@ -0,0 +1,3 @@ +-o +remount,rw +/ diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/swap/needs/udev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/swap/needs/udev new file mode 120000 index 00000000..3ec64dc1 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/swap/needs/udev @@ -0,0 +1 @@ +../../../local-tuning/udev/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/swap/off b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/swap/off new file mode 120000 index 00000000..a6ebdff7 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/swap/off @@ -0,0 +1 @@ +/bin/umount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/swap/off.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/swap/off.params new file mode 120000 index 00000000..ba5128d2 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/swap/off.params @@ -0,0 +1 @@ +/etc/csys/swap \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/swap/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/swap/on new file mode 120000 index 00000000..c544fa46 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/swap/on @@ -0,0 +1 @@ +/sbin/swapon \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/swap/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/swap/on.params new file mode 120000 index 00000000..ba5128d2 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/swap/on.params @@ -0,0 +1 @@ +/etc/csys/swap \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/sys/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/sys/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/sys/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/sys/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/sys/on.params new file mode 100644 index 00000000..a6b724ca --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/sys/on.params @@ -0,0 +1,4 @@ +sysfs +-t +sysfs +/sys diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/udev/off b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/udev/off new file mode 120000 index 00000000..a6ebdff7 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/udev/off @@ -0,0 +1 @@ +/bin/umount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/udev/off.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/udev/off.params new file mode 100644 index 00000000..f42e49b2 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/udev/off.params @@ -0,0 +1 @@ +/dev diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/udev/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/udev/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/udev/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/udev/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/udev/on.params new file mode 100644 index 00000000..6f076f24 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/udev/on.params @@ -0,0 +1,4 @@ +udev +-t +tmpfs +/dev diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/wants/proc b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/wants/proc new file mode 120000 index 00000000..a74efc41 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/wants/proc @@ -0,0 +1 @@ +../proc \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/wants/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/wants/root new file mode 120000 index 00000000..a830569b --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/wants/root @@ -0,0 +1 @@ +../root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/wants/swap b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/wants/swap new file mode 120000 index 00000000..6f0f4e0a --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/wants/swap @@ -0,0 +1 @@ +../swap/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/wants/sys b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/wants/sys new file mode 120000 index 00000000..587910c7 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/wants/sys @@ -0,0 +1 @@ +../sys \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/wants/udev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/wants/udev new file mode 120000 index 00000000..ada83a6f --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/mount/wants/udev @@ -0,0 +1 @@ +../udev \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0.static/driver/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0.static/driver/on new file mode 120000 index 00000000..722ec623 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0.static/driver/on @@ -0,0 +1 @@ +/sbin/modprobe \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0.static/driver/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0.static/driver/on.params new file mode 100644 index 00000000..aa8f1e6d --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0.static/driver/on.params @@ -0,0 +1 @@ +e100 diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0.static/needs/driver b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0.static/needs/driver new file mode 120000 index 00000000..1f094b50 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0.static/needs/driver @@ -0,0 +1 @@ +../driver \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0.static/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0.static/on new file mode 120000 index 00000000..e27843a4 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0.static/on @@ -0,0 +1 @@ +/sbin/ifconfig \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0.static/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0.static/on.params new file mode 120000 index 00000000..8c3543d6 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0.static/on.params @@ -0,0 +1 @@ +/etc/csys/eth0.static \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/driver/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/driver/on new file mode 120000 index 00000000..722ec623 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/driver/on @@ -0,0 +1 @@ +/sbin/modprobe \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/driver/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/driver/on.params new file mode 100644 index 00000000..aa8f1e6d --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/driver/on.params @@ -0,0 +1 @@ +e100 diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/needs/driver b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/needs/driver new file mode 120000 index 00000000..1f094b50 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/needs/driver @@ -0,0 +1 @@ +../driver \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/needs/mount-root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/needs/mount-root new file mode 120000 index 00000000..b46717bb --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/needs/mount-root @@ -0,0 +1 @@ +../../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/on new file mode 120000 index 00000000..639430c4 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/on @@ -0,0 +1 @@ +/sbin/udhcpc \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/on.params new file mode 100644 index 00000000..105c5f3d --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/on.params @@ -0,0 +1 @@ +-f diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/eth0/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/hostname/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/hostname/on new file mode 120000 index 00000000..5779a119 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/hostname/on @@ -0,0 +1 @@ +/bin/hostname \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/hostname/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/hostname/on.params new file mode 120000 index 00000000..c5c298ce --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/hostname/on.params @@ -0,0 +1 @@ +/etc/csys/hostname \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/lo/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/lo/on new file mode 120000 index 00000000..e27843a4 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/lo/on @@ -0,0 +1 @@ +/sbin/ifconfig \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/lo/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/lo/on.params new file mode 100644 index 00000000..e58476c5 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/lo/on.params @@ -0,0 +1,3 @@ +lo +127.0.0.1 +up diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/wants/eth0 b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/wants/eth0 new file mode 120000 index 00000000..b104cd79 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/wants/eth0 @@ -0,0 +1 @@ +../eth0 \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/wants/hostname b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/wants/hostname new file mode 120000 index 00000000..83ce34f6 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/wants/hostname @@ -0,0 +1 @@ +../hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/wants/lo b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/wants/lo new file mode 120000 index 00000000..13eee547 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/network/wants/lo @@ -0,0 +1 @@ +../lo/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/opensshd/needs/root b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/opensshd/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/opensshd/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/opensshd/needs/udev b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/opensshd/needs/udev new file mode 120000 index 00000000..3ec64dc1 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/opensshd/needs/udev @@ -0,0 +1 @@ +../../../local-tuning/udev/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/opensshd/on b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/opensshd/on new file mode 120000 index 00000000..cf9865a6 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/opensshd/on @@ -0,0 +1 @@ +/usr/sbin/sshd \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/opensshd/on.params b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/opensshd/on.params new file mode 100644 index 00000000..eb11be00 --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/opensshd/on.params @@ -0,0 +1 @@ +-D diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/opensshd/respawn b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/opensshd/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/opensshd/wants/network b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/opensshd/wants/network new file mode 120000 index 00000000..49e0fadd --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/opensshd/wants/network @@ -0,0 +1 @@ +../../../network/ \ No newline at end of file diff --git a/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/wants/opensshd b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/wants/opensshd new file mode 120000 index 00000000..b90c7a1c --- /dev/null +++ b/software/cinit/samples/x86/hydrogenium/cinit-conf-hydrogenium-20051103/cinit/remote-services/wants/opensshd @@ -0,0 +1 @@ +../opensshd \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/README b/software/cinit/samples/x86/pc-it-nico/README new file mode 100644 index 00000000..f03fe66b --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/README @@ -0,0 +1,2 @@ +This is the configuration I used to test in UML +(User-Mode-Linux) and my standard x86 workstation. diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01.tar.bz2 b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01.tar.bz2 new file mode 100644 index 00000000..ae6b83c3 Binary files /dev/null and b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01.tar.bz2 differ diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/1/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/1/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/1/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/1/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/1/on.params new file mode 100644 index 00000000..1b69fdaa --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/1/on.params @@ -0,0 +1,3 @@ +38400 +tty1 +linux diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/1/respawn b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/1/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/2/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/2/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/2/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/2/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/2/on.params new file mode 100644 index 00000000..78694004 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/2/on.params @@ -0,0 +1,3 @@ +38400 +tty2 +linux diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/2/respawn b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/2/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/3/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/3/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/3/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/3/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/3/on.params new file mode 100644 index 00000000..370f9846 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/3/on.params @@ -0,0 +1,3 @@ +38400 +tty3 +linux diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/3/respawn b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/3/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/4/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/4/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/4/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/4/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/4/on.params new file mode 100644 index 00000000..d69982d6 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/4/on.params @@ -0,0 +1,3 @@ +38400 +tty4 +linux diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/4/respawn b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/4/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/5/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/5/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/5/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/5/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/5/on.params new file mode 100644 index 00000000..9fd834ed --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/5/on.params @@ -0,0 +1,3 @@ +38400 +tty5 +linux diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/5/respawn b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/5/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/6/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/6/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/6/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/6/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/6/on.params new file mode 100644 index 00000000..08274a3c --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/6/on.params @@ -0,0 +1,3 @@ +38400 +tty6 +linux diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/6/respawn b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/6/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/7/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/7/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/7/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/7/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/7/on.params new file mode 100644 index 00000000..69efe75b --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/7/on.params @@ -0,0 +1,3 @@ +38400 +tty7 +linux diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/7/respawn b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/7/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/8/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/8/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/8/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/8/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/8/on.params new file mode 100644 index 00000000..8001a552 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/8/on.params @@ -0,0 +1,3 @@ +38400 +tty8 +linux diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/8/respawn b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/8/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/README b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/README new file mode 100644 index 00000000..e629777b --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/README @@ -0,0 +1,4 @@ +This directory contains all the gettys you want to start. +Gettys should be linked from wants/. Put dependencies all +gettys need into needs/. This way you don't have to repeat +it for every getty. diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/needs/mount-root-rw b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/needs/mount-root-rw new file mode 120000 index 00000000..d83622e9 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/needs/mount-root-rw @@ -0,0 +1 @@ +../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/needs/set-hostname b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/needs/set-hostname new file mode 120000 index 00000000..1d4b063a --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/needs/set-hostname @@ -0,0 +1 @@ +../../network/hostname \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/2 b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/2 new file mode 120000 index 00000000..5fae01fc --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/2 @@ -0,0 +1 @@ +../2 \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/3 b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/3 new file mode 120000 index 00000000..a334e9e8 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/3 @@ -0,0 +1 @@ +../3 \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/4 b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/4 new file mode 120000 index 00000000..481d918e --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/4 @@ -0,0 +1 @@ +../4 \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/5 b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/5 new file mode 120000 index 00000000..00f5743b --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/5 @@ -0,0 +1 @@ +../5 \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/6 b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/6 new file mode 120000 index 00000000..2b98e9c3 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/6 @@ -0,0 +1 @@ +../6 \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/7 b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/7 new file mode 120000 index 00000000..4eb54964 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/getty/wants/7 @@ -0,0 +1 @@ +../7 \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/README b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/README new file mode 100644 index 00000000..a6963f6e --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/README @@ -0,0 +1 @@ +This is the main service, all services it depends on will be started. diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/needs/getty b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/needs/getty new file mode 120000 index 00000000..11236405 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/needs/getty @@ -0,0 +1 @@ +../../getty \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/needs/local-tuning b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/needs/local-tuning new file mode 120000 index 00000000..b0317c76 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/needs/local-tuning @@ -0,0 +1 @@ +../../local-tuning \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/needs/mount b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/needs/mount new file mode 120000 index 00000000..b05f7981 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/needs/mount @@ -0,0 +1 @@ +../../mount \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/on new file mode 120000 index 00000000..7bbf7ccd --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/on @@ -0,0 +1 @@ +/bin/echo \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/on.params new file mode 100644 index 00000000..6e271318 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/on.params @@ -0,0 +1 @@ +*** cinit successfully started *** diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/wants/network b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/wants/network new file mode 120000 index 00000000..6c993356 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/wants/network @@ -0,0 +1 @@ +../../network/ \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/wants/remote-services b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/wants/remote-services new file mode 120000 index 00000000..64edcfac --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/init/wants/remote-services @@ -0,0 +1 @@ +../../remote-services/ \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/README b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/README new file mode 100644 index 00000000..233a6018 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/README @@ -0,0 +1,3 @@ +This service should be used to cleanup the system and set local +configuration +(like: Setting keyboard layout, removing temporary files, ...) diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/cleanup/README b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/cleanup/README new file mode 100644 index 00000000..b6d0420c --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/cleanup/README @@ -0,0 +1 @@ +Cleaning up old files diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/cleanup/needs/mount-root b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/cleanup/needs/mount-root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/cleanup/needs/mount-root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/cleanup/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/cleanup/on new file mode 100755 index 00000000..83ea980d --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/cleanup/on @@ -0,0 +1,8 @@ +#!/bin/sh +rm -f /etc/mtab /var/run/* 2>/dev/null +touch /etc/mtab +#ln -s /proc/mounts /etc/mtab +touch /var/run/utmp +rm -rf /tmp +mkdir /tmp +chmod 1777 /tmp diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/clock/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/clock/on new file mode 120000 index 00000000..ef942118 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/clock/on @@ -0,0 +1 @@ +/sbin/hwclock \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/clock/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/clock/on.params new file mode 100644 index 00000000..5b3577cc --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/clock/on.params @@ -0,0 +1 @@ +--hctosys diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/disable-cad/README b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/disable-cad/README new file mode 100644 index 00000000..ba0f1b74 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/disable-cad/README @@ -0,0 +1 @@ +Disable Control-Alt-Del to Hard-reboot. diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/disable-cad/needs/proc b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/disable-cad/needs/proc new file mode 120000 index 00000000..d9ee6dd9 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/disable-cad/needs/proc @@ -0,0 +1 @@ +../../../mount/proc \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/disable-cad/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/disable-cad/on new file mode 100755 index 00000000..25e3cfdc --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/disable-cad/on @@ -0,0 +1,3 @@ +#!/bin/sh + +echo 0 > /proc/sys/kernel/ctrl-alt-del diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/keyboard/README b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/keyboard/README new file mode 100644 index 00000000..ebfdd2ff --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/keyboard/README @@ -0,0 +1,2 @@ +on.params should be linked to /etc/conf.d/keyboard or wherever +you distribution puts the configuration containing your keyboard-layout. diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/keyboard/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/keyboard/on new file mode 120000 index 00000000..a5ce029b --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/keyboard/on @@ -0,0 +1 @@ +/bin/loadkeys \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/keyboard/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/keyboard/on.params new file mode 100644 index 00000000..0e519366 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/keyboard/on.params @@ -0,0 +1 @@ +dvorak diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/needs/cleanup b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/needs/cleanup new file mode 120000 index 00000000..89d1336d --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/needs/cleanup @@ -0,0 +1 @@ +../cleanup \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/needs/clock b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/needs/clock new file mode 120000 index 00000000..c60afa2b --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/needs/clock @@ -0,0 +1 @@ +../clock \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/needs/disable-cad b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/needs/disable-cad new file mode 120000 index 00000000..1a101ccb --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/needs/disable-cad @@ -0,0 +1 @@ +../disable-cad \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/needs/keyboard b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/needs/keyboard new file mode 120000 index 00000000..e6768c34 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/needs/keyboard @@ -0,0 +1 @@ +../keyboard \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/needs/quiet-kernel b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/needs/quiet-kernel new file mode 120000 index 00000000..2867c76d --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/needs/quiet-kernel @@ -0,0 +1 @@ +../quiet-kernel \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/quiet-kernel/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/quiet-kernel/on new file mode 120000 index 00000000..09bd56b7 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/quiet-kernel/on @@ -0,0 +1 @@ +/bin/dmesg \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/quiet-kernel/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/quiet-kernel/on.params new file mode 100644 index 00000000..d22a4869 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/local-tuning/quiet-kernel/on.params @@ -0,0 +1 @@ +-n1 diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/README b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/README new file mode 100644 index 00000000..2fc49339 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/README @@ -0,0 +1,2 @@ +Put everything you mount into this subdirectory. This +is not a must, but helps to have a clean cinit configuration. diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/fsck/root/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/fsck/root/on new file mode 100755 index 00000000..4228407a --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/fsck/root/on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius / cinit-example +# one could also try to pass regexp via command line +# you need one fsck service for every device + +FSTAB=/etc/fstab + +export PATH=/bin:/sbin:/usr/bin:/usr/sbin + +# get device for mountpoint / from fstab +DEV=$(grep -v '^#' "$FSTAB" | awk '$2 ~ /^\/$/ { print $1 } ') + +# get device for mounpoint /home +# DEV=$(grep -v '^#' "$FSTAB" | awk '$2 ~ /^\/home$/ { print $1 } ') + +# get fsck flag for mountpoint /home from fstab +# FSCK=$(grep -v '^#' "$FSTAB" | awk '$2 ~ /^\home/$/ { print $6 } ') + +# get fsck flag for mountpoint / from fstab +FSCK=$(grep -v '^#' "$FSTAB" | awk '$2 ~ /^\/$/ { print $6 } ') + +if [ "$FSCK" = "1" ]; then + fsck $DEV +fi diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/needs/cleanup b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/needs/cleanup new file mode 120000 index 00000000..ed47b135 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/needs/cleanup @@ -0,0 +1 @@ +../../local-tuning/cleanup \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/needs/disable-cad b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/needs/disable-cad new file mode 120000 index 00000000..d4b67e1d --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/needs/disable-cad @@ -0,0 +1 @@ +../../local-tuning/disable-cad \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/proc/README b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/proc/README new file mode 100644 index 00000000..f35c09d2 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/proc/README @@ -0,0 +1,3 @@ +This mount contains the complete parameters, as there +are some distributions out there, which do not put it +into /etc/fstab. Sad, broken, but true. diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/proc/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/proc/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/proc/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/proc/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/proc/on.params new file mode 100644 index 00000000..2305d022 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/proc/on.params @@ -0,0 +1,4 @@ +proc +-t +proc +/proc diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/root/README b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/root/README new file mode 100644 index 00000000..b81f6582 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/root/README @@ -0,0 +1 @@ +Remount the already read-only mounted root (/). diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/root/needs/fsck b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/root/needs/fsck new file mode 120000 index 00000000..d338580b --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/root/needs/fsck @@ -0,0 +1 @@ +../../fsck/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/root/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/root/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/root/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/root/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/root/on.params new file mode 100644 index 00000000..6a052263 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/root/on.params @@ -0,0 +1,4 @@ +-n +-o +remount,rw +/ diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/sys/README b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/sys/README new file mode 100644 index 00000000..f35c09d2 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/sys/README @@ -0,0 +1,3 @@ +This mount contains the complete parameters, as there +are some distributions out there, which do not put it +into /etc/fstab. Sad, broken, but true. diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/sys/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/sys/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/sys/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/sys/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/sys/on.params new file mode 100644 index 00000000..a6b724ca --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/sys/on.params @@ -0,0 +1,4 @@ +sysfs +-t +sysfs +/sys diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/wants/proc b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/wants/proc new file mode 120000 index 00000000..a74efc41 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/wants/proc @@ -0,0 +1 @@ +../proc \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/wants/root b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/wants/root new file mode 120000 index 00000000..3afde589 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/wants/root @@ -0,0 +1 @@ +../root \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/wants/sys b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/wants/sys new file mode 120000 index 00000000..587910c7 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/mount/wants/sys @@ -0,0 +1 @@ +../sys \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/README b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/README new file mode 100644 index 00000000..8711e2a6 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/README @@ -0,0 +1,3 @@ +Setup networking. + +This includes setting up the hostname and firing up devices. diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/hostname/README b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/hostname/README new file mode 100644 index 00000000..f192c604 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/hostname/README @@ -0,0 +1,2 @@ +on.params could be linked to /etc/hostname, /etc/conf.d/hostname +or whereever your distribution stores the configured hostname. diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/hostname/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/hostname/on new file mode 120000 index 00000000..5779a119 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/hostname/on @@ -0,0 +1 @@ +/bin/hostname \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/hostname/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/hostname/on.params new file mode 100644 index 00000000..3614fe72 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/hostname/on.params @@ -0,0 +1 @@ +cinit-host diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/lo/README b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/lo/README new file mode 100644 index 00000000..4e933b33 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/lo/README @@ -0,0 +1,3 @@ +Setup lo. + +lo is the loopback device and should have 127.0.0.1/8 assigned. diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/lo/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/lo/on new file mode 120000 index 00000000..e27843a4 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/lo/on @@ -0,0 +1 @@ +/sbin/ifconfig \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/lo/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/lo/on.params new file mode 100644 index 00000000..f6dc805a --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/lo/on.params @@ -0,0 +1,5 @@ +lo +127.0.0.1 +netmask +255.0.0.0 +up diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/needs/hostname b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/needs/hostname new file mode 120000 index 00000000..57f501e6 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/needs/hostname @@ -0,0 +1 @@ +../hostname \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/wants/lo b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/wants/lo new file mode 120000 index 00000000..7918baac --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/network/wants/lo @@ -0,0 +1 @@ +../lo \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/remote-services/README b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/remote-services/README new file mode 100644 index 00000000..bbec0110 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/remote-services/README @@ -0,0 +1,2 @@ +Put the services into here, which are reachable from outside +(like DNS-, Samba-, SMTP-, rootshell-, NFS- or NIS-Servers). diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/remote-services/openssh/README b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/remote-services/openssh/README new file mode 100644 index 00000000..d0bc2afa --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/remote-services/openssh/README @@ -0,0 +1,5 @@ +Startup OpenSSH. + +We use -D, so it does not fork itself into background. + +ssh normally __wants__ networking, but will also start without. diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/remote-services/openssh/on b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/remote-services/openssh/on new file mode 120000 index 00000000..cf9865a6 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/remote-services/openssh/on @@ -0,0 +1 @@ +/usr/sbin/sshd \ No newline at end of file diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/remote-services/openssh/on.params b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/remote-services/openssh/on.params new file mode 100644 index 00000000..eb11be00 --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/remote-services/openssh/on.params @@ -0,0 +1 @@ +-D diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/remote-services/openssh/respawn b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/remote-services/openssh/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/remote-services/wants/openssh b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/remote-services/wants/openssh new file mode 120000 index 00000000..693231dc --- /dev/null +++ b/software/cinit/samples/x86/pc-it-nico/cinit-conf-x86-20050622-01/remote-services/wants/openssh @@ -0,0 +1 @@ +../openssh \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/README b/software/cinit/samples/x86/scice/README new file mode 100644 index 00000000..e628b761 --- /dev/null +++ b/software/cinit/samples/x86/scice/README @@ -0,0 +1 @@ +This configuration is from my Transmeta notebook named 'scice'. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01.tar.bz2 b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01.tar.bz2 new file mode 100644 index 00000000..c3db0a15 Binary files /dev/null and b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01.tar.bz2 differ diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/README new file mode 100644 index 00000000..a5e0e293 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/README @@ -0,0 +1,13 @@ +cinit configuration (x86/debian) + +- There are many services, which are not started, but which could be used + by you (dmcrypt,mount/home/fsck...) +- /home is mounted without fsck, as the fsck for reiserfs is broken here +- syslogd seems to be broken, it does not honour -n +- syslog-ng accepts -F, so using that +- atd is broken, do not start it (it does not have a not-background + flag either) + +-- Nico Schottelius, 2005-06-27 + + diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/1/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/1/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/1/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/1/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/1/on.params new file mode 100644 index 00000000..1b69fdaa --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/1/on.params @@ -0,0 +1,3 @@ +38400 +tty1 +linux diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/1/respawn b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/1/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/2/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/2/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/2/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/2/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/2/on.params new file mode 100644 index 00000000..78694004 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/2/on.params @@ -0,0 +1,3 @@ +38400 +tty2 +linux diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/2/respawn b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/2/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/3/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/3/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/3/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/3/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/3/on.params new file mode 100644 index 00000000..370f9846 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/3/on.params @@ -0,0 +1,3 @@ +38400 +tty3 +linux diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/3/respawn b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/3/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/4/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/4/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/4/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/4/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/4/on.params new file mode 100644 index 00000000..d69982d6 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/4/on.params @@ -0,0 +1,3 @@ +38400 +tty4 +linux diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/4/respawn b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/4/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/5/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/5/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/5/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/5/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/5/on.params new file mode 100644 index 00000000..9fd834ed --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/5/on.params @@ -0,0 +1,3 @@ +38400 +tty5 +linux diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/5/respawn b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/5/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/6/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/6/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/6/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/6/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/6/on.params new file mode 100644 index 00000000..08274a3c --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/6/on.params @@ -0,0 +1,3 @@ +38400 +tty6 +linux diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/6/respawn b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/6/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/7/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/7/on new file mode 120000 index 00000000..43d48c29 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/7/on @@ -0,0 +1 @@ +/sbin/getty \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/7/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/7/on.params new file mode 100644 index 00000000..69efe75b --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/7/on.params @@ -0,0 +1,3 @@ +38400 +tty7 +linux diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/7/respawn b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/7/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/README new file mode 100644 index 00000000..e629777b --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/README @@ -0,0 +1,4 @@ +This directory contains all the gettys you want to start. +Gettys should be linked from wants/. Put dependencies all +gettys need into needs/. This way you don't have to repeat +it for every getty. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/needs/mount-root-rw b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/needs/mount-root-rw new file mode 120000 index 00000000..d83622e9 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/needs/mount-root-rw @@ -0,0 +1 @@ +../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/needs/set-hostname b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/needs/set-hostname new file mode 120000 index 00000000..1d4b063a --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/needs/set-hostname @@ -0,0 +1 @@ +../../network/hostname \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/2 b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/2 new file mode 120000 index 00000000..5fae01fc --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/2 @@ -0,0 +1 @@ +../2 \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/3 b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/3 new file mode 120000 index 00000000..a334e9e8 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/3 @@ -0,0 +1 @@ +../3 \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/4 b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/4 new file mode 120000 index 00000000..481d918e --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/4 @@ -0,0 +1 @@ +../4 \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/5 b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/5 new file mode 120000 index 00000000..00f5743b --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/5 @@ -0,0 +1 @@ +../5 \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/6 b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/6 new file mode 120000 index 00000000..2b98e9c3 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/6 @@ -0,0 +1 @@ +../6 \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/7 b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/7 new file mode 120000 index 00000000..4eb54964 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/getty/wants/7 @@ -0,0 +1 @@ +../7 \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/README new file mode 100644 index 00000000..a6963f6e --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/README @@ -0,0 +1 @@ +This is the main service, all services it depends on will be started. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/getty b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/getty new file mode 120000 index 00000000..11236405 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/getty @@ -0,0 +1 @@ +../../getty \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/local-services b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/local-services new file mode 120000 index 00000000..a1614c0f --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/local-services @@ -0,0 +1 @@ +../../local-services \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/local-tuning b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/local-tuning new file mode 120000 index 00000000..b0317c76 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/local-tuning @@ -0,0 +1 @@ +../../local-tuning \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/mount b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/mount new file mode 120000 index 00000000..b05f7981 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/mount @@ -0,0 +1 @@ +../../mount \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/network b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/network new file mode 120000 index 00000000..6c993356 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/network @@ -0,0 +1 @@ +../../network/ \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/remote-services b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/remote-services new file mode 120000 index 00000000..ccfedf04 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/needs/remote-services @@ -0,0 +1 @@ +../../remote-services \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/on new file mode 120000 index 00000000..7bbf7ccd --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/on @@ -0,0 +1 @@ +/bin/echo \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/on.params new file mode 100644 index 00000000..6e271318 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/on.params @@ -0,0 +1 @@ +*** cinit successfully started *** diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/wants/local-services b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/wants/local-services new file mode 120000 index 00000000..a1614c0f --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/wants/local-services @@ -0,0 +1 @@ +../../local-services \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/wants/network b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/wants/network new file mode 120000 index 00000000..6c993356 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/wants/network @@ -0,0 +1 @@ +../../network/ \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/wants/remote-services b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/wants/remote-services new file mode 120000 index 00000000..64edcfac --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/init/wants/remote-services @@ -0,0 +1 @@ +../../remote-services/ \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/README new file mode 100644 index 00000000..9afd8864 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/README @@ -0,0 +1,4 @@ +local-services/ + Put services inside here, which are only available from + your system (like GPM, MTA (which does not listen on tcp/25), + power management daemons, etc.) diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/atd/needs/root b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/atd/needs/root new file mode 120000 index 00000000..b46717bb --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/atd/needs/root @@ -0,0 +1 @@ +../../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/atd/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/atd/on new file mode 120000 index 00000000..f08d7140 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/atd/on @@ -0,0 +1 @@ +/sbin/cinit.wait.for.daemon \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/atd/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/atd/on.params new file mode 100644 index 00000000..1e78a427 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/atd/on.params @@ -0,0 +1,2 @@ +/var/run/atd.pid +/usr/sbin/atd diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/atd/respawn b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/atd/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/cron/needs/root b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/cron/needs/root new file mode 120000 index 00000000..b46717bb --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/cron/needs/root @@ -0,0 +1 @@ +../../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/cron/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/cron/on new file mode 120000 index 00000000..d10c3eaf --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/cron/on @@ -0,0 +1 @@ +/usr/sbin/cron \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/cron/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/cron/on.params new file mode 100644 index 00000000..105c5f3d --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/cron/on.params @@ -0,0 +1 @@ +-f diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/gdm/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/gdm/README new file mode 100644 index 00000000..79185286 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/gdm/README @@ -0,0 +1 @@ +Start the display manager gdm diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/gdm/needs/home b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/gdm/needs/home new file mode 120000 index 00000000..6286b932 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/gdm/needs/home @@ -0,0 +1 @@ +../../../mount/home \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/gdm/needs/root b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/gdm/needs/root new file mode 120000 index 00000000..b46717bb --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/gdm/needs/root @@ -0,0 +1 @@ +../../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/gdm/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/gdm/on new file mode 120000 index 00000000..52cab850 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/gdm/on @@ -0,0 +1 @@ +/usr/bin/gdm \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/gdm/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/gdm/on.params new file mode 100644 index 00000000..8a7b3dd9 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/gdm/on.params @@ -0,0 +1 @@ +-nodaemon diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/gdm/respawn b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/gdm/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslog-ng/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslog-ng/README new file mode 100644 index 00000000..9768f544 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslog-ng/README @@ -0,0 +1 @@ +Start the syslogging service (syslog-ng). diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslog-ng/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslog-ng/on new file mode 120000 index 00000000..099ec19b --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslog-ng/on @@ -0,0 +1 @@ +/sbin/syslog-ng \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslog-ng/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslog-ng/on.params new file mode 100644 index 00000000..ee1f6c5c --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslog-ng/on.params @@ -0,0 +1 @@ +-F diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslog-ng/respawn b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslog-ng/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslogd/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslogd/on new file mode 120000 index 00000000..83411f1b --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslogd/on @@ -0,0 +1 @@ +/sbin/syslogd \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslogd/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslogd/on.params new file mode 100644 index 00000000..e61a275a --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslogd/on.params @@ -0,0 +1 @@ +-n diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslogd/respawn b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/syslogd/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/wants/cron b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/wants/cron new file mode 120000 index 00000000..5b4fb9f5 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/wants/cron @@ -0,0 +1 @@ +../cron \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/wants/gdm b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/wants/gdm new file mode 120000 index 00000000..b9601cf5 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/wants/gdm @@ -0,0 +1 @@ +../gdm \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/wants/qmail b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/wants/qmail new file mode 120000 index 00000000..fb7e8c86 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/wants/qmail @@ -0,0 +1 @@ +../qmail \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/wants/syslog-ng b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/wants/syslog-ng new file mode 120000 index 00000000..5e8f5c1c --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-services/wants/syslog-ng @@ -0,0 +1 @@ +../syslog-ng \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/README new file mode 100644 index 00000000..233a6018 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/README @@ -0,0 +1,3 @@ +This service should be used to cleanup the system and set local +configuration +(like: Setting keyboard layout, removing temporary files, ...) diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/cleanup/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/cleanup/README new file mode 100644 index 00000000..b6d0420c --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/cleanup/README @@ -0,0 +1 @@ +Cleaning up old files diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/cleanup/needs/mount-root b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/cleanup/needs/mount-root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/cleanup/needs/mount-root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/cleanup/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/cleanup/on new file mode 100755 index 00000000..2aa82147 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/cleanup/on @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius / cinit-example +# A somehow minimalistic cleanup script + +rm -f /etc/mtab /var/run/* 2>/dev/null +touch /var/run/utmp +#touch /etc/mtab +# Linux specific +ln -s /proc/mounts /etc/mtab + +# clean tmp and everything below it +rm -rf /tmp +mkdir /tmp +chmod 1777 /tmp diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/README new file mode 100644 index 00000000..cdc4e5c1 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/README @@ -0,0 +1 @@ +Restore clock from hardware clock - Is this really needed? diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/driver/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/driver/on new file mode 120000 index 00000000..722ec623 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/driver/on @@ -0,0 +1 @@ +/sbin/modprobe \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/driver/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/driver/on.params new file mode 100644 index 00000000..a05f08dd --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/driver/on.params @@ -0,0 +1 @@ +genrtc diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/needs/driver b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/needs/driver new file mode 120000 index 00000000..1f094b50 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/needs/driver @@ -0,0 +1 @@ +../driver \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/on new file mode 120000 index 00000000..ef942118 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/on @@ -0,0 +1 @@ +/sbin/hwclock \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/on.params new file mode 100644 index 00000000..5b3577cc --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/clock/on.params @@ -0,0 +1 @@ +--hctosys diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/disable-cad/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/disable-cad/README new file mode 100644 index 00000000..b26f4fa5 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/disable-cad/README @@ -0,0 +1,3 @@ +Disable Control-Alt-Del to Hard-reboot. +I don't know whether one can use it on ppc, but the kernel provides it, +so we disable it. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/disable-cad/needs/proc b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/disable-cad/needs/proc new file mode 120000 index 00000000..d9ee6dd9 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/disable-cad/needs/proc @@ -0,0 +1 @@ +../../../mount/proc \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/disable-cad/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/disable-cad/on new file mode 100755 index 00000000..25e3cfdc --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/disable-cad/on @@ -0,0 +1,3 @@ +#!/bin/sh + +echo 0 > /proc/sys/kernel/ctrl-alt-del diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/hotplug/needs/mount-proc b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/hotplug/needs/mount-proc new file mode 120000 index 00000000..3789ea83 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/hotplug/needs/mount-proc @@ -0,0 +1 @@ +../../../mount/proc/ \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/hotplug/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/hotplug/on new file mode 120000 index 00000000..015d9f5d --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/hotplug/on @@ -0,0 +1 @@ +/etc/init.d/hotplug \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/hotplug/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/hotplug/on.params new file mode 100644 index 00000000..d44e18fb --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/hotplug/on.params @@ -0,0 +1 @@ +start diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/kbd-rate/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/kbd-rate/README new file mode 100644 index 00000000..a6ab4d90 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/kbd-rate/README @@ -0,0 +1,2 @@ +kbd-rate/ + Setup how fast the keyboard should respond. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/kbd-rate/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/kbd-rate/on new file mode 120000 index 00000000..df67b008 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/kbd-rate/on @@ -0,0 +1 @@ +/usr/bin/kbdrate \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/kbd-rate/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/kbd-rate/on.params new file mode 100644 index 00000000..b984ba1e --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/kbd-rate/on.params @@ -0,0 +1,2 @@ +-r +35 diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/keyboard/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/keyboard/README new file mode 100644 index 00000000..ebfdd2ff --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/keyboard/README @@ -0,0 +1,2 @@ +on.params should be linked to /etc/conf.d/keyboard or wherever +you distribution puts the configuration containing your keyboard-layout. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/keyboard/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/keyboard/on new file mode 120000 index 00000000..a5ce029b --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/keyboard/on @@ -0,0 +1 @@ +/bin/loadkeys \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/keyboard/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/keyboard/on.params new file mode 100644 index 00000000..0e519366 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/keyboard/on.params @@ -0,0 +1 @@ +dvorak diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/cleanup b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/cleanup new file mode 120000 index 00000000..89d1336d --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/cleanup @@ -0,0 +1 @@ +../cleanup \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/clock b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/clock new file mode 120000 index 00000000..c60afa2b --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/clock @@ -0,0 +1 @@ +../clock \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/disable-cad b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/disable-cad new file mode 120000 index 00000000..1a101ccb --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/disable-cad @@ -0,0 +1 @@ +../disable-cad \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/keyboard b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/keyboard new file mode 120000 index 00000000..e6768c34 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/keyboard @@ -0,0 +1 @@ +../keyboard \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/quiet-kernel b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/quiet-kernel new file mode 120000 index 00000000..2867c76d --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/quiet-kernel @@ -0,0 +1 @@ +../quiet-kernel \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/udev b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/udev new file mode 120000 index 00000000..ada83a6f --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/needs/udev @@ -0,0 +1 @@ +../udev \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/quiet-kernel/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/quiet-kernel/on new file mode 120000 index 00000000..09bd56b7 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/quiet-kernel/on @@ -0,0 +1 @@ +/bin/dmesg \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/quiet-kernel/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/quiet-kernel/on.params new file mode 100644 index 00000000..d22a4869 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/quiet-kernel/on.params @@ -0,0 +1 @@ +-n1 diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/sound/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/sound/README new file mode 100644 index 00000000..05902ee8 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/sound/README @@ -0,0 +1 @@ +Restore values saved on boot, save values on shutdown. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/sound/off b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/sound/off new file mode 120000 index 00000000..db608c9e --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/sound/off @@ -0,0 +1 @@ +/usr/sbin/alsactl \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/sound/off.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/sound/off.params new file mode 100644 index 00000000..b25ca904 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/sound/off.params @@ -0,0 +1 @@ +store diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/sound/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/sound/on new file mode 120000 index 00000000..db608c9e --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/sound/on @@ -0,0 +1 @@ +/usr/sbin/alsactl \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/sound/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/sound/on.params new file mode 100644 index 00000000..a9db91d1 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/sound/on.params @@ -0,0 +1 @@ +restore diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/udev/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/udev/README new file mode 100644 index 00000000..9f87dd6e --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/udev/README @@ -0,0 +1,4 @@ +Start the udev "service" and mount /dev. + +udevstart needs sysfs to find devices, udev needs to be written +into /proc and devices are created in temporary /dev (RAM!). diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/udev/needs/proc b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/udev/needs/proc new file mode 120000 index 00000000..d9ee6dd9 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/udev/needs/proc @@ -0,0 +1 @@ +../../../mount/proc \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/udev/needs/sys b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/udev/needs/sys new file mode 120000 index 00000000..5c2c655d --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/udev/needs/sys @@ -0,0 +1 @@ +../../../mount/sys \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/udev/needs/udev b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/udev/needs/udev new file mode 120000 index 00000000..36ea9bb0 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/udev/needs/udev @@ -0,0 +1 @@ +../../../mount/udev \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/udev/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/udev/on new file mode 100755 index 00000000..58775696 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/udev/on @@ -0,0 +1,14 @@ +#!/bin/sh +# Nico Schottelius / cinit-example +# Start udev + +PATH=/bin:/sbin:/usr/bin:/usr/sbin + +UDEVSTART=/sbin/udevstart +UDEVBIN=/sbin/udev +PROC_HOTPLUG=/proc/sys/kernel/hotplug + +$UDEVSTART +echo "$UDEVBIN" > "$PROC_HOTPLUG" + +mkdir /dev/pts diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/wants/hotplug b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/wants/hotplug new file mode 120000 index 00000000..3e4d3f6b --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/wants/hotplug @@ -0,0 +1 @@ +../hotplug \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/wants/kbd-rate b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/wants/kbd-rate new file mode 120000 index 00000000..9458dacb --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/wants/kbd-rate @@ -0,0 +1 @@ +../kbd-rate \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/wants/sound b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/wants/sound new file mode 120000 index 00000000..2cc9f360 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/local-tuning/wants/sound @@ -0,0 +1 @@ +../sound \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/README new file mode 100644 index 00000000..6b624ea1 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/README @@ -0,0 +1,5 @@ +Put everything you mount into this subdirectory. This +is not a must, but helps to have a clean cinit configuration. + +Add local-tuning/cleanup to every mount call, which is not +the root device. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/fsck/root/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/fsck/root/on new file mode 100755 index 00000000..4228407a --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/fsck/root/on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius / cinit-example +# one could also try to pass regexp via command line +# you need one fsck service for every device + +FSTAB=/etc/fstab + +export PATH=/bin:/sbin:/usr/bin:/usr/sbin + +# get device for mountpoint / from fstab +DEV=$(grep -v '^#' "$FSTAB" | awk '$2 ~ /^\/$/ { print $1 } ') + +# get device for mounpoint /home +# DEV=$(grep -v '^#' "$FSTAB" | awk '$2 ~ /^\/home$/ { print $1 } ') + +# get fsck flag for mountpoint /home from fstab +# FSCK=$(grep -v '^#' "$FSTAB" | awk '$2 ~ /^\home/$/ { print $6 } ') + +# get fsck flag for mountpoint / from fstab +FSCK=$(grep -v '^#' "$FSTAB" | awk '$2 ~ /^\/$/ { print $6 } ') + +if [ "$FSCK" = "1" ]; then + fsck $DEV +fi diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/README new file mode 100644 index 00000000..9c2083cd --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/README @@ -0,0 +1 @@ +Mount /home, which is encrypted (dm-crypt) after checking (fsck) it. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/dmcrypt/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/dmcrypt/README new file mode 100644 index 00000000..7389f2f3 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/dmcrypt/README @@ -0,0 +1 @@ +Create /dev/mapper/home with cryptsetup diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/dmcrypt/needs/udev b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/dmcrypt/needs/udev new file mode 120000 index 00000000..3d36cb50 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/dmcrypt/needs/udev @@ -0,0 +1 @@ +../../../../local-tuning/udev/ \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/dmcrypt/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/dmcrypt/on new file mode 120000 index 00000000..801220b5 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/dmcrypt/on @@ -0,0 +1 @@ +/bin/cryptsetup \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/dmcrypt/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/dmcrypt/on.params new file mode 100644 index 00000000..2e94dc3f --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/dmcrypt/on.params @@ -0,0 +1,3 @@ +create +home +/dev/hda7 diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/fsck/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/fsck/README new file mode 100644 index 00000000..774c660a --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/fsck/README @@ -0,0 +1 @@ +Check /dev/mapper/home, which is created by dm-crypt. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/fsck/needs/dmcrypt b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/fsck/needs/dmcrypt new file mode 120000 index 00000000..ffca7e06 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/fsck/needs/dmcrypt @@ -0,0 +1 @@ +../../dmcrypt \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/fsck/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/fsck/on new file mode 120000 index 00000000..bc0813ef --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/fsck/on @@ -0,0 +1 @@ +/sbin/fsck \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/fsck/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/fsck/on.params new file mode 100644 index 00000000..d77cb3dd --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/fsck/on.params @@ -0,0 +1 @@ +/dev/hda3 diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/on.params new file mode 100644 index 00000000..05280cb0 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/on.params @@ -0,0 +1 @@ +/home diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/wants/cleanup b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/wants/cleanup new file mode 120000 index 00000000..34e952d5 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/home/wants/cleanup @@ -0,0 +1 @@ +../../../local-tuning/cleanup \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/needs/cleanup b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/needs/cleanup new file mode 120000 index 00000000..ed47b135 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/needs/cleanup @@ -0,0 +1 @@ +../../local-tuning/cleanup \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/needs/disable-cad b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/needs/disable-cad new file mode 120000 index 00000000..d4b67e1d --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/needs/disable-cad @@ -0,0 +1 @@ +../../local-tuning/disable-cad \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/proc/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/proc/README new file mode 100644 index 00000000..f35c09d2 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/proc/README @@ -0,0 +1,3 @@ +This mount contains the complete parameters, as there +are some distributions out there, which do not put it +into /etc/fstab. Sad, broken, but true. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/proc/needs/cleanup b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/proc/needs/cleanup new file mode 120000 index 00000000..34e952d5 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/proc/needs/cleanup @@ -0,0 +1 @@ +../../../local-tuning/cleanup \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/proc/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/proc/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/proc/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/proc/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/proc/on.params new file mode 100644 index 00000000..2305d022 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/proc/on.params @@ -0,0 +1,4 @@ +proc +-t +proc +/proc diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/pts/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/pts/README new file mode 100644 index 00000000..57cbb9f3 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/pts/README @@ -0,0 +1,2 @@ +pts/ + pts (pseudo terminal system) is used for xterminals, screen, etc. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/pts/needs/cleanup b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/pts/needs/cleanup new file mode 120000 index 00000000..34e952d5 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/pts/needs/cleanup @@ -0,0 +1 @@ +../../../local-tuning/cleanup \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/pts/needs/udev b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/pts/needs/udev new file mode 120000 index 00000000..3ec64dc1 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/pts/needs/udev @@ -0,0 +1 @@ +../../../local-tuning/udev/ \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/pts/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/pts/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/pts/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/pts/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/pts/on.params new file mode 100644 index 00000000..2dd04515 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/pts/on.params @@ -0,0 +1,4 @@ +pts +-t +devpts +/dev/pts diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/README new file mode 100644 index 00000000..b81f6582 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/README @@ -0,0 +1 @@ +Remount the already read-only mounted root (/). diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/fsck/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/fsck/on new file mode 100755 index 00000000..4228407a --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/fsck/on @@ -0,0 +1,24 @@ +#!/bin/sh +# Nico Schottelius / cinit-example +# one could also try to pass regexp via command line +# you need one fsck service for every device + +FSTAB=/etc/fstab + +export PATH=/bin:/sbin:/usr/bin:/usr/sbin + +# get device for mountpoint / from fstab +DEV=$(grep -v '^#' "$FSTAB" | awk '$2 ~ /^\/$/ { print $1 } ') + +# get device for mounpoint /home +# DEV=$(grep -v '^#' "$FSTAB" | awk '$2 ~ /^\/home$/ { print $1 } ') + +# get fsck flag for mountpoint /home from fstab +# FSCK=$(grep -v '^#' "$FSTAB" | awk '$2 ~ /^\home/$/ { print $6 } ') + +# get fsck flag for mountpoint / from fstab +FSCK=$(grep -v '^#' "$FSTAB" | awk '$2 ~ /^\/$/ { print $6 } ') + +if [ "$FSCK" = "1" ]; then + fsck $DEV +fi diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/needs/fsck b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/needs/fsck new file mode 120000 index 00000000..c2e5e63f --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/needs/fsck @@ -0,0 +1 @@ +../fsck \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/nods/fsck b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/nods/fsck new file mode 120000 index 00000000..d338580b --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/nods/fsck @@ -0,0 +1 @@ +../../fsck/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/on.params new file mode 100644 index 00000000..6a052263 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/root/on.params @@ -0,0 +1,4 @@ +-n +-o +remount,rw +/ diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/sys/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/sys/README new file mode 100644 index 00000000..f35c09d2 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/sys/README @@ -0,0 +1,3 @@ +This mount contains the complete parameters, as there +are some distributions out there, which do not put it +into /etc/fstab. Sad, broken, but true. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/sys/needs/cleanup b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/sys/needs/cleanup new file mode 120000 index 00000000..34e952d5 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/sys/needs/cleanup @@ -0,0 +1 @@ +../../../local-tuning/cleanup \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/sys/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/sys/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/sys/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/sys/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/sys/on.params new file mode 100644 index 00000000..a6b724ca --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/sys/on.params @@ -0,0 +1,4 @@ +sysfs +-t +sysfs +/sys diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/udev/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/udev/README new file mode 100644 index 00000000..668b0c58 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/udev/README @@ -0,0 +1,4 @@ +udev/ + udev is the dynamic /dev-management utility. It needs a temporary + filesystem on /dev on which it will create the actual existing + device nodes. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/udev/needs/cleanup b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/udev/needs/cleanup new file mode 120000 index 00000000..34e952d5 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/udev/needs/cleanup @@ -0,0 +1 @@ +../../../local-tuning/cleanup \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/udev/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/udev/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/udev/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/udev/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/udev/on.params new file mode 100644 index 00000000..6f076f24 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/udev/on.params @@ -0,0 +1,4 @@ +udev +-t +tmpfs +/dev diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/home b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/home new file mode 120000 index 00000000..3460ef0e --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/home @@ -0,0 +1 @@ +../home \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/proc b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/proc new file mode 120000 index 00000000..a74efc41 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/proc @@ -0,0 +1 @@ +../proc \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/pts b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/pts new file mode 120000 index 00000000..418a2e2a --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/pts @@ -0,0 +1 @@ +../pts \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/root b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/root new file mode 120000 index 00000000..3afde589 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/root @@ -0,0 +1 @@ +../root \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/sys b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/sys new file mode 120000 index 00000000..587910c7 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/sys @@ -0,0 +1 @@ +../sys \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/udev b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/udev new file mode 120000 index 00000000..ada83a6f --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/mount/wants/udev @@ -0,0 +1 @@ +../udev \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/README new file mode 100644 index 00000000..8711e2a6 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/README @@ -0,0 +1,3 @@ +Setup networking. + +This includes setting up the hostname and firing up devices. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/eth0/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/eth0/README new file mode 100644 index 00000000..bd872441 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/eth0/README @@ -0,0 +1,3 @@ +Setup eth0 with udhcpc: If something fails, udhcpc starts +the scripts which should handle it. So init does not need to care about +failing dhcp leases. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/eth0/needs/hotplug b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/eth0/needs/hotplug new file mode 120000 index 00000000..1e1cd147 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/eth0/needs/hotplug @@ -0,0 +1 @@ +../../../local-tuning/hotplug/ \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/eth0/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/eth0/on new file mode 120000 index 00000000..de481d0e --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/eth0/on @@ -0,0 +1 @@ +/sbin/dhclient \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/eth0/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/eth0/on.params new file mode 100644 index 00000000..1b32134c --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/eth0/on.params @@ -0,0 +1,2 @@ +-d +eth0 diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/eth0/respawn b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/eth0/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/hostname/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/hostname/README new file mode 100644 index 00000000..f192c604 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/hostname/README @@ -0,0 +1,2 @@ +on.params could be linked to /etc/hostname, /etc/conf.d/hostname +or whereever your distribution stores the configured hostname. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/hostname/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/hostname/on new file mode 120000 index 00000000..5779a119 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/hostname/on @@ -0,0 +1 @@ +/bin/hostname \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/hostname/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/hostname/on.params new file mode 100644 index 00000000..3614fe72 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/hostname/on.params @@ -0,0 +1 @@ +cinit-host diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/lo/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/lo/README new file mode 100644 index 00000000..4e933b33 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/lo/README @@ -0,0 +1,3 @@ +Setup lo. + +lo is the loopback device and should have 127.0.0.1/8 assigned. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/lo/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/lo/on new file mode 120000 index 00000000..e27843a4 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/lo/on @@ -0,0 +1 @@ +/sbin/ifconfig \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/lo/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/lo/on.params new file mode 100644 index 00000000..f6dc805a --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/lo/on.params @@ -0,0 +1,5 @@ +lo +127.0.0.1 +netmask +255.0.0.0 +up diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/needs/hostname b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/needs/hostname new file mode 120000 index 00000000..57f501e6 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/needs/hostname @@ -0,0 +1 @@ +../hostname \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/needs/lo b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/needs/lo new file mode 120000 index 00000000..7918baac --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/needs/lo @@ -0,0 +1 @@ +../lo \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/wants/eth0 b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/wants/eth0 new file mode 120000 index 00000000..b104cd79 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/wants/eth0 @@ -0,0 +1 @@ +../eth0 \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/wants/lo b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/wants/lo new file mode 120000 index 00000000..7918baac --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/network/wants/lo @@ -0,0 +1 @@ +../lo \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/README new file mode 100644 index 00000000..bbec0110 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/README @@ -0,0 +1,2 @@ +Put the services into here, which are reachable from outside +(like DNS-, Samba-, SMTP-, rootshell-, NFS- or NIS-Servers). diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/exim4/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/exim4/README new file mode 100644 index 00000000..376a5391 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/exim4/README @@ -0,0 +1 @@ +exim is a MTA (Mail transfer agent). diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/exim4/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/exim4/on new file mode 120000 index 00000000..e050deb0 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/exim4/on @@ -0,0 +1 @@ +/usr/sbin/exim4 \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/exim4/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/exim4/on.params new file mode 100644 index 00000000..c7ddca17 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/exim4/on.params @@ -0,0 +1 @@ +-q30m diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/exim4/respawn b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/exim4/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/openssh/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/openssh/README new file mode 100644 index 00000000..d0bc2afa --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/openssh/README @@ -0,0 +1,5 @@ +Startup OpenSSH. + +We use -D, so it does not fork itself into background. + +ssh normally __wants__ networking, but will also start without. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/openssh/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/openssh/on new file mode 120000 index 00000000..cf9865a6 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/openssh/on @@ -0,0 +1 @@ +/usr/sbin/sshd \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/openssh/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/openssh/on.params new file mode 100644 index 00000000..eb11be00 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/openssh/on.params @@ -0,0 +1 @@ +-D diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/openssh/respawn b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/openssh/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/wants/openssh b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/wants/openssh new file mode 120000 index 00000000..693231dc --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/remote-services/wants/openssh @@ -0,0 +1 @@ +../openssh \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/shell-profile/README b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/shell-profile/README new file mode 100644 index 00000000..d364480e --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/shell-profile/README @@ -0,0 +1 @@ +This is a rescue profile, which starts only /bin/sh. diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/shell-profile/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/shell-profile/on new file mode 120000 index 00000000..db1611f6 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/shell-profile/on @@ -0,0 +1 @@ +/bin/sh \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/test/broken+respawn/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/test/broken+respawn/on new file mode 120000 index 00000000..4421f6d3 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/test/broken+respawn/on @@ -0,0 +1 @@ +/nonexstinet \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/test/broken+respawn/respawn b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/test/broken+respawn/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/test/broken/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/test/broken/on new file mode 120000 index 00000000..4421f6d3 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/test/broken/on @@ -0,0 +1 @@ +/nonexstinet \ No newline at end of file diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/test/env-params/on b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/test/env-params/on new file mode 100755 index 00000000..6bd73086 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/test/env-params/on @@ -0,0 +1,14 @@ +#!/bin/sh +# Do some testing + +echo "Environment:" +echo "------------" +set +echo "------------" +echo "Parameters:" +i=0 +while [ $i -le $# ]; do + eval echo $i: \$$i + i=$(($i+1)) +done +echo "------------" diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/test/env-params/on.env b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/test/env-params/on.env new file mode 100644 index 00000000..59050dca --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/test/env-params/on.env @@ -0,0 +1 @@ +TEST=blub diff --git a/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/test/env-params/on.params b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/test/env-params/on.params new file mode 100644 index 00000000..6f8bbe19 --- /dev/null +++ b/software/cinit/samples/x86/scice/cinit-conf-x86-debian-20050627-01/test/env-params/on.params @@ -0,0 +1,3 @@ +parameter1 +parameter2 parameter2 +parameter3 diff --git a/software/cinit/samples/x86/wasserstoff/HEADER.html b/software/cinit/samples/x86/wasserstoff/HEADER.html new file mode 100644 index 00000000..ded4151f --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/HEADER.html @@ -0,0 +1,63 @@ + + + +unix.schottelius.org + + + +

Nico Schottelius +
unix.schottelius.org +
cinit +
cinit samples

+
+

wasserstoff

+
+ +

Wasserstoff uses an instance of +cconfig for the system +configuration, which is placed below /etc/csys. +The configuration aims to +

    +
  • use one file for one configuration +
  • be easy to use +
  • be easy to create via automatic creation by programs +
+ +The following steps were taken to create this configuration: + +
    +
  1. Create services in /etc/cinit +
  2. For every configuration (hostname, root device, swap, ...) create + a file below /etc/csys +
  3. Link parameters for programs (on.params, off.params) to /etc/csys/... +
  4. Control result, improve /etc/csys design +
+ +

The following configurations (/etc/cinit and /etc/csys) are +available for download: +

    +
  • 2005-10-10: +
      +
    • Added respawn to getty/*/ +
    +
  • 2005-09-26: +
      +
    • eth0 needs now the root read-write, because udhcpc wants + to write /etc/resolv.conf +
    +
  • +
  • 2005-08-27: +
      +
    • Configuring keyboard: Layout (dvorak, + changeable via /etc/csys/keyboard-layout) +
    • Setting Hostname to 'wasserstoff' + (alterable via /etc/csys/hostname) +
    • Mount root r/w (root device is set in /etc/csys/root) +
    • Spawns Getty (/sbin/getty) on tty2-tty7 (tty1 is for logging) +
    • SSH (openssh) (disabled, you need to link romet-services/opensshd + to remote-services/wants or somewhere else, which is a considered + service) +
    • Udev support +
    • /etc/csys is partly uncleaned +
    +
diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827.tar.bz2 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827.tar.bz2 new file mode 100644 index 00000000..6b766418 Binary files /dev/null and b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827.tar.bz2 differ diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/2/needs/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/2/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/2/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/2/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/2/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/2/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/2/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/2/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/2/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/2/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/2/on.params new file mode 100644 index 00000000..78694004 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/2/on.params @@ -0,0 +1,3 @@ +38400 +tty2 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/2/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/2/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/3/needs/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/3/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/3/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/3/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/3/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/3/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/3/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/3/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/3/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/3/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/3/on.params new file mode 100644 index 00000000..370f9846 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/3/on.params @@ -0,0 +1,3 @@ +38400 +tty3 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/3/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/3/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/4/needs/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/4/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/4/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/4/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/4/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/4/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/4/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/4/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/4/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/4/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/4/on.params new file mode 100644 index 00000000..d69982d6 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/4/on.params @@ -0,0 +1,3 @@ +38400 +tty4 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/4/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/4/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/5/needs/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/5/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/5/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/5/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/5/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/5/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/5/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/5/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/5/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/5/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/5/on.params new file mode 100644 index 00000000..9fd834ed --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/5/on.params @@ -0,0 +1,3 @@ +38400 +tty5 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/5/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/5/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/6/needs/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/6/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/6/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/6/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/6/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/6/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/6/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/6/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/6/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/6/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/6/on.params new file mode 100644 index 00000000..08274a3c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/6/on.params @@ -0,0 +1,3 @@ +38400 +tty6 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/6/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/6/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/7/needs/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/7/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/7/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/7/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/7/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/7/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/7/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/7/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/7/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/7/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/7/on.params new file mode 100644 index 00000000..69efe75b --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/7/on.params @@ -0,0 +1,3 @@ +38400 +tty7 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/7/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/7/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/8/needs/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/8/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/8/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/8/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/8/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/8/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/8/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/8/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/8/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/8/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/8/on.params new file mode 100644 index 00000000..8001a552 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/8/on.params @@ -0,0 +1,3 @@ +38400 +tty8 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/8/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/8/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/2 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/2 new file mode 120000 index 00000000..fd9b9c8f --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/2 @@ -0,0 +1 @@ +../2/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/3 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/3 new file mode 120000 index 00000000..a334e9e8 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/3 @@ -0,0 +1 @@ +../3 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/4 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/4 new file mode 120000 index 00000000..481d918e --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/4 @@ -0,0 +1 @@ +../4 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/5 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/5 new file mode 120000 index 00000000..00f5743b --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/5 @@ -0,0 +1 @@ +../5 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/6 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/6 new file mode 120000 index 00000000..2b98e9c3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/6 @@ -0,0 +1 @@ +../6 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/7 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/7 new file mode 120000 index 00000000..4eb54964 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/7 @@ -0,0 +1 @@ +../7 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/8 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/8 new file mode 120000 index 00000000..3a0fadf1 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/getty/wants/8 @@ -0,0 +1 @@ +../8 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/on new file mode 120000 index 00000000..7bbf7ccd --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/on @@ -0,0 +1 @@ +/bin/echo \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/on.params new file mode 100644 index 00000000..7b01d94b --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/on.params @@ -0,0 +1 @@ +*** cinit started *** diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/getty b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/getty new file mode 120000 index 00000000..de2f483b --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/getty @@ -0,0 +1 @@ +../../getty/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/local-services b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/local-services new file mode 120000 index 00000000..cca95ce5 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/local-services @@ -0,0 +1 @@ +../../local-services/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/local-tuning b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/local-tuning new file mode 120000 index 00000000..9c8675b2 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/local-tuning @@ -0,0 +1 @@ +../../local-tuning/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/mount b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/mount new file mode 120000 index 00000000..29a1edc0 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/mount @@ -0,0 +1 @@ +../../mount/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/network b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/network new file mode 120000 index 00000000..6c993356 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/network @@ -0,0 +1 @@ +../../network/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/remote-services b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/remote-services new file mode 120000 index 00000000..64edcfac --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/init/wants/remote-services @@ -0,0 +1 @@ +../../remote-services/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/keyboard/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/keyboard/on new file mode 120000 index 00000000..a5ce029b --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/keyboard/on @@ -0,0 +1 @@ +/bin/loadkeys \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/keyboard/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/keyboard/on.params new file mode 120000 index 00000000..3f0f9e84 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/keyboard/on.params @@ -0,0 +1 @@ +/etc/csys/keyboard-layout \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/udev/needs/sys b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/udev/needs/sys new file mode 120000 index 00000000..0f05e487 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/udev/needs/sys @@ -0,0 +1 @@ +../../../mount/sys/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/udev/needs/udev b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/udev/needs/udev new file mode 120000 index 00000000..a5dd5650 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/udev/needs/udev @@ -0,0 +1 @@ +../../../mount/udev/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/udev/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/udev/on new file mode 120000 index 00000000..cd9310d6 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/udev/on @@ -0,0 +1 @@ +/sbin/udevstart \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/wants/keyboard b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/wants/keyboard new file mode 120000 index 00000000..e1b4e3fc --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/local-tuning/wants/keyboard @@ -0,0 +1 @@ +../keyboard/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/fsck/root/needs/udev b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/fsck/root/needs/udev new file mode 120000 index 00000000..c868e175 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/fsck/root/needs/udev @@ -0,0 +1 @@ +../../../../local-tuning/udev \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/fsck/root/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/fsck/root/on new file mode 120000 index 00000000..bc0813ef --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/fsck/root/on @@ -0,0 +1 @@ +/sbin/fsck \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/fsck/root/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/fsck/root/on.params new file mode 120000 index 00000000..349ce1cf --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/fsck/root/on.params @@ -0,0 +1 @@ +/etc/csys/root \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/proc/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/proc/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/proc/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/proc/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/proc/on.params new file mode 100644 index 00000000..4c3fcfb4 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/proc/on.params @@ -0,0 +1 @@ +/proc diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/create-dir/needs/udev b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/create-dir/needs/udev new file mode 120000 index 00000000..fb83a3dd --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/create-dir/needs/udev @@ -0,0 +1 @@ +../../../udev \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/create-dir/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/create-dir/on new file mode 120000 index 00000000..9c6e0f8a --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/create-dir/on @@ -0,0 +1 @@ +/bin/mkdir \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/create-dir/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/create-dir/on.params new file mode 100644 index 00000000..b2e8b82f --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/create-dir/on.params @@ -0,0 +1,2 @@ +-p +/dev/pts diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/needs/create-dir b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/needs/create-dir new file mode 120000 index 00000000..84bddf39 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/needs/create-dir @@ -0,0 +1 @@ +../create-dir/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/on.params new file mode 100644 index 00000000..2dd04515 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/pts/on.params @@ -0,0 +1,4 @@ +pts +-t +devpts +/dev/pts diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/root/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/root/needs/root new file mode 120000 index 00000000..f7dfa0b2 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/root/needs/root @@ -0,0 +1 @@ +../../fsck/root \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/root/needs/udev b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/root/needs/udev new file mode 120000 index 00000000..3ec64dc1 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/root/needs/udev @@ -0,0 +1 @@ +../../../local-tuning/udev/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/root/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/root/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/root/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/root/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/root/on.params new file mode 100644 index 00000000..f0e68389 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/root/on.params @@ -0,0 +1,3 @@ +-o +remount,rw +/ diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/swap/needs/udev b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/swap/needs/udev new file mode 120000 index 00000000..3ec64dc1 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/swap/needs/udev @@ -0,0 +1 @@ +../../../local-tuning/udev/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/swap/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/swap/on new file mode 120000 index 00000000..c544fa46 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/swap/on @@ -0,0 +1 @@ +/sbin/swapon \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/swap/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/swap/on.params new file mode 120000 index 00000000..ba5128d2 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/swap/on.params @@ -0,0 +1 @@ +/etc/csys/swap \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/sys/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/sys/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/sys/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/sys/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/sys/on.params new file mode 100644 index 00000000..a6b724ca --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/sys/on.params @@ -0,0 +1,4 @@ +sysfs +-t +sysfs +/sys diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/udev/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/udev/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/udev/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/udev/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/udev/on.params new file mode 100644 index 00000000..6f076f24 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/udev/on.params @@ -0,0 +1,4 @@ +udev +-t +tmpfs +/dev diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/wants/proc b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/wants/proc new file mode 120000 index 00000000..a74efc41 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/wants/proc @@ -0,0 +1 @@ +../proc \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/wants/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/wants/root new file mode 120000 index 00000000..a830569b --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/wants/root @@ -0,0 +1 @@ +../root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/wants/swap b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/wants/swap new file mode 120000 index 00000000..6f0f4e0a --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/wants/swap @@ -0,0 +1 @@ +../swap/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/wants/sys b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/wants/sys new file mode 120000 index 00000000..587910c7 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/wants/sys @@ -0,0 +1 @@ +../sys \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/wants/udev b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/wants/udev new file mode 120000 index 00000000..ada83a6f --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/mount/wants/udev @@ -0,0 +1 @@ +../udev \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/eth0/driver/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/eth0/driver/on new file mode 120000 index 00000000..722ec623 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/eth0/driver/on @@ -0,0 +1 @@ +/sbin/modprobe \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/eth0/driver/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/eth0/driver/on.params new file mode 100644 index 00000000..aa8f1e6d --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/eth0/driver/on.params @@ -0,0 +1 @@ +e100 diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/eth0/needs/driver b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/eth0/needs/driver new file mode 120000 index 00000000..1f094b50 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/eth0/needs/driver @@ -0,0 +1 @@ +../driver \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/eth0/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/eth0/on new file mode 120000 index 00000000..e27843a4 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/eth0/on @@ -0,0 +1 @@ +/sbin/ifconfig \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/eth0/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/eth0/on.params new file mode 120000 index 00000000..8c3543d6 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/eth0/on.params @@ -0,0 +1 @@ +/etc/csys/eth0.static \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/hostname/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/hostname/on new file mode 120000 index 00000000..5779a119 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/hostname/on @@ -0,0 +1 @@ +/bin/hostname \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/hostname/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/hostname/on.params new file mode 120000 index 00000000..c5c298ce --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/hostname/on.params @@ -0,0 +1 @@ +/etc/csys/hostname \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/lo/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/lo/on new file mode 120000 index 00000000..e27843a4 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/lo/on @@ -0,0 +1 @@ +/sbin/ifconfig \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/lo/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/lo/on.params new file mode 100644 index 00000000..e58476c5 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/lo/on.params @@ -0,0 +1,3 @@ +lo +127.0.0.1 +up diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/wants/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/wants/hostname new file mode 120000 index 00000000..83ce34f6 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/wants/hostname @@ -0,0 +1 @@ +../hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/wants/lo b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/wants/lo new file mode 120000 index 00000000..13eee547 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/network/wants/lo @@ -0,0 +1 @@ +../lo/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/opensshd/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/opensshd/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/opensshd/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/opensshd/needs/udev b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/opensshd/needs/udev new file mode 120000 index 00000000..3ec64dc1 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/opensshd/needs/udev @@ -0,0 +1 @@ +../../../local-tuning/udev/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/opensshd/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/opensshd/on new file mode 120000 index 00000000..cf9865a6 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/opensshd/on @@ -0,0 +1 @@ +/usr/sbin/sshd \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/opensshd/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/opensshd/on.params new file mode 100644 index 00000000..eb11be00 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/opensshd/on.params @@ -0,0 +1 @@ +-D diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/opensshd/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/opensshd/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/opensshd/wants/network b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/opensshd/wants/network new file mode 120000 index 00000000..49e0fadd --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/opensshd/wants/network @@ -0,0 +1 @@ +../../../network/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/wants/opensshd b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/wants/opensshd new file mode 120000 index 00000000..b90c7a1c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/cinit/remote-services/wants/opensshd @@ -0,0 +1 @@ +../opensshd \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/README b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/README new file mode 100644 index 00000000..466fb146 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/README @@ -0,0 +1,8 @@ +/etc/csys: + + Every file is a configuration. + A one liner. + No parsing. + Be stupid, use the filesystem as a database. + + -- 2005-08-20, Nico Schottelius diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/eth0.static b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/eth0.static new file mode 100644 index 00000000..d477112c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/eth0.static @@ -0,0 +1 @@ +eth0 192.168.23.97/24 up diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/hostname new file mode 100644 index 00000000..4095fad0 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/hostname @@ -0,0 +1 @@ +wasserstoff diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/keyboard-layout b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/keyboard-layout new file mode 100644 index 00000000..0e519366 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/keyboard-layout @@ -0,0 +1 @@ +dvorak diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/net/eth0/dhcp b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/net/eth0/dhcp new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/net/eth0/drivers b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/net/eth0/drivers new file mode 100644 index 00000000..aa8f1e6d --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/net/eth0/drivers @@ -0,0 +1 @@ +e100 diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/root new file mode 100644 index 00000000..2f528a31 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/root @@ -0,0 +1 @@ +/dev/hda2 diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/swap b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/swap new file mode 100644 index 00000000..90020847 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050827/csys/swap @@ -0,0 +1 @@ +/dev/hda1 diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926.tar.bz2 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926.tar.bz2 new file mode 100644 index 00000000..b1ed25ac Binary files /dev/null and b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926.tar.bz2 differ diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/2/needs/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/2/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/2/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/2/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/2/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/2/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/2/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/2/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/2/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/2/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/2/on.params new file mode 100644 index 00000000..78694004 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/2/on.params @@ -0,0 +1,3 @@ +38400 +tty2 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/2/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/2/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/3/needs/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/3/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/3/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/3/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/3/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/3/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/3/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/3/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/3/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/3/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/3/on.params new file mode 100644 index 00000000..370f9846 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/3/on.params @@ -0,0 +1,3 @@ +38400 +tty3 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/3/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/3/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/4/needs/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/4/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/4/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/4/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/4/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/4/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/4/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/4/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/4/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/4/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/4/on.params new file mode 100644 index 00000000..d69982d6 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/4/on.params @@ -0,0 +1,3 @@ +38400 +tty4 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/4/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/4/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/5/needs/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/5/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/5/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/5/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/5/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/5/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/5/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/5/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/5/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/5/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/5/on.params new file mode 100644 index 00000000..9fd834ed --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/5/on.params @@ -0,0 +1,3 @@ +38400 +tty5 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/5/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/5/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/6/needs/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/6/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/6/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/6/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/6/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/6/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/6/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/6/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/6/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/6/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/6/on.params new file mode 100644 index 00000000..08274a3c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/6/on.params @@ -0,0 +1,3 @@ +38400 +tty6 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/6/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/6/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/7/needs/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/7/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/7/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/7/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/7/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/7/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/7/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/7/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/7/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/7/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/7/on.params new file mode 100644 index 00000000..69efe75b --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/7/on.params @@ -0,0 +1,3 @@ +38400 +tty7 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/7/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/7/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/8/needs/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/8/needs/hostname new file mode 120000 index 00000000..730c085c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/8/needs/hostname @@ -0,0 +1 @@ +../../../network/hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/8/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/8/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/8/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/8/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/8/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/8/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/8/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/8/on.params new file mode 100644 index 00000000..8001a552 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/8/on.params @@ -0,0 +1,3 @@ +38400 +tty8 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/8/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/8/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/2 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/2 new file mode 120000 index 00000000..fd9b9c8f --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/2 @@ -0,0 +1 @@ +../2/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/3 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/3 new file mode 120000 index 00000000..a334e9e8 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/3 @@ -0,0 +1 @@ +../3 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/4 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/4 new file mode 120000 index 00000000..481d918e --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/4 @@ -0,0 +1 @@ +../4 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/5 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/5 new file mode 120000 index 00000000..00f5743b --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/5 @@ -0,0 +1 @@ +../5 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/6 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/6 new file mode 120000 index 00000000..2b98e9c3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/6 @@ -0,0 +1 @@ +../6 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/7 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/7 new file mode 120000 index 00000000..4eb54964 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/7 @@ -0,0 +1 @@ +../7 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/8 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/8 new file mode 120000 index 00000000..3a0fadf1 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/getty/wants/8 @@ -0,0 +1 @@ +../8 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/on new file mode 120000 index 00000000..7bbf7ccd --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/on @@ -0,0 +1 @@ +/bin/echo \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/on.params new file mode 100644 index 00000000..7b01d94b --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/on.params @@ -0,0 +1 @@ +*** cinit started *** diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/getty b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/getty new file mode 120000 index 00000000..de2f483b --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/getty @@ -0,0 +1 @@ +../../getty/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/local-services b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/local-services new file mode 120000 index 00000000..cca95ce5 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/local-services @@ -0,0 +1 @@ +../../local-services/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/local-tuning b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/local-tuning new file mode 120000 index 00000000..9c8675b2 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/local-tuning @@ -0,0 +1 @@ +../../local-tuning/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/mount b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/mount new file mode 120000 index 00000000..29a1edc0 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/mount @@ -0,0 +1 @@ +../../mount/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/network b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/network new file mode 120000 index 00000000..6c993356 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/network @@ -0,0 +1 @@ +../../network/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/remote-services b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/remote-services new file mode 120000 index 00000000..64edcfac --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/init/wants/remote-services @@ -0,0 +1 @@ +../../remote-services/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/keyboard/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/keyboard/on new file mode 120000 index 00000000..a5ce029b --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/keyboard/on @@ -0,0 +1 @@ +/bin/loadkeys \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/keyboard/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/keyboard/on.params new file mode 120000 index 00000000..3f0f9e84 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/keyboard/on.params @@ -0,0 +1 @@ +/etc/csys/keyboard-layout \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/udev/needs/sys b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/udev/needs/sys new file mode 120000 index 00000000..0f05e487 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/udev/needs/sys @@ -0,0 +1 @@ +../../../mount/sys/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/udev/needs/udev b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/udev/needs/udev new file mode 120000 index 00000000..a5dd5650 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/udev/needs/udev @@ -0,0 +1 @@ +../../../mount/udev/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/udev/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/udev/on new file mode 120000 index 00000000..cd9310d6 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/udev/on @@ -0,0 +1 @@ +/sbin/udevstart \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/wants/keyboard b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/wants/keyboard new file mode 120000 index 00000000..e1b4e3fc --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/local-tuning/wants/keyboard @@ -0,0 +1 @@ +../keyboard/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/fsck/root/needs/udev b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/fsck/root/needs/udev new file mode 120000 index 00000000..c868e175 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/fsck/root/needs/udev @@ -0,0 +1 @@ +../../../../local-tuning/udev \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/fsck/root/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/fsck/root/on new file mode 120000 index 00000000..bc0813ef --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/fsck/root/on @@ -0,0 +1 @@ +/sbin/fsck \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/fsck/root/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/fsck/root/on.params new file mode 120000 index 00000000..349ce1cf --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/fsck/root/on.params @@ -0,0 +1 @@ +/etc/csys/root \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/proc/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/proc/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/proc/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/proc/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/proc/on.params new file mode 100644 index 00000000..4c3fcfb4 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/proc/on.params @@ -0,0 +1 @@ +/proc diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/create-dir/needs/udev b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/create-dir/needs/udev new file mode 120000 index 00000000..fb83a3dd --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/create-dir/needs/udev @@ -0,0 +1 @@ +../../../udev \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/create-dir/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/create-dir/on new file mode 120000 index 00000000..9c6e0f8a --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/create-dir/on @@ -0,0 +1 @@ +/bin/mkdir \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/create-dir/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/create-dir/on.params new file mode 100644 index 00000000..b2e8b82f --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/create-dir/on.params @@ -0,0 +1,2 @@ +-p +/dev/pts diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/needs/create-dir b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/needs/create-dir new file mode 120000 index 00000000..84bddf39 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/needs/create-dir @@ -0,0 +1 @@ +../create-dir/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/on.params new file mode 100644 index 00000000..2dd04515 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/pts/on.params @@ -0,0 +1,4 @@ +pts +-t +devpts +/dev/pts diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/root/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/root/needs/root new file mode 120000 index 00000000..f7dfa0b2 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/root/needs/root @@ -0,0 +1 @@ +../../fsck/root \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/root/needs/udev b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/root/needs/udev new file mode 120000 index 00000000..3ec64dc1 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/root/needs/udev @@ -0,0 +1 @@ +../../../local-tuning/udev/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/root/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/root/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/root/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/root/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/root/on.params new file mode 100644 index 00000000..f0e68389 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/root/on.params @@ -0,0 +1,3 @@ +-o +remount,rw +/ diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/swap/needs/udev b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/swap/needs/udev new file mode 120000 index 00000000..3ec64dc1 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/swap/needs/udev @@ -0,0 +1 @@ +../../../local-tuning/udev/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/swap/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/swap/on new file mode 120000 index 00000000..c544fa46 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/swap/on @@ -0,0 +1 @@ +/sbin/swapon \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/swap/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/swap/on.params new file mode 120000 index 00000000..ba5128d2 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/swap/on.params @@ -0,0 +1 @@ +/etc/csys/swap \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/sys/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/sys/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/sys/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/sys/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/sys/on.params new file mode 100644 index 00000000..a6b724ca --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/sys/on.params @@ -0,0 +1,4 @@ +sysfs +-t +sysfs +/sys diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/udev/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/udev/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/udev/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/udev/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/udev/on.params new file mode 100644 index 00000000..6f076f24 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/udev/on.params @@ -0,0 +1,4 @@ +udev +-t +tmpfs +/dev diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/wants/proc b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/wants/proc new file mode 120000 index 00000000..a74efc41 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/wants/proc @@ -0,0 +1 @@ +../proc \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/wants/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/wants/root new file mode 120000 index 00000000..a830569b --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/wants/root @@ -0,0 +1 @@ +../root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/wants/swap b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/wants/swap new file mode 120000 index 00000000..6f0f4e0a --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/wants/swap @@ -0,0 +1 @@ +../swap/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/wants/sys b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/wants/sys new file mode 120000 index 00000000..587910c7 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/wants/sys @@ -0,0 +1 @@ +../sys \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/wants/udev b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/wants/udev new file mode 120000 index 00000000..ada83a6f --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/mount/wants/udev @@ -0,0 +1 @@ +../udev \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0.static/driver/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0.static/driver/on new file mode 120000 index 00000000..722ec623 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0.static/driver/on @@ -0,0 +1 @@ +/sbin/modprobe \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0.static/driver/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0.static/driver/on.params new file mode 100644 index 00000000..aa8f1e6d --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0.static/driver/on.params @@ -0,0 +1 @@ +e100 diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0.static/needs/driver b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0.static/needs/driver new file mode 120000 index 00000000..1f094b50 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0.static/needs/driver @@ -0,0 +1 @@ +../driver \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0.static/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0.static/on new file mode 120000 index 00000000..e27843a4 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0.static/on @@ -0,0 +1 @@ +/sbin/ifconfig \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0.static/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0.static/on.params new file mode 120000 index 00000000..8c3543d6 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0.static/on.params @@ -0,0 +1 @@ +/etc/csys/eth0.static \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/driver/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/driver/on new file mode 120000 index 00000000..722ec623 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/driver/on @@ -0,0 +1 @@ +/sbin/modprobe \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/driver/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/driver/on.params new file mode 100644 index 00000000..aa8f1e6d --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/driver/on.params @@ -0,0 +1 @@ +e100 diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/needs/driver b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/needs/driver new file mode 120000 index 00000000..1f094b50 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/needs/driver @@ -0,0 +1 @@ +../driver \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/on new file mode 120000 index 00000000..639430c4 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/on @@ -0,0 +1 @@ +/sbin/udhcpc \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/on.params new file mode 100644 index 00000000..105c5f3d --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/on.params @@ -0,0 +1 @@ +-f diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/eth0/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/hostname/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/hostname/on new file mode 120000 index 00000000..5779a119 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/hostname/on @@ -0,0 +1 @@ +/bin/hostname \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/hostname/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/hostname/on.params new file mode 120000 index 00000000..c5c298ce --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/hostname/on.params @@ -0,0 +1 @@ +/etc/csys/hostname \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/lo/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/lo/on new file mode 120000 index 00000000..e27843a4 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/lo/on @@ -0,0 +1 @@ +/sbin/ifconfig \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/lo/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/lo/on.params new file mode 100644 index 00000000..e58476c5 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/lo/on.params @@ -0,0 +1,3 @@ +lo +127.0.0.1 +up diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/wants/eth0 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/wants/eth0 new file mode 120000 index 00000000..b104cd79 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/wants/eth0 @@ -0,0 +1 @@ +../eth0 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/wants/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/wants/hostname new file mode 120000 index 00000000..83ce34f6 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/wants/hostname @@ -0,0 +1 @@ +../hostname/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/wants/lo b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/wants/lo new file mode 120000 index 00000000..13eee547 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/network/wants/lo @@ -0,0 +1 @@ +../lo/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/opensshd/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/opensshd/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/opensshd/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/opensshd/needs/udev b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/opensshd/needs/udev new file mode 120000 index 00000000..3ec64dc1 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/opensshd/needs/udev @@ -0,0 +1 @@ +../../../local-tuning/udev/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/opensshd/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/opensshd/on new file mode 120000 index 00000000..cf9865a6 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/opensshd/on @@ -0,0 +1 @@ +/usr/sbin/sshd \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/opensshd/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/opensshd/on.params new file mode 100644 index 00000000..eb11be00 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/opensshd/on.params @@ -0,0 +1 @@ +-D diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/opensshd/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/opensshd/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/opensshd/wants/network b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/opensshd/wants/network new file mode 120000 index 00000000..49e0fadd --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/opensshd/wants/network @@ -0,0 +1 @@ +../../../network/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/wants/opensshd b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/wants/opensshd new file mode 120000 index 00000000..b90c7a1c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/cinit/remote-services/wants/opensshd @@ -0,0 +1 @@ +../opensshd \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/README b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/README new file mode 100644 index 00000000..466fb146 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/README @@ -0,0 +1,8 @@ +/etc/csys: + + Every file is a configuration. + A one liner. + No parsing. + Be stupid, use the filesystem as a database. + + -- 2005-08-20, Nico Schottelius diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/eth0.static b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/eth0.static new file mode 100644 index 00000000..d477112c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/eth0.static @@ -0,0 +1 @@ +eth0 192.168.23.97/24 up diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/hostname new file mode 100644 index 00000000..4095fad0 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/hostname @@ -0,0 +1 @@ +wasserstoff diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/keyboard-layout b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/keyboard-layout new file mode 100644 index 00000000..0e519366 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/keyboard-layout @@ -0,0 +1 @@ +dvorak diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/net/eth0/dhcp b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/net/eth0/dhcp new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/net/eth0/drivers b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/net/eth0/drivers new file mode 100644 index 00000000..aa8f1e6d --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/net/eth0/drivers @@ -0,0 +1 @@ +e100 diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/root new file mode 100644 index 00000000..2f528a31 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/root @@ -0,0 +1 @@ +/dev/hda2 diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/swap b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/swap new file mode 100644 index 00000000..90020847 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20050926/csys/swap @@ -0,0 +1 @@ +/dev/hda1 diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010.tar.bz2 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010.tar.bz2 new file mode 100644 index 00000000..c346582a Binary files /dev/null and b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010.tar.bz2 differ diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/README b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/README new file mode 100644 index 00000000..0151ad04 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/README @@ -0,0 +1,6 @@ +This is version... +- uses /etc/csys as configuration +- sets the hostname +- gets the IP via dhcp (udhcpc) +- starts getty on tty2-7 +- loads dvorak keyboard layout diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/2/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/2/needs/root new file mode 120000 index 00000000..b46717bb --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/2/needs/root @@ -0,0 +1 @@ +../../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/2/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/2/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/2/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/2/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/2/on.params new file mode 100644 index 00000000..78694004 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/2/on.params @@ -0,0 +1,3 @@ +38400 +tty2 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/2/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/2/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/3/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/3/needs/root new file mode 120000 index 00000000..b46717bb --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/3/needs/root @@ -0,0 +1 @@ +../../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/3/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/3/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/3/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/3/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/3/on.params new file mode 100644 index 00000000..370f9846 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/3/on.params @@ -0,0 +1,3 @@ +38400 +tty3 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/3/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/3/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/4/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/4/needs/root new file mode 120000 index 00000000..b46717bb --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/4/needs/root @@ -0,0 +1 @@ +../../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/4/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/4/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/4/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/4/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/4/on.params new file mode 100644 index 00000000..d69982d6 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/4/on.params @@ -0,0 +1,3 @@ +38400 +tty4 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/4/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/4/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/5/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/5/needs/root new file mode 120000 index 00000000..b46717bb --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/5/needs/root @@ -0,0 +1 @@ +../../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/5/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/5/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/5/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/5/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/5/on.params new file mode 100644 index 00000000..9fd834ed --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/5/on.params @@ -0,0 +1,3 @@ +38400 +tty5 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/5/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/5/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/6/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/6/needs/root new file mode 120000 index 00000000..b46717bb --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/6/needs/root @@ -0,0 +1 @@ +../../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/6/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/6/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/6/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/6/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/6/on.params new file mode 100644 index 00000000..08274a3c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/6/on.params @@ -0,0 +1,3 @@ +38400 +tty6 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/6/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/6/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/7/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/7/needs/root new file mode 120000 index 00000000..b46717bb --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/7/needs/root @@ -0,0 +1 @@ +../../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/7/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/7/on new file mode 120000 index 00000000..422ff240 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/7/on @@ -0,0 +1 @@ +/sbin/agetty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/7/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/7/on.params new file mode 100644 index 00000000..69efe75b --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/7/on.params @@ -0,0 +1,3 @@ +38400 +tty7 +linux diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/7/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/7/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/2 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/2 new file mode 120000 index 00000000..5fae01fc --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/2 @@ -0,0 +1 @@ +../2 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/3 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/3 new file mode 120000 index 00000000..a334e9e8 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/3 @@ -0,0 +1 @@ +../3 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/4 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/4 new file mode 120000 index 00000000..481d918e --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/4 @@ -0,0 +1 @@ +../4 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/5 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/5 new file mode 120000 index 00000000..00f5743b --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/5 @@ -0,0 +1 @@ +../5 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/6 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/6 new file mode 120000 index 00000000..2b98e9c3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/6 @@ -0,0 +1 @@ +../6 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/7 b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/7 new file mode 120000 index 00000000..4eb54964 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/getty/wants/7 @@ -0,0 +1 @@ +../7 \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/getty b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/getty new file mode 120000 index 00000000..11236405 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/getty @@ -0,0 +1 @@ +../../getty \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/local-services b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/local-services new file mode 120000 index 00000000..a1614c0f --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/local-services @@ -0,0 +1 @@ +../../local-services \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/local-tuning b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/local-tuning new file mode 120000 index 00000000..b0317c76 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/local-tuning @@ -0,0 +1 @@ +../../local-tuning \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/mount b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/mount new file mode 120000 index 00000000..b05f7981 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/mount @@ -0,0 +1 @@ +../../mount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/network b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/network new file mode 120000 index 00000000..2c0847b4 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/network @@ -0,0 +1 @@ +../../network \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/remote-services b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/remote-services new file mode 120000 index 00000000..ccfedf04 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/needs/remote-services @@ -0,0 +1 @@ +../../remote-services \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/on new file mode 120000 index 00000000..7bbf7ccd --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/on @@ -0,0 +1 @@ +/bin/echo \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/on.params new file mode 100644 index 00000000..b84be992 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/init/on.params @@ -0,0 +1 @@ +cinit started successfully! diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/README b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/README new file mode 100644 index 00000000..13341ce4 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/README @@ -0,0 +1 @@ +Services only reachable from this host. diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/README b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/README new file mode 100644 index 00000000..4bbbd2c1 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/README @@ -0,0 +1,4 @@ +acpid uses + /dev/urandom (start udevstart) + /proc/acpi/event (mount /proc) + /var/run/acpid.socket (root-rw) diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/needs/proc b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/needs/proc new file mode 120000 index 00000000..d9ee6dd9 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/needs/proc @@ -0,0 +1 @@ +../../../mount/proc \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/needs/root new file mode 120000 index 00000000..b46717bb --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/needs/root @@ -0,0 +1 @@ +../../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/needs/udev b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/needs/udev new file mode 120000 index 00000000..91f128e9 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/needs/udev @@ -0,0 +1 @@ +../../../local-tuning/udev \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/on new file mode 120000 index 00000000..43369f77 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/on @@ -0,0 +1 @@ +/usr/sbin/acpid \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/on.params new file mode 100644 index 00000000..105c5f3d --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/on.params @@ -0,0 +1 @@ +-f diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/acpid/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/needs/acpid b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/needs/acpid new file mode 120000 index 00000000..acc69cd0 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-services/needs/acpid @@ -0,0 +1 @@ +../acpid \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/keyboard/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/keyboard/on new file mode 120000 index 00000000..a5ce029b --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/keyboard/on @@ -0,0 +1 @@ +/bin/loadkeys \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/keyboard/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/keyboard/on.params new file mode 120000 index 00000000..3f0f9e84 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/keyboard/on.params @@ -0,0 +1 @@ +/etc/csys/keyboard-layout \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/needs/keyboard b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/needs/keyboard new file mode 120000 index 00000000..e6768c34 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/needs/keyboard @@ -0,0 +1 @@ +../keyboard \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/udev/udevstart/needs/mount-sys b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/udev/udevstart/needs/mount-sys new file mode 120000 index 00000000..f583988c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/udev/udevstart/needs/mount-sys @@ -0,0 +1 @@ +../../../../mount/sys \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/udev/udevstart/needs/mount-udev b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/udev/udevstart/needs/mount-udev new file mode 120000 index 00000000..9b7a4a28 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/udev/udevstart/needs/mount-udev @@ -0,0 +1 @@ +../../../../mount/udev \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/udev/udevstart/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/udev/udevstart/on new file mode 120000 index 00000000..cd9310d6 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/local-tuning/udev/udevstart/on @@ -0,0 +1 @@ +/sbin/udevstart \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/needs/proc b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/needs/proc new file mode 120000 index 00000000..a74efc41 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/needs/proc @@ -0,0 +1 @@ +../proc \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/needs/root new file mode 120000 index 00000000..3afde589 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/needs/root @@ -0,0 +1 @@ +../root \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/needs/sys b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/needs/sys new file mode 120000 index 00000000..587910c7 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/needs/sys @@ -0,0 +1 @@ +../sys \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/needs/udev b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/needs/udev new file mode 120000 index 00000000..ada83a6f --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/needs/udev @@ -0,0 +1 @@ +../udev \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/proc/off b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/proc/off new file mode 120000 index 00000000..a6ebdff7 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/proc/off @@ -0,0 +1 @@ +/bin/umount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/proc/off.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/proc/off.params new file mode 100644 index 00000000..4c3fcfb4 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/proc/off.params @@ -0,0 +1 @@ +/proc diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/proc/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/proc/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/proc/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/proc/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/proc/on.params new file mode 100644 index 00000000..8e49af28 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/proc/on.params @@ -0,0 +1,5 @@ +-n +-t +proc +proc +/proc diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/fsck/needs/udevstart b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/fsck/needs/udevstart new file mode 120000 index 00000000..bd8813ca --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/fsck/needs/udevstart @@ -0,0 +1 @@ +../../../../local-tuning/udev/udevstart \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/fsck/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/fsck/on new file mode 120000 index 00000000..bc0813ef --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/fsck/on @@ -0,0 +1 @@ +/sbin/fsck \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/fsck/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/fsck/on.params new file mode 120000 index 00000000..349ce1cf --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/fsck/on.params @@ -0,0 +1 @@ +/etc/csys/root \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/needs/fsck b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/needs/fsck new file mode 120000 index 00000000..c2e5e63f --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/needs/fsck @@ -0,0 +1 @@ +../fsck \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/off b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/off new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/off @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/off.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/off.params new file mode 100644 index 00000000..1a9d2bd4 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/off.params @@ -0,0 +1,4 @@ +-n +-o +remount,ro +/ diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/on.params new file mode 100644 index 00000000..6a052263 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/root/on.params @@ -0,0 +1,4 @@ +-n +-o +remount,rw +/ diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/sys/off b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/sys/off new file mode 120000 index 00000000..a6ebdff7 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/sys/off @@ -0,0 +1 @@ +/bin/umount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/sys/off.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/sys/off.params new file mode 100644 index 00000000..98fa8865 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/sys/off.params @@ -0,0 +1 @@ +/sys diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/sys/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/sys/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/sys/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/sys/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/sys/on.params new file mode 100644 index 00000000..3f5ef591 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/sys/on.params @@ -0,0 +1,5 @@ +-n +-t +sysfs +sysfs +/sys diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/udev/off b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/udev/off new file mode 120000 index 00000000..a6ebdff7 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/udev/off @@ -0,0 +1 @@ +/bin/umount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/udev/off.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/udev/off.params new file mode 100644 index 00000000..f42e49b2 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/udev/off.params @@ -0,0 +1 @@ +/dev diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/udev/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/udev/on new file mode 120000 index 00000000..fb886059 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/udev/on @@ -0,0 +1 @@ +/bin/mount \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/udev/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/udev/on.params new file mode 100644 index 00000000..e2ee105a --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/mount/udev/on.params @@ -0,0 +1,5 @@ +-n +-t +tmpfs +udev +/dev diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/driver/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/driver/on new file mode 120000 index 00000000..722ec623 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/driver/on @@ -0,0 +1 @@ +/sbin/modprobe \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/driver/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/driver/on.params new file mode 100644 index 00000000..aa8f1e6d --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/driver/on.params @@ -0,0 +1 @@ +e100 diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/needs/driver b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/needs/driver new file mode 120000 index 00000000..1f094b50 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/needs/driver @@ -0,0 +1 @@ +../driver \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/needs/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/needs/root new file mode 120000 index 00000000..68ea58e3 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/needs/root @@ -0,0 +1 @@ +../../../mount/root/ \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/on new file mode 120000 index 00000000..639430c4 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/on @@ -0,0 +1 @@ +/sbin/udhcpc \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/on.params new file mode 100644 index 00000000..105c5f3d --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/on.params @@ -0,0 +1 @@ +-f diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/eth0.udhcpc/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/hostname/README b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/hostname/README new file mode 100644 index 00000000..b6cdeaa1 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/hostname/README @@ -0,0 +1,2 @@ +/bin/hostname writes to /proc/sys/kernel/hostname the hostname configured +in /etc/csys/hostname diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/hostname/needs/proc b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/hostname/needs/proc new file mode 120000 index 00000000..d9ee6dd9 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/hostname/needs/proc @@ -0,0 +1 @@ +../../../mount/proc \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/hostname/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/hostname/on new file mode 120000 index 00000000..5779a119 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/hostname/on @@ -0,0 +1 @@ +/bin/hostname \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/hostname/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/hostname/on.params new file mode 120000 index 00000000..c5c298ce --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/hostname/on.params @@ -0,0 +1 @@ +/etc/csys/hostname \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/lo/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/lo/on new file mode 120000 index 00000000..e27843a4 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/lo/on @@ -0,0 +1 @@ +/sbin/ifconfig \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/lo/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/lo/on.params new file mode 100644 index 00000000..e58476c5 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/lo/on.params @@ -0,0 +1,3 @@ +lo +127.0.0.1 +up diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/needs/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/needs/hostname new file mode 120000 index 00000000..57f501e6 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/needs/hostname @@ -0,0 +1 @@ +../hostname \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/wants/eth0.udhcpc b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/wants/eth0.udhcpc new file mode 120000 index 00000000..c9b03c35 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/wants/eth0.udhcpc @@ -0,0 +1 @@ +../eth0.udhcpc \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/wants/lo b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/wants/lo new file mode 120000 index 00000000..7918baac --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/network/wants/lo @@ -0,0 +1 @@ +../lo \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/remote-services/opensshd/needs/mount-root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/remote-services/opensshd/needs/mount-root new file mode 120000 index 00000000..b46717bb --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/remote-services/opensshd/needs/mount-root @@ -0,0 +1 @@ +../../../mount/root \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/remote-services/opensshd/needs/udevstart b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/remote-services/opensshd/needs/udevstart new file mode 120000 index 00000000..4a261993 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/remote-services/opensshd/needs/udevstart @@ -0,0 +1 @@ +../../../local-tuning/udev/udevstart \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/remote-services/opensshd/on b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/remote-services/opensshd/on new file mode 120000 index 00000000..cf9865a6 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/remote-services/opensshd/on @@ -0,0 +1 @@ +/usr/sbin/sshd \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/remote-services/opensshd/on.params b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/remote-services/opensshd/on.params new file mode 100644 index 00000000..eb11be00 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/remote-services/opensshd/on.params @@ -0,0 +1 @@ +-D diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/remote-services/opensshd/respawn b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/remote-services/opensshd/respawn new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/remote-services/wants/opensshd b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/remote-services/wants/opensshd new file mode 120000 index 00000000..b90c7a1c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/cinit/remote-services/wants/opensshd @@ -0,0 +1 @@ +../opensshd \ No newline at end of file diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/README b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/README new file mode 100644 index 00000000..466fb146 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/README @@ -0,0 +1,8 @@ +/etc/csys: + + Every file is a configuration. + A one liner. + No parsing. + Be stupid, use the filesystem as a database. + + -- 2005-08-20, Nico Schottelius diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/eth0.static b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/eth0.static new file mode 100644 index 00000000..d477112c --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/eth0.static @@ -0,0 +1 @@ +eth0 192.168.23.97/24 up diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/hostname b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/hostname new file mode 100644 index 00000000..4095fad0 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/hostname @@ -0,0 +1 @@ +wasserstoff diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/keyboard-layout b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/keyboard-layout new file mode 100644 index 00000000..0e519366 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/keyboard-layout @@ -0,0 +1 @@ +dvorak diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/net/eth0/dhcp b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/net/eth0/dhcp new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/net/eth0/drivers b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/net/eth0/drivers new file mode 100644 index 00000000..aa8f1e6d --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/net/eth0/drivers @@ -0,0 +1 @@ +e100 diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/root b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/root new file mode 100644 index 00000000..2f528a31 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/root @@ -0,0 +1 @@ +/dev/hda2 diff --git a/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/swap b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/swap new file mode 100644 index 00000000..90020847 --- /dev/null +++ b/software/cinit/samples/x86/wasserstoff/cinit-conf-wasserstoff-20051010/csys/swap @@ -0,0 +1 @@ +/dev/hda1 diff --git a/software/cinit/support.html b/software/cinit/support.html new file mode 100644 index 00000000..b3690cf8 --- /dev/null +++ b/software/cinit/support.html @@ -0,0 +1,33 @@ + + + +unix.schottelius.org + + + +

Nico Schottelius +
unix.schottelius.org +
cinit

+
+

Support

+

Mailing list

+There is currently one mailing list dedicated for +
    +
  • cinit-development, +
  • cinit-support and +
  • cinit-announces. +
+As soon as the list will evolve to high volume, they will be seperated, +but currently it seems not to be necessary. +You can subscribe to it simply with sending a mail to +cinit-subscribe ([at]) lists.schottelius.org. +Sending a mail to the mailing list is done through +cinit ([at]) lists.schottelius.org. If you want to unsubscribe, +simply send a mail to cinit-unsubscribe ([at]) lists.schottelius.org. + +

IRC

+

There's an irc channel named +#cLinux +on irc.freenode.org, which discusses cinit and other cLinux related topics. + + diff --git a/software/cinit/vortrag/2005-08-06/ankuendigung b/software/cinit/vortrag/2005-08-06/ankuendigung new file mode 100644 index 00000000..28c5a159 --- /dev/null +++ b/software/cinit/vortrag/2005-08-06/ankuendigung @@ -0,0 +1,20 @@ +cinit-Vortrag - 2005-08-06, 20:00 CEST + +Stream +====== + +Der Stream ist zu finden unter + + http://80.237.203.179:8000/listen.ogg + http://creme.schottelius.org:8000/cinit.ogg + +Inhalt +====== + +- kurze Einfuehrung in Init-Systeme +- Einfuehrung in cinit +- Live-Installation cinit (jeder kann mitmachen) +- minimale Konfiguration cinit +- abschliessend Fragen beantworten, welche in #cLinux auf + irc.freenode.org gestellt werden koennen + diff --git a/software/cinit/vortrag/2005-08-06/aufzeichnung.ogg b/software/cinit/vortrag/2005-08-06/aufzeichnung.ogg new file mode 100644 index 00000000..b4ae4336 Binary files /dev/null and b/software/cinit/vortrag/2005-08-06/aufzeichnung.ogg differ diff --git a/software/cinit/vortrag/2005-08-06/index.html b/software/cinit/vortrag/2005-08-06/index.html new file mode 100644 index 00000000..38c84292 --- /dev/null +++ b/software/cinit/vortrag/2005-08-06/index.html @@ -0,0 +1,28 @@ + + + +unix.schottelius.org + + + +

Nico Schottelius +
unix.schottelius.org +
cinit +
cinit speeches +

+
+

Online speech

+

2005-08-06 (in German)

+
+ + + + diff --git a/software/cinit/vortrag/2005-08-06/irc.log b/software/cinit/vortrag/2005-08-06/irc.log new file mode 100644 index 00000000..0ee7a583 --- /dev/null +++ b/software/cinit/vortrag/2005-08-06/irc.log @@ -0,0 +1,111 @@ +20:09 < telmich> wget http://linux.schottelius.org/cinit/cinit-0.1.tar.bz2 +20:09 < KillerFox> telmich: vapier wars :-P +20:09 < telmich> tar xfj cinit-0.1.tar.bz2 +20:10 < telmich> cd cinit-0.1 +20:10 < telmich> make +20:10 < hansmi> curl -O http://linux.schottelius.org/cinit/cinit-0.1.tar.bz2 gienge auch +20:10 < telmich> make all install +20:10 -!- Frank_ [frank@p54A5B99A.dip0.t-ipconnect.de] has joined #clinux +20:11 < KillerFox> huhu Frank_ +20:11 < Frank_> meep +20:11 < Frank_> hmm, fast nur bekannte nicks :) +20:11 < KillerFox> klar :-P +20:11 < KillerFox> auf hppa +20:11 < hansmi> Mein Taschenrechner entpackt noch :-) +20:12 < KillerFox> lol +20:12 < Frank_> hansmi: hppa? +20:12 < KillerFox> *muahahaha* +20:12 < telmich> mkdir -p /etc/cinit/getty/1/ +20:12 < hansmi> Frank_: http://forkbomb.ch/services/irc/best-of?perma=118 -- aber jetzt störe ich nicht mehr :) +20:13 < telmich> cd /etc/cinit/getty/1/ +20:13 < telmich> ln -s /sbin/agetty on +20:13 < telmich> ls -l on +20:13 < Frank_> hansmi: ja :) +20:13 < telmich> echo 38400 > on.params +20:14 < KillerFox> hier eilts etwas voraus +20:14 < telmich> echo tty1 >> on.params +20:14 < telmich> echo linux >> on.params +20:14 < hansmi> cinit kann also inittab nicht benutzen? +20:14 < telmich> hansmi: fragen +20:14 < telmich> spaeter bitte +20:14 < telmich> cat on.params +20:15 < KillerFox> telmich: du musst etwas mehr: oder? sagen ;-) +20:15 < KillerFox> telmich: sonst klingst du nicht so Schweizerisch :-P +20:15 < telmich> ln -s /sbin/mingetty on +20:15 < telmich> echo /dev/tty1 > on.params +20:16 < telmich> mkdir -p /etc/cinit/mount/root/ +20:16 < telmich> cd /etc/cinit/mount/root/ +20:16 < telmich> ln -s /bin/mount on +20:16 < telmich> echo -n > on.params +20:16 < Frank_> ich merke schon, das hat viel potential (alles falsch zu machen) +20:16 < telmich> echo -o >> on.params +20:16 < KillerFox> Frank_: LOL +20:17 < telmich> echo remount,rw >> on.params +20:17 < KillerFox> . o O (Ob das gut kommt?) +20:17 < telmich> echo / >> on.params +20:18 < telmich> mkdir -p /etc/cinit/init/needs/ +20:18 -!- Russel [~engelzz@p54873DFA.dip.t-dialin.net] has joined #clinux +20:18 < telmich> cd /etc/cinit/init/needs +20:18 < telmich> ln -s /etc/cinit/getty/1 getty1 +20:19 < telmich> mkdir -p /etc/cinit/getty/1/needs/ +20:20 < telmich> cd /etc/cinit/getty/needs +20:20 < KillerFox> *fragen notier* +20:20 < telmich> ln -s /etc/cinit/mount/root mount-root +20:21 < telmich> lilo: append="init=/sbin/cinit" +20:21 < telmich> grub: kernel init=/sbin/cinit +20:22 < telmich> http://linux.schottelius.org/cinit/ +20:22 < KillerFox> h?chstwahrscheinlich? +20:22 < KillerFox> na prost +20:22 < hansmi> [20:14:31] cinit kann also inittab nicht benutzen? +20:22 < KillerFox> telmich: unterst?tzt cinit cascaded profiles? +20:23 < hansmi> KillerFox: Was hat das mit einem init zu tun? +20:23 < KillerFox> telmich: erkennt cinit m?gliche abh?ngigkeits loops? +20:23 < KillerFox> hansmi: nunja, die Profile werden ja von cinit verwaltet. Und ich habe nicht vor immer wieder neue Profile zu erstellen, sondern auf einem anderen + Profil basiert. +20:24 < hansmi> achsooo, cinit-profile +20:24 < hansmi> Ich dachte an Portage +20:24 < KillerFox> hansmi: ja +20:24 < KillerFox> hansmi: nein :-) +20:25 < KillerFox> kommt noch ;-) +20:25 < hansmi> http://www.gentoo.org/proj/en/releng/docs/cascading-profiles.xml +20:25 < KillerFox> telmich: siehe weiter oben. +20:25 < KillerFox> [20:23:56] hansmi: nunja, die Profile werden ja von cinit verwaltet. Und ich habe nicht vor immer wieder neue Profile zu +20:25 < KillerFox> erstellen, sondern auf einem anderen Profil basiert. +20:25 < hansmi> telmich: Sowas wie abgeleitete Klassen in OO-Sprachen +20:27 < KillerFox> lol +20:27 < hansmi> Das nächste mal machen wir OpenMCU auf und machen es damit. Dann können alle reden. :-) +20:27 < Russel> wie gro ist der geschwindigkeitsvorteil gegen?ber normal? +20:27 < KillerFox> hansmi: haha +20:27 < Russel> und muss man eigene init-scripte schreiben? +20:27 < telmich> Russel: extrem gross +20:27 < Russel> gnarf +20:28 < telmich> Russel: eigene services +20:28 < hansmi> Gentoo benutzt aber nicht sysvinit, oder? +20:28 < telmich> hansmi: nein +20:28 < Frank_> telmich: alle Klarheiten wurden hinreichend beseitig +20:28 < KillerFox> Frank_: lol +20:28 < telmich> Frank_: dann ist es gut +20:29 < Russel> k dann f?llt das wohl aus... bin viel zu faul f?r jedes script mir wieder was neues zu schreiben... +20:29 < telmich> Russel: du kannst auch beispiel-configs nehmen +20:29 < KillerFox> Russel: es gibt fertige service Pakete +20:29 < telmich> so, mal schauen, ob die mini-config tut +20:29 < Russel> KillerFox: wo? +20:30 < KillerFox> Russel: auf der Projektseite von cinit +20:30 < Frank_> telmich: offengestanden hatte ich probleme da mit zu kommen. Linux ist wirklich kein Neuland f?r mich, aber mit den einzelheiten was eigentlich so beim +booten genau passiert hab ich mich nie besch?ftigt, da ich mich mit solchen sachen meist erst befasse wenn etwas nicht gehtw ie es soll. +20:30 -!- telmich changed the topic of #clinux to: http://linux.schottelius.org/cinit/ - cinit +20:30 < KillerFox> telmich: du hast nicht wirklich einkalkuliert, dass der Stream etwas l?nger braucht ;-) +20:31 < telmich> Frank_: das ist das groesste hinderniss. aber wenn du wechselst lernst du es kennen :) +20:31 < telmich> KillerFox: naja, schon, 5-10sekunden +20:31 < telmich> KillerFox: aber pasten und warten ist schwierig +20:31 < KillerFox> telmich: nein es war mehr hier +20:31 < telmich> also zeitversetztes pasten :) +20:31 < KillerFox> telmich: eine Minute oder so +20:31 < hansmi> telmich: Generell war es sehr gut, vorallem die Tonqualität +20:31 < ettercat> Frank_: das geht mir genauso - ist aber mal ein Grund, sich damit zu beschaeftigen und es zu lernen... :) +20:31 < telmich> hansmi: das freut mich +20:31 -!- Russel [~engelzz@p54873DFA.dip.t-dialin.net] has left #clinux [] +20:31 < telmich> KillerFox: uuh..boehse +20:32 < telmich> aber immerhin haben die streamserver problemlos getan +20:32 < KillerFox> darum habe ich auch gesagt, dass es vorauseilend ist :-) +20:32 < telmich> KillerFox: ja, haette ich nen delay beim pasten einbauen sollen, aber manuell war das zu uebel :) diff --git a/software/cinit/vortrag/2005-08-06/spickzettel b/software/cinit/vortrag/2005-08-06/spickzettel new file mode 100644 index 00000000..635f9251 --- /dev/null +++ b/software/cinit/vortrag/2005-08-06/spickzettel @@ -0,0 +1,108 @@ +o Was wird in dem Vortrag behandelt? + - kurze Einfuehrung in Init-Systeme + - Einfuehrung in cinit + - Installation cinit + - minimale Konfiguration cinit + - anschliessend Fragen beantworten, die in #cLinux auf irc.freenode.org + gestellt werden koennen + +- Intro / an wen richtet es sich? + - Systemadministratoren + - denen es aus Prinzip ein sequentiell startendes Bootsystem missfaellt + - alle die vom langsamen booten genervt sind + - Kommentare, Fragen und Code im IRC-Kanal #cLinux auf irc.freenode.org + +- Init-Systeme + o Rechner anschalten + o BIOS + o Bootloader + o Kernel + o Init + -> Ueberpruefung der Festplatte(n) + -> temporaere Dateien loeschen + -> login starten (getties) + -> XDM + -> Server: sshd, apache, ... + +- Einfuehrung in cinit + o Warum nicht der Standard-Sys-V-init + -> sequentiell: d.h. nacheinander + -> dadurch langsamer als noetig + -> dhcp, festplatten i/o, cpu zeit + -> keine abhaengigkeiten + -> wenn ein init-skript fehlschlaegt, kann anderes haengen + --> nfsd, portmap + -> reihenfolge nur ueber numerierung (aka Basic) vorhanden + --> einfuegen dazwischen + -> keine profile + -> verschiedene Szenarien + o Arbeit und Zuhause + o Selber [dienste, mounts] oder Gaeste + o cinit-features + -> parallel startet + -> in abhaengigkeiten + -> profile + -> services + -> keine shell zwanghaft + -> on + -> on.params + -> on.env + -> gleiche mit off + -> respawn + -> spaeter mehr ;-) +- Live Installation cinit + o debian packet + o gentoo emerge - KAPUTT! + o tar.bz2 / source von der homepage + + - Parallel zum bestehenden init + + o wget http://linux.schottelius.org/cinit/cinit-0.1.tar.bz2 + o tar xfj cinit-0.1.tar.bz2 + o cd cinit-0.1 + o make all install + # problemlos mit bestehemden system! + +- minimale Konfiguration cinit + AUF > und >> achten!!!! + + - getty + mkdir -p /etc/cinit/getty/1/ + cd /etc/cinit/getty/1/ + ln -s /sbin/agetty on + echo 38400 > on.params + echo tty1 >> on.params + echo linux >> on.params + # parameter werden durch \n getrennt + + mkdir -p /etc/cinit/getty/2/ + cd /etc/cinit/getty/1/ + ln -s /sbin/mingetty on + echo /dev/tty1 > on.params + + - mount + mkdir -p /etc/cinit/mount/root/ + cd /etc/cinit/mount/root/ + ln -s /bin/mount on + echo -n > on.params + echo -o >> on.params + echo remount,rw >> on.params + echo / >> on.params + + - abhaengigkeiten + # init haengt von getty ab + mkdir -p /etc/cinit/init/needs/ + cd /etc/cinit/init/needs + ln -s /etc/cinit/getty/1 getty1 + + # getty haengt von mount ab + mkdir -p /etc/cinit/getty/1/needs/ + cd /etc/cinit/getty/needs + ln -s /etc/cinit/mount/root mount-root + + - Bootloader konfigurieren + lilo: append="init=/sbin/cinit" + grub: kernel init=/sbin/cinit + - Rebooten + +- anschliessend Fragen beantworten, die in #cLinux auf irc.freenode.org gestellt werden koennen diff --git a/software/cinit/vortrag/2005-10-22/cinit-technophil-2005-10-22.tar.bz2 b/software/cinit/vortrag/2005-10-22/cinit-technophil-2005-10-22.tar.bz2 new file mode 100644 index 00000000..20c79c1c Binary files /dev/null and b/software/cinit/vortrag/2005-10-22/cinit-technophil-2005-10-22.tar.bz2 differ diff --git a/software/cinit/vortrag/2005-10-22/cinit-technophil/Makefile b/software/cinit/vortrag/2005-10-22/cinit-technophil/Makefile new file mode 100644 index 00000000..04887d7a --- /dev/null +++ b/software/cinit/vortrag/2005-10-22/cinit-technophil/Makefile @@ -0,0 +1,32 @@ +# +# LaTeX Makefile for slides +# Nico Schottelius +# + +#PDFVIEWER=xpdf -z width -fullscreen +PDFVIEWER=xpdf -z width + +all: clean-pdf + +public: + scp *.pdf nico.schotteli.us/papers/ + +%.show: %.pdf + $(PDFVIEWER) $< + +%.pdf: %.ps + ps2pdf $< + +%.ps: %.dvi + dvips $< + +%.dvi: %.tex + latex $< && latex $< && latex $< + +all-pdf: + for source in *.tex; do latex2pdf $${source%.tex}; done + +clean-pdf: pdf unused-clean + +clean: + rm -f *.aux *.log *.dvi *.toc *.ps *.pdf diff --git a/software/cinit/vortrag/2005-10-22/cinit-technophil/cinit.aux b/software/cinit/vortrag/2005-10-22/cinit-technophil/cinit.aux new file mode 100644 index 00000000..1b71bb12 --- /dev/null +++ b/software/cinit/vortrag/2005-10-22/cinit-technophil/cinit.aux @@ -0,0 +1,14 @@ +\relax +\ifx\hyper@anchor\@undefined +\global \let \oldcontentsline\contentsline +\gdef \contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global \let \oldnewlabel\newlabel +\gdef \newlabel#1#2{\newlabelxx{#1}#2} +\gdef \newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\let \contentsline\oldcontentsline +\let \newlabel\oldnewlabel} +\else +\global \let \hyper@last\relax +\fi + +\newlabel{last@page}{{}{10}{\relax }{}{}} diff --git a/software/cinit/vortrag/2005-10-22/cinit-technophil/cinit.log b/software/cinit/vortrag/2005-10-22/cinit-technophil/cinit.log new file mode 100644 index 00000000..07ccaabf --- /dev/null +++ b/software/cinit/vortrag/2005-10-22/cinit-technophil/cinit.log @@ -0,0 +1,339 @@ +This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) (format=latex 2005.10.28) 28 OCT 2005 01:36 +entering extended mode +**cinit.tex +(./cinit.tex +LaTeX2e <2003/12/01> +Babel and hyphenation patterns for american, french, german, ngerman, b +ahasa, basque, bulgarian, catalan, croatian, czech, danish, dutch, esperanto, e +stonian, finnish, greek, icelandic, irish, italian, latin, magyar, norsk, polis +h, portuges, romanian, russian, serbian, slovak, slovene, spanish, swedish, tur +kish, ukrainian, nohyphenation, loaded. +(/usr/share/texmf/tex/latex/prosper/prosper.cls +Document Class: prosper 2003/03/20, v. 1.6 +(c) 2000-2003 Frederic Goualard, IRIN, France + and Peter Møller Neergaard, Boston Univ., USA +CVSId: $Id: prosper.cls,v 1.25 2003/02/21 18:32:56 exupery Exp $ +(/usr/share/texmf/tex/latex/graphics/graphicx.sty +Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf/tex/latex/graphics/keyval.sty +Package: keyval 1999/03/16 v1.13 key=value parser (DPC) +\KV@toks@=\toks14 +) +(/usr/share/texmf/tex/latex/graphics/graphics.sty +Package: graphics 2001/07/07 v1.0n Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texmf/tex/latex/graphics/trig.sty +Package: trig 1999/03/16 v1.09 sin cos tan (DPC) +) +(/usr/share/texmf/tex/latex/graphics/graphics.cfg +File: graphics.cfg 2005/02/03 v1.3 graphics configuration of teTeX/TeXLive +) +Package graphics Info: Driver file: dvips.def on input line 80. + +(/usr/share/texmf/tex/latex/graphics/dvips.def +File: dvips.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR) +)) +\Gin@req@height=\dimen102 +\Gin@req@width=\dimen103 +) +(/usr/share/texmf/tex/latex/seminar/seminar.cls +Document Class: seminar 1997/10/13, 1.4 +Document Style: `seminar' v1.4 <1997/10/13> (tvz) +\slidewidth=\dimen104 +\slideheight=\dimen105 +\footheight=\dimen106 +(/usr/share/texmf/tex/latex/base/article.cls +Document Class: article 2004/02/16 v1.4f Standard LaTeX document class +(/usr/share/texmf/tex/latex/base/leqno.clo +File: leqno.clo 1998/08/17 v1.1c Standard LaTeX option (left equation numbers) +) +(/usr/share/texmf/tex/latex/base/size10.clo +File: size10.clo 2004/02/16 v1.4f Standard LaTeX file (size option) +) +\c@part=\count79 +\c@section=\count80 +\c@subsection=\count81 +\c@subsubsection=\count82 +\c@paragraph=\count83 +\c@subparagraph=\count84 +\c@figure=\count85 +\c@table=\count86 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen107 +) +(/usr/share/texmf/tex/latex/seminar/sem-page.sty) +\before@document=\toks15 +\after@document=\toks16 +\before@enddocument=\toks17 +\c@slide=\count87 +\slide@count=\count88 +\@slidebox=\box26 +\not@slidebox=\box27 +\slide@hook=\toks18 +\after@slide=\toks19 +\slide@footins=\insert233 +\slide@listdepth=\count89 +\saved@specials=\box28 +\before@newslide=\toks20 +\after@slidepage=\toks21 +\slidesep=\skip43 +\c@note=\count90 +\slideframewidth=\dimen108 +\slideframesep=\dimen109 +\semin=\dimen110 +\semcm=\dimen111 +) +(/usr/share/texmf/tex/latex/seminar/seminar.con) +(/usr/share/texmf/tex/latex/seminar/semcolor.sty +Style Option: `semcolor' for doc style `seminar' 1.01 <2004/05/18> (tvz) +File: semcolor.sty 2004/05/18 v1.01 (tvz) +(/usr/share/texmf/tex/latex/pstricks/pstricks.sty +Package: pstricks 2004/05/12 v0.2l LaTeX wrapper for `PSTricks' (RN,HV) + +(/usr/share/texmf/tex/generic/pstricks/pstricks.tex +`PSTricks' v1.04 <2004/06/22> (tvz) +\pst@dima=\dimen112 +\pst@dimb=\dimen113 +\pst@dimc=\dimen114 +\pst@dimd=\dimen115 +\pst@dimg=\dimen116 +\pst@dimh=\dimen117 +\pst@hbox=\box29 +\pst@boxg=\box30 +\pst@cnta=\count91 +\pst@cntb=\count92 +\pst@cntc=\count93 +\pst@cntd=\count94 +\pst@cntg=\count95 +\pst@cnth=\count96 +\pst@toks=\toks22 +(/usr/share/texmf/tex/generic/pstricks/pstricks.con) +\psunit=\dimen118 +\psxunit=\dimen119 +\psyunit=\dimen120 +\pslinewidth=\dimen121 +\pst@customdefs=\toks23 +\pslinearc=\dimen122 +\everypsbox=\toks24 +\psframesep=\dimen123 +\pslabelsep=\dimen124 +\theoverlaybox=\box31 +) +File: pstricks.tex 2004/06/22 v1.04 `PSTricks' (tvz) + +(/usr/share/texmf/tex/latex/graphics/color.sty +Package: color 1999/02/16 v1.0i Standard LaTeX Color (DPC) + +(/usr/share/texmf/tex/latex/graphics/color.cfg +File: color.cfg 2005/02/03 v1.3 color configuration of teTeX/TeXLive +) +Package color Info: Driver file: dvips.def on input line 125. + +(/usr/share/texmf/tex/latex/graphics/dvipsnam.def +File: dvipsnam.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR) +)))) +(/usr/share/texmf/tex/latex/seminar/semlayer.sty +\@@slidebox=\box32 +\c@overlay=\count97 +) +(/usr/share/texmf/tex/latex/seminar/seminar.bug) +(/usr/share/texmf/tex/latex/seminar/seminar.bg2 +seminar.bg2: various corrections for the Seminar document class added since sem +inar.bug (waiting Seminar 98) +(Version 1.7 of (D.G.)) +) (/usr/share/texmf/tex/latex/prosper/seminar-bg2-lepennec.fix) +(/usr/share/texmf/tex/latex/hyperref/hyperref.sty +Package: hyperref 2003/11/30 v6.74m Hypertext links for LaTeX +\@linkdim=\dimen125 +\Hy@linkcounter=\count98 +\Hy@pagecounter=\count99 + +(/usr/share/texmf/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2003/11/30 v6.74m Hyperref: PDFDocEncoding definition (HO) +) +(/usr/share/texmf/tex/latex/hyperref/hyperref.cfg +File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive and teTeX +) +Package hyperref Info: Option `bookmarks' set `true' on input line 1830. +Package hyperref Info: Option `pdffitwindow' set `true' on input line 1830. +Package hyperref Info: Option `pdfcenterwindow' set `true' on input line 1830. +Package hyperref Info: Hyper figures OFF on input line 1880. +Package hyperref Info: Link nesting OFF on input line 1885. +Package hyperref Info: Hyper index ON on input line 1888. +Package hyperref Info: Plain pages ON on input line 1893. +Package hyperref Info: Backreferencing OFF on input line 1900. + +Implicit mode ON; LaTeX internals redefined +Package hyperref Info: Bookmarks ON on input line 2004. +(/usr/share/texmf/tex/latex/url/url.sty +\Urlmuskip=\muskip10 +Package: url 2004/03/15 ver 3.1 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 2143. +\Fld@menulength=\count100 +\Field@Width=\dimen126 +\Fld@charsize=\dimen127 +\Choice@toks=\toks25 +\Field@toks=\toks26 +Package hyperref Info: Hyper figures OFF on input line 2618. +Package hyperref Info: Link nesting OFF on input line 2623. +Package hyperref Info: Hyper index ON on input line 2626. +Package hyperref Info: backreferencing OFF on input line 2633. +Package hyperref Info: Link coloring OFF on input line 2638. +\c@Item=\count101 +\c@Hfootnote=\count102 +) +*hyperref using driver hdvips* +(/usr/share/texmf/tex/latex/hyperref/hdvips.def +File: hdvips.def 2003/11/30 v6.74m Hyperref driver for dvips + +(/usr/share/texmf/tex/latex/hyperref/pdfmark.def +File: pdfmark.def 2003/11/30 v6.74m Hyperref definitions for pdfmark specials +\pdf@docset=\toks27 +\pdf@box=\box33 +\pdf@toks=\toks28 +\pdf@defaulttoks=\toks29 +\Fld@listcount=\count103 +\@outlinefile=\write3 +)) +\theoverlays=\box34 +\c@overlaysCount=\count104 +\c@limitOverlays=\count105 +\@tempoLimit=\count106 +\slideWidth=\skip44 +\c@trueSlideCounter=\count107 + +(/usr/share/texmf/tex/latex/prosper/PPRautumn.sty +Package: PPRautumn 2000/11/24 + +`autumn' style for Prosper --- +(c) 2000 Frederic Goualard, CWI, The Netherlands +CVSId: $Id: PPRautumn.sty,v 1.6 2002/10/08 18:34:55 exupery Exp $ + +(/usr/share/texmf/tex/latex/pstricks/pst-grad.sty +Package: pst-grad 2004/07/15 package wrapper for pst-grad.tex + +(/usr/share/texmf/tex/generic/pstricks/pst-grad.tex v1.04, 2004/06/24 +Package color Info: Redefining color gradbegin on input line 53. +Package color Info: Redefining color gradend on input line 57. +) +File: pst-grad.tex 2004/06/24 1.04 `pst-grad' (tvz) +) +(/usr/share/texmf/tex/latex/amsfonts/amssymb.sty +Package: amssymb 2002/01/22 v2.2d + +(/usr/share/texmf/tex/latex/amsfonts/amsfonts.sty +Package: amsfonts 2001/10/25 v2.2f +\@emptytoks=\toks30 +\symAMSa=\mathgroup4 +\symAMSb=\mathgroup5 +LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' +(Font) U/euf/m/n --> U/euf/b/n on input line 132. +)) +(/usr/share/texmf/tex/latex/psnfss/times.sty +Package: times 2004/09/15 PSNFSS-v9.2 (SPQR) +)) +\c@item@step=\count108 +\c@overlay@page=\count109 +\c@nbAffected=\count110 +\c@savecountAffected=\count111 +) +(/usr/share/texmf/tex/latex/base/inputenc.sty +Package: inputenc 2004/02/05 v1.0d Input encoding file + +(/usr/share/texmf/tex/latex/base/latin1.def +File: latin1.def 2004/02/05 v1.0d Input encoding file +)) +(/usr/share/texmf/tex/generic/german/german.sty v2.5e 1998-07-08 +Package: german 1998/07/08 v2.5e Support for writing german texts (br) +\grmnU@D=\dimen128 +) (./cinit.aux) +\openout1 = `cinit.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Try loading font information for OT1+ptm on input line 17. +(/usr/share/texmf/tex/latex/psnfss/ot1ptm.fd +File: ot1ptm.fd 2001/06/04 font definitions for OT1/ptm. +) +Package hyperref Info: Link coloring OFF on input line 17. + +(/usr/share/texmf/tex/latex/hyperref/nameref.sty +Package: nameref 2003/12/03 v2.21 Cross-referencing by name of section +\c@section@level=\count112 +) +LaTeX Info: Redefining \ref on input line 17. +LaTeX Info: Redefining \pageref on input line 17. + (./cinit.out) (./cinit.out) +\openout3 = `cinit.out'. + +LaTeX Font Info: Try loading font information for T1+ptm on input line 18. + +(/usr/share/texmf/tex/latex/psnfss/t1ptm.fd +File: t1ptm.fd 2001/06/04 font definitions for T1/ptm. +) +LaTeX Font Info: Try loading font information for OT1+pcr on input line 18. + +(/usr/share/texmf/tex/latex/psnfss/ot1pcr.fd +File: ot1pcr.fd 2001/06/04 font definitions for OT1/pcr. +) +LaTeX Font Info: Try loading font information for U+msa on input line 18. + +(/usr/share/texmf/tex/latex/amsfonts/umsa.fd +File: umsa.fd 2002/01/19 v2.2g AMS font definitions +) +LaTeX Font Info: Try loading font information for U+msb on input line 18. + +(/usr/share/texmf/tex/latex/amsfonts/umsb.fd +File: umsb.fd 2002/01/19 v2.2g AMS font definitions +) [1 + + +] [2 + +] [3 + +] [4 + +] [5 + +] [6 + +] +Overfull \hbox (6.90784pt too wide) in paragraph at lines 82--82 +[] \OT1/pcr/m/n/14.4 hostname -> ../../../network/hostname/[] + [] + +[7 + +] [8 + +] [9 + +] [10 + +] (./cinit.aux) ) +Here is how much of TeX's memory you used: + 4535 strings out of 94501 + 58966 string characters out of 1176788 + 124011 words of memory out of 1000000 + 7639 multiletter control sequences out of 10000+50000 + 24306 words of font info for 41 fonts, out of 500000 for 2000 + 580 hyphenation exceptions out of 8191 + 39i,6n,28p,234b,671s stack positions out of 1500i,500n,5000p,200000b,5000s + +Output written on cinit.dvi (10 pages, 34164 bytes). diff --git a/software/cinit/vortrag/2005-10-22/cinit-technophil/cinit.out b/software/cinit/vortrag/2005-10-22/cinit-technophil/cinit.out new file mode 100644 index 00000000..e69de29b diff --git a/software/cinit/vortrag/2005-10-22/cinit-technophil/cinit.pdf b/software/cinit/vortrag/2005-10-22/cinit-technophil/cinit.pdf new file mode 100644 index 00000000..2ca4ac4f Binary files /dev/null and b/software/cinit/vortrag/2005-10-22/cinit-technophil/cinit.pdf differ diff --git a/software/cinit/vortrag/2005-10-22/cinit-technophil/cinit.tex b/software/cinit/vortrag/2005-10-22/cinit-technophil/cinit.tex new file mode 100644 index 00000000..222a957f --- /dev/null +++ b/software/cinit/vortrag/2005-10-22/cinit-technophil/cinit.tex @@ -0,0 +1,111 @@ +% Version: 0.5 +%\documentclass[pdf,darkblue,draft,slideColor,colorBG,total]{prosper} +%\documentclass[pdf,autumn,draft,slideColor,colorBG,total]{prosper} +\documentclass[pdf,autumn,slideColor,colorBG,total]{prosper} +%\documentclass[pdf,azure,draft,slideColor,colorBG,total]{prosper} +\usepackage[latin1]{inputenc} +\usepackage{german} +%------------------------------------------------------------------------------ +% prework +\title{cinit} +\subtitle{Konzept des Init-systems} +\author{Nico Schottelius} +\email{nico-linux-cinit (BEI) schottelius.org} +\institution{} +\date{2005-10-22} +%------------------------------------------------------------------------------ +\begin{document} +\maketitle +%------------------------------------------------------------------------------ +\begin{slide}{Init-Systeme} +\begin{enumerate} +\item Wo? +\item Wann? +\item Wie? +\end{enumerate} +\end{slide} +%------------------------------------------------------------------------------ +\begin{slide}{Sys-V-Init} +\begin{itemize} +\item Standard bei den meisten Linux-Distributionen +\item Konfiguriert durch \textit{/etc/inittab} +\item Skripte mit "`start"' und "`stop"' als Argumente +\item Verschiedene Runlevel, Verzeichnisse \textit{/etc/rcX.d} (rcS.d) +\end{itemize} +\end{slide} +%------------------------------------------------------------------------------ +\begin{slide}{Sys-V-Init: Probleme} +\begin{itemize} +\item Skripte +\begin{itemize} + \item Interpreter + \item zus\"atzliche Logik (start/stop), unn\"otige Logik + \item generische Skripte + \item zwanghafte Ausf\"uhrung, \"Uberpr\"ufung beim Start + \textit{/etc/default/*} + \item /bin/bash statt kleinere Shell +\end{itemize} +\item Pseudo-Abh\"angigkeiten (durch Benennung, sehr fehleranf\"allig) +\item Sequentieller Ablauf (S\textit{Beginn} bis S\textit{Ende}) +\item Einf\"ugen neuer Dienste (\textit{S42zservice} und \textit{S43aservice}) +\end{itemize} +\end{slide} +%------------------------------------------------------------------------------ +\begin{slide}{Konzept cinit} +\begin{itemize} +\item Service orientiert - keine Skripte +\item weiche ("`wants"') und harte ("`needs"') Abh\"angigkeiten +\item schneller Start durch parallele Ausf\"uhrung +\item Unterst\"utzung von Profilen +\item +\end{itemize} +\end{slide} +%------------------------------------------------------------------------------ +\begin{slide}{Was ist ein Service?} +\begin{itemize} +\item ein Verzeichnis +\item "`on"' und "`off"' zum Starten und Anhalten +\item "`on.params"' und "`off.params"' Parameter (\\n unterteilt) +\item "`on.env"' und "`off.env"' Umgebungsvariablen (\\n unterteilt) +\item Abh\"angigkeiten ("`wants"' und "`need"') +\end{itemize} +\end{slide} +%------------------------------------------------------------------------------ +\begin{slide}{Abh\"angigkeiten} +\begin{itemize} +\item symbolische Links unterhalb von wants und needs auf andere Services +\end{itemize} +\begin{verbatim} +/etc/cinit/getty/2/needs: + hostname -> ../../../network/hostname/ + root -> ../../../mount/root/ +\end{verbatim} +\end{slide} +%------------------------------------------------------------------------------ +\begin{slide}{Profile} +\begin{itemize} +\item cinit als Argument "`cprofile:\textit{Profilname}"' +\item ein eigener Service (z.b. \textit{profile/dos}) +\item kann auch original Startpunkt beinhalten (Abh\"angigkeit) +\item erm\"oglicht verschiedene Szenarien abzubilden +\item vermeidet dynamische und unn\"otige Konfigurationsentscheidungen beim Starten +\end{itemize} +\end{slide} +%------------------------------------------------------------------------------ +\begin{slide}{cinit: Installation} +\begin{itemize} +\item paralell zu bestehendem Init +\item vom Source, Debian Paket oder gentoo emerge +\item \verb=http://linux.schottelius.org/cinit/= +\end{itemize} +\end{slide} +%------------------------------------------------------------------------------ +\begin{slide}{cinit: Konfiguration} +\begin{itemize} +\item Jetzt, interaktiv +\item Und Fragen? +\item Eventuell: Essen? +\end{itemize} +\end{slide} +%------------------------------------------------------------------------------ +\end{document} diff --git a/software/cinit/vortrag/2005-10-22/index.html b/software/cinit/vortrag/2005-10-22/index.html new file mode 100644 index 00000000..ef68f252 --- /dev/null +++ b/software/cinit/vortrag/2005-10-22/index.html @@ -0,0 +1,27 @@ + + + +unix.schottelius.org + + + +

Nico Schottelius +
unix.schottelius.org +
cinit +
cinit speeches +

+
+

real life Speech

+

2005-10-22: technophil weekend (in German)

+
+ +

This speech was hold in in Basel, Switzerland at the technophil +weekend (a geekend)

+ + + diff --git a/software/cinit/vortrag/index.html b/software/cinit/vortrag/index.html new file mode 100644 index 00000000..0b80725e --- /dev/null +++ b/software/cinit/vortrag/index.html @@ -0,0 +1,19 @@ + + + +unix.schottelius.org + + + +

Nico Schottelius +
unix.schottelius.org +
cinit

+
+

cinit speeches

+
+ +

2005-08-06: Introduction to cinit (online speech in German) +
2005-10-22: technophil weekend (real life speech in German) +

+ +